From 88c8f5a34735adcc84a71ffa15d10032ebe733a4 Mon Sep 17 00:00:00 2001 From: steven gonsalvez Date: Thu, 6 Feb 2025 23:26:03 +0000 Subject: [PATCH 01/53] Add error handling and logging for GitHub issue creation - Improve error handling in GitHub issue creation process - Add detailed error messages for repository not found scenarios - Implement global fetch polyfill for node-fetch - Add debug and error logging for issue creation attempts --- package-lock.json | 9 ++++++++- src/github/index.ts | 43 +++++++++++++++++++++++++++++++++++++++---- 2 files changed, 47 insertions(+), 5 deletions(-) diff --git a/package-lock.json b/package-lock.json index ce8e521f..12482a9e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4786,6 +4786,12 @@ "integrity": "sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==", "license": "MIT" }, + "node_modules/universal-user-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-7.0.2.tgz", + "integrity": "sha512-0JCqzSKnStlRRQfCdowvqy3cy0Dvtlb8xecj/H8JFZuCze4rwjPZQOgvFvn0Ws/usCHQFGpyr+pB9adaGwXn4Q==", + "license": "ISC" + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -5292,6 +5298,7 @@ "@types/node": "^22", "@types/node-fetch": "^2.6.12", "node-fetch": "^3.3.2", + "universal-user-agent": "^7.0.2", "zod": "^3.22.4", "zod-to-json-schema": "^3.23.5" }, @@ -5445,7 +5452,7 @@ }, "src/memory": { "name": "@modelcontextprotocol/server-memory", - "version": "0.6.2", + "version": "0.6.3", "license": "MIT", "dependencies": { "@modelcontextprotocol/sdk": "1.0.1" diff --git a/src/github/index.ts b/src/github/index.ts index 88b23689..dbdee604 100644 --- a/src/github/index.ts +++ b/src/github/index.ts @@ -7,6 +7,7 @@ import { } from "@modelcontextprotocol/sdk/types.js"; import { z } from 'zod'; import { zodToJsonSchema } from 'zod-to-json-schema'; +import fetch, { Request, Response } from 'node-fetch'; import * as repository from './operations/repository.js'; import * as files from './operations/files.js'; @@ -27,6 +28,11 @@ import { } from './common/errors.js'; import { VERSION } from "./common/version.js"; +// If fetch doesn't exist in global scope, add it +if (!globalThis.fetch) { + globalThis.fetch = fetch as unknown as typeof global.fetch; +} + const server = new Server( { name: "github-mcp-server", @@ -248,10 +254,39 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => { case "create_issue": { const args = issues.CreateIssueSchema.parse(request.params.arguments); const { owner, repo, ...options } = args; - const issue = await issues.createIssue(owner, repo, options); - return { - content: [{ type: "text", text: JSON.stringify(issue, null, 2) }], - }; + + try { + console.error(`[DEBUG] Attempting to create issue in ${owner}/${repo}`); + console.error(`[DEBUG] Issue options:`, JSON.stringify(options, null, 2)); + + const issue = await issues.createIssue(owner, repo, options); + + console.error(`[DEBUG] Issue created successfully`); + return { + content: [{ type: "text", text: JSON.stringify(issue, null, 2) }], + }; + } catch (err) { + // Type guard for Error objects + const error = err instanceof Error ? err : new Error(String(err)); + + console.error(`[ERROR] Failed to create issue:`, error); + + if (error instanceof GitHubResourceNotFoundError) { + throw new Error( + `Repository '${owner}/${repo}' not found. Please verify:\n` + + `1. The repository exists\n` + + `2. You have correct access permissions\n` + + `3. The owner and repository names are spelled correctly` + ); + } + + // Safely access error properties + throw new Error( + `Failed to create issue: ${error.message}${ + error.stack ? `\nStack: ${error.stack}` : '' + }` + ); + } } case "create_pull_request": { From 732c119c75f83b3395d39a5d3b711eba42b36c33 Mon Sep 17 00:00:00 2001 From: CONG To Quang Date: Mon, 3 Mar 2025 14:00:02 +0700 Subject: [PATCH 02/53] feat(gitlab): Make owner and fork properties optional --- src/gitlab/schemas.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gitlab/schemas.ts b/src/gitlab/schemas.ts index 108c190b..00a76537 100644 --- a/src/gitlab/schemas.ts +++ b/src/gitlab/schemas.ts @@ -22,10 +22,10 @@ export const GitLabRepositorySchema = z.object({ name: z.string(), path_with_namespace: z.string(), // Changed from full_name to match GitLab API visibility: z.string(), // Changed from private to match GitLab API - owner: GitLabOwnerSchema, + owner: GitLabOwnerSchema.optional(), web_url: z.string(), // Changed from html_url to match GitLab API description: z.string().nullable(), - fork: z.boolean(), + fork: z.boolean().optional(), ssh_url_to_repo: z.string(), // Changed from ssh_url to match GitLab API http_url_to_repo: z.string(), // Changed from clone_url to match GitLab API created_at: z.string(), From e5329f82b706d5c817b926b1c10ccb33b054b196 Mon Sep 17 00:00:00 2001 From: mac Date: Sun, 9 Mar 2025 15:04:35 +0100 Subject: [PATCH 03/53] Update README.md to add community browser-use MCP server link to https://github.com/co-browser/browser-use-mcp-server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 214f636b..e1e23259 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[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 +- **[browser-use]((https://github.com/co-browser/browser-use-mcp-server)** (by co-browser) browser-use SSE MCP server with dockerized playwright + chromium + vnc - **[Calendar](https://github.com/GongRzhe/Calendar-MCP-Server)** - Google Calendar integration server enabling AI assistants to manage calendar events through natural language interactions. - **[CFBD API](https://github.com/lenwood/cfbd-mcp-server)** - An MCP server for the [College Football Data API](https://collegefootballdata.com/). - **[ChatMCP](https://github.com/AI-QL/chat-mcp)** – An Open Source Cross-platform GUI Desktop application compatible with Linux, macOS, and Windows, enabling seamless interaction with MCP servers across dynamically selectable LLMs, by **[AIQL](https://github.com/AI-QL)** From 8fe9b4768a14dfbd36326fabba3378a3970788d0 Mon Sep 17 00:00:00 2001 From: Franco Valerio Date: Sun, 9 Mar 2025 20:04:52 -0300 Subject: [PATCH 04/53] fix(gitlab): Invalid arguments error when using v4 API for gitlab.com Make 'merged' property optional and 'diff_refs' nullable in the `GitLabMergeRequestSchema` to align with GitLab V4 API specifications. --- src/gitlab/schemas.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/gitlab/schemas.ts b/src/gitlab/schemas.ts index 108c190b..efb456ed 100644 --- a/src/gitlab/schemas.ts +++ b/src/gitlab/schemas.ts @@ -218,12 +218,12 @@ export const GitLabMergeRequestSchema = z.object({ title: z.string(), description: z.string(), // Changed from body to match GitLab API state: z.string(), - merged: z.boolean(), + merged: z.boolean().optional(), author: GitLabUserSchema, assignees: z.array(GitLabUserSchema), source_branch: z.string(), // Changed from head to match GitLab API target_branch: z.string(), // Changed from base to match GitLab API - diff_refs: GitLabMergeRequestDiffRefSchema, + diff_refs: GitLabMergeRequestDiffRefSchema.nullable(), web_url: z.string(), // Changed from html_url to match GitLab API created_at: z.string(), updated_at: z.string(), From 64a654744a414e76fa007063d6ea5425d17d574d Mon Sep 17 00:00:00 2001 From: shiquda Date: Thu, 13 Mar 2025 00:20:48 +0800 Subject: [PATCH 05/53] feat(fetch): add support for using proxy for requests --- src/fetch/README.md | 4 ++++ src/fetch/src/mcp_server_fetch/__init__.py | 3 ++- src/fetch/src/mcp_server_fetch/server.py | 19 +++++++++++-------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/src/fetch/README.md b/src/fetch/README.md index 0e58b3de..01d99cac 100644 --- a/src/fetch/README.md +++ b/src/fetch/README.md @@ -107,6 +107,10 @@ ModelContextProtocol/1.0 (User-Specified; +https://github.com/modelcontextprotoc This can be customized by adding the argument `--user-agent=YourUserAgent` to the `args` list in the configuration. +### Customization - Proxy + +The server can be configured to use a proxy by using the `--proxy-url` argument. + ## Debugging You can use the MCP inspector to debug the server. For uvx installations: diff --git a/src/fetch/src/mcp_server_fetch/__init__.py b/src/fetch/src/mcp_server_fetch/__init__.py index e3a35d54..09744ce3 100644 --- a/src/fetch/src/mcp_server_fetch/__init__.py +++ b/src/fetch/src/mcp_server_fetch/__init__.py @@ -15,9 +15,10 @@ def main(): action="store_true", help="Ignore robots.txt restrictions", ) + parser.add_argument("--proxy-url", type=str, help="Proxy URL to use for requests") args = parser.parse_args() - asyncio.run(serve(args.user_agent, args.ignore_robots_txt)) + asyncio.run(serve(args.user_agent, args.ignore_robots_txt, args.proxy_url)) if __name__ == "__main__": diff --git a/src/fetch/src/mcp_server_fetch/server.py b/src/fetch/src/mcp_server_fetch/server.py index 775d79c8..24c6a875 100644 --- a/src/fetch/src/mcp_server_fetch/server.py +++ b/src/fetch/src/mcp_server_fetch/server.py @@ -63,7 +63,7 @@ def get_robots_txt_url(url: str) -> str: return robots_url -async def check_may_autonomously_fetch_url(url: str, user_agent: str) -> None: +async def check_may_autonomously_fetch_url(url: str, user_agent: str, proxy_url: str | None = None) -> None: """ Check if the URL can be fetched by the user agent according to the robots.txt file. Raises a McpError if not. @@ -72,7 +72,7 @@ async def check_may_autonomously_fetch_url(url: str, user_agent: str) -> None: robot_txt_url = get_robots_txt_url(url) - async with AsyncClient() as client: + async with AsyncClient(proxies=proxy_url) as client: try: response = await client.get( robot_txt_url, @@ -109,14 +109,14 @@ async def check_may_autonomously_fetch_url(url: str, user_agent: str) -> None: async def fetch_url( - url: str, user_agent: str, force_raw: bool = False + url: str, user_agent: str, force_raw: bool = False, proxy_url: str | None = None ) -> Tuple[str, str]: """ Fetch the URL and return the content in a form ready for the LLM, as well as a prefix string with status information. """ from httpx import AsyncClient, HTTPError - async with AsyncClient() as client: + async with AsyncClient(proxies=proxy_url) as client: try: response = await client.get( url, @@ -179,13 +179,16 @@ class Fetch(BaseModel): async def serve( - custom_user_agent: str | None = None, ignore_robots_txt: bool = False + custom_user_agent: str | None = None, + ignore_robots_txt: bool = False, + proxy_url: str | None = None, ) -> None: """Run the fetch MCP server. Args: custom_user_agent: Optional custom User-Agent string to use for requests ignore_robots_txt: Whether to ignore robots.txt restrictions + proxy_url: Optional proxy URL to use for requests """ server = Server("mcp-fetch") user_agent_autonomous = custom_user_agent or DEFAULT_USER_AGENT_AUTONOMOUS @@ -229,10 +232,10 @@ Although originally you did not have internet access, and were advised to refuse raise McpError(ErrorData(code=INVALID_PARAMS, message="URL is required")) if not ignore_robots_txt: - await check_may_autonomously_fetch_url(url, user_agent_autonomous) + await check_may_autonomously_fetch_url(url, user_agent_autonomous, proxy_url) content, prefix = await fetch_url( - url, user_agent_autonomous, force_raw=args.raw + url, user_agent_autonomous, force_raw=args.raw, proxy_url=proxy_url ) original_length = len(content) if args.start_index >= original_length: @@ -259,7 +262,7 @@ Although originally you did not have internet access, and were advised to refuse url = arguments["url"] try: - content, prefix = await fetch_url(url, user_agent_manual) + content, prefix = await fetch_url(url, user_agent_manual, proxy_url=proxy_url) # TODO: after SDK bug is addressed, don't catch the exception except McpError as e: return GetPromptResult( From 8702f37197455e6fc5f979e70fb3f51356c6326b Mon Sep 17 00:00:00 2001 From: wolvever Date: Fri, 21 Mar 2025 23:44:32 +0800 Subject: [PATCH 06/53] Add Baidu Cloud AISearch MCPServer --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index acdc3624..f039ca7a 100644 --- a/README.md +++ b/README.md @@ -133,6 +133,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[AWS Resources Operations](https://github.com/baryhuang/mcp-server-aws-resources-python)** - Run generated python code to securely query or modify any AWS resources supported by boto3. - **[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. +- **[Baidu AI Search](https://github.com/baidubce/app-builder/tree/master/python/modelcontextprotocol)** - Web search with Baidu Cloud's AI Search - **[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). * **[Basic Memory](https://github.com/basicmachines-co/basic-memory)** - Local-first knowledge management system that builds a semantic graph from Markdown files, enabling persistent memory across conversations with LLMs. - **[BigQuery](https://github.com/LucasHild/mcp-server-bigquery)** (by LucasHild) - This server enables LLMs to inspect database schemas and execute queries on BigQuery. 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 07/53] 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 df7f616fbbcff710d18677c8e7a47813e37d7877 Mon Sep 17 00:00:00 2001 From: Jedr Blaszyk Date: Tue, 25 Mar 2025 15:33:39 +0100 Subject: [PATCH 08/53] Add Elasticsearch to officially supported integrations --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index af83bccf..1a48f955 100644 --- a/README.md +++ b/README.md @@ -60,6 +60,7 @@ Official integrations are maintained by companies building production ready MCP - DevHub Logo **[DevHub](https://github.com/devhub/devhub-cms-mcp)** - Manage and utilize website content within the [DevHub](https://www.devhub.com) CMS platform - E2B Logo **[E2B](https://github.com/e2b-dev/mcp-server)** - Run code in secure sandboxes hosted by [E2B](https://e2b.dev) - EduBase Logo **[EduBase](https://github.com/EduBase/MCP)** - Interact with [EduBase](https://www.edubase.net), a comprehensive e-learning platform with advanced quizzing, exam management, and content organization capabilities +- Elasticsearch Logo **[Elasticsearch](https://github.com/elastic/mcp-server-elasticsearch)** - Query your data in [Elasticsearch](https://www.elastic.co/elasticsearch) - eSignatures Logo **[eSignatures](https://github.com/esignaturescom/mcp-server-esignatures)** - Contract and template management for drafting, reviewing, and sending binding contracts. - Exa Logo **[Exa](https://github.com/exa-labs/exa-mcp-server)** - Search Engine made for AIs by [Exa](https://exa.ai) - Fewsats Logo **[Fewsats](https://github.com/Fewsats/fewsats-mcp)** - Enable AI Agents to purchase anything in a secure way using [Fewsats](https://fewsats.com) From 0490e08253541371d83dab33c8ee93e7c0c5cab1 Mon Sep 17 00:00:00 2001 From: Wilhelm Klopp Date: Wed, 26 Mar 2025 18:52:33 +0000 Subject: [PATCH 09/53] Fix typo in mcp_server_fetch --- src/fetch/src/mcp_server_fetch/server.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fetch/src/mcp_server_fetch/server.py b/src/fetch/src/mcp_server_fetch/server.py index 775d79c8..b09a347c 100644 --- a/src/fetch/src/mcp_server_fetch/server.py +++ b/src/fetch/src/mcp_server_fetch/server.py @@ -173,7 +173,7 @@ class Fetch(BaseModel): bool, Field( default=False, - description="Get the actual HTML content if the requested page, without simplification.", + description="Get the actual HTML content of the requested page, without simplification.", ), ] From 458599f6303b8af1a9a070cd1bebc0cf84962503 Mon Sep 17 00:00:00 2001 From: Dan Billson Date: Thu, 27 Mar 2025 10:43:31 +0000 Subject: [PATCH 10/53] add paddle mcp server to official integrations --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index dfe25a9a..fc161064 100644 --- a/README.md +++ b/README.md @@ -97,6 +97,7 @@ Official integrations are maintained by companies building production ready MCP - OceanBase Logo **[OceanBase](https://github.com/oceanbase/mcp-oceanbase)** - MCP Server for OceanBase database and its tools - Octagon Logo **[Octagon](https://github.com/OctagonAI/octagon-mcp-server)** - Deliver real-time investment research with extensive private and public market data. - Oxylabs Logo **[Oxylabs](https://github.com/oxylabs/oxylabs-mcp)** - Scrape websites with Oxylabs Web API, supporting dynamic rendering and parsing for structured data extraction. +- Paddle Logo **[Paddle](https://github.com/PaddleHQ/paddle-mcp-server)** - Interact with the Paddle API. Manage product catalog, billing and subscriptions, and reports. - Perplexity Logo **[Perplexity](https://github.com/ppl-ai/modelcontextprotocol)** - An MCP server that connects to Perplexity's Sonar API, enabling real-time web-wide research in conversational AI. - **[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine - **[Ramp](https://github.com/ramp-public/ramp-mcp)** - Interact with [Ramp](https://ramp.com)'s Developer API to run analysis on your spend and gain insights leveraging LLMs From e37940b7bc541b1427ac7ec908e31f1bfaa19159 Mon Sep 17 00:00:00 2001 From: Dennis Zhuang Date: Fri, 28 Mar 2025 14:12:34 +0800 Subject: [PATCH 11/53] Add GreptimeDB mcp server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b0cc79dc..1ebd7d52 100644 --- a/README.md +++ b/README.md @@ -73,6 +73,7 @@ Official integrations are maintained by companies building production ready MCP - gotoHuman Logo **[gotoHuman](https://github.com/gotohuman/gotohuman-mcp-server)** - Human-in-the-loop platform - Allow AI agents and automations to send requests for approval to your [gotoHuman](https://www.gotohuman.com) inbox. - Grafana Logo **[Grafana](https://github.com/grafana/mcp-grafana)** - Search dashboards, investigate incidents and query datasources in your Grafana instance - Graphlit Logo **[Graphlit](https://github.com/graphlit/graphlit-mcp-server)** - Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a searchable [Graphlit](https://www.graphlit.com) project. +- Greptime Logo **[GreptimeDB](https://github.com/GreptimeTeam/greptimedb-mcp-server)** - Provides AI assistants with a secure and structured way to explore and analyze data in [GreptimeDB](https://github.com/GreptimeTeam/greptimedb). - Hologres Logo **[Hologres](https://github.com/aliyun/alibabacloud-hologres-mcp-server)** - Connect to a [Hologres](https://www.alibabacloud.com/en/product/hologres) instance, get table metadata, query and analyze data. - Hyperbrowsers23 Logo **[Hyperbrowser](https://github.com/hyperbrowserai/mcp)** - [Hyperbrowser](https://www.hyperbrowser.ai/) is the next-generation platform empowering AI agents and enabling effortless, scalable browser automation. - **[IBM wxflows](https://github.com/IBM/wxflows/tree/main/examples/mcp/javascript)** - Tool platform by IBM to build, test and deploy tools for any data source From 5353a97f78b867a2e2f2f153bf21bd2acc24d2c8 Mon Sep 17 00:00:00 2001 From: mac Date: Fri, 28 Mar 2025 21:17:56 -0700 Subject: [PATCH 12/53] [community mcp] add attestable-mcp adds a link to an example MCP server that uses Intel SGX and RA-TLS to showcase remote attestation. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index b0cc79dc..a749dd62 100644 --- a/README.md +++ b/README.md @@ -140,6 +140,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[ArangoDB](https://github.com/ravenwits/mcp-server-arangodb)** - MCP Server that provides database interaction capabilities through [ArangoDB](https://arangodb.com/). - **[Arduino](https://github.com/vishalmysore/choturobo)** - MCP Server that enables AI-powered robotics using Claude AI and Arduino (ESP32) for real-world automation and interaction with robots. - **[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. +- **[Attestable MCP](https://github.com/co-browser/attestable-mcp-server)** - An MCP server running inside a trusted execution environment (TEE) via Gramine, showcasing remote attestation using [RA-TLS](https://gramine.readthedocs.io/en/stable/attestation.html). This allows an MCP client to verify the server before conencting. - **[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 a93093a1f8e914f8ee8b5be59fa5799ce5f6749a Mon Sep 17 00:00:00 2001 From: wolvever Date: Sat, 29 Mar 2025 22:00:15 +0800 Subject: [PATCH 13/53] Update README.md community server / baidu ai search github url Update github url of Baidu AI Search --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index a5559e9b..0061f6f3 100644 --- a/README.md +++ b/README.md @@ -146,7 +146,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[AWS Resources Operations](https://github.com/baryhuang/mcp-server-aws-resources-python)** - Run generated python code to securely query or modify any AWS resources supported by boto3. - **[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. -- **[Baidu AI Search](https://github.com/baidubce/app-builder/tree/master/python/mcp/ai_search)** - Web search with Baidu Cloud's AI Search +- **[Baidu AI Search](https://github.com/baidubce/app-builder/tree/master/python/mcp_server/ai_search)** - Web search with Baidu Cloud's AI Search - **[Azure DevOps](https://github.com/Vortiago/mcp-azure-devops)** - An MCP server that provides a bridge to Azure DevOps services, enabling AI assistants to query and manage work items. - **[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). * **[Basic Memory](https://github.com/basicmachines-co/basic-memory)** - Local-first knowledge management system that builds a semantic graph from Markdown files, enabling persistent memory across conversations with LLMs. From 4f93f82009d1e2c0d8e852b34f3295fee84bd97e Mon Sep 17 00:00:00 2001 From: AB498 Date: Sun, 30 Mar 2025 04:13:59 +0600 Subject: [PATCH 14/53] reviewed: fix: detached frame error & feature: Puppeteer launch arguments support --- src/puppeteer/README.md | 41 +++++++++++++++++- src/puppeteer/index.ts | 92 ++++++++++++++++++++++++++++++++++++----- 2 files changed, 120 insertions(+), 13 deletions(-) diff --git a/src/puppeteer/README.md b/src/puppeteer/README.md index 7c7e8160..794cfdf1 100644 --- a/src/puppeteer/README.md +++ b/src/puppeteer/README.md @@ -8,7 +8,10 @@ A Model Context Protocol server that provides browser automation capabilities us - **puppeteer_navigate** - Navigate to any URL in the browser - - Input: `url` (string) + - Inputs: + - `url` (string, required): URL to navigate to + - `launchOptions` (object, optional): PuppeteerJS LaunchOptions. Default null. If changed and not null, browser restarts. Example: `{ headless: true, args: ['--user-data-dir="C:/Data"'] }` + - `allowDangerous` (boolean, optional): Allow dangerous LaunchOptions that reduce security. When false, dangerous args like `--no-sandbox`, `--disable-web-security` will throw errors. Default false. - **puppeteer_screenshot** - Capture screenshots of the entire page or specific elements @@ -61,6 +64,7 @@ The server provides access to two types of resources: - Screenshot capabilities - JavaScript execution - Basic web interaction (navigation, clicking, form filling) +- Customizable Puppeteer launch options ## Configuration to use Puppeteer Server Here's the Claude Desktop configuration to use the Puppeter server: @@ -93,6 +97,39 @@ Here's the Claude Desktop configuration to use the Puppeter server: } ``` +### Launch Options + +You can customize Puppeteer's browser behavior in two ways: + +1. **Environment Variable**: Set `PUPPETEER_LAUNCH_OPTIONS` with a JSON-encoded string in the MCP configuration's `env` parameter: + + ```json + { + "mcpServers": { + "mcp-puppeteer": { + "command": "npx", + "args": ["-y", "@modelcontextprotocol/server-puppeteer"] + "env": { + "PUPPETEER_LAUNCH_OPTIONS": "{ \"headless\": false, \"executablePath\": \"C:/Program Files/Google/Chrome/Application/chrome.exe\", \"args\": [] }", + "ALLOW_DANGEROUS": "true" + } + } + } + } + ``` + +2. **Tool Call Arguments**: Pass `launchOptions` and `allowDangerous` parameters to the `puppeteer_navigate` tool: + + ```json + { + "url": "https://example.com", + "launchOptions": { + "headless": false, + "defaultViewport": {"width": 1280, "height": 720} + } + } + ``` + ## Build Docker build: @@ -103,4 +140,4 @@ docker build -t mcp/puppeteer -f src/puppeteer/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. +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 diff --git a/src/puppeteer/index.ts b/src/puppeteer/index.ts index fda97164..1bee5220 100644 --- a/src/puppeteer/index.ts +++ b/src/puppeteer/index.ts @@ -22,7 +22,9 @@ const TOOLS: Tool[] = [ inputSchema: { type: "object", properties: { - url: { type: "string" }, + url: { type: "string", description: "URL to navigate to" }, + launchOptions: { type: "object", description: "PuppeteerJS LaunchOptions. Default null. If changed and not null, browser restarts. Example: { headless: true, args: ['--no-sandbox'] }" }, + allowDangerous: { type: "boolean", description: "Allow dangerous LaunchOptions that reduce security. When false, dangerous args like --no-sandbox will throw errors. Default false." }, }, required: ["url"], }, @@ -101,16 +103,65 @@ const TOOLS: Tool[] = [ ]; // Global state -let browser: Browser | undefined; -let page: Page | undefined; +let browser: Browser | null; +let page: Page | null; const consoleLogs: string[] = []; const screenshots = new Map(); +let previousLaunchOptions: any = null; + +async function ensureBrowser({ launchOptions, allowDangerous }: any) { + + const DANGEROUS_ARGS = [ + '--no-sandbox', + '--disable-setuid-sandbox', + '--single-process', + '--disable-web-security', + '--ignore-certificate-errors', + '--disable-features=IsolateOrigins', + '--disable-site-isolation-trials', + '--allow-running-insecure-content' + ]; + + // Parse environment config safely + let envConfig = {}; + try { + envConfig = JSON.parse(process.env.PUPPETEER_LAUNCH_OPTIONS || '{}'); + } catch (error: any) { + console.warn('Failed to parse PUPPETEER_LAUNCH_OPTIONS:', error?.message || error); + } + + // Deep merge environment config with user-provided options + const mergedConfig = deepMerge(envConfig, launchOptions || {}); + + // Security validation for merged config + if (mergedConfig?.args) { + const dangerousArgs = mergedConfig.args?.filter?.((arg: string) => DANGEROUS_ARGS.some((dangerousArg: string) => arg.startsWith(dangerousArg))); + if (dangerousArgs?.length > 0 && !(allowDangerous || (process.env.ALLOW_DANGEROUS === 'true'))) { + throw new Error(`Dangerous browser arguments detected: ${dangerousArgs.join(', ')}. Fround from environment variable and tool call argument. ` + + 'Set allowDangerous: true in the tool call arguments to override.'); + } + } + + try { + if ((browser && !browser.connected) || + (launchOptions && (JSON.stringify(launchOptions) != JSON.stringify(previousLaunchOptions)))) { + await browser?.close(); + browser = null; + } + } + catch (error) { + browser = null; + } + + previousLaunchOptions = launchOptions; -async function ensureBrowser() { if (!browser) { const npx_args = { headless: false } const docker_args = { headless: true, args: ["--no-sandbox", "--single-process", "--no-zygote"] } - browser = await puppeteer.launch(process.env.DOCKER_CONTAINER ? docker_args : npx_args); + browser = await puppeteer.launch(deepMerge( + process.env.DOCKER_CONTAINER ? docker_args : npx_args, + mergedConfig + )); const pages = await browser.pages(); page = pages[0]; @@ -126,6 +177,25 @@ async function ensureBrowser() { return page!; } +// Deep merge utility function +function deepMerge(target: any, source: any): any { + const output = Object.assign({}, target); + if (typeof target !== 'object' || typeof source !== 'object') return source; + + for (const key of Object.keys(source)) { + const targetVal = target[key]; + const sourceVal = source[key]; + if (Array.isArray(targetVal) && Array.isArray(sourceVal)) { + output[key] = [...targetVal, ...sourceVal]; + } else if (sourceVal instanceof Object && key in target) { + output[key] = deepMerge(targetVal, sourceVal); + } else { + output[key] = sourceVal; + } + } + return output; +} + declare global { interface Window { mcpHelper: { @@ -136,7 +206,7 @@ declare global { } async function handleToolCall(name: string, args: any): Promise { - const page = await ensureBrowser(); + const page = await ensureBrowser(args); switch (name) { case "puppeteer_navigate": @@ -285,15 +355,15 @@ async function handleToolCall(name: string, args: any): Promise window.mcpHelper.logs.push(`[${method}] ${args.join(' ')}`); (window.mcpHelper.originalConsole as any)[method](...args); }; - } ); - } ); + }); + }); - const result = await page.evaluate( args.script ); + const result = await page.evaluate(args.script); const logs = await page.evaluate(() => { Object.assign(console, window.mcpHelper.originalConsole); const logs = window.mcpHelper.logs; - delete ( window as any).mcpHelper; + delete (window as any).mcpHelper; return logs; }); @@ -405,4 +475,4 @@ runServer().catch(console.error); process.stdin.on("close", () => { console.error("Puppeteer MCP Server closed"); server.close(); -}); +}); \ No newline at end of file From 94029e6252fe8c8f78480fb90811fd2a24fd52e2 Mon Sep 17 00:00:00 2001 From: AB498 Date: Sun, 30 Mar 2025 13:24:43 +0600 Subject: [PATCH 15/53] puppeteer server: deduplication of launch option args --- src/puppeteer/index.ts | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/puppeteer/index.ts b/src/puppeteer/index.ts index 1bee5220..1849c783 100644 --- a/src/puppeteer/index.ts +++ b/src/puppeteer/index.ts @@ -186,7 +186,13 @@ function deepMerge(target: any, source: any): any { const targetVal = target[key]; const sourceVal = source[key]; if (Array.isArray(targetVal) && Array.isArray(sourceVal)) { - output[key] = [...targetVal, ...sourceVal]; + // Deduplicate args/ignoreDefaultArgs, prefer source values + output[key] = [...new Set([ + ...(key === 'args' || key === 'ignoreDefaultArgs' ? + targetVal.filter((arg: string) => !sourceVal.some((launchArg: string) => arg.startsWith('--') && launchArg.startsWith(arg.split('=')[0]))) : + targetVal), + ...sourceVal + ])]; } else if (sourceVal instanceof Object && key in target) { output[key] = deepMerge(targetVal, sourceVal); } else { From 9a4d513724b4fbe638ca24f6f86e6fc3ca373e89 Mon Sep 17 00:00:00 2001 From: shiquda Date: Sun, 30 Mar 2025 22:33:51 +0800 Subject: [PATCH 16/53] fix(fetch): specify httpx<0.28 to resolve proxy problem - AsyncClient.__init__() got an unexpected keyword argument 'proxies' --- src/fetch/pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/fetch/pyproject.toml b/src/fetch/pyproject.toml index ed76fdcd..bbee516a 100644 --- a/src/fetch/pyproject.toml +++ b/src/fetch/pyproject.toml @@ -1,6 +1,6 @@ [project] name = "mcp-server-fetch" -version = "0.6.2" +version = "0.6.3" description = "A Model Context Protocol server providing tools to fetch and convert web content for usage by LLMs" readme = "README.md" requires-python = ">=3.10" @@ -16,6 +16,7 @@ classifiers = [ "Programming Language :: Python :: 3.10", ] dependencies = [ + "httpx<0.28", "markdownify>=0.13.1", "mcp>=1.1.3", "protego>=0.3.1", From d4ddfad7048fa71e4cd052403c0fa5baa5677205 Mon Sep 17 00:00:00 2001 From: mac Date: Sun, 30 Mar 2025 11:27:36 -0700 Subject: [PATCH 17/53] chore: alphabetic sort --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index ab2537da..2b3c22c2 100644 --- a/README.md +++ b/README.md @@ -155,8 +155,8 @@ A growing set of community-developed and maintained servers demonstrates various - **[Bing Web Search API](https://github.com/leehanchung/bing-search-mcp)** (by hanchunglee) - Server implementation for Microsoft Bing Web Search API. - **[Bitable MCP](https://github.com/lloydzhou/bitable-mcp)** (by lloydzhou) - MCP server provides access to Lark Bitable through the Model Context Protocol. It allows users to interact with Bitable tables using predefined tools. - **[Blender](https://github.com/ahujasid/blender-mcp)** (by ahujasid) - Blender integration allowing prompt enabled 3D scene creation, modeling and manipulation. +- **[browser-use]((https://github.com/co-browser/browser-use-mcp-server)** (by co-browser) browser-use SSE MCP server with dockerized playwright + chromium + vnc. - **[Bsc-mcp](https://github.com/TermiX-official/bsc-mcp)** The first MCP server that serves as the bridge between AI and BNB Chain, enabling AI agents to execute complex on-chain operations through seamless integration with the BNB Chain, including transfer, swap, launch, security check on any token and even more. -- **[browser-use]((https://github.com/co-browser/browser-use-mcp-server)** (by co-browser) browser-use SSE MCP server with dockerized playwright + chromium + vnc - **[Calculator](https://github.com/githejie/mcp-server-calculator)** - This server enables LLMs to use calculator for precise numerical calculations. - **[CFBD API](https://github.com/lenwood/cfbd-mcp-server)** - An MCP server for the [College Football Data API](https://collegefootballdata.com/). - **[ChatMCP](https://github.com/AI-QL/chat-mcp)** – An Open Source Cross-platform GUI Desktop application compatible with Linux, macOS, and Windows, enabling seamless interaction with MCP servers across dynamically selectable LLMs, by **[AIQL](https://github.com/AI-QL)** From f6513a9c3eb12204600d48374cc7a4b76242f06b Mon Sep 17 00:00:00 2001 From: mac Date: Sun, 30 Mar 2025 11:32:41 -0700 Subject: [PATCH 18/53] chore: fix formatting and description --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2b3c22c2..f2ca2349 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Bing Web Search API](https://github.com/leehanchung/bing-search-mcp)** (by hanchunglee) - Server implementation for Microsoft Bing Web Search API. - **[Bitable MCP](https://github.com/lloydzhou/bitable-mcp)** (by lloydzhou) - MCP server provides access to Lark Bitable through the Model Context Protocol. It allows users to interact with Bitable tables using predefined tools. - **[Blender](https://github.com/ahujasid/blender-mcp)** (by ahujasid) - Blender integration allowing prompt enabled 3D scene creation, modeling and manipulation. -- **[browser-use]((https://github.com/co-browser/browser-use-mcp-server)** (by co-browser) browser-use SSE MCP server with dockerized playwright + chromium + vnc. +- **[browser-use]((https://github.com/co-browser/browser-use-mcp-server)** (by co-browser) - browser-use MCP server with dockerized playwright + chromium + vnc. supports stdio & resumable http. - **[Bsc-mcp](https://github.com/TermiX-official/bsc-mcp)** The first MCP server that serves as the bridge between AI and BNB Chain, enabling AI agents to execute complex on-chain operations through seamless integration with the BNB Chain, including transfer, swap, launch, security check on any token and even more. - **[Calculator](https://github.com/githejie/mcp-server-calculator)** - This server enables LLMs to use calculator for precise numerical calculations. - **[CFBD API](https://github.com/lenwood/cfbd-mcp-server)** - An MCP server for the [College Football Data API](https://collegefootballdata.com/). From 9fd9c23f18a0a562eff4c7d87e67e799b0ddb608 Mon Sep 17 00:00:00 2001 From: mac Date: Sun, 30 Mar 2025 11:33:31 -0700 Subject: [PATCH 19/53] chore: more fmt --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f2ca2349..8691f5d3 100644 --- a/README.md +++ b/README.md @@ -155,7 +155,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Bing Web Search API](https://github.com/leehanchung/bing-search-mcp)** (by hanchunglee) - Server implementation for Microsoft Bing Web Search API. - **[Bitable MCP](https://github.com/lloydzhou/bitable-mcp)** (by lloydzhou) - MCP server provides access to Lark Bitable through the Model Context Protocol. It allows users to interact with Bitable tables using predefined tools. - **[Blender](https://github.com/ahujasid/blender-mcp)** (by ahujasid) - Blender integration allowing prompt enabled 3D scene creation, modeling and manipulation. -- **[browser-use]((https://github.com/co-browser/browser-use-mcp-server)** (by co-browser) - browser-use MCP server with dockerized playwright + chromium + vnc. supports stdio & resumable http. +- **[browser-use](https://github.com/co-browser/browser-use-mcp-server)** (by co-browser) - browser-use MCP server with dockerized playwright + chromium + vnc. supports stdio & resumable http. - **[Bsc-mcp](https://github.com/TermiX-official/bsc-mcp)** The first MCP server that serves as the bridge between AI and BNB Chain, enabling AI agents to execute complex on-chain operations through seamless integration with the BNB Chain, including transfer, swap, launch, security check on any token and even more. - **[Calculator](https://github.com/githejie/mcp-server-calculator)** - This server enables LLMs to use calculator for precise numerical calculations. - **[CFBD API](https://github.com/lenwood/cfbd-mcp-server)** - An MCP server for the [College Football Data API](https://collegefootballdata.com/). From d9dea56279bf4ae6e9656a9222481bedebc71c99 Mon Sep 17 00:00:00 2001 From: Kris Muhi Date: Sun, 30 Mar 2025 22:53:46 +0200 Subject: [PATCH 20/53] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ebd7d52..bf176faa 100644 --- a/README.md +++ b/README.md @@ -266,6 +266,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Markdownify](https://github.com/zcaceres/mcp-markdownify-server)** - MCP to convert almost anything to Markdown (PPTX, HTML, PDF, Youtube Transcripts and more) - **[Mindmap](https://github.com/YuChenSSR/mindmap-mcp-server)** (by YuChenSSR) - A server that generates mindmaps from input containing markdown code. - **[Minima](https://github.com/dmayboroda/minima)** - MCP server for RAG on local files +- **[Mobile MCP](https://github.com/mobile-next/mobile-mcp)** - This MCP server helps with Mobile(iOS/Android) automation, app scraping and development using physical or simulator/emulator devices. - **[MongoDB](https://github.com/kiliczsh/mcp-mongo-server)** - A Model Context Protocol Server for MongoDB. - **[MongoDB Lens](https://github.com/furey/mongodb-lens)** - Full Featured MCP Server for MongoDB Databases. - **[Monday.com](https://github.com/sakce/mcp-server-monday)** - MCP Server to interact with Monday.com boards and items. From 6d640483cb3bb3b9220d3f5f633b52f9ab1d0a41 Mon Sep 17 00:00:00 2001 From: Kris Muhi Date: Sun, 30 Mar 2025 22:55:33 +0200 Subject: [PATCH 21/53] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index bf176faa..d745202c 100644 --- a/README.md +++ b/README.md @@ -266,7 +266,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Markdownify](https://github.com/zcaceres/mcp-markdownify-server)** - MCP to convert almost anything to Markdown (PPTX, HTML, PDF, Youtube Transcripts and more) - **[Mindmap](https://github.com/YuChenSSR/mindmap-mcp-server)** (by YuChenSSR) - A server that generates mindmaps from input containing markdown code. - **[Minima](https://github.com/dmayboroda/minima)** - MCP server for RAG on local files -- **[Mobile MCP](https://github.com/mobile-next/mobile-mcp)** - This MCP server helps with Mobile(iOS/Android) automation, app scraping and development using physical or simulator/emulator devices. +- **[Mobile MCP](https://github.com/mobile-next/mobile-mcp)** (by Mobile Next) - MCP server for Mobile(iOS/Android) automation, app scraping and development using physical devices or simulators/emulators. - **[MongoDB](https://github.com/kiliczsh/mcp-mongo-server)** - A Model Context Protocol Server for MongoDB. - **[MongoDB Lens](https://github.com/furey/mongodb-lens)** - Full Featured MCP Server for MongoDB Databases. - **[Monday.com](https://github.com/sakce/mcp-server-monday)** - MCP Server to interact with Monday.com boards and items. From 2b801b6353df88f877b1e59aa8d192362f52adc4 Mon Sep 17 00:00:00 2001 From: wolvever Date: Mon, 31 Mar 2025 09:21:02 +0800 Subject: [PATCH 22/53] Update README.md Adjust list order --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 0061f6f3..0b1cba59 100644 --- a/README.md +++ b/README.md @@ -146,8 +146,8 @@ A growing set of community-developed and maintained servers demonstrates various - **[AWS Resources Operations](https://github.com/baryhuang/mcp-server-aws-resources-python)** - Run generated python code to securely query or modify any AWS resources supported by boto3. - **[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. -- **[Baidu AI Search](https://github.com/baidubce/app-builder/tree/master/python/mcp_server/ai_search)** - Web search with Baidu Cloud's AI Search - **[Azure DevOps](https://github.com/Vortiago/mcp-azure-devops)** - An MCP server that provides a bridge to Azure DevOps services, enabling AI assistants to query and manage work items. +- **[Baidu AI Search](https://github.com/baidubce/app-builder/tree/master/python/mcp_server/ai_search)** - Web search with Baidu Cloud's AI Search - **[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). * **[Basic Memory](https://github.com/basicmachines-co/basic-memory)** - Local-first knowledge management system that builds a semantic graph from Markdown files, enabling persistent memory across conversations with LLMs. - **[BigQuery](https://github.com/LucasHild/mcp-server-bigquery)** (by LucasHild) - This server enables LLMs to inspect database schemas and execute queries on BigQuery. From 6279021d60e247551c314a3e092056ded90fbb08 Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Sun, 30 Mar 2025 19:12:53 -0700 Subject: [PATCH 23/53] 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 29c0e976f862532a993a07553571d73ff1895cf6 Mon Sep 17 00:00:00 2001 From: Ge Li <77590974+GeLi2001@users.noreply.github.com> Date: Sun, 30 Mar 2025 22:04:25 -0700 Subject: [PATCH 24/53] Add TFT-Match-Analyzer mcp server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ebd7d52..170e572a 100644 --- a/README.md +++ b/README.md @@ -333,6 +333,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Tavily search](https://github.com/RamXX/mcp-tavily)** - An MCP server for Tavily's search & news API, with explicit site inclusions/exclusions - **[Telegram](https://github.com/chigwell/telegram-mcp)** - An MCP server that provides paginated chat reading, message retrieval, and message sending capabilities for Telegram through Telethon integration. - **[Terminal-Control](https://github.com/GongRzhe/terminal-controller-mcp)** - A MCP server that enables secure terminal command execution, directory navigation, and file system operations through a standardized interface. +- **[TFT-Match-Analyzer](https://github.com/GeLi2001/tft-mcp-server)** - MCP server for teamfight tactics match history & match details fetching, providing user the detailed context for every match. - **[Ticketmaster](https://github.com/delorenj/mcp-server-ticketmaster)** - Search for events, venues, and attractions through the Ticketmaster Discovery API - **[Todoist](https://github.com/abhiz123/todoist-mcp-server)** - Interact with Todoist to manage your tasks. - **[Typesense](https://github.com/suhail-ak-s/mcp-typesense-server)** - A Model Context Protocol (MCP) server implementation that provides AI models with access to Typesense search capabilities. This server enables LLMs to discover, search, and analyze data stored in Typesense collections. From 52e60e6e29c41d4c6cfcb5f70e4135c413f428cf Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Mon, 31 Mar 2025 08:08:35 -0700 Subject: [PATCH 25/53] 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 26/53] 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 e883721bea4feccf89446045e75ded90e1b15b51 Mon Sep 17 00:00:00 2001 From: Kapil Duraphe Date: Mon, 31 Mar 2025 11:17:38 -0400 Subject: [PATCH 27/53] feat(readme): add natoma under resources in readme --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index 1ebd7d52..1e28c34d 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,13 @@ +Admin/reviewer roles in Natoma? + + +Download PDF -> P1? + + + + + + # Model Context Protocol servers This repository is a collection of *reference implementations* for the [Model Context Protocol](https://modelcontextprotocol.io/) (MCP), as well as references @@ -398,6 +408,7 @@ Additional resources on MCP. - **[mcp-guardian](https://github.com/eqtylab/mcp-guardian)** - GUI application + tools for proxying / managing control of MCP servers by **[EQTY Lab](https://eqtylab.io)** - **[mcp-manager](https://github.com/zueai/mcp-manager)** - Simple Web UI to install and manage MCP servers for Claude Desktop by **[Zue](https://github.com/zueai)** - **[MCPHub](https://github.com/Jeamee/MCPHub-Desktop)** – An Open Source MacOS & Windows GUI Desktop app for discovering, installing and managing MCP servers by **[Jeamee](https://github.com/jeamee)** +- **[mcp.natoma.id](https://mcp.natoma.id)** - A Hosted MCP Platform to discover, install, manage and deploy MCP servers by **[Natoma Labs](https://www.natoma.id)** - **[mcp.run](https://mcp.run)** - A hosted registry and control plane to install & run secure + portable MCP Servers. - **[mcp-dockmaster](https://mcp-dockmaster.com)** - An Open-Sourced UI to install and manage MCP servers for Windows, Linux and MacOS. - mkinf Logo **[mkinf](https://mkinf.io)** - An Open Source registry of hosted MCP Servers to accelerate AI agent workflows. From b3e78fdd034111b2d3bcdebc36253f040b09c60a Mon Sep 17 00:00:00 2001 From: Kapil Duraphe Date: Mon, 31 Mar 2025 11:23:11 -0400 Subject: [PATCH 28/53] lint --- README.md | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/README.md b/README.md index 1e28c34d..49948aa5 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,3 @@ -Admin/reviewer roles in Natoma? - - -Download PDF -> P1? - - - - - - # Model Context Protocol servers This repository is a collection of *reference implementations* for the [Model Context Protocol](https://modelcontextprotocol.io/) (MCP), as well as references From f32332527555f9c28d8426d0ac69b14a3ed3ae5c Mon Sep 17 00:00:00 2001 From: Ola Hungerford Date: Mon, 31 Mar 2025 08:41:28 -0700 Subject: [PATCH 29/53] 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 aa8602f85de7c30d241ab205dc9fc3fa8f4acc2b Mon Sep 17 00:00:00 2001 From: Ge Li <77590974+GeLi2001@users.noreply.github.com> Date: Mon, 31 Mar 2025 19:49:52 -0700 Subject: [PATCH 30/53] Add Shopify MCP --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ebd7d52..a8dafb85 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 +- **[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 From 2fa9cb93e33495e4b06ca02e1cf1db64da69fc3b Mon Sep 17 00:00:00 2001 From: YuDavidCao Date: Tue, 1 Apr 2025 14:52:29 -0400 Subject: [PATCH 31/53] fix: puppeteer readme launch option json missing comma --- src/puppeteer/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/puppeteer/README.md b/src/puppeteer/README.md index 794cfdf1..4eab314c 100644 --- a/src/puppeteer/README.md +++ b/src/puppeteer/README.md @@ -108,7 +108,7 @@ You can customize Puppeteer's browser behavior in two ways: "mcpServers": { "mcp-puppeteer": { "command": "npx", - "args": ["-y", "@modelcontextprotocol/server-puppeteer"] + "args": ["-y", "@modelcontextprotocol/server-puppeteer"], "env": { "PUPPETEER_LAUNCH_OPTIONS": "{ \"headless\": false, \"executablePath\": \"C:/Program Files/Google/Chrome/Application/chrome.exe\", \"args\": [] }", "ALLOW_DANGEROUS": "true" From 26ae30062233a5e15ea80b8d1feaccbce6d6e0fe Mon Sep 17 00:00:00 2001 From: Ashwin Bhat Date: Tue, 1 Apr 2025 14:28:12 -0700 Subject: [PATCH 32/53] Add resource reference support to MCP server MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add new tool 'getResourceReference' that returns embedded resources - Add new prompt 'resource_prompt' demonstrating embedded resources in prompts - Update documentation with new tool and prompt details - Create CLAUDE.md with development guidelines 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/everything/CLAUDE.md | 20 +++++ src/everything/README.md | 16 ++++ src/everything/everything.ts | 166 +++++++++++++++++++++++++++-------- 3 files changed, 167 insertions(+), 35 deletions(-) create mode 100644 src/everything/CLAUDE.md diff --git a/src/everything/CLAUDE.md b/src/everything/CLAUDE.md new file mode 100644 index 00000000..9135020c --- /dev/null +++ b/src/everything/CLAUDE.md @@ -0,0 +1,20 @@ +# MCP "Everything" Server - Development Guidelines + +## Build, Test & Run Commands +- Build: `npm run build` - Compiles TypeScript to JavaScript +- Watch mode: `npm run watch` - Watches for changes and rebuilds automatically +- Run server: `npm run start` - Starts the MCP server using stdio transport +- Run SSE server: `npm run start:sse` - Starts the MCP server with SSE transport +- Prepare release: `npm run prepare` - Builds the project for publishing + +## Code Style Guidelines +- Use ES modules with `.js` extension in import paths +- Strictly type all functions and variables with TypeScript +- Follow zod schema patterns for tool input validation +- Prefer async/await over callbacks and Promise chains +- Place all imports at top of file, grouped by external then internal +- Use descriptive variable names that clearly indicate purpose +- Implement proper cleanup for timers and resources in server shutdown +- Follow camelCase for variables/functions, PascalCase for types/classes, UPPER_CASE for constants +- Handle errors with try/catch blocks and provide clear error messages +- Use consistent indentation (2 spaces) and trailing commas in multi-line objects \ No newline at end of file diff --git a/src/everything/README.md b/src/everything/README.md index ff854ae7..f0c4a550 100644 --- a/src/everything/README.md +++ b/src/everything/README.md @@ -63,6 +63,15 @@ This MCP server attempts to exercise all the features of the MCP protocol. It is } ``` +8. `getResourceReference` + - Returns a resource reference that can be used by MCP clients + - Inputs: + - `resourceId` (number, 1-100): ID of the resource to reference + - Returns: A resource reference with: + - Text introduction + - Embedded resource with `type: "resource"` + - Text instruction for using the resource URI + ### Resources The server provides 100 test resources in two formats: @@ -96,6 +105,13 @@ Resource features: - `style` (string): Output style preference - Returns: Multi-turn conversation with images +3. `resource_prompt` + - Demonstrates embedding resource references in prompts + - Required arguments: + - `resourceId` (number): ID of the resource to embed (1-100) + - Returns: Multi-turn conversation with an embedded resource reference + - Shows how to include resources directly in prompt messages + ### Logging The server sends random-leveled log messages every 15 seconds, e.g.: diff --git a/src/everything/everything.ts b/src/everything/everything.ts index 8ee80bf2..cee1e731 100644 --- a/src/everything/everything.ts +++ b/src/everything/everything.ts @@ -62,10 +62,21 @@ const EXAMPLE_COMPLETIONS = { const GetTinyImageSchema = z.object({}); const AnnotatedMessageSchema = z.object({ - messageType: z.enum(["error", "success", "debug"]) + messageType: z + .enum(["error", "success", "debug"]) .describe("Type of message to demonstrate different annotation patterns"), - includeImage: z.boolean().default(false) - .describe("Whether to include an example image") + includeImage: z + .boolean() + .default(false) + .describe("Whether to include an example image"), +}); + +const GetResourceReferenceSchema = z.object({ + resourceId: z + .number() + .min(1) + .max(100) + .describe("ID of the resource to reference (1-100)"), }); enum ToolName { @@ -76,11 +87,13 @@ enum ToolName { SAMPLE_LLM = "sampleLLM", GET_TINY_IMAGE = "getTinyImage", ANNOTATED_MESSAGE = "annotatedMessage", + GET_RESOURCE_REFERENCE = "getResourceReference", } enum PromptName { SIMPLE = "simple_prompt", COMPLEX = "complex_prompt", + RESOURCE = "resource_prompt", } export const createServer = () => { @@ -96,7 +109,7 @@ export const createServer = () => { tools: {}, logging: {}, }, - }, + } ); let subscriptions: Set = new Set(); @@ -115,36 +128,37 @@ export const createServer = () => { 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"} - ] + { 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 isMessageIgnored = (level: LoggingLevel): boolean => { const currentLevel = messages.findIndex((msg) => logLevel === msg.level); - const messageLevel = messages.findIndex((msg) => level === msg.level); + const messageLevel = messages.findIndex((msg) => level === msg.level); return messageLevel < currentLevel; - } + }; // Set up update interval for random log messages logsUpdateInterval = setInterval(() => { let message = { method: "notifications/message", params: messages[Math.floor(Math.random() * messages.length)], - } - if (!isMessageIgnored(message.params.level as LoggingLevel)) server.notification(message); + }; + if (!isMessageIgnored(message.params.level as LoggingLevel)) + server.notification(message); }, 15000); // Helper method to request sampling from client const requestSampling = async ( context: string, uri: string, - maxTokens: number = 100, + maxTokens: number = 100 ) => { const request: CreateMessageRequest = { method: "sampling/createMessage", @@ -280,6 +294,17 @@ export const createServer = () => { }, ], }, + { + name: PromptName.RESOURCE, + description: "A prompt that includes an embedded resource reference", + arguments: [ + { + name: "resourceId", + description: "Resource ID to include (1-100)", + required: true, + }, + ], + }, ], }; }); @@ -330,6 +355,37 @@ export const createServer = () => { }; } + if (name === PromptName.RESOURCE) { + const resourceId = parseInt(args?.resourceId as string, 10); + if (isNaN(resourceId) || resourceId < 1 || resourceId > 100) { + throw new Error( + `Invalid resourceId: ${args?.resourceId}. Must be a number between 1 and 100.` + ); + } + + const resourceIndex = resourceId - 1; + const resource = ALL_RESOURCES[resourceIndex]; + + return { + messages: [ + { + role: "user", + content: { + type: "text", + text: `This prompt includes Resource ${resourceId}. Please analyze the following resource:`, + }, + }, + { + role: "user", + content: { + type: "resource", + resource: resource, + }, + }, + ], + }; + } + throw new Error(`Unknown prompt: ${name}`); }); @@ -347,7 +403,8 @@ export const createServer = () => { }, { name: ToolName.PRINT_ENV, - description: "Prints all environment variables, helpful for debugging MCP server configuration", + description: + "Prints all environment variables, helpful for debugging MCP server configuration", inputSchema: zodToJsonSchema(PrintEnvSchema) as ToolInput, }, { @@ -368,9 +425,16 @@ export const createServer = () => { }, { name: ToolName.ANNOTATED_MESSAGE, - description: "Demonstrates how annotations can be used to provide metadata about content", + description: + "Demonstrates how annotations can be used to provide metadata about content", inputSchema: zodToJsonSchema(AnnotatedMessageSchema) as ToolInput, }, + { + name: ToolName.GET_RESOURCE_REFERENCE, + description: + "Returns a resource reference that can be used by MCP clients", + inputSchema: zodToJsonSchema(GetResourceReferenceSchema) as ToolInput, + }, ]; return { tools }; @@ -407,7 +471,7 @@ export const createServer = () => { for (let i = 1; i < steps + 1; i++) { await new Promise((resolve) => - setTimeout(resolve, stepDuration * 1000), + setTimeout(resolve, stepDuration * 1000) ); if (progressToken !== undefined) { @@ -450,10 +514,12 @@ export const createServer = () => { const result = await requestSampling( prompt, ToolName.SAMPLE_LLM, - maxTokens, + maxTokens ); return { - content: [{ type: "text", text: `LLM sampling result: ${result.content.text}` }], + content: [ + { type: "text", text: `LLM sampling result: ${result.content.text}` }, + ], }; } @@ -478,6 +544,35 @@ export const createServer = () => { }; } + if (name === ToolName.GET_RESOURCE_REFERENCE) { + const validatedArgs = GetResourceReferenceSchema.parse(args); + const resourceId = validatedArgs.resourceId; + + const resourceIndex = resourceId - 1; + if (resourceIndex < 0 || resourceIndex >= ALL_RESOURCES.length) { + throw new Error(`Resource with ID ${resourceId} does not exist`); + } + + const resource = ALL_RESOURCES[resourceIndex]; + + return { + content: [ + { + type: "text", + text: `Returning resource reference for Resource ${resourceId}:`, + }, + { + type: "resource", + resource: resource, + }, + { + type: "text", + text: `You can access this resource using the URI: ${resource.uri}`, + }, + ], + }; + } + if (name === ToolName.ANNOTATED_MESSAGE) { const { messageType, includeImage } = AnnotatedMessageSchema.parse(args); @@ -490,8 +585,8 @@ export const createServer = () => { text: "Error: Operation failed", annotations: { priority: 1.0, // Errors are highest priority - audience: ["user", "assistant"] // Both need to know about errors - } + audience: ["user", "assistant"], // Both need to know about errors + }, }); } else if (messageType === "success") { content.push({ @@ -499,8 +594,8 @@ export const createServer = () => { text: "Operation completed successfully", annotations: { priority: 0.7, // Success messages are important but not critical - audience: ["user"] // Success mainly for user consumption - } + audience: ["user"], // Success mainly for user consumption + }, }); } else if (messageType === "debug") { content.push({ @@ -508,8 +603,8 @@ export const createServer = () => { text: "Debug: Cache hit ratio 0.95, latency 150ms", annotations: { priority: 0.3, // Debug info is low priority - audience: ["assistant"] // Technical details for assistant - } + audience: ["assistant"], // Technical details for assistant + }, }); } @@ -521,8 +616,8 @@ export const createServer = () => { mimeType: "image/png", annotations: { priority: 0.5, - audience: ["user"] // Images primarily for user visualization - } + audience: ["user"], // Images primarily for user visualization + }, }); } @@ -540,7 +635,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 } }; @@ -548,10 +643,11 @@ export const createServer = () => { if (ref.type === "ref/prompt") { // Handle completion for prompt arguments - const completions = EXAMPLE_COMPLETIONS[argument.name as keyof typeof EXAMPLE_COMPLETIONS]; + 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 } }; 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 33/53] 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 36f797fcf04766f671c823f8fa88a0c713256aa8 Mon Sep 17 00:00:00 2001 From: AI-Agent-Hub Date: Wed, 2 Apr 2025 22:26:25 +0800 Subject: [PATCH 34/53] add readme ai_agent_marketplace_index mcp --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ebd7d52..85bccf4a 100644 --- a/README.md +++ b/README.md @@ -130,6 +130,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. +- **[AI Agent Marketplace Index](https://github.com/AI-Agent-Hub/ai-agent-marketplace-index-mcp)** - MCP server to search more than 5000+ AI agents and tools of various categories from [AI Agent Marketplace Index](http://www.deepnlp.org/store/ai-agent) and monitor traffic of AI Agents. - **[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. - **[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. From c4f5b75260452c9a5ce3a56d221ad5c6ac82b4b4 Mon Sep 17 00:00:00 2001 From: zzaebok Date: Wed, 2 Apr 2025 23:34:54 +0900 Subject: [PATCH 35/53] Update README.md: Add Wikidata MCP Server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 35e24f15..330458ea 100644 --- a/README.md +++ b/README.md @@ -353,6 +353,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Webflow](https://github.com/kapilduraphe/webflow-mcp-server)** - Interfact with the Webflow APIs - **[whale-tracker-mcp](https://github.com/kukapay/whale-tracker-mcp)** - A mcp server for tracking cryptocurrency whale transactions. - **[Whois MCP](https://github.com/bharathvaj-ganesan/whois-mcp)** - MCP server that performs whois lookup against domain, IP, ASN and TLD. +- **[Wikidata MCP](https://github.com/zzaebok/mcp-wikidata)** - Wikidata MCP server that interact with Wikidata, by searching identifiers, extracting metadata, and executing sparql query. - **[WildFly MCP](https://github.com/wildfly-extras/wildfly-mcp)** - WildFly MCP server that enables LLM to interact with running WildFly servers (retrieve metrics, logs, invoke operations, ...). - **[Windows CLI](https://github.com/SimonB97/win-cli-mcp-server)** - MCP server for secure command-line interactions on Windows systems, enabling controlled access to PowerShell, CMD, and Git Bash shells. - **[World Bank data API](https://github.com/anshumax/world_bank_mcp_server)** - A server that fetches data indicators available with the World Bank as part of their data API From 9be81d4e7cb723500aef77d3b52510c8e3746755 Mon Sep 17 00:00:00 2001 From: John Yegs Date: Wed, 2 Apr 2025 10:06:02 -0500 Subject: [PATCH 36/53] 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. From d5e8b79870e719e14707bd759cef6706169538e8 Mon Sep 17 00:00:00 2001 From: garrmark Date: Wed, 2 Apr 2025 10:15:15 -0600 Subject: [PATCH 37/53] Add codelogic MCP server to the README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 35e24f15..a53953bd 100644 --- a/README.md +++ b/README.md @@ -56,6 +56,7 @@ Official integrations are maintained by companies building production ready MCP - Chronulus AI Logo **[Chronulus AI](https://github.com/ChronulusAI/chronulus-mcp)** - Predict anything with Chronulus AI forecasting and prediction agents. - ClickHouse Logo **[ClickHouse](https://github.com/ClickHouse/mcp-clickhouse)** - Query your [ClickHouse](https://clickhouse.com/) database server. - **[Cloudflare](https://github.com/cloudflare/mcp-server-cloudflare)** - Deploy, configure & interrogate your resources on the Cloudflare developer platform (e.g. Workers/KV/R2/D1) +- CodeLogic Logo **[CodeLogic](https://github.com/CodeLogicIncEngineering/codelogic-mcp-server)** - Interact with [CodeLogic](https://codelogic.com), a Software Intelligence platform that graphs complex code and data architecture dependencies, to boost AI accuracy and insight. - Comet Logo **[Comet Opik](https://github.com/comet-ml/opik-mcp)** - Query and analyze your [Opik](https://github.com/comet-ml/opik) logs, traces, prompts and all other telemtry data from your LLMs in natural language. - **[Convex](https://stack.convex.dev/convex-mcp-server)** - Introspect and query your apps deployed to Convex. - Dart Logo **[Dart](https://github.com/its-dart/dart-mcp-server)** - Interact with task, doc, and project data in [Dart](https://itsdart.com), an AI-native project management tool From b6a0538c1cfc5bcbb0c8b3950ad1ab701ff420ae Mon Sep 17 00:00:00 2001 From: Hemanth HM Date: Wed, 2 Apr 2025 11:11:39 -0700 Subject: [PATCH 38/53] feat: adding PayPal's official MCP server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 35e24f15..ffba6d76 100644 --- a/README.md +++ b/README.md @@ -99,6 +99,7 @@ Official integrations are maintained by companies building production ready MCP - OceanBase Logo **[OceanBase](https://github.com/oceanbase/mcp-oceanbase)** - MCP Server for OceanBase database and its tools - Octagon Logo **[Octagon](https://github.com/OctagonAI/octagon-mcp-server)** - Deliver real-time investment research with extensive private and public market data. - Oxylabs Logo **[Oxylabs](https://github.com/oxylabs/oxylabs-mcp)** - Scrape websites with Oxylabs Web API, supporting dynamic rendering and parsing for structured data extraction. +- PayPal Logo **[PayPal](https://mcp.paypal.com)** - PayPal's official MCP server. - Perplexity Logo **[Perplexity](https://github.com/ppl-ai/modelcontextprotocol)** - An MCP server that connects to Perplexity's Sonar API, enabling real-time web-wide research in conversational AI. - **[Qdrant](https://github.com/qdrant/mcp-server-qdrant/)** - Implement semantic memory layer on top of the Qdrant vector search engine - **[Ramp](https://github.com/ramp-public/ramp-mcp)** - Interact with [Ramp](https://ramp.com)'s Developer API to run analysis on your spend and gain insights leveraging LLMs From dde20ece48e06bb05f15d027197e30b2f9c1c180 Mon Sep 17 00:00:00 2001 From: Jorge Teixeira Crespo Date: Wed, 2 Apr 2025 11:38:45 +0200 Subject: [PATCH 39/53] docs: add iOS Simulator MCP Server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 66a37ee6..8ae036ae 100644 --- a/README.md +++ b/README.md @@ -235,6 +235,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[InfluxDB](https://github.com/idoru/influxdb-mcp-server)** - Run queries against InfluxDB OSS API v2. - **[Inoyu](https://github.com/sergehuber/inoyu-mcp-unomi-server)** - Interact with an Apache Unomi CDP customer data platform to retrieve and update customer profiles - **[Intercom](https://github.com/raoulbia-ai/mcp-server-for-intercom)** - An MCP-compliant server for retrieving customer support tickets from Intercom. This tool enables AI assistants like Claude Desktop and Cline to access and analyze your Intercom support tickets. +- **[iOS Simulator](https://github.com/InditexTech/mcp-server-simulator-ios-idb)** - A Model Context Protocol (MCP) server that enables LLMs to interact with iOS simulators (iPhone, iPad, etc.) through natural language commands. - **[iTerm MCP](https://github.com/ferrislucas/iterm-mcp)** - Integration with iTerm2 terminal emulator for macOS, enabling LLMs to execute and monitor terminal commands. - **[JavaFX](https://github.com/mcpso/mcp-server-javafx)** - Make drawings using a JavaFX canvas - **[JDBC](https://github.com/quarkiverse/quarkus-mcp-servers/tree/main/jdbc)** - Connect to any JDBC-compatible database and query, insert, update, delete, and more. Supports MySQL, PostgreSQL, Oracle, SQL Server, sqllite and [more](https://github.com/quarkiverse/quarkus-mcp-servers/tree/main/jdbc#supported-jdbc-variants). From 8a3a5a8318d85077d8fbc68b6c9d7e5d33e685fb Mon Sep 17 00:00:00 2001 From: Mariano Alonso Ortiz Date: Thu, 3 Apr 2025 14:20:40 +0200 Subject: [PATCH 40/53] feat: Added InditexTech MCP Microsoft Teams server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 8ae036ae..19f72336 100644 --- a/README.md +++ b/README.md @@ -269,6 +269,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[MSSQL-Python](https://github.com/amornpan/py-mcp-mssql)** (by amornpan) - A read-only Python implementation for MSSQL database access with enhanced security features, configurable access controls, and schema inspection capabilities. Focuses on safe database interaction through Python ecosystem. - **[MSSQL-MCP](https://github.com/daobataotie/mssql-mcp)** (by daobataotie) - MSSQL MCP that refer to the official website's SQLite MCP for modifications to adapt to MSSQL - **[Markdownify](https://github.com/zcaceres/mcp-markdownify-server)** - MCP to convert almost anything to Markdown (PPTX, HTML, PDF, Youtube Transcripts and more) +- **[Microsoft Teams](https://github.com/InditexTech/mcp-teams-server)** - MCP server that integrates Microsoft Teams messaging (read, post, mention, list members and threads) - **[Mindmap](https://github.com/YuChenSSR/mindmap-mcp-server)** (by YuChenSSR) - A server that generates mindmaps from input containing markdown code. - **[Minima](https://github.com/dmayboroda/minima)** - MCP server for RAG on local files - **[Mobile MCP](https://github.com/mobile-next/mobile-mcp)** (by Mobile Next) - MCP server for Mobile(iOS/Android) automation, app scraping and development using physical devices or simulators/emulators. From 210ff261b549d21b03cf377959df41c16c9aaef1 Mon Sep 17 00:00:00 2001 From: Ge Li <77590974+GeLi2001@users.noreply.github.com> Date: Thu, 3 Apr 2025 14:49:22 -0700 Subject: [PATCH 41/53] Add Datadog MCP Server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 66a37ee6..df62b8d6 100644 --- a/README.md +++ b/README.md @@ -176,6 +176,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[cryptopanic-mcp-server](https://github.com/kukapay/cryptopanic-mcp-server)** - Providing latest cryptocurrency news to AI agents, powered by CryptoPanic. - **[Dappier](https://github.com/DappierAI/dappier-mcp)** - Connect LLMs to real-time, rights-cleared, proprietary data from trusted sources. Access specialized models for Real-Time Web Search, News, Sports, Financial Data, Crypto, and premium publisher content. Explore data models at [marketplace.dappier.com](https://marketplace.dappier.com/marketplace). - **[Databricks](https://github.com/JordiNeil/mcp-databricks-server)** - Allows LLMs to run SQL queries, list and get details of jobs executions in a Databricks account. +- **[Datadog](https://github.com/GeLi2001/datadog-mcp-server)** - Datadog MCP Server for application tracing, monitoring, dashboard, incidents queries built on official datadog api. - **[Data Exploration](https://github.com/reading-plus-ai/mcp-server-data-exploration)** - MCP server for autonomous data exploration on .csv-based datasets, providing intelligent insights with minimal effort. NOTE: Will execute arbitrary Python code on your machine, please use with caution! - **[Dataset Viewer](https://github.com/privetin/dataset-viewer)** - Browse and analyze Hugging Face datasets with features like search, filtering, statistics, and data export - **[DBHub](https://github.com/bytebase/dbhub/)** - Universal database MCP server connecting to MySQL, PostgreSQL, SQLite, DuckDB and etc. From 25d5e1d7d0f9e1d1bd08ad296657ea4d1d119bd4 Mon Sep 17 00:00:00 2001 From: wilsonchenghy <150957380+wilsonchenghy@users.noreply.github.com> Date: Thu, 3 Apr 2025 23:15:14 -0400 Subject: [PATCH 42/53] Add ShaderToy MCP Server to README --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1ebd7d52..838232e7 100644 --- a/README.md +++ b/README.md @@ -329,6 +329,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Spotify](https://github.com/varunneal/spotify-mcp)** - This MCP allows an LLM to play and use Spotify. - **[Starwind UI](https://github.com/Boston343/starwind-ui-mcp/)** - This MCP provides relevant commands, documentation, and other information to allow LLMs to take full advantage of Starwind UI's open source Astro components. - **[Stripe](https://github.com/atharvagupta2003/mcp-stripe)** - This MCP allows integration with Stripe for handling payments, customers, and refunds. +- **[ShaderToy](https://github.com/wilsonchenghy/ShaderToy-MCP)** - This MCP server lets LLMs to interact with the ShaderToy API, allowing LLMs to learn from compute shaders examples and enabling them to create complex GLSL shaders that they are previously not capable of. - **[TMDB](https://github.com/Laksh-star/mcp-server-tmdb)** - This MCP server integrates with The Movie Database (TMDB) API to provide movie information, search capabilities, and recommendations. - **[Tavily search](https://github.com/RamXX/mcp-tavily)** - An MCP server for Tavily's search & news API, with explicit site inclusions/exclusions - **[Telegram](https://github.com/chigwell/telegram-mcp)** - An MCP server that provides paginated chat reading, message retrieval, and message sending capabilities for Telegram through Telethon integration. From 1c175614f620e6679232dff1ef6fccde9ff85682 Mon Sep 17 00:00:00 2001 From: Ashwin Bhat Date: Thu, 3 Apr 2025 21:20:35 -0700 Subject: [PATCH 43/53] Update pull request review schema to allow line or position MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Allow either line or position in PR review comments, but not both, to align with GitHub API functionality. 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude --- src/github/operations/pulls.ts | 19 ++++++++++++++----- 1 file changed, 14 insertions(+), 5 deletions(-) diff --git a/src/github/operations/pulls.ts b/src/github/operations/pulls.ts index 9b1a5bd7..3628e707 100644 --- a/src/github/operations/pulls.ts +++ b/src/github/operations/pulls.ts @@ -112,11 +112,20 @@ export const CreatePullRequestReviewSchema = z.object({ commit_id: z.string().optional().describe("The SHA of the commit that needs a review"), body: z.string().describe("The body text of the review"), event: z.enum(['APPROVE', 'REQUEST_CHANGES', 'COMMENT']).describe("The review action to perform"), - comments: z.array(z.object({ - path: z.string().describe("The relative path to the file being commented on"), - position: z.number().describe("The position in the diff where you want to add a review comment"), - body: z.string().describe("Text of the review comment") - })).optional().describe("Comments to post as part of the review") + comments: z.array( + z.union([ + z.object({ + path: z.string().describe("The relative path to the file being commented on"), + position: z.number().describe("The position in the diff where you want to add a review comment"), + body: z.string().describe("Text of the review comment") + }), + z.object({ + path: z.string().describe("The relative path to the file being commented on"), + line: z.number().describe("The line number in the file where you want to add a review comment"), + body: z.string().describe("Text of the review comment") + }) + ]) + ).optional().describe("Comments to post as part of the review (specify either position or line, not both)") }); export const MergePullRequestSchema = z.object({ From f3c0e5ab08e5c9a7a6e9942c6d47a09a1ba4998f Mon Sep 17 00:00:00 2001 From: zzaebok Date: Wed, 2 Apr 2025 23:34:54 +0900 Subject: [PATCH 44/53] Update README.md: Add Wikidata MCP Server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 66a37ee6..788118eb 100644 --- a/README.md +++ b/README.md @@ -355,6 +355,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Webflow](https://github.com/kapilduraphe/webflow-mcp-server)** - Interfact with the Webflow APIs - **[whale-tracker-mcp](https://github.com/kukapay/whale-tracker-mcp)** - A mcp server for tracking cryptocurrency whale transactions. - **[Whois MCP](https://github.com/bharathvaj-ganesan/whois-mcp)** - MCP server that performs whois lookup against domain, IP, ASN and TLD. +- **[Wikidata MCP](https://github.com/zzaebok/mcp-wikidata)** - Wikidata MCP server that interact with Wikidata, by searching identifiers, extracting metadata, and executing sparql query. - **[WildFly MCP](https://github.com/wildfly-extras/wildfly-mcp)** - WildFly MCP server that enables LLM to interact with running WildFly servers (retrieve metrics, logs, invoke operations, ...). - **[Windows CLI](https://github.com/SimonB97/win-cli-mcp-server)** - MCP server for secure command-line interactions on Windows systems, enabling controlled access to PowerShell, CMD, and Git Bash shells. - **[World Bank data API](https://github.com/anshumax/world_bank_mcp_server)** - A server that fetches data indicators available with the World Bank as part of their data API From 87b4170868534779f921f2b02a47e2005d268c8c Mon Sep 17 00:00:00 2001 From: Toby Padilla Date: Fri, 4 Apr 2025 13:25:52 -0600 Subject: [PATCH 45/53] docs: update GitHub server with deprecation notice --- src/github/README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/github/README.md b/src/github/README.md index 026dde9b..a8e176f3 100644 --- a/src/github/README.md +++ b/src/github/README.md @@ -1,5 +1,9 @@ # GitHub MCP Server +**Deprecation Notice:** Development for this project has been moved to GitHub in the http://github.com/github/github-mcp-server repo. + +--- + MCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more. ### Features From f1a5e73d9c46817f6cc294f9bfe898f316293614 Mon Sep 17 00:00:00 2001 From: stiyyagura0901 Date: Fri, 4 Apr 2025 13:43:15 -0400 Subject: [PATCH 46/53] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 788118eb..8d3a70cd 100644 --- a/README.md +++ b/README.md @@ -55,6 +55,7 @@ Official integrations are maintained by companies building production ready MCP - **[Chargebee](https://github.com/chargebee/agentkit/tree/main/modelcontextprotocol)** - MCP Server that connects AI agents to [Chargebee platform](https://www.chargebee.com). - **[Chroma](https://github.com/chroma-core/chroma-mcp)** - Embeddings, vector search, document storage, and full-text search with the open-source AI application database - Chronulus AI Logo **[Chronulus AI](https://github.com/ChronulusAI/chronulus-mcp)** - Predict anything with Chronulus AI forecasting and prediction agents. +- CircleCI Logo **[CircleCI](https://github.com/CircleCI-Public/mcp-server-circleci)** - Enable AI Agents to fix build failures from CircleCI. - ClickHouse Logo **[ClickHouse](https://github.com/ClickHouse/mcp-clickhouse)** - Query your [ClickHouse](https://clickhouse.com/) database server. - **[Cloudflare](https://github.com/cloudflare/mcp-server-cloudflare)** - Deploy, configure & interrogate your resources on the Cloudflare developer platform (e.g. Workers/KV/R2/D1) - Comet Logo **[Comet Opik](https://github.com/comet-ml/opik-mcp)** - Query and analyze your [Opik](https://github.com/comet-ml/opik) logs, traces, prompts and all other telemtry data from your LLMs in natural language. From c941284d52b7415f5c0fbff30b35e711286a5056 Mon Sep 17 00:00:00 2001 From: Cristian Belli Date: Sat, 5 Apr 2025 05:29:13 +0200 Subject: [PATCH 47/53] feat: added Lara Translate official mcp server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 788118eb..df6d9811 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,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 - Keboola Logo **[Keboola](https://github.com/keboola/keboola-mcp-server)** - Build robust data workflows, integrations, and analytics on a single intuitive platform. +- Lara Translate Logo **[Lara Translate](https://github.com/translated/lara-mcp)** - MCP Server for Lara Translate API, enabling powerful translation capabilities with support for language detection and context-aware translations. - 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. From be817e5ebcde0b58ecc77f78a88ff56af7e81af7 Mon Sep 17 00:00:00 2001 From: AI-Agent-Hub Date: Sat, 5 Apr 2025 23:11:52 +0800 Subject: [PATCH 48/53] Add MCP Server Rating and User Reviews Website --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 85bccf4a..7e2bbe26 100644 --- a/README.md +++ b/README.md @@ -401,6 +401,7 @@ Additional resources on MCP. - **[MCPHub](https://github.com/Jeamee/MCPHub-Desktop)** – An Open Source MacOS & Windows GUI Desktop app for discovering, installing and managing MCP servers by **[Jeamee](https://github.com/jeamee)** - **[mcp.run](https://mcp.run)** - A hosted registry and control plane to install & run secure + portable MCP Servers. - **[mcp-dockmaster](https://mcp-dockmaster.com)** - An Open-Sourced UI to install and manage MCP servers for Windows, Linux and MacOS. +- **[MCP Servers Rating and User Reviews](http://www.deepnlp.org/store/ai-agent/mcp-server)** - Website to rate MCP servers, write authentic user reviews, and [search engine for agent & mcp](http://www.deepnlp.org/search/agent) - mkinf Logo **[mkinf](https://mkinf.io)** - An Open Source registry of hosted MCP Servers to accelerate AI agent workflows. - **[Open-Sourced MCP Servers Directory](https://github.com/chatmcp/mcp-directory)** - A curated list of MCP servers by **[mcpso](https://mcp.so)** - OpenTools Logo **[OpenTools](https://opentools.com)** - An open registry for finding, installing, and building with MCP servers by **[opentoolsteam](https://github.com/opentoolsteam)** From 1229bec4a068a6766d56e5562c04cdaf564b22c9 Mon Sep 17 00:00:00 2001 From: JackieTien97 Date: Sun, 6 Apr 2025 16:55:32 +0800 Subject: [PATCH 49/53] Update README.md: Add Apache IoTDB MCP Server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 788118eb..1c50c666 100644 --- a/README.md +++ b/README.md @@ -44,6 +44,7 @@ Official integrations are maintained by companies building production ready MCP - AgentQL Logo **[AgentQL](https://github.com/tinyfish-io/agentql-mcp)** - Enable AI agents to get structured data from unstructured web with [AgentQL](https://www.agentql.com/). - 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 +- 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. - 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. From 19163a92b79786e1b4a7a7616eade3e00dd89d52 Mon Sep 17 00:00:00 2001 From: Stefano Amorelli Date: Sun, 6 Apr 2025 23:00:05 +0300 Subject: [PATCH 50/53] Add Nasdaq Data Link MCP Server --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 788118eb..77de0a1a 100644 --- a/README.md +++ b/README.md @@ -279,6 +279,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[MySQL](https://github.com/designcomputer/mysql_mcp_server)** (by DesignComputer) - MySQL database integration in Python with configurable access controls and schema inspection - **[n8n](https://github.com/leonardsellem/n8n-mcp-server)** - This MCP server provides tools and resources for AI assistants to manage n8n workflows and executions, including listing, creating, updating, and deleting workflows, as well as monitoring their execution status. - **[NASA](https://github.com/ProgramComputer/NASA-MCP-server)** (by ProgramComputer) - Access to a unified gateway of NASA's data sources including but not limited to APOD, NEO, EPIC, GIBS. +- **[Nasdaq Data Link](https://github.com/stefanoamorelli/nasdaq-data-link-mcp)** (by stefanoamorelli) - An MCP server to access, explore, and interact with Nasdaq Data Link’s extensive and valuable financial and economic datasets. - **[National Parks](https://github.com/KyrieTangSheng/mcp-server-nationalparks)** - The server provides latest information of park details, alerts, visitor centers, campgrounds, hiking trails, and events for U.S. National Parks. - **[NAVER](https://github.com/pfldy2850/py-mcp-naver)** (by pfldy2850) - This MCP server provides tools to interact with various Naver services, such as searching blogs, news, books, and more. - **[NS Travel Information](https://github.com/r-huijts/ns-mcp-server)** - Access Dutch Railways (NS) real-time train travel information and disruptions through the official NS API. From ffe864ae372b6b136ee94c7a287a1b9ba45b2b22 Mon Sep 17 00:00:00 2001 From: superjolly <1328062379@qq.com> Date: Mon, 7 Apr 2025 11:29:58 +0800 Subject: [PATCH 51/53] Update Community Servers: EdgeOne Pages MCP Add an MCP service for deploying HTML content to EdgeOne Pages and obtaining a publicly accessible URL. --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 788118eb..2cd74bd4 100644 --- a/README.md +++ b/README.md @@ -192,6 +192,7 @@ A growing set of community-developed and maintained servers demonstrates various - **[Docker](https://github.com/ckreiling/mcp-server-docker)** - Integrate with Docker to manage containers, images, volumes, and networks. - **[Drupal](https://github.com/Omedia/mcp-server-drupal)** - Server for interacting with [Drupal](https://www.drupal.org/project/mcp) using STDIO transport layer. - **[dune-analytics-mcp](https://github.com/kukapay/dune-analytics-mcp)** - A mcp server that bridges Dune Analytics data to AI agents. +- **[EdgeOne Pages MCP](https://github.com/TencentEdgeOne/edgeone-pages-mcp)** - An MCP service for deploying HTML content to EdgeOne Pages and obtaining a publicly accessible URL. - **[Elasticsearch](https://github.com/cr7258/elasticsearch-mcp-server)** - MCP server implementation that provides Elasticsearch interaction. - **[ElevenLabs](https://github.com/mamertofabian/elevenlabs-mcp-server)** - A server that integrates with ElevenLabs text-to-speech API capable of generating full voiceovers with multiple voices. - **[Ergo Blockchain MCP](https://github.com/marctheshark3/ergo-mcp)** -An MCP server to integrate Ergo Blockchain Node and Explorer APIs for checking address balances, analyzing transactions, viewing transaction history, performing forensic analysis of addresses, searching for tokens, and monitoring network status. From 1e9de5d596db8b2eb20b3d8fed992ff2783acfb2 Mon Sep 17 00:00:00 2001 From: Kapil Duraphe Date: Mon, 7 Apr 2025 16:39:15 -0400 Subject: [PATCH 52/53] fixing the white space for natoma entry --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 49948aa5..0c979861 100644 --- a/README.md +++ b/README.md @@ -398,7 +398,7 @@ Additional resources on MCP. - **[mcp-guardian](https://github.com/eqtylab/mcp-guardian)** - GUI application + tools for proxying / managing control of MCP servers by **[EQTY Lab](https://eqtylab.io)** - **[mcp-manager](https://github.com/zueai/mcp-manager)** - Simple Web UI to install and manage MCP servers for Claude Desktop by **[Zue](https://github.com/zueai)** - **[MCPHub](https://github.com/Jeamee/MCPHub-Desktop)** – An Open Source MacOS & Windows GUI Desktop app for discovering, installing and managing MCP servers by **[Jeamee](https://github.com/jeamee)** -- **[mcp.natoma.id](https://mcp.natoma.id)** - A Hosted MCP Platform to discover, install, manage and deploy MCP servers by **[Natoma Labs](https://www.natoma.id)** +- **[mcp.natoma.id](https://mcp.natoma.id)** - A Hosted MCP Platform to discover, install, manage and deploy MCP servers by **[Natoma Labs](https://www.natoma.id)** - **[mcp.run](https://mcp.run)** - A hosted registry and control plane to install & run secure + portable MCP Servers. - **[mcp-dockmaster](https://mcp-dockmaster.com)** - An Open-Sourced UI to install and manage MCP servers for Windows, Linux and MacOS. - mkinf Logo **[mkinf](https://mkinf.io)** - An Open Source registry of hosted MCP Servers to accelerate AI agent workflows. From 482553150bf6a02347d9cc2acdda8d67f9c3ad3a Mon Sep 17 00:00:00 2001 From: Justin Wilaby Date: Mon, 7 Apr 2025 14:52:37 -0700 Subject: [PATCH 53/53] feat: add Heroku Platform MCP server to Readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 5f7b50e5..daaaf373 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,7 @@ Official integrations are maintained by companies building production ready MCP - Grafana Logo **[Grafana](https://github.com/grafana/mcp-grafana)** - Search dashboards, investigate incidents and query datasources in your Grafana instance - Graphlit Logo **[Graphlit](https://github.com/graphlit/graphlit-mcp-server)** - Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a searchable [Graphlit](https://www.graphlit.com) project. - Greptime Logo **[GreptimeDB](https://github.com/GreptimeTeam/greptimedb-mcp-server)** - Provides AI assistants with a secure and structured way to explore and analyze data in [GreptimeDB](https://github.com/GreptimeTeam/greptimedb). +- Heroku Logo **[Heroku](https://github.com/heroku/heroku-mcp-server)** - Interact with the Heroku Platform through LLM-driven tools for managing apps, add-ons, dynos, databases, and more. - Hologres Logo **[Hologres](https://github.com/aliyun/alibabacloud-hologres-mcp-server)** - Connect to a [Hologres](https://www.alibabacloud.com/en/product/hologres) instance, get table metadata, query and analyze data. - Hyperbrowsers23 Logo **[Hyperbrowser](https://github.com/hyperbrowserai/mcp)** - [Hyperbrowser](https://www.hyperbrowser.ai/) is the next-generation platform empowering AI agents and enabling effortless, scalable browser automation. - **[IBM wxflows](https://github.com/IBM/wxflows/tree/main/examples/mcp/javascript)** - Tool platform by IBM to build, test and deploy tools for any data source