From d2bcbeecb5eb39e1d92f7c45f33feb48cb2d969c Mon Sep 17 00:00:00 2001 From: Helix Date: Sun, 30 Mar 2025 22:32:48 +0200 Subject: [PATCH 1/7] Update README.md to add a new Community Server (Shodan) Commit to add the Shodan MCP Server to the wiki for direct interaction. Compatible at the date of this commit with Cursor, Claude and VSCode Insiders. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ebd7d5212..f6171f1202 100644 --- a/README.md +++ b/README.md @@ -323,6 +323,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[scrapling-fetch](https://github.com/cyberchitta/scrapling-fetch-mcp)** - Access text content from bot-protected websites. Fetches HTML/markdown from sites with anti-automation measures using Scrapling. - **[SearXNG](https://github.com/ihor-sokoliuk/mcp-searxng)** - A Model Context Protocol Server for [SearXNG](https://docs.searxng.org) - **[ServiceNow](https://github.com/osomai/servicenow-mcp)** - A MCP server to interact with a ServiceNow instance +- **[Shodan MCP](https://github.com/Hexix23/shodan-mcp)** - MCP server to interact with [Shodan](https://www.shodan.io/) - **[Siri Shortcuts](https://github.com/dvcrn/mcp-server-siri-shortcuts)** - MCP to interact with Siri Shortcuts on macOS. Exposes all Shortcuts as MCP tools. - **[Snowflake](https://github.com/isaacwasserman/mcp-snowflake-server)** - This MCP server enables LLMs to interact with Snowflake databases, allowing for secure and controlled data operations. - **[Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit/tree/main/examples/agent-kit-mcp-server)** - This MCP server enables LLMs to interact with the Solana blockchain with help of Solana Agent Kit by SendAI, allowing for 40+ protcool actions and growing From 5a7c877e80c0b70d0b6020ee4a42582f7fea9c32 Mon Sep 17 00:00:00 2001 From: "wenfeng.wf" Date: Thu, 15 May 2025 17:52:01 +0800 Subject: [PATCH 2/7] Add Alibaba Cloud RDS MCP Server to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index de01e8ee22..877d91f6e4 100644 --- a/README.md +++ b/README.md @@ -45,6 +45,7 @@ Official integrations are maintained by companies building production ready MCP - AgentRPC Logo **[AgentRPC](https://github.com/agentrpc/agentrpc)** - Connect to any function, any language, across network boundaries using [AgentRPC](https://www.agentrpc.com/). - Aiven Logo **[Aiven](https://github.com/Aiven-Open/mcp-aiven)** - Navigate your [Aiven projects](https://go.aiven.io/mcp-server) and interact with the PostgreSQL®, Apache Kafka®, ClickHouse® and OpenSearch® services - Alibaba Cloud AnalyticDB for MySQL Logo **[Alibaba Cloud AnalyticDB for MySQL](https://github.com/aliyun/alibabacloud-adb-mysql-mcp-server)** - Connect to a [AnalyticDB for MySQL](https://www.alibabacloud.com/en/product/analyticdb-for-mysql) cluster for getting database or table metadata, querying and analyzing data.It will be supported to add the openapi for cluster operation in the future. +- Alibaba Cloud RDS MySQL Logo **[Alibaba Cloud RDS MySQL](https://github.com/aliyun/alibabacloud-rds-openapi-mcp-server)** - An MCP server designed to interact with the Alibaba Cloud RDS OpenAPI, enabling programmatic management of RDS resources via an LLM. - Apache IoTDB Logo **[Apache IoTDB](https://github.com/apache/iotdb-mcp-server)** - MCP Server for [Apache IoTDB](https://github.com/apache/iotdb) database and its tools - Apify Logo **[Apify](https://github.com/apify/actors-mcp-server)** - [Actors MCP Server](https://apify.com/apify/actors-mcp-server): Use 3,000+ pre-built cloud tools to extract data from websites, e-commerce, social media, search engines, maps, and more - APIMatic Logo **[APIMatic MCP](https://github.com/apimatic/apimatic-validator-mcp)** - APIMatic MCP Server is used to validate OpenAPI specifications using [APIMatic](https://www.apimatic.io/). The server processes OpenAPI files and returns validation summaries by leveraging APIMatic’s API. From 1f8d5e948cf6ead6e716c9cddc120c26a8b60820 Mon Sep 17 00:00:00 2001 From: "wenfeng.wf" Date: Thu, 15 May 2025 17:54:27 +0800 Subject: [PATCH 3/7] Add Alibaba Cloud RDS MCP Server to README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 877d91f6e4..8129c7cd2e 100644 --- a/README.md +++ b/README.md @@ -45,7 +45,7 @@ Official integrations are maintained by companies building production ready MCP - AgentRPC Logo **[AgentRPC](https://github.com/agentrpc/agentrpc)** - Connect to any function, any language, across network boundaries using [AgentRPC](https://www.agentrpc.com/). - Aiven Logo **[Aiven](https://github.com/Aiven-Open/mcp-aiven)** - Navigate your [Aiven projects](https://go.aiven.io/mcp-server) and interact with the PostgreSQL®, Apache Kafka®, ClickHouse® and OpenSearch® services - Alibaba Cloud AnalyticDB for MySQL Logo **[Alibaba Cloud AnalyticDB for MySQL](https://github.com/aliyun/alibabacloud-adb-mysql-mcp-server)** - Connect to a [AnalyticDB for MySQL](https://www.alibabacloud.com/en/product/analyticdb-for-mysql) cluster for getting database or table metadata, querying and analyzing data.It will be supported to add the openapi for cluster operation in the future. -- Alibaba Cloud RDS MySQL Logo **[Alibaba Cloud RDS MySQL](https://github.com/aliyun/alibabacloud-rds-openapi-mcp-server)** - An MCP server designed to interact with the Alibaba Cloud RDS OpenAPI, enabling programmatic management of RDS resources via an LLM. +- Alibaba Cloud RDS MySQL Logo **[Alibaba Cloud RDS](https://github.com/aliyun/alibabacloud-rds-openapi-mcp-server)** - An MCP server designed to interact with the Alibaba Cloud RDS OpenAPI, enabling programmatic management of RDS resources via an LLM. - Apache IoTDB Logo **[Apache IoTDB](https://github.com/apache/iotdb-mcp-server)** - MCP Server for [Apache IoTDB](https://github.com/apache/iotdb) database and its tools - Apify Logo **[Apify](https://github.com/apify/actors-mcp-server)** - [Actors MCP Server](https://apify.com/apify/actors-mcp-server): Use 3,000+ pre-built cloud tools to extract data from websites, e-commerce, social media, search engines, maps, and more - APIMatic Logo **[APIMatic MCP](https://github.com/apimatic/apimatic-validator-mcp)** - APIMatic MCP Server is used to validate OpenAPI specifications using [APIMatic](https://www.apimatic.io/). The server processes OpenAPI files and returns validation summaries by leveraging APIMatic’s API. From 3894d236c0eb54377f88991db4979cc5b4dd7d17 Mon Sep 17 00:00:00 2001 From: cliffhall Date: Thu, 15 May 2025 14:13:15 -0400 Subject: [PATCH 4/7] * In src/everything/sse.ts and streamableHttp.ts - Replace console.log with console.error throughout * In src/everything/sse.ts - remove the process.exit() in the server.onclose handler so reconnections are possible --- src/everything/sse.ts | 7 +++---- src/everything/streamableHttp.ts | 22 +++++++++++----------- 2 files changed, 14 insertions(+), 15 deletions(-) diff --git a/src/everything/sse.ts b/src/everything/sse.ts index 928916c754..b687ad40c8 100644 --- a/src/everything/sse.ts +++ b/src/everything/sse.ts @@ -11,24 +11,23 @@ const { server, cleanup } = createServer(); let transport: SSEServerTransport; app.get("/sse", async (req, res) => { - console.log("Received connection"); + console.error("Received connection"); transport = new SSEServerTransport("/message", res); await server.connect(transport); server.onclose = async () => { await cleanup(); await server.close(); - process.exit(0); }; }); app.post("/message", async (req, res) => { - console.log("Received message"); + console.error("Received message"); await transport.handlePostMessage(req, res); }); const PORT = process.env.PORT || 3001; app.listen(PORT, () => { - console.log(`Server is running on port ${PORT}`); + console.error(`Server is running on port ${PORT}`); }); diff --git a/src/everything/streamableHttp.ts b/src/everything/streamableHttp.ts index e6486dfa44..9ea3a8fc14 100644 --- a/src/everything/streamableHttp.ts +++ b/src/everything/streamableHttp.ts @@ -13,7 +13,7 @@ const { server, cleanup } = createServer(); const transports: { [sessionId: string]: StreamableHTTPServerTransport } = {}; app.post('/mcp', async (req: Request, res: Response) => { - console.log('Received MCP POST request'); + console.error('Received MCP POST request'); try { // Check for existing session ID const sessionId = req.headers['mcp-session-id'] as string | undefined; @@ -31,7 +31,7 @@ app.post('/mcp', async (req: Request, res: Response) => { onsessioninitialized: (sessionId) => { // Store the transport by session ID when session is initialized // This avoids race conditions where requests might come in before the session is stored - console.log(`Session initialized with ID: ${sessionId}`); + console.error(`Session initialized with ID: ${sessionId}`); transports[sessionId] = transport; } }); @@ -40,7 +40,7 @@ app.post('/mcp', async (req: Request, res: Response) => { transport.onclose = () => { const sid = transport.sessionId; if (sid && transports[sid]) { - console.log(`Transport closed for session ${sid}, removing from transports map`); + console.error(`Transport closed for session ${sid}, removing from transports map`); delete transports[sid]; } }; @@ -85,7 +85,7 @@ app.post('/mcp', async (req: Request, res: Response) => { // Handle GET requests for SSE streams (using built-in support from StreamableHTTP) app.get('/mcp', async (req: Request, res: Response) => { - console.log('Received MCP GET request'); + console.error('Received MCP GET request'); const sessionId = req.headers['mcp-session-id'] as string | undefined; if (!sessionId || !transports[sessionId]) { res.status(400).json({ @@ -102,9 +102,9 @@ app.get('/mcp', async (req: Request, res: Response) => { // Check for Last-Event-ID header for resumability const lastEventId = req.headers['last-event-id'] as string | undefined; if (lastEventId) { - console.log(`Client reconnecting with Last-Event-ID: ${lastEventId}`); + console.error(`Client reconnecting with Last-Event-ID: ${lastEventId}`); } else { - console.log(`Establishing new SSE stream for session ${sessionId}`); + console.error(`Establishing new SSE stream for session ${sessionId}`); } const transport = transports[sessionId]; @@ -126,7 +126,7 @@ app.delete('/mcp', async (req: Request, res: Response) => { return; } - console.log(`Received session termination request for session ${sessionId}`); + console.error(`Received session termination request for session ${sessionId}`); try { const transport = transports[sessionId]; @@ -150,17 +150,17 @@ app.delete('/mcp', async (req: Request, res: Response) => { // Start the server const PORT = process.env.PORT || 3001; app.listen(PORT, () => { - console.log(`MCP Streamable HTTP Server listening on port ${PORT}`); + console.error(`MCP Streamable HTTP Server listening on port ${PORT}`); }); // Handle server shutdown process.on('SIGINT', async () => { - console.log('Shutting down server...'); + console.error('Shutting down server...'); // Close all active transports to properly clean up resources for (const sessionId in transports) { try { - console.log(`Closing transport for session ${sessionId}`); + console.error(`Closing transport for session ${sessionId}`); await transports[sessionId].close(); delete transports[sessionId]; } catch (error) { @@ -169,6 +169,6 @@ process.on('SIGINT', async () => { } await cleanup(); await server.close(); - console.log('Server shutdown complete'); + console.error('Server shutdown complete'); process.exit(0); }); From 26aa0f8091853ebc43d481f1e8f95cf960bb0a5c Mon Sep 17 00:00:00 2001 From: cliffhall Date: Thu, 15 May 2025 14:32:42 -0400 Subject: [PATCH 5/7] * In src/everything/sse.ts - add SIGINT handler that does cleanup, server.close, and process.exit --- src/everything/sse.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/everything/sse.ts b/src/everything/sse.ts index b687ad40c8..01794cddd2 100644 --- a/src/everything/sse.ts +++ b/src/everything/sse.ts @@ -19,6 +19,7 @@ app.get("/sse", async (req, res) => { await cleanup(); await server.close(); }; + }); app.post("/message", async (req, res) => { @@ -27,7 +28,14 @@ app.post("/message", async (req, res) => { await transport.handlePostMessage(req, res); }); +process.on("SIGINT", async () => { + await cleanup(); + await server.close(); + process.exit(0); +}); + const PORT = process.env.PORT || 3001; app.listen(PORT, () => { console.error(`Server is running on port ${PORT}`); }); + From 12429d2861e65ede8db5277651d4fb3b9f4abfd8 Mon Sep 17 00:00:00 2001 From: Vish <806390+vish74@users.noreply.github.com> Date: Thu, 15 May 2025 12:33:30 -0700 Subject: [PATCH 6/7] Add Litmus MCP Server to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 80b0f1021c..f0340d1fbc 100644 --- a/README.md +++ b/README.md @@ -113,6 +113,7 @@ Official integrations are maintained by companies building production ready MCP - Logfire Logo **[Logfire](https://github.com/pydantic/logfire-mcp)** - Provides access to OpenTelemetry traces and metrics through Logfire. - Langfuse Logo **[Langfuse Prompt Management](https://github.com/langfuse/mcp-server-langfuse)** - Open-source tool for collaborative editing, versioning, evaluating, and releasing prompts. - Lingo.dev Logo **[Lingo.dev](https://github.com/lingodotdev/lingo.dev/blob/main/mcp.md)** - Make your AI agent speak every language on the planet, using [Lingo.dev](https://lingo.dev) Localization Engine. +- Litmus.io Logo **[Litmus.io](https://github.com/litmusautomation/litmus-mcp-server)** - Official MCP server for configuring [Litmus](https://litmus.io) Edge for Industrial Data Collection, Edge Analytics & Industrial AI. - Mailgun Logo **[Mailgun](https://github.com/mailgun/mailgun-mcp-server)** - Interact with Mailgun API. - Make Logo **[Make](https://github.com/integromat/make-mcp-server)** - Turn your [Make](https://www.make.com/) scenarios into callable tools for AI assistants. - MCP Toolbox for Databases Logo **[MCP Toolbox for Databases](https://github.com/googleapis/genai-toolbox)** - Open source MCP server specializing in easy, fast, and secure tools for Databases. Supports AlloyDB, BigQuery, Bigtable, Cloud SQL, Dgraph, MySQL, Neo4j, Postgres, Spanner, and more. From 72db651adc2fd98eb48014f885cb2b0c21b68c91 Mon Sep 17 00:00:00 2001 From: Hexix23 Date: Sat, 17 May 2025 19:51:58 +0200 Subject: [PATCH 7/7] Update README.md to improve clarity and organization of reference servers --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index f6171f1202..4432d0e45f 100644 --- a/README.md +++ b/README.md @@ -324,6 +324,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[SearXNG](https://github.com/ihor-sokoliuk/mcp-searxng)** - A Model Context Protocol Server for [SearXNG](https://docs.searxng.org) - **[ServiceNow](https://github.com/osomai/servicenow-mcp)** - A MCP server to interact with a ServiceNow instance - **[Shodan MCP](https://github.com/Hexix23/shodan-mcp)** - MCP server to interact with [Shodan](https://www.shodan.io/) +- **[Shopify](https://github.com/GeLi2001/shopify-mcp)** - MCP to interact with Shopify API including order, product, customers and so on. - **[Siri Shortcuts](https://github.com/dvcrn/mcp-server-siri-shortcuts)** - MCP to interact with Siri Shortcuts on macOS. Exposes all Shortcuts as MCP tools. - **[Snowflake](https://github.com/isaacwasserman/mcp-snowflake-server)** - This MCP server enables LLMs to interact with Snowflake databases, allowing for secure and controlled data operations. - **[Solana Agent Kit](https://github.com/sendaifun/solana-agent-kit/tree/main/examples/agent-kit-mcp-server)** - This MCP server enables LLMs to interact with the Solana blockchain with help of Solana Agent Kit by SendAI, allowing for 40+ protcool actions and growing