From c99dc8f493a0077d5e9a81e1472d52d2d513a2ec Mon Sep 17 00:00:00 2001 From: Patrik Simek Date: Mon, 10 Mar 2025 21:51:58 +0100 Subject: [PATCH 1/9] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 214f636be5..5f0b6a991a 100644 --- a/README.md +++ b/README.md @@ -70,6 +70,7 @@ Official integrations are maintained by companies building production ready MCP - Tinybird Logo **[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform - Verodat Logo **[Verodat](https://github.com/Verodat/verodat-mcp-server)** - Interact with Verodat AI Ready Data platform - ClickHouse Logo **[ClickHouse](https://github.com/ClickHouse/mcp-clickhouse)** - Query your [ClickHouse](https://clickhouse.com/) server. +- Make Logo **[Make](https://github.com/integromat/make-mcp-server)** - Turn your [Make](https://www.make.com/) scenarios into callable tools for AI assistants. ### 🌎 Community Servers From 2ba960ca13c426b8296c53a5e80abade0d432a35 Mon Sep 17 00:00:00 2001 From: cliffhall Date: Thu, 13 Mar 2025 15:23:52 -0400 Subject: [PATCH 2/9] In the Inspector, log messages from the server were not being displayed. https://github.com/modelcontextprotocol/inspector/issues/184 The user who created the issue provided a python test server to send dummy messages, but I expected that the 'everything server' would be exercising this capability, but it wasn't. So I decided to add that functionality at the same time as fixing the inspector. In src/everything/everything.ts - add logsUpdateInterval - use setInterval to send a random-leveled log message every 15 seconds --- src/everything/everything.ts | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/src/everything/everything.ts b/src/everything/everything.ts index c0553693fa..d40948a40a 100644 --- a/src/everything/everything.ts +++ b/src/everything/everything.ts @@ -99,10 +99,11 @@ export const createServer = () => { ); let subscriptions: Set = new Set(); - let updateInterval: NodeJS.Timeout | undefined; + let subsUpdateInterval: NodeJS.Timeout | undefined; + let logsUpdateInterval: NodeJS.Timeout | undefined; // Set up update interval for subscribed resources - updateInterval = setInterval(() => { + subsUpdateInterval = setInterval(() => { for (const uri of subscriptions) { server.notification({ method: "notifications/resources/updated", @@ -111,6 +112,21 @@ export const createServer = () => { } }, 5000); + // Set up update interval for random log messages + logsUpdateInterval = setInterval(() => { + const messages = [ + {level: "info", data: "Information is good"}, + {level: "warning", data: "Warning is scary"}, + {level: "error", data: "Error is bad"}, + ] + server.notification({ + method: "notifications/message", + params: messages[Math.floor(Math.random()*3)], + }); + }, 15000); + + + // Helper method to request sampling from client const requestSampling = async ( context: string, @@ -451,7 +467,7 @@ export const createServer = () => { if (name === ToolName.ANNOTATED_MESSAGE) { const { messageType, includeImage } = AnnotatedMessageSchema.parse(args); - + const content = []; // Main message with different priorities/audiences based on type @@ -511,7 +527,7 @@ export const createServer = () => { if (!resourceId) return { completion: { values: [] } }; // Filter resource IDs that start with the input value - const values = EXAMPLE_COMPLETIONS.resourceId.filter(id => + const values = EXAMPLE_COMPLETIONS.resourceId.filter(id => id.startsWith(argument.value) ); return { completion: { values, hasMore: false, total: values.length } }; @@ -522,7 +538,7 @@ export const createServer = () => { const completions = EXAMPLE_COMPLETIONS[argument.name as keyof typeof EXAMPLE_COMPLETIONS]; if (!completions) return { completion: { values: [] } }; - const values = completions.filter(value => + const values = completions.filter(value => value.startsWith(argument.value) ); return { completion: { values, hasMore: false, total: values.length } }; @@ -548,9 +564,8 @@ export const createServer = () => { }); const cleanup = async () => { - if (updateInterval) { - clearInterval(updateInterval); - } + if (subsUpdateInterval) clearInterval(subsUpdateInterval); + if (logsUpdateInterval) clearInterval(logsUpdateInterval); }; return { server, cleanup }; From f41b117716c9998a2187620d58c4fba797b8c24a Mon Sep 17 00:00:00 2001 From: cliffhall Date: Thu, 13 Mar 2025 15:33:59 -0400 Subject: [PATCH 3/9] Update everything/README.md with info about the logging output --- src/everything/README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/src/everything/README.md b/src/everything/README.md index f80848ee2c..56a0f4600a 100644 --- a/src/everything/README.md +++ b/src/everything/README.md @@ -96,6 +96,20 @@ Resource features: - `style` (string): Output style preference - Returns: Multi-turn conversation with images +### Logging + +The server sends random-leveled log messages every 15 seconds, e.g.: + +```json +{ + "method": "notifications/message", + "params": { + "level": "info", + "data": "Information is good" + } +} +``` + ## Usage with Claude Desktop Add to your `claude_desktop_config.json`: From 91efd434e47a6638325237fe674673a3337a0e4d Mon Sep 17 00:00:00 2001 From: Patrik Simek Date: Thu, 13 Mar 2025 20:44:59 +0100 Subject: [PATCH 4/9] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5f0b6a991a..5ab079589e 100644 --- a/README.md +++ b/README.md @@ -54,6 +54,7 @@ Official integrations are maintained by companies building production ready MCP - **[JetBrains](https://github.com/JetBrains/mcp-jetbrains)** – Work on your code with JetBrains IDEs - Kagi Logo **[Kagi Search](https://github.com/kagisearch/kagimcp)** - Search the web using Kagi's search API - 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. +- Make Logo **[Make](https://github.com/integromat/make-mcp-server)** - Turn your [Make](https://www.make.com/) scenarios into callable tools for AI assistants. - Meilisearch Logo **[Meilisearch](https://github.com/meilisearch/meilisearch-mcp)** - Interact & query with Meilisearch (Full-text & semantic search API) - **[Metoro](https://github.com/metoro-io/metoro-mcp-server)** - Query and interact with kubernetes environments monitored by Metoro - MotherDuck Logo **[MotherDuck](https://github.com/motherduckdb/mcp-server-motherduck)** - Query and analyze data with MotherDuck and local DuckDB @@ -70,7 +71,6 @@ Official integrations are maintained by companies building production ready MCP - Tinybird Logo **[Tinybird](https://github.com/tinybirdco/mcp-tinybird)** - Interact with Tinybird serverless ClickHouse platform - Verodat Logo **[Verodat](https://github.com/Verodat/verodat-mcp-server)** - Interact with Verodat AI Ready Data platform - ClickHouse Logo **[ClickHouse](https://github.com/ClickHouse/mcp-clickhouse)** - Query your [ClickHouse](https://clickhouse.com/) server. -- Make Logo **[Make](https://github.com/integromat/make-mcp-server)** - Turn your [Make](https://www.make.com/) scenarios into callable tools for AI assistants. ### 🌎 Community Servers From da7d9b74f7123a5de3441470cc772163baf43e95 Mon Sep 17 00:00:00 2001 From: MG Date: Sat, 15 Mar 2025 20:26:26 +0300 Subject: [PATCH 5/9] Update README.md-- Add Algorand MCP Add Algorand MCP to the README.md file under community server lists and in the correct alphabetical position. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index db14d3849f..81d0519039 100644 --- a/README.md +++ b/README.md @@ -101,6 +101,7 @@ A growing set of community-developed and maintained servers demonstrates various > **Note:** Community servers are **untested** and should be used at **your own risk**. They are not affiliated with or endorsed by Anthropic. - **[Ableton Live](https://github.com/Simon-Kansara/ableton-live-mcp-server)** - an MCP server to control Ableton Live. - **[Airbnb](https://github.com/openbnb-org/mcp-server-airbnb)** - Provides tools to search Airbnb and get listing details. +- **[Algorand](https://github.com/GoPlausible/algorand-mcp)** - A comprehensive MCP server for tooling interactions(40+) and resource accessibility(60+) plus many useful prompts. - **[AWS](https://github.com/rishikavikondala/mcp-server-aws)** - Perform operations on your AWS resources using an LLM - **[AWS Athena](https://github.com/lishenxydlgzs/aws-athena-mcp)** - A MCP server for AWS Athena to run SQL queries on Glue Catalog - **[AWS Cost Explorer](https://github.com/aarora79/aws-cost-explorer-mcp-server)** - Optimize your AWS spend (include Amazon Bedrock spend) by with this MCP server by examining spend across regions, services, instance types and foundation models ([demo video](https://www.youtube.com/watch?v=WuVOmYLRFmI&feature=youtu.be)). From 0f0ed351cb4b8660398449c69ed6110938f2ce7c Mon Sep 17 00:00:00 2001 From: cliffhall Date: Sat, 15 Mar 2025 16:39:14 -0400 Subject: [PATCH 6/9] Respect log level setting by client * This fixes #868 * In everything.ts - import LoggingLevel from sdk - add log messages for all levels - add isMessageIgnored function that checks the incoming level against the logLevel and returns false if it is a lower index than the logLevel - in the setInterval for sending dummy logs, only send the message if it is not ignored by the logLevel. --- src/everything/everything.ts | 40 ++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 13 deletions(-) diff --git a/src/everything/everything.ts b/src/everything/everything.ts index d40948a40a..8ee80bf23e 100644 --- a/src/everything/everything.ts +++ b/src/everything/everything.ts @@ -9,6 +9,7 @@ import { ListResourcesRequestSchema, ListResourceTemplatesRequestSchema, ListToolsRequestSchema, + LoggingLevel, ReadResourceRequestSchema, Resource, SetLevelRequestSchema, @@ -100,9 +101,8 @@ export const createServer = () => { let subscriptions: Set = new Set(); let subsUpdateInterval: NodeJS.Timeout | undefined; - let logsUpdateInterval: NodeJS.Timeout | undefined; - // Set up update interval for subscribed resources + subsUpdateInterval = setInterval(() => { for (const uri of subscriptions) { server.notification({ @@ -112,21 +112,34 @@ export const createServer = () => { } }, 5000); + let logLevel: LoggingLevel = "debug"; + let logsUpdateInterval: NodeJS.Timeout | undefined; + const messages = [ + {level: "debug", data: "Debug-level message"}, + {level: "info", data: "Info-level message"}, + {level: "notice", data: "Notice-level message"}, + {level: "warning", data: "Warning-level message"}, + {level: "error", data: "Error-level message"}, + {level: "critical", data: "Critical-level message"}, + {level: "alert", data: "Alert level-message"}, + {level: "emergency", data: "Emergency-level message"} + ] + + const isMessageIgnored = (level:LoggingLevel):boolean => { + const currentLevel = messages.findIndex((msg) => logLevel === msg.level); + const messageLevel = messages.findIndex((msg) => level === msg.level); + return messageLevel < currentLevel; + } + // Set up update interval for random log messages logsUpdateInterval = setInterval(() => { - const messages = [ - {level: "info", data: "Information is good"}, - {level: "warning", data: "Warning is scary"}, - {level: "error", data: "Error is bad"}, - ] - server.notification({ + let message = { method: "notifications/message", - params: messages[Math.floor(Math.random()*3)], - }); + params: messages[Math.floor(Math.random() * messages.length)], + } + if (!isMessageIgnored(message.params.level as LoggingLevel)) server.notification(message); }, 15000); - - // Helper method to request sampling from client const requestSampling = async ( context: string, @@ -549,6 +562,7 @@ export const createServer = () => { server.setRequestHandler(SetLevelRequestSchema, async (request) => { const { level } = request.params; + logLevel = level; // Demonstrate different log levels await server.notification({ @@ -556,7 +570,7 @@ export const createServer = () => { params: { level: "debug", logger: "test-server", - data: `Logging level set to: ${level}`, + data: `Logging level set to: ${logLevel}`, }, }); From f175c9778ca1d30b9d395deef0f5f62c30f9e51e Mon Sep 17 00:00:00 2001 From: MG Date: Mon, 17 Mar 2025 11:08:52 +0300 Subject: [PATCH 7/9] Update README.md Co-authored-by: Tadas Antanavicius --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 81955a7380..e07e41c9ea 100644 --- a/README.md +++ b/README.md @@ -101,7 +101,7 @@ A growing set of community-developed and maintained servers demonstrates various > **Note:** Community servers are **untested** and should be used at **your own risk**. They are not affiliated with or endorsed by Anthropic. - **[Ableton Live](https://github.com/Simon-Kansara/ableton-live-mcp-server)** - an MCP server to control Ableton Live. - **[Airbnb](https://github.com/openbnb-org/mcp-server-airbnb)** - Provides tools to search Airbnb and get listing details. -- **[Algorand](https://github.com/GoPlausible/algorand-mcp)** - A comprehensive MCP server for tooling interactions(40+) and resource accessibility(60+) plus many useful prompts. +- **[Algorand](https://github.com/GoPlausible/algorand-mcp)** - A comprehensive MCP server for tooling interactions (40+) and resource accessibility (60+) plus many useful prompts for interacting with the Algorand blockchain. - **[AWS](https://github.com/rishikavikondala/mcp-server-aws)** - Perform operations on your AWS resources using an LLM - **[AWS Athena](https://github.com/lishenxydlgzs/aws-athena-mcp)** - A MCP server for AWS Athena to run SQL queries on Glue Catalog - **[AWS Cost Explorer](https://github.com/aarora79/aws-cost-explorer-mcp-server)** - Optimize your AWS spend (including Amazon Bedrock spend) with this MCP server by examining spend across regions, services, instance types and foundation models ([demo video](https://www.youtube.com/watch?v=WuVOmYLRFmI&feature=youtu.be)). From b7331f523ea8bf91962c5e3dbe9ae9bf8eed65a7 Mon Sep 17 00:00:00 2001 From: MG Date: Mon, 17 Mar 2025 11:15:54 +0300 Subject: [PATCH 8/9] Update README.md Fixed AWS Alphabetical order in list Fixed AWS position in list, alphabetically. --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 1066c066db..892de9c21b 100644 --- a/README.md +++ b/README.md @@ -103,10 +103,6 @@ A growing set of community-developed and maintained servers demonstrates various - **[Ableton Live](https://github.com/Simon-Kansara/ableton-live-mcp-server)** - an MCP server to control Ableton Live. - **[Airbnb](https://github.com/openbnb-org/mcp-server-airbnb)** - Provides tools to search Airbnb and get listing details. - **[Algorand](https://github.com/GoPlausible/algorand-mcp)** - A comprehensive MCP server for tooling interactions (40+) and resource accessibility (60+) plus many useful prompts for interacting with the Algorand blockchain. -- **[AWS](https://github.com/rishikavikondala/mcp-server-aws)** - Perform operations on your AWS resources using an LLM -- **[AWS Athena](https://github.com/lishenxydlgzs/aws-athena-mcp)** - A MCP server for AWS Athena to run SQL queries on Glue Catalog -- **[AWS Cost Explorer](https://github.com/aarora79/aws-cost-explorer-mcp-server)** - Optimize your AWS spend (including Amazon Bedrock spend) with this MCP server by examining spend across regions, services, instance types and foundation models ([demo video](https://www.youtube.com/watch?v=WuVOmYLRFmI&feature=youtu.be)). -- **[AWS S3](https://github.com/aws-samples/sample-mcp-server-s3)** - A sample MCP server for AWS S3 that flexibly fetches objects from S3 such as PDF documents - **[Airflow](https://github.com/yangkyeongmo/mcp-server-apache-airflow)** - A MCP Server that connects to [Apache Airflow](https://airflow.apache.org/) using official python client. - **[Airtable](https://github.com/domdomegg/airtable-mcp-server)** - Read and write access to [Airtable](https://airtable.com/) databases, with schema inspection. - **[Airtable](https://github.com/felores/airtable-mcp)** - Airtable Model Context Protocol Server. @@ -115,7 +111,11 @@ A growing set of community-developed and maintained servers demonstrates various - **[Any Chat Completions](https://github.com/pyroprompts/any-chat-completions-mcp)** - Interact with any OpenAI SDK Compatible Chat Completions API like OpenAI, Perplexity, Groq, xAI and many more. - **[ArangoDB](https://github.com/ravenwits/mcp-server-arangodb)** - MCP Server that provides database interaction capabilities through [ArangoDB](https://arangodb.com/). - **[Atlassian](https://github.com/sooperset/mcp-atlassian)** - Interact with Atlassian Cloud products (Confluence and Jira) including searching/reading Confluence spaces/pages, accessing Jira issues, and project metadata. -- **[Azure ADX](https://github.com/pab1it0/adx-mcp-server)** - Query and analyze Azure Data Explorer databases +- **[AWS](https://github.com/rishikavikondala/mcp-server-aws)** - Perform operations on your AWS resources using an LLM. +- **[AWS Athena](https://github.com/lishenxydlgzs/aws-athena-mcp)** - A MCP server for AWS Athena to run SQL queries on Glue Catalog. +- **[AWS Cost Explorer](https://github.com/aarora79/aws-cost-explorer-mcp-server)** - Optimize your AWS spend (including Amazon Bedrock spend) with this MCP server by examining spend across regions, services, instance types and foundation models ([demo video](https://www.youtube.com/watch?v=WuVOmYLRFmI&feature=youtu.be)). +- **[AWS S3](https://github.com/aws-samples/sample-mcp-server-s3)** - A sample MCP server for AWS S3 that flexibly fetches objects from S3 such as PDF documents. +- **[Azure ADX](https://github.com/pab1it0/adx-mcp-server)** - Query and analyze Azure Data Explorer databases. - **[Base Free USDC Transfer](https://github.com/magnetai/mcp-free-usdc-transfer)** - Send USDC on [Base](https://base.org) for free using Claude AI! Built with [Coinbase CDP](https://docs.cdp.coinbase.com/mpc-wallet/docs/welcome). - **[BigQuery](https://github.com/LucasHild/mcp-server-bigquery)** (by LucasHild) - This server enables LLMs to inspect database schemas and execute queries on BigQuery. - **[BigQuery](https://github.com/ergut/mcp-bigquery-server)** (by ergut) - Server implementation for Google BigQuery integration that enables direct BigQuery database access and querying capabilities From 487fe0237c8b112269c1253157c030d59c540810 Mon Sep 17 00:00:00 2001 From: cliffhall Date: Mon, 17 Mar 2025 10:32:57 -0400 Subject: [PATCH 9/9] Update README.md --- src/everything/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/everything/README.md b/src/everything/README.md index 56a0f4600a..ff854ae75f 100644 --- a/src/everything/README.md +++ b/src/everything/README.md @@ -105,7 +105,7 @@ The server sends random-leveled log messages every 15 seconds, e.g.: "method": "notifications/message", "params": { "level": "info", - "data": "Information is good" + "data": "Info-level message" } } ```