From d0a7ca124dfeb4d4045b6f0aa98f315557c2ebbb Mon Sep 17 00:00:00 2001 From: Ikko Yi <107829999+1kko-ahnlabio@users.noreply.github.com> Date: Tue, 25 Mar 2025 17:05:21 +0900 Subject: [PATCH 1/7] Update README.md ## Description Add BICScan official MCP server github.com/ahnlabio/bicscan-mcp ## Motivation and Context Add to the readme in the section of officially supported MCP servers ## Types of changes [ ] Bug fix (non-breaking change which fixes an issue) [ ] New feature (non-breaking change which adds functionality) [ ] Breaking change (fix or feature that would cause existing functionality to change) [v] Documentation update ## Checklist [v] I have read the MCP Protocol Documentation [v] My changes follows MCP security best practices [v] I have updated the server's README accordingly [v] I have tested this with an LLM client [v] My code follows the repository's style guidelines [v] New and existing tests pass locally [v] I have added appropriate error handling [v] I have documented all environment variables and configuration options ## Additional context --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index af83bccf..673a950f 100644 --- a/README.md +++ b/README.md @@ -48,6 +48,7 @@ Official integrations are maintained by companies building production ready MCP - Audiense Logo **[Audiense Insights](https://github.com/AudienseCo/mcp-audiense-insights)** - Marketing insights and audience analysis from [Audiense](https://www.audiense.com/products/audiense-insights) reports, covering demographic, cultural, influencer, and content engagement analysis. - Axiom Logo **[Axiom](https://github.com/axiomhq/mcp-server-axiom)** - Query and analyze your Axiom logs, traces, and all other event data in natural language - Bankless Logo **[Bankless Onchain](https://github.com/bankless/onchain-mcp)** - Query Onchain data, like ERC20 tokens, transaction history, smart contract state. +- BICScan Logo **[BICScan](https://github.com/ahnlabio/bicscan-mcp)** - Risk score/ asset holdings of EVM blockchain address(EOA, CA, ENS) and even domain names. - Box Logo **[Box](https://github.com/box-community/mcp-server-box)** - Interact with the Intelligent Content Management platform through Box AI. - Browserbase Logo **[Browserbase](https://github.com/browserbase/mcp-server-browserbase)** - Automate browser interactions in the cloud (e.g. web navigation, data extraction, form filling, and more) - **[Chroma](https://github.com/chroma-core/chroma-mcp)** - Embeddings, vector search, document storage, and full-text search with the open-source AI application database From 6279021d60e247551c314a3e092056ded90fbb08 Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Sun, 30 Mar 2025 19:12:53 -0700 Subject: [PATCH 2/7] Make changes to typescript to trigger new tag --- src/memory/index.ts | 2 +- src/redis/src/index.ts | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index 62f7aeb6..a3fcc820 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -189,7 +189,7 @@ const knowledgeGraphManager = new KnowledgeGraphManager(); // The server instance and tools exposed to Claude const server = new Server({ name: "memory-server", - version: "1.0.0", + version: "0.6.3", }, { capabilities: { tools: {}, diff --git a/src/redis/src/index.ts b/src/redis/src/index.ts index 2d88d981..724dd8f0 100644 --- a/src/redis/src/index.ts +++ b/src/redis/src/index.ts @@ -36,7 +36,7 @@ const ListArgumentsSchema = z.object({ const server = new Server( { name: "redis", - version: "1.0.0" + version: "0.0.1" } ); From 52e60e6e29c41d4c6cfcb5f70e4135c413f428cf Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Mon, 31 Mar 2025 08:08:35 -0700 Subject: [PATCH 3/7] Add missing capabilities and better connection handling --- src/redis/src/index.ts | 70 ++++++++++++++++++++++++++++++++++++------ 1 file changed, 60 insertions(+), 10 deletions(-) diff --git a/src/redis/src/index.ts b/src/redis/src/index.ts index 724dd8f0..27ce91fa 100644 --- a/src/redis/src/index.ts +++ b/src/redis/src/index.ts @@ -7,10 +7,26 @@ import { import { z } from "zod"; import { createClient } from 'redis'; -// Get Redis URL from command line args or use default +// Configuration const REDIS_URL = process.argv[2] || "redis://localhost:6379"; +const MAX_RETRIES = 5; +const MIN_RETRY_DELAY = 1000; // 1 second +const MAX_RETRY_DELAY = 30000; // 30 seconds + +// Create Redis client with retry strategy const redisClient = createClient({ - url: REDIS_URL + url: REDIS_URL, + socket: { + reconnectStrategy: (retries) => { + if (retries >= MAX_RETRIES) { + console.error(`Maximum retries (${MAX_RETRIES}) reached. Giving up.`); + return new Error('Max retries reached'); + } + const delay = Math.min(Math.pow(2, retries) * MIN_RETRY_DELAY, MAX_RETRY_DELAY); + console.error(`Reconnection attempt ${retries + 1}/${MAX_RETRIES} in ${delay}ms`); + return delay; + } + } }); // Define Zod schemas for validation @@ -37,6 +53,11 @@ const server = new Server( { name: "redis", version: "0.0.1" + }, + { + capabilities: { + tools: {} + } } ); @@ -215,22 +236,51 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { // Start the server async function main() { try { - // Connect to Redis - redisClient.on('error', (err: Error) => console.error('Redis Client Error', err)); - await redisClient.connect(); - console.error(`Connected to Redis successfully at ${REDIS_URL}`); + // Set up Redis event handlers + redisClient.on('error', (err: Error) => { + console.error('Redis Client Error:', err); + }); + redisClient.on('connect', () => { + console.error(`Connected to Redis at ${REDIS_URL}`); + }); + + redisClient.on('reconnecting', () => { + console.error('Attempting to reconnect to Redis...'); + }); + + redisClient.on('end', () => { + console.error('Redis connection closed'); + }); + + // Connect to Redis + await redisClient.connect(); + + // Set up MCP server const transport = new StdioServerTransport(); await server.connect(transport); console.error("Redis MCP Server running on stdio"); } catch (error) { console.error("Error during startup:", error); - await redisClient.quit(); - process.exit(1); + await cleanup(); } } +// Cleanup function +async function cleanup() { + try { + await redisClient.quit(); + } catch (error) { + console.error("Error during cleanup:", error); + } + process.exit(1); +} + +// Handle process termination +process.on('SIGINT', cleanup); +process.on('SIGTERM', cleanup); + main().catch((error) => { console.error("Fatal error in main():", error); - redisClient.quit().finally(() => process.exit(1)); -}); \ No newline at end of file + cleanup(); +}); From 4e660a2d998087d00edcacea568ed9206fdba771 Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Mon, 31 Mar 2025 08:12:53 -0700 Subject: [PATCH 4/7] Update Readme --- src/redis/README.md | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/src/redis/README.md b/src/redis/README.md index 45123a58..992471dc 100644 --- a/src/redis/README.md +++ b/src/redis/README.md @@ -2,6 +2,31 @@ A Model Context Protocol server that provides access to Redis databases. This server enables LLMs to interact with Redis key-value stores through a set of standardized tools. +## Prerequisites + +1. Redis server must be installed and running + - [Download Redis](https://redis.io/download) + - For Windows users: Use [Windows Subsystem for Linux (WSL)](https://redis.io/docs/getting-started/installation/install-redis-on-windows/) or [Memurai](https://www.memurai.com/) (Redis-compatible Windows server) + - Default port: 6379 + +## Common Issues & Solutions + +### Connection Errors + +**ECONNREFUSED** + - **Cause**: Redis server is not running or unreachable + - **Solution**: + - Verify Redis is running: `redis-cli ping` should return "PONG" + - Check Redis service status: `systemctl status redis` (Linux) or `brew services list` (macOS) + - Ensure correct port (default 6379) is not blocked by firewall + - Verify Redis URL format: `redis://hostname:port` + +### Server Behavior + +- The server implements exponential backoff with a maximum of 5 retries +- Initial retry delay: 1 second, maximum delay: 30 seconds +- Server will exit after max retries to prevent infinite reconnection loops + ## Components ### Tools @@ -77,4 +102,4 @@ docker build -t mcp/redis -f src/redis/Dockerfile . ## License -This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository. \ No newline at end of file +This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository. From f32332527555f9c28d8426d0ac69b14a3ed3ae5c Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Mon, 31 Mar 2025 08:41:28 -0700 Subject: [PATCH 5/7] Revert serer-memory for now --- src/memory/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/memory/index.ts b/src/memory/index.ts index a3fcc820..62f7aeb6 100644 --- a/src/memory/index.ts +++ b/src/memory/index.ts @@ -189,7 +189,7 @@ const knowledgeGraphManager = new KnowledgeGraphManager(); // The server instance and tools exposed to Claude const server = new Server({ name: "memory-server", - version: "0.6.3", + version: "1.0.0", }, { capabilities: { tools: {}, From b655f92674690b4a5d970f5df2dc592d23ffb29d Mon Sep 17 00:00:00 2001 From: Ikko Yi <107829999+1kko-ahnlabio@users.noreply.github.com> Date: Wed, 2 Apr 2025 10:04:21 +0900 Subject: [PATCH 6/7] Apply suggestions from code review Co-authored-by: Tadas Antanavicius --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 33761884..1b538639 100644 --- a/README.md +++ b/README.md @@ -49,7 +49,7 @@ Official integrations are maintained by companies building production ready MCP - Audiense Logo **[Audiense Insights](https://github.com/AudienseCo/mcp-audiense-insights)** - Marketing insights and audience analysis from [Audiense](https://www.audiense.com/products/audiense-insights) reports, covering demographic, cultural, influencer, and content engagement analysis. - Axiom Logo **[Axiom](https://github.com/axiomhq/mcp-server-axiom)** - Query and analyze your Axiom logs, traces, and all other event data in natural language - Bankless Logo **[Bankless Onchain](https://github.com/bankless/onchain-mcp)** - Query Onchain data, like ERC20 tokens, transaction history, smart contract state. -- BICScan Logo **[BICScan](https://github.com/ahnlabio/bicscan-mcp)** - Risk score/ asset holdings of EVM blockchain address(EOA, CA, ENS) and even domain names. +- BICScan Logo **[BICScan](https://github.com/ahnlabio/bicscan-mcp)** - Risk score / asset holdings of EVM blockchain address (EOA, CA, ENS) and even domain names. - Box Logo **[Box](https://github.com/box-community/mcp-server-box)** - Interact with the Intelligent Content Management platform through Box AI. - Browserbase Logo **[Browserbase](https://github.com/browserbase/mcp-server-browserbase)** - Automate browser interactions in the cloud (e.g. web navigation, data extraction, form filling, and more) - **[Chargebee](https://github.com/chargebee/agentkit/tree/main/modelcontextprotocol)** - MCP Server that connects AI agents to [Chargebee platform](https://www.chargebee.com). From 9be81d4e7cb723500aef77d3b52510c8e3746755 Mon Sep 17 00:00:00 2001 From: John Yegs Date: Wed, 2 Apr 2025 10:06:02 -0500 Subject: [PATCH 7/7] chore(readme): add kong konnect api mcp to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 35e24f15..f27bc103 100644 --- a/README.md +++ b/README.md @@ -242,6 +242,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Keycloak MCP](https://github.com/ChristophEnglisch/keycloak-model-context-protocol)** - This MCP server enables natural language interaction with Keycloak for user and realm management including creating, deleting, and listing users and realms. - **[Kibela](https://github.com/kiwamizamurai/mcp-kibela-server)** (by kiwamizamurai) - Interact with Kibela API. - **[kintone](https://github.com/macrat/mcp-server-kintone)** - Manage records and apps in [kintone](https://kintone.com) through LLM tools. +- **[Kong Konnect](https://github.com/Kong/mcp-konnect)** - A Model Context Protocol (MCP) server for interacting with Kong Konnect APIs, allowing AI assistants to query and analyze Kong Gateway configurations, traffic, and analytics. - **[Kubernetes](https://github.com/Flux159/mcp-server-kubernetes)** - Connect to Kubernetes cluster and manage pods, deployments, and services. - **[Kubernetes and OpenShift](https://github.com/manusa/kubernetes-mcp-server)** - A powerful Kubernetes MCP server with additional support for OpenShift. Besides providing CRUD operations for any Kubernetes resource, this server provides specialized tools to interact with your cluster. - **[Langflow-DOC-QA-SERVER](https://github.com/GongRzhe/Langflow-DOC-QA-SERVER)** - A Model Context Protocol server for document Q&A powered by Langflow. It demonstrates core MCP concepts by providing a simple interface to query documents through a Langflow backend.