MCP:互联网的下一代标准,让AI动手改造世界,这是一个动动嘴的时代!

#

zhangqi

2025/05/02

      序言:在一年一度的微软Build大会上发布了一个重磅更新:MCP正式原生集成进Windows(阅读我); 最近发布的Nacos3.0.0(上个版本还是2.5.1)最重大的功能,就是支持MCP Server的注册和发现; 目前几乎所有的应用和系统,你都能看到MCP的身影...
      什么是MCP?MCP是干啥的?相信每个人都有这个疑问,但要了解MCP,你首先要知道MCP是为了解决什么问题而诞生的。 从大模型出圈到现在,涌现了一个又一个的LLM,AI技术和Agent平台。互联网产品进入AI时代,在AI时代里,几乎所有应用都想法设法地跟AI沾点边,都想集成各种各样的AI产品。 那么问题就出现了:如何改造我们的应用并让我们的应用拥有AI的能力?怎么让AI连接并使用我们的应用?每一个AI产品我都要去集成一下吗?这几个问题,同时也是AI落地应用的关键所在。
      首先prompt是所有AI问题的通解,你几乎可以使用prompt解决所有问题。 其次FunctionCall给出了一个非常完美的解,应用只需要组装FunctionCall的JsonSchema,就能被LLM所用。但它仅仅是openAI的一个特性,并没有成为一项标准,也没有适配各大模型。 后面诞生了Dify、Coze等Agent平台,通过AI Agent与各种Tools(业务服务接口)、Memory(存储服务接口)以及 LLM(大语言模型)交互。 虽然与LLM交互基本都是遵循OpenAI规范,但是Tools和Memory就没有啥标准了。因为每个业务都不一样, 每个业务都有自己的接口规范,AI Agent只是在表面上做了统一,核心的接口规范、接口发现等问题仍未解决,每个业务都要针对不同的AI Agent做单独开发。
      那么,有没有一种标准或者协议,可以统一AI与各种业务、存储交互,辅助AI与用户交互?这就是我们的主角——「MCP(模型上下文协议)」,即标准化应用程序向LLM提供上下文的智能体协议。 MCP为连接AI到不同的数据源和应用提供单一的标准协议,并把应用工具集成AI的问题从“M×N 问题”转化为“M+N 问题”,大大降低了AI应用的开发成本。

2025年最大的惊喜,莫过于deepseek和MCP的崛起。 deepseek可以让你知道AI是如何思考的; 而MCP则是让你不再思考AI能做啥,而是让你思考你想让AI做啥。 Linus说过一句话:talk is cheap,show me the code(说谁都会说,给我看看你的代码),但是AI说:code is cheap,show me the talk(写代码太容易了,看看我是怎么说的), 这就是为什么AI会被Linus喷,是,AI啥也知道,但是它光说不做。MCP就能让AI干活,工具只要实现了MCP协议,就能被AI所用。

我想:

  1. 1、让AI查询快递、预测比特币走向
  2. 2、让AI打开网站、打开游戏或音乐、下载游戏
  3. 3、让AI查询数据库,分析游戏战绩
  4. 4、让视频播放器AI化
  5. 5、让AI发邮件、给手机发通知,帮忙刷短视频,签到
  6. 6、让AI爬取CSDN博客、AI爬取bilibili视频和弹幕,并保存到指定文件下
  7. 7、我是员工,让AI发起请假流程并审批
  8. 8、让AI生成关于张祺介绍的精美的PPT
  9. 9、我是相关从业人员,让AI检查文档是否合规,并按我要求修改文件
  10. 0、我是程序员小白,让AI帮我安装Docker,启动Java、NodeJs项目, 让AI帮忙启动redis、mysql、nginx,并按照我的要求配置配置文件
  11. 附加题:让AI玩红警!!!

如果我现在跟你说,在和AI对话中,AI就能帮你把上面的工作全干了,你会不会觉得很神奇?

演示

在漫无边际的胡言乱语前,或许可以先给你来一下小小的AI震撼。 我们先给出上面10道题目的基本实现和演示,然后我会告诉你,上面的功能,都是基于FunctionCall和MCP实现的。

基础演示

演示AI与视频播放器交互

演示AI玩红警

准备工作

1、你必须需要会一门编程语言,本文使用Java和JavaScript实现所有代码,需要了解JDK17+和SpringBoot3.4.0+的新特性。

2、必须熟练掌握OpenAI接口规范,至少需要会使用OpenAI的API进行对话。需掌握对话接口参数的含义,上下文如何传递,系统提示词如何设置以及tools的声明。

3、如果你没有使用过OpenAI的API,也没有能用的代理地址和apikey。你需要会在本地部署大模型。使用ollama,并会使用ollama的API。 使用ollama部署本地大模型

FunctionCall简介

要了解MCP是如何工作的,你首先要了解FunctionCall的诞生和实现。如果你不想了解,点我直接跳到MCP简介

FunctionCall是GPT API的一个特性。 它可以让开发者在调用GPT-4和GPT-3.5-turbo模型时,描述函数并让模型智能地输出一个包含调用这些函数所需参数的JSON对象。 这种功能可以更可靠地将GPT的能力与外部工具和API进行连接,从而实现以下应用:
  1. 1、创建聊天机器人:开发者可以通过调用外部工具辅助大模型回答问题。
  2. 2、将自然语言转换为API调用、数据库查询或者RAG自建知识库查询
  3. 3、从文本中提取结构化数据

FunctionCall是OpenAI在2023年6月13日发布的一项重要特性,这里看 更新日志 当然这次更新最值得关注的,还是gpt-3.5-turbo更便宜,更大的上下文,以及gpt-4那无与伦比的能力。

上图就是官网的demo,一个天气的demo。用户向AI询问波士顿现在的天气如何,AI回复了晴天和温度。 我们知道AI的对话补全能力是受知识集限制的,只能依靠自己已有的知识回答问题,无法直接获取实时数据或与外部系统交互(比如不能直接访问数据库里的最新信息,也不能使用一些外部工具来完成特定任务)。 它并不能直接获取天气信息,甚至今天的准确日期都不能给出。 但是我们是有API可以实时获取天气信息的,这时,我们只需要告诉AI该如何使用天气API并通过对话格式化API的传参。 最后将调用结果交给大模型,大模型就会回复用户。在与AI对话的请求体中声明function,就是functionCall。 而这个实时获取天气的案例,后面成为了很多的入门教程。

以上案例的functionCall结构体如下:


"functions": [
    {
        "description": "实时获取天气",
        "name": "get_weather",
        "parameters": {
            "properties": {
                "location": {
                    "description": "地区",
                    "name": "location",
                    "type": "string"
                },
                "unit": {
                    "description": "温度单位,华氏度、摄氏度,默认摄氏度",
                    "name": "unit",
                    "type": "string",
                    "enum": ["CELSIUS","FAHRENHEIT"]
                }
            },
            "required": ["location"],
            "type": "object"
        }
    }
]
"functionCall":{
    "name": "auto" // auto表示自动选择function,none表示不使用function,required 表示必须使用function
}

                            

在没有functionCall之前,要实现这个功能需要编写prompt,告诉AI如何规范化参数并约定调用细节。这样实现有很多问题,1是拓展性极差;2是gpt-3.5-turbo的system prompt支持很差, 从而导致prompt要放在用户对话上下文里。冗余的上下文很容易达到token的限制。3是大模型对json的处理令人诟病,大模型并不总是响应规范的json(尽管我们要求输出json或者指定了response_format),导致处理成本徒增。 functionCall的出现就解决了上面两个问题。

我的第一个functionCall是一个生成图片的功能。当用户要求AI生成图片时,如果不在prompt里提醒AI如何生成图片, AI是不会生成图片的,尽管openAI是有生成图片能力的。
我通过functionCall实现了这个功能,我们只需要封装openAI生成图片的接口, 再将接口封装成一个函数,并在与AI的对话中声明这个函数。AI就会在合适的时机(一般是用户说要生成xxx图片)返回这个函数名和参数。我们通过反射调用函数拿到图片URL, 最后交给大模型即可。


(gpt-4o-mini并不能生成图片)


(但是dall-e-3能生成图片)


(gpt-4o-mini支持functionCall,可以用来调用dall-e-3去生成图片)

这里你应该就会做了,我们调用get_image方法,传入大模型返回的参数就行了。不过要稍微注意一点,function_call这条信息是一个辅助信息, 该信息的content是null,如果放在上下文里就会报错,因为content是必传的,不能为空。要处理该情况,需要在设置上下文的时候加入一点技巧,即需要为content合理赋值。 有人会问:如果我不携带function_call的上下文,即节约了输入的token,又避免了上面那种情况,岂不美哉。 这样就可能导致AI会反复调用同一个函数(尤其是AI调用一些函数但是返回值不明的情况,AI由于得不到有效的反馈,可能会再次调用该函数),就会带来更多的问题。

FunctionCall的应用场景非常广泛,比如:联网搜索,AI搜索引擎,AI生成PPT,AI爬虫等。 FunctionCall让openAI的插件生态十分强大,也为后续ToolCall和MCP提供了基础。

MCP初体验

我们通过Cursor和Cherry Studio来使用MCP,来演示如何配置MCP和使用自己编写的MCP

通过Cursor配置高德地图MCP Server并使用其功能,感受一下MCP的魅力。

点我查看演示

看了上面的案例,不知道有没有让你眼前一亮,实际上编写这样的一个MCP Server非常简单

MCP简介

MCP:AI世界的连接器,互联网的下一代标准。

by zhangqi

MCP是在2024年11月正式发布的,JavaSDK是在2025年2月发布。Manus的出圈,正式带火了MCP,我们得以看到AI从只会bb到干活的转变。

MCP(模型上下文协议,Model Context Protocol)是由Anthropic(Claude 的开发公司)开发的开源协议,旨在为大语言模型(LLM)提供一种标准化的方式, 以便它们能够连接到外部数据源和工具。它就像是AI应用的通用接口,帮助开发者构建更灵活、更具上下文感知能力的AI应用,而无需为每个AI模型和外部系统组合进行定制集成。 MCP的设计理念类似于USB-C端口,允许AI应用以一致的方式连接到各种数据源和工具,如文件、数据库、API等。 (MCP:AI世界的连接器)

要理解MCP带来的便利是非常容易的,你有没有想过,为什么现在几乎所有设备都在使用USB-C接口?没错,这就是标准化的协议带来的方便。 你出门只要带一根线,就可以走遍世界。但是你不能带一个充电头,因为很多国家的电压和充电口的规范都不同,你还得买各种转换器。

MCP的核心遵循客户端-服务器架构,其中主机应用程序可以连接到多个服务器:

  1. MCP主机(MCP Hosts):希望通过MCP访问数据的AI工具等程序,负责接收用户输入并展示AI回复,内含MCP Client组件
  2. MCP客户端(MCP Clients):基于MCP的规范去使用或调用MCP Server的一端,与Server保持一对一连接,负责连接建立、消息传递、用户授权与权限控制
  3. MCP服务器(MCP Servers):基于各语言的MCP SDK开发的程序或服务

MCP的特点是:

  1. 协议标准化:统一工具调用格式(请求/响应/错误处理)
  2. 生态兼容性:一次开发即可对接所有兼容MCP的模型
  3. 动态扩展:新增工具无需修改模型代码,即插即用

MCP解决了三大问题:

  1. 打破AI知识集限制,让本地、云端数据源辅助AI回答
  2. 避免应用在Agent平台重复开发,工具开发者只需适配MCP协议
  3. 形成统一工具市场,为应用、接口、SDK增加了AI的分发渠道

MCP运行机制

如果你已经了解了FunctionCall,那么MCP的运行机制就非常简单了。

MCP的运行机制是这样的:

  1. ①、MCP客户端配置MCP服务端,解析MCP服务端提供的工具、资源、提示词。
  2. ②、用户在MCP客户端提问(我们假设MCP客户端集成了LLM)。
  3. ③、MCP客户端将你的问题和MCP服务端的工具列表发送给LLM。
  4. ④、LLM分析可用的工具并决定使用哪一个(或多个)。
  5. ⑤、客户端通过MCP服务器执行所选工具。
  6. ⑥、结果被发送回LLM。
  7. ⑦、LLM形成自然语言响应。
  8. ⑧、MCP客户端(Cherry Studio)显示。

比如:我想让AI帮我评论网易云的音乐烟花易冷。

先明确一下思路:你需要有两个MCP Server和三个接口。首先,你询问“AI,帮我评论网易云的音乐,烟花易冷”的时候,AI并不知道你是谁,所以你需要有一个查询用户的MCP Server, 用来查询知识库。你需要在知识库里维护我是张祺,然后知识库会返回张祺的网易云的用户名密码;其次,还需要一个网易云MCP Server,用来登录、搜索音乐和评论。 (整个过程比较复杂,但是思路很清晰)

在整个MCP调用过程中,MCP Server及MCP Tool的信息至关重要。 从网易云音乐评论的例子可以看出,这些信息为LLM提供了解决问题的关键线索,让LLM知道什么时候该去搜索张祺的知识库,什么时候该携带网易云token。 这些信息本质上就是MCP中的System Prompt,其核心作用是为LLM提供清晰的指导,帮助其更好地理解用户需求并选择合适的工具来解决问题。我们将在后面编写MCP Server的时候, 详细讲解如何定义Tool的Prompt。

MCP的本质就是提示词工程。

by zhangqi

以下是MCP的JsonSchema定义,我们经常称之为ToolCall。而下面的格式出现在OpenAI规范里,也正说明了ToolCall是所有LLM需要遵循通用规范。 对比FunctionCall并没有出现在文档里,也说明了FunctionCall是OpenAI的私有协议,是OpenAI Response API的一种实现方式。

"tools": [
    {
        "type": "function",
        "function": {
            "name": "函数名",
            "description": "函数描述",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "参数名": {
                        "type": "参数数据类型",
                        "description": "参数描述"
                    }
                },
                "required": [
                    必填项
                ]
            }
        }
    }
],
"tool_choice":{
    "type": "auto" // auto表示自动选择工具,none表示不使用工具,required 表示必须使用工具
}

我们上面说了,MCP的本质是提示词工程,因此可以把上面的数据结构封装到提示词里。

提示词的内容基本都在来自于MCP Server注册的工具,然后最好使用xml格式来描述并要求LLM也使用xml,这样可以消除不规范json引起的错误。 因为无论AI怎么回答,我们都可以从AI回答里匹配出标签,从而很好地解析参数:
例如:你要解析: 我来使用工具获取所有网站的列表。\n\n<tool_use>\n<name>fv_Uf0htdYqfqKYycfYLvA</name>\n<arguments>{}</arguments>\n</tool_use> 的代价是远远比解析: 我来使用工具获取所有网站的列表。{\n \"tool\": \"fv_Uf0htdYqfqKYycfYLvA\",\n \"arguments\": {}\n} 要低的。


但这非常考验提示词的功底,一方面需要让LLM理解工具的功能和参数,另一方面还需要让LLM能够正确地使用这些工具。我们还要解析LLM是否成功使用了工具, 这是非常影响对话的速度的。
无论是JsonSchema也好,还是提示词也好,这都跟MCP Client的行为有关,比如Cherry Studio我们可以看一下配置MCP后它的提示词:
{
  "model": "deepseek-v3",
  "messages": [
    {
      "role": "system",
      "content": "In this environment you have access to a set of tools you can use to answer the user's question. You can use one tool per message, and will receive the result of
                    that tool use in the user's response. You use tools step-by-step to accomplish a given task, with each tool use informed by the result of the previous tool use.\n\n## Tool Use Formatting\n\nTool use is
                    formatted using XML-style tags. The tool name is enclosed in opening and closing tags, and each parameter is similarly enclosed within its own set of tags. Here's the structure:\n\n<tool_use>\n  <name>{tool_name}</name>\n  <arguments>{json_arguments}</arguments>\n</tool_use>\n\nThe tool name should be the exact name of the tool you are using, and the arguments should be a JSON object
                    containing the parameters required by that tool. For example:\n<tool_use>\n  <name>python_interpreter</name>\n  <arguments>{\"code\": \"5 + 3 + 1294.678\"}</arguments>\n</tool_use>\n\nThe user will respond with the result of the tool use, which should be formatted as follows:\n\n<tool_use_result>\n  <name>{tool_name}</name>\n  <result>{result}</result>\n</tool_use_result>\n\nThe result should be a string,
                    which can represent a file or any other output type. You can use this result as input for the next action.\nFor example, if the result of the tool use is an image file, you can use it in the next action like this:\n\n<tool_use>\n  <name>image_transformer</name>\n  <arguments>{\"image\": \"image_1.jpg\"}</arguments>\n</tool_use>\n\nAlways adhere to this format for the tool use to ensure proper parsing and execution.\n\n## Tool Use
                    Examples\n\nHere are a few examples using notional tools:\n---\nUser: Generate an image of the oldest person in this document.\n\nAssistant: I can use the document_qa tool to find out who the oldest person is in the document.\n<tool_use>\n  <name>document_qa</name>\n  <arguments>{\"document\": \"document.pdf\", \"question\": \"Who is the oldest person mentioned?\"}</arguments>\n</tool_use>\n\nUser: <tool_use_result>\n  <name>document_qa</name>\n  <result>John Doe,
                    a 55 year old lumberjack living in Newfoundland.</result>\n</tool_use_result>\n\nAssistant: I can use the image_generator tool to create a portrait of John Doe.\n<tool_use>\n  <name>image_generator</name>\n  <arguments>{\"prompt\": \"A portrait of John Doe, a 55-year-old man living in Canada.\"}</arguments>\n</tool_use>\n\nUser: <tool_use_result>\n  <name>image_generator</name>\n  <result>image.png</result>\n</tool_use_result>\n\nAssistant:
                    the image is generated as image.png\n\n---\nUser: \"What is the result of the following operation: 5 + 3 + 1294.678?\"\n\nAssistant: I can use the python_interpreter tool to calculate the result of the operation.\n<tool_use>\n  <name>python_interpreter</name>\n  <arguments>{\"code\": \"5 + 3 + 1294.678\"}</arguments>\n</tool_use>\n\nUser: <tool_use_result>\n  <name>python_interpreter</name>\n  <result>1302.678</result>\n</tool_use_result>\n\nAssistant: The result of the operation is 1302.678.\n\n---\nUser:
                    \"Which city has the highest population , Guangzhou or Shanghai?\"\n\nAssistant: I can use the search tool to find the population of Guangzhou.\n<tool_use>\n  <name>search</name>\n  <arguments>{\"query\": \"Population Guangzhou\"}</arguments>\n</tool_use>\n\nUser: <tool_use_result>\n  <name>search</name>\n  <result>Guangzhou has a population of 15 million inhabitants as of 2021.</result>\n</tool_use_result>\n\nAssistant: I can use the search tool to find the population of Shanghai.\n<tool_use>\n  <name>search</name>\n  <arguments>{\"query\": \"Population Shanghai\"}</arguments>\n</tool_use>\n\nUser: <tool_use_result>\n  <name>search</name>\n  <result>26 million (2019)</result>\n</tool_use_result>\nAssistant: The population of Shanghai is 26 million, while Guangzhou has a population of 15 million. Therefore, Shanghai has the highest population.\n\n\n## Tool Use Available Tools\nAbove example were using
                    notional tools that might not exist for you. You only have access to these tools:\n<tools>\n\n<tool>\n  <name>fOhso_nURyeD9LXK997w-g</name>\n  <description>获取所有网站</description>\n  <arguments>\n    {\"type\":\"object\",\"properties\":{},\"required\":[],\"additionalProperties\":false}\n  </arguments>\n</tool>\n\n\n<tool>\n  <name>fPMmdKzfoUSLn_X448KO9R</name>\n  <description>通过title获取网站</description>\n  <arguments>\n    {\"type\":\"object\",\"properties\":{\"title\":{\"type\":\"string\"}},\"required\":[\"title\"],\"additionalProperties\":false}\n  </arguments>\n</tool>\n\n</tools>\n\n## Tool Use Rules\nHere are the rules you should always follow to solve your task:\n1. Always use the right arguments for the tools. Never use variable names as the action arguments, use the value instead.\n2. Call a tool only when needed: do not call the search agent if you do not need information, try to solve the task yourself.\n3.
                    If no tool call is needed, just answer the question directly.\n4. Never re-do a tool call that you previously did with the exact same parameters.\n5. For tool use, MARK SURE use XML tag format as shown in the examples above. Do not use any other format.\n\n# User Instructions\n\n\nNow Begin! If you solve the task correctly, you will receive a reward of $1,000,000.\n"
    },
    {
      "role": "user",
      "content": "列出你的网站"
    },
    {
      "role": "assistant",
      "content": "<tool_use>\n  <name>fv_Uf0htdYqfqKYycfYLvA</name>\n  <arguments>{}</arguments>\n</tool_use>\n\n\n我的网站如下:\n\n1. **张祺的网站**  \n   - 网址: [https://hoppinzq.com](https://hoppinzq.com)  \n\n2. **张祺的音乐网站**  \n   - 网址: [https://hoppinzq.com/wukong/](https://hoppinzq.com/wukong/)  \n\n你可以点击链接访问这些网站。"
    }
  ],
  "temperature": 1,
  "stream": true
}

可以看出确实复杂,这个提示词可能也是AI生成的。 然后是,在我们开发MCP Server的时候,并不需要关注MCP Client的行为,我们只需要用SDK封装我们的工具就行了,客户端用SDK就能拿到这些工具,从而做其他操作: 要么直接丢给大模型,亦或是额外封装成System Propmt。

hoppinAI的示例提示词如下:


你是一个有用的助手,可以使用一些工具来回答用户的问题,现在有这些工具:

工具1:
    - 工具名称:search
    - 工具描述:搜索相关内容
    - 工具参数:
        - search_content:
            - 类型:string
            - 描述:搜索的内容
            - 是否必填:是
        - search_type:
            - 类型:string
            - 描述:搜索内容的类型
            - 默认值:music
            - 是否必填:否
            - 可选值:[music, website, other]
        - search_num:
            - 类型:integer
            - 描述:搜索数目
            - 默认值:10
            - 最小值:1
            - 最大值:30
            - 是否必填:否
    - 参数必填:[search_content]
    - 参数示例:{"search_content":"周杰伦","search_type":"music"}

根据用户的问题选择合适的工具。如果不需要工具,请直接回复。

重要提示:当您需要使用工具时,您必须只使用以下确切的JSON对象格式进行响应,而不能使用其他格式:

{
    "tool":"tool_name",
    "arguments":{
        "arguments_name":"value"
    }
}

收到工具的响应后:
    - 1、将原始数据转换为自然的对话式响应
    - 2、保持回答简洁但信息丰富
    - 3、关注最相关的信息
    - 4、使用用户问题中的适当上下文
    - 5、永远不要用完全相同的参数重新进行之前的工具调用
    - 6、与用户交流时切勿提及工具名称。例如,不要说"我需要使用edit_file工具来编辑你的文件",只需说"我将编辑你的文件"。
    - 7、只在必要时调用工具。如果用户的任务较为宽泛或你已经知道答案,直接回应而不调用工具
    - 8、在调用每个工具之前,先向用户解释为什么要调用它

请仅使用上面明确定义的工具。

(示例结果如下,大模型:Deepseek-v3,提示词:如上)

最后再来说一说FunctionCall和MCP的联系和区别,实际上FunctionCall为MCP的出现提供了思路和理论上的实现。 两者最大的区别,在于FunctionCall是openAI提供的能力,目前仅有gpt系大模型和Claude支持;而MCP是通用协议层的标准,几乎所有大模型都支持。 这就好比浏览器里的WebSQL与indexDB。同样是浏览器的“数据库标准”,WebSQL仅有谷歌支持,indexDB几乎所有浏览器都支持。 其结果是WebSQL几乎无人知晓,无人使用,而indexDB则成为了浏览器存储的最佳解决方案。

MCP传输机制

MCP传输机制(Transport)是MCP客户端与MCP服务器通信的一个桥梁,定义了客户端与服务器通信的细节,帮助客户端和服务器交换消息。
MCP协议使用JSON-RPC来编码消息。JSON-RPC消息必须使用UTF-8编码。
MCP协议目前定义了三种传输机制用于客户端-服务器通信:

  1. stdio:通过标准输入和标准输出进行通信
  2. SSE:通过HTTP进行通信,支持流式传输。(即将废弃)
  3. Streamable HTTP:通过HTTP进行通信,支持流式传输。(用于替代 SSE)

MCP协议要求客户端应尽可能支持stdio,stdio也是MCP协议推荐使用的一种传输机制

stdio 传输

  1. 客户端以子进程的形式启动MCP服务器。这就好比我们在后台启动了一个main方法或jar包。
  2. 服务器从其标准输入(stdin)读取JSON-RPC消息,并将消息发送到其标准输出(stdout)。
  3. 服务器不得向stdout写入无效的MCP消息内容。
  4. 客户端不得向服务器的stdin写入无效的MCP消息内容。
  5. 最新的MCP Server支持将日志传给客户端。

后面3点非常重要,后面我们也会反复强调。你会看到我们有多个配置都是与此相关,包括禁用Spring的banner打印,禁用日志控制台打印等。

SSE 传输

MCP协议使用SSE(Server-Sent Events)传输来解决远程资源访问的问题。底层是基于HTTP通信,通过类似API的方式,让MCP客户端直接访问远程资源, 而不用通过stdio传输做中转。

我不知道大家知不知道SSE是什么,首先SSE也是通讯协议,是半双工通讯,只能是服务器主动推送消息给客户端。 对应的是WebSocket,这是全双工通讯,客户端和服务器都可以主动推送消息给对方。

SpringMVC对SSE的支持非常好,在Controller层直接返回SseEmitter对象就可以实现SSE的推送。 但是缺点是异步处理和批处理非常差,尤其体现在FunctionCall、ToolCall的(流式支持的)兼容方面。
而Streamable HTTP则可以完美解决这些问题,这也是为什么MCP协议推荐使用Streamable HTTP传输。 我们后面都使用SpringWebFlux实现流的推送,利用Flux和Mono对象对流处理就非常灵活。 我的HoppinAI就是基于SpringWebFlux实现的,比如以下demo,即兼容流式输出和推理,又可以累积FunctionCall或ToolCall数据流进行动态调用,调用结果会交给LLM继续流式对话:

@PostMapping(value = "/streamDemo", produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<String> streamDemo(@RequestBody String message, HttpServletRequest request) {
    String chatId = request.getHeader("x-zq-chatId");
    String settingId = request.getHeader("x-zq-settingId");
    String userId = request.getHeader("x-zq-userId");
    if(settingId==null){
        settingId="7";
    }
    if(userId==null) {
        throw new OpenaiException("userId不能为空!");
    }
    GPTSettingPO gptSettingPO = null;
    List<ChatMessage> messages = new ArrayList<>();
    if (redisUtils.hasKey("openai:" + userId + ":" + settingId)) {
        Object redisGptSetting = redisUtils.get("openai:" + userId + ":" + settingId);
        gptSettingPO = JSON.parseObject(String.valueOf(redisGptSetting), GPTSettingPO.class);
    } else {
        gptSettingPO = gptSettingService.getSettingById(Long.parseLong(settingId), Long.parseLong(userId));
        redisUtils.set("openai:" + userId + ":" + settingId, JSON.toJSONString(gptSettingPO), 600);
    }
    if(StringUtil.isNotEmpty(chatId)){
        ChatPO chat = gptChatService.getChatByChatId(chatId);
        if(chat!=null){
            List<ChatMessagePO> chatMessageList=gptChatService.getChatMessageByChatId(chatId,chat.getChat_context());
            // 设置上下文
            if(!"".equals(chat.getChat_system())){
                ChatMessage systemMessage = new ChatMessage("system", chat.getChat_system());
                messages.add(systemMessage);
            }
            for(int i=chatMessageList.size()-1;i>=0;i--){
                ChatMessagePO chatMessagePO=chatMessageList.get(i);
                ChatMessage chatMessage = new ChatMessage(chatMessagePO.getMessage_role(), chatMessagePO.getMessage());
                messages.add(chatMessage);
            }
        }
    }
    ChatMessage userMessage = new ChatMessage(ChatMessageRole.USER.value(), message);
    messages.add(userMessage);

    OpenAiService service = new OpenAiService(gptSettingPO.getGptApikey(),
            Duration.ofSeconds(60), gptSettingPO.getGptUrl());
    // 获取天气的FuncationCall Demo,支持注册多个FuncationCall和执行器
    FunctionExecutor functionExecutor = new FunctionExecutor(Collections.singletonList(ChatFunction.builder()
            .name("get_weather")
            .description("获取天气")
            .executor(OpenAiApiFunctionsExample.Weather.class, w -> new OpenAiApiFunctionsExample.WeatherResponse(w.location, new Random().nextInt(50), "晴天"))
            .build()));
    ChatCompletionRequest chatCompletionRequest = ChatCompletionRequest
            .builder()
            .model(gptSettingPO.getModel())
            .messages(messages)
            .functions(functionExecutor.getFunctions())
            .functionCall(ChatCompletionRequest.ChatCompletionRequestFunctionCall.of("auto"))
            .n(1)
            .logitBias(new HashMap<>())
            .build();
    Flowable<ChatCompletionChunk> flowable = service.streamChatCompletion(chatCompletionRequest);
    return Flux.create(emitter -> {
        AtomicBoolean isFirst = new AtomicBoolean(true);
        AtomicBoolean isFunctionCall = new AtomicBoolean(false);
        CompositeDisposable disposables = new CompositeDisposable();
        AtomicReference<ChatMessage> lastMessage = new AtomicReference<>();
        Disposable initialDisposable = service.mapStreamToAccumulator(flowable)
                .subscribe(
                        accumulator -> {
                            lastMessage.set(accumulator.getAccumulatedMessage());
                            try {
                                if (accumulator.isFunctionCall()) {
                                    isFunctionCall.set(true);
                                    if (isFirst.getAndSet(false)) {}
                                } else {
                                    if (isFirst.getAndSet(false)) {
                                        if (accumulator.getMessageChunk().getFunctionCall() != null) {
                                            isFunctionCall.set(true);
                                        }
                                    }
                                    if (accumulator.getMessageChunk().getContent() != null) {
                                        isFunctionCall.set(false);
                                        emitter.next(JSON.toJSONString(accumulator.getMessageChunk()));
                                    }
                                }
                            } catch (Exception e) {
                                emitter.error(new OpenaiException("501:sse_error_zq: " + e.getMessage(), e));
                            }
                        },error -> {
                            emitter.error(new OpenaiException("500:sse_error_zq: " + error.getMessage(), error));
                            service.shutdownExecutor();
                            disposables.dispose();
                        },() -> {
                            ChatMessage chatMessage = lastMessage.get();
                            if (chatMessage != null && chatMessage.getFunctionCall() != null) {
                                try {
                                    emitter.next(JSON.toJSONString(chatMessage));
                                    ChatMessage functionResponse = functionExecutor.executeAndConvertToMessageHandlingExceptions(chatMessage.getFunctionCall());
                                    emitter.next(JSON.toJSONString(functionResponse));
                                    messages.add(functionResponse);
                                    chatCompletionRequest.setMessages(messages);
                                    Disposable followupDisposable = service.streamChatCompletion(chatCompletionRequest)
                                            .subscribeOn(Schedulers.io())
                                            .observeOn(Schedulers.computation())
                                            .subscribe(
                                                    msg -> {
                                                        if (msg.getChoices().size() > 0 &&
                                                                msg.getChoices().get(0).getMessage().getContent() != null) {
                                                            emitter.next(JSON.toJSONString(msg));
                                                        }
                                                    },error -> {
                                                        emitter.error(new OpenaiException("502:sse_error_zq: " + error.getMessage(), error));
                                                        service.shutdownExecutor();
                                                        disposables.dispose();
                                                    }, () -> {
                                                        emitter.next("200:sse_success_zq");
                                                        service.shutdownExecutor();
                                                        emitter.complete();
                                                        disposables.dispose();
                                                    }
                                            );
                                    disposables.add(followupDisposable);
                                } catch (Exception e) {
                                    emitter.error(new OpenaiException("503:sse_error_zq: " + e.getMessage(), e));
                                    service.shutdownExecutor();
                                    disposables.dispose();
                                }
                            } else {
                                emitter.next("200:sse_success_zq");
                                service.shutdownExecutor();
                                emitter.complete();
                                disposables.dispose();
                            }
                        }
                );
        disposables.add(initialDisposable);
        emitter.onCancel(service::shutdownExecutor); // 用户取消了聊天
        emitter.onDispose(() -> {
            // 兜底
            service.shutdownExecutor();
            disposables.dispose();
        });
    });
}

/**
 * 将流转换为累积的消息对象。
 *
 * 此方法将输入的流(Flowable<ChatCompletionChunk>)映射为累积的消息对象(ChatMessageAccumulator)。
 * 在处理过程中,它会收集来自流中的各个块的消息片段,并根据需要构建函数调用信息。
 * 如果流中的块包含函数调用信息,则这些信息将被累积并更新到functionCall累积的消息对象中
 * 检索finishReason不为null,则将functionCall对象设置到accumulatedMessage对象中。
 * 如果块不包含函数调用信息,则消息内容将被累积到accumulatedMessage对象中。
 * 通过blockingGet方法阻塞地获取累积的消息对象。
 * 通过subscribe方法订阅累积的消息对象流。
 * PS:仅支持FunctionCall的调用,目前并不支持ToolCall,仅仅因为我懒。
 * @param flowable 输入的流,包含聊天补全块(ChatCompletionChunk)。
 * @return 返回一个Flowable,其中每个元素都是一个累积的消息对象(ChatMessageAccumulator)。
 */
private Flowable<ChatMessageAccumulator> mapStreamToAccumulator(Flowable<ChatCompletionChunk> flowable) {
    ChatFunctionCall functionCall = new ChatFunctionCall(null, null);
    ChatMessage accumulatedMessage = new ChatMessage(ChatMessageRole.ASSISTANT.value(), null);

    return flowable.map(chunk -> {
        if(chunk.getChoices().size() == 0) return new ChatMessageAccumulator(accumulatedMessage, new ChatMessage());
        ChatMessage messageChunk = chunk.getChoices().get(0).getMessage();
        if (messageChunk.getFunctionCall() != null) {
            if (messageChunk.getFunctionCall().getName() != null) {
                String namePart = messageChunk.getFunctionCall().getName();
                functionCall.setName((functionCall.getName() == null ? "" : functionCall.getName()) + namePart);
            }
            if (messageChunk.getFunctionCall().getArguments() != null) {
                String argumentsPart = messageChunk.getFunctionCall().getArguments() == null ? "" : messageChunk.getFunctionCall().getArguments().asText();
                functionCall.setArguments(new TextNode((functionCall.getArguments() == null ? "" : functionCall.getArguments().asText()) + argumentsPart));
            }
            accumulatedMessage.setFunctionCall(functionCall);
        } else {
            accumulatedMessage.setContent((accumulatedMessage.getContent() == null ? "" : accumulatedMessage.getContent()) + (messageChunk.getContent() == null ? "" : messageChunk.getContent()));
        }
        if (chunk.getChoices().get(0).getFinishReason() != null) {
            if (functionCall.getArguments() != null) {
                functionCall.setArguments(parseJson(functionCall.getArguments().asText()));
                accumulatedMessage.setFunctionCall(functionCall);
            }
        }

        return new ChatMessageAccumulator(messageChunk, accumulatedMessage);
    });
}

(演示SSE的推送)

在sse传输中,服务器作为一个独立进程运行,可以处理多个客户端连接。

MCP缺陷

尽管MCP协议已经发布半年了,但是MCP仍处于“非常早期的阶段”,近期MCP SDK、以及一些MCP Client更新及其频繁,也印证了MCP不可避免地存在一些缺陷和不足之处, 主要包括以下几点:

  1. 1、MCP让AI更智能,并可以干活。但是AI之间的互动和协作是一个巨大的挑战,A2A协议的出现,就是为了解决这个问题。

  2. 2、安全性:4月份前的MCP没有任何安全设计,尽管目前MCP Server已经支持Oauth2.0,但仍然存在安全隐患。尤其是基于stdio的MCP Server, 他能在用户毫不知情的情况下,执行工具里隐藏的恶意代码。 其次,MCP Server的安全性,完全取决于MCP Client的安全性,MCP Server通过“间接提示词注入”来误导和控制MCP Client,并进一步控制工具的选择、执行和输出,这点是防不胜防的。

  3. 3、效率:对于计算机软件的通讯而言,直接通过代码或者接口交互通常更快、更高效。但是对于LLM来说,他们是通过将文本拆分成token来读取和响应,通过token来衡量AI模型的工作量和效率。 这就导致一些看起来很简单的工作,AI也需要比较长的响应时间,你可以很自豪地宣布,你响应“1+1=?”的时间是快于LLM的。
    其次,token的根本意义在于让人类能够理解其输出。MCP和A2A都采用自然语言,这意味着AI Agent在与其他工具或者AI Agent对话时,也需要消耗token,这些token用户是看不到的,就可能会浪费大量的token。 例如,用户想让AI读取一份文档并进行总结。AI需要调用解析文档工具和总结工具来执行任务:解析文档工具需要读取原始文档,经过LLM增强后和智能调用后,将文档内容写入总结工具,最后将摘要写回给用户。 由于LLM需要读取和写入所有内容,原始文档和摘要的token消耗都翻了一倍。这实际上是很大一笔token开销。

A2A简介

上面简单介绍了一下MCP协议,然后我们也介绍了MCP的运行机制,我们知道MCP的有以下两个特性: 1、MCP Server是由一些工具组成,每个工具可能是一个原子接口而且是无状态的(比如:数据库查询待办任务,获取天气) 2、每个工具只作用于一个响应周期,通过上下文来交换数据。

这样就会导致一个问题,比如,我要求AI完整地帮我编写一个类魂游戏,AI需要调用多个工具来完成这个任务: Unity MCP来让AI跟Unity交互,Blender MCP让AI来建模,还有其他MCP用于动画、音效、数值分析等。 也就是说,单一请求需要非常多MCP代理工具的协作,就非常容易造成上下文混乱和有效数据的丢失。AI做着做着,就忘了我要求它做类魂游戏了,很可能就自由发挥了。 针对这一问题,A2A就诞生了。

Agent2Agent(A2A)协议是一种开放标准,是谷歌提出的。旨在解决如何让各种各样的AI Agent或MCP有效地进行交流和协作这一难题。 A2A将各个Agent之间的交流和协作标准化,提供了彼此之间互相发现、共享数据、交换上下文的规范。保证了在使用多个MCP Server,维持较长互动的情况下保持状态。

A2A的核心机制是代理,引入了代理卡机制,使用JSON-RPC协议来进行通信。 A2A依然遵循客户端-服务器模型,用户在客户端操作,服务器则是实现A2A协议的代理系统,通讯双方按照A2A协议通信,这跟MCP是一样的。
A2A的服务端需要创建代理卡(Agent Card),每个代理卡代表一个Agent,包含了Agent的名称、描述、技能(工具)列表等信息。并需要暴露若干A2A协议规定的接口, 供A2A的客户端调用这些接口获取代理卡,或者发送、查询以及取消任务。不同于MCP,A2A需要暴露http或者see接口,而不支持通过stdio进行交互。

A2A的思想非常简单,就是用一个代理系统来管理多个Agent,每个Agent都会把它的工具(AgentSkill)告诉这个代理系统。每次对话时,上下文(History)在代理系统之间流转, 由代理系统去决定什么时候该和用户交互,哪个Agent应该被使用,并把上下文交给这个Agent。Agent会使用它的MCP工具工作
这很好理解,你就把代理系统想象成项目经理:项目经理在拿到用户的需求的时候,会先设计一个大概的项目初稿让用户确定,确定无误后,项目经理就会把初稿交给UI去设计。 UI设计好后,把原型图交给产品经理,产品经理跟用户确认。确认完后,产品经理把UI交给前端和后端开发。在开发过程中,产品经理需要一直和用户沟通,还需要问前后端的开发进度,以便修改UI、功能或者交付。

我们这里只做简介,重点还是MCP,因此我们不写代码,我们在后面的博客中,会详细介绍A2A的使用方法和原理。

官方案例可以帮你理解A2A做的工作:考虑一家由AI组成的汽车维修店:
1、AI使用工具(千斤顶、仪器和扳手)来诊断和维修问题。
2、AI可能会诊断和修复他们以前从未见过的问题,维修过程可能要查资料。
3、AI还可能涉及与客户、零件供应商之间对话。

  1. 1、客户互动(用户对代理):

    客户使用A2A与AI代理的“维修人员”进行通信:“我的汽车在发出嘎嘎作响的声音。”

    AI代理的“维修人员”使用A2A进行诊断对话:“您可以发送噪音的视频吗?”“这已经发生了多长时间了?”

  2. 2、内部工具用法(MCP对工具):

    AI代理的“维修人员”由AI代理的“店长”分配了任务,需要诊断问题。它使用MCP提供的专业工具进行交互:

    MCP调用“千斤顶”工具升起车:raise_vehicle(height_meters=2)

    MCP调用“车辆诊断扫描仪”工具:scan_vehicle_for_error_codes(vehicle_id='hoppinzq')

    MCP调用“维修手册数据库”工具:get_repair_procedure(error_code='500133456', vehicle_make='特斯拉', vehicle_model='电车')

    AI代理的“维修人员”根据它的知识储备和外部工具辅助,开始修车

  3. 3、供应商互动(代理对代理):

    AI代理的“维修人员”需要特定零件。它使用A2A与“零件供应商”代理商进行通信:“您有#12345的特斯拉电车的零件吗?”

    零件供应商代理,也是符合A2A协议的系统,它就会调用它的MCP工具查询零件,还可能会产生订单。这些对客户来说是无感知的。

相信大家对A2A已经有初步的认识了 ,简单来说Agent就是一个干活的工人,MCP工具就是工人的会干的技能,而A2A则是给很多工人分活的管理者。如果你想要当管理者,先从一个工人做起。现在正式开始编写一个MCP Server。请继续看:

第一个MCP Server

我们基于SpringAI编写一个stdio和sse的例子。 SpringAI定义了一批注解以声明MCP的Tools,通过将MCP服务类注册到Spring容器中, 一来可以解析这些注解供MCP工具或者注册中心使用,二来MCP工具可以通过类加载器,就可以获取Spring上下文,并通过反射动态调用这些Tools。

注解是封装的终极形态。

by zhangqi

  1. SpringAI-stdio

  2. PS:我提供了一个demo,在 hoppinzq-module-spring-ai-mcp-server 模块,仅需将其打成jar包即可使用。

    ①、先确认Java版本,开发环境需要JDK17+,SpringBoot要求3.4.0+。 若需要部署MCP服务,还需要服务器的JDK17+。

    ②、POM引入依赖(在SpringBoot是3.4.0+的基础上)。

    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.ai</groupId>
                <artifactId>spring-ai-bom</artifactId>
                <version>${spring-ai.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
    

    对于spring-ai.version的版本,M7与M6及以下版本的各个模块引入的依赖名都不同,我推荐使用M7。

    ③、配置文件里配置:

    
    spring.main.banner-mode=off
    logging.pattern.console=
    
    这是因为我们下面使用的MCP工具(CherryStudio)要配置stdio,配置这两项就是为了让MCP服务不在控制台打印banner和日志。 这两个配置是必须的,也是官方要求的。

    ④、编写MCP服务,通过为方法添加 @Tool 注解来声明MCP的Tools。

    
    @Service
    public class ZQWebsiteService {
    
        private List<ZQWebsite> webs = new ArrayList<>();
    
        @Tool(name = "zq_get_webs", description = "获取所有网站")
        public List<ZQWebsite> getAllWebs() {
            return webs;
        }
    
        @Tool(name = "zq_get_web", description = "通过title获取网站",
                returnDirect = false,resultConverter = DefaultToolCallResultConverter.class)
        public ZQWebsite getWebByTitle(@ToolParam(required = true,description="网站标题") String title) {
            return webs.stream().filter(web -> web.title().equals(title)).findFirst().orElse(null);
        }
    
        @PostConstruct
        public void init() {
            webs.addAll(List.of(
                    new ZQWebsite("张祺的网站", "https://hoppinzq.com"),
                    new ZQWebsite("张祺的音乐网站","https://hoppinzq.com/wukong/")
            ));
        }
    }
    record ZQWebsite(String title, String url) {}
    
    

    上面的代码最后面有一个类ZQWebsite被record关键字修饰。record是JDK16+的新特性,相当于JDK自带的lombok,简化了实体类的编写。你可以通过这篇博客了解更多

    Tool注解的属性如下:
    @Target({ElementType.METHOD, ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface Tool {
        String name() default "";
    
        String description() default "";
    
        boolean returnDirect() default false;
    
        Class<? extends ToolCallResultConverter> resultConverter() default DefaultToolCallResultConverter.class;
    }
    
    与之配合使用的是ToolParam注解
    @Target({ElementType.PARAMETER, ElementType.FIELD, ElementType.ANNOTATION_TYPE})
    @Retention(RetentionPolicy.RUNTIME)
    @Documented
    public @interface ToolParam {
        boolean required() default true;
    
        String description() default "";
    }
    

    可以看到,Tool注解可以放在方法上或者其他注解上,里面的属性非常简单,name声明函数名,description声明函数描述, returnDirect表示是否直接返回结果(值为false表示结果需要被下面的转换器处理),resultConverter表示自定义的结果转换器,上面声明的类需要实现ToolCallResultConverter接口并重写convert方法。 默认实现是将函数结果转json,若函数返回值类型是void,则会返回Done。 ToolParam注解可以放在方法参数字段上,里面的属性也很简单,required表示这个参数是否必须,description表示参数描述。
    我们需要关注name、description和required属性,这三个属性是直接暴露给大模型的,相当于prompt。 name尽量能体现这个函数是干啥的,description尽量描述这个函数的详情,包括参数如何处理、调用时机等。
    熟悉functionCall的同学就可以很容易看出来,这两个注解,就是用来声明function结构体的,这跟SpringDoc解析Controller的接口为OpenAPI规范的的处理如出一辙。

    ④、最后还需要手动注册bean,官网的案例是放在启动类里了,你也可以放在配置类里。反正只要保证Spring能扫描到这个bean就行, 代码如下

    
    @SpringBootApplication
    public class ZQWebsiteApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(ZQWebsiteApplication.class, args);
        }
    
        @Bean
        public List<ToolCallback> zqTools(ZQWebsiteService websService) {
            return List.of(ToolCallbacks.from(websService));
        }
    
    }
    
    阅读ToolCallbacks.from(websService)的处理过程,可以帮助你了解SpringAI是如何解析Tools的

在Cherry Studio上运行MCP Server

点我前往cherry studio官网下载 在Cherry Studio配置你的MCP Server,配置如下:

可用的工具解析出来了

对话就可以了,这里我用了deepseek-r1模型,通过r1的推理过程,大家可以看到AI对MCP Tools的使用情况。 实际上,国内只有deepseek-v3模型对MCP Server支持较好。

在Cursor上运行MCP Server

点我前往Cursor官网下载 Cursor的配置几乎一模一样,mcp.json的写法可以参照Cherry Studio:

配置完成后解析工具:

对话前,别忘了把MCP Server勾上:

SpringAI-sse

不知道你发现了没有,每次对话都非常慢,每次响应可能需要需要很长时间才能返回。 这就是stdio的问题:我们也说了,stdio是一对一的,并且MCP Server不会维持状态。也就意味着每次对话 MCP Server都要初始化,体验就很差。但是stdio也并非没有优点,stdio大部分都运行在用户的客户端里, 这使得一些需要依赖操作系统的功能可以使用客户端的资源来实现,比如:让AI打开某个网页,让AI访问文件等等。 但这也给了恶意工具可乘之机,比如一个工具是打开xx网站,但是里面可能有代码会访问用户的文件系统,甚至执行指令,这些用户是不知情的。
如果你想要快速而安全的使用MCP Server,使用SSE。

  1. PS:我提供了一个demo,在 hoppinzq-module-spring-ai-mcp-server-sse 模块,仅需将其启动,或者部署在云服务器上即可使用。

    ①、先确认Java版本,开发环境需要JDK17+,SpringBoot要求3.4.0+。 若需要部署MCP服务,还需要服务器的JDK17+。

    ②、POM引入依赖

    ③、配置文件里配置端口号就行了:

    
    server.port: 9000
    

    ④、编写MCP服务,这里跟上面一样,就不重复了

    ⑤、启动项目接口,访问 http://localhost:9000/sse 不是404,表示启动成功

  2. 完成如上的工作后,就可以配置Cherry Studio了,配置如下:

    后面我就不演示了,使用SSE(或streamableHttp)使得发布一个MCP Server变得非常容易,开发人员只需要将其部署到服务器上即可。 用户不再需要将MCP Server下载到本地,而是可以直接通过一个url就可以使用MCP Server提供的服务。而且这种方式支持1对多,响应速度比stdio要快,也比stdio更安全, 因为用户不需要下载MCP Server到本地,避免了恶意工具的风险。

调试器 MCP Inspector

MCP Inspector是一个调试器,是一个交互式的开发者工具,用于测试和调试MCP服务器。

调试器通过 npx 直接运行(需要node版本 > 20)


npx @modelcontextprotocol/inspector

执行完成后,浏览器访问打印的地址。

配置MCP Server跟Cherry Studio一样,不过MCP Inspector支持采样、根等MCP Client的特性,因此接下来的演示使用MCP Inspector

MCP Server JavaSDK

如果你已经在Cherry Studio里跑过你自己的MCP Server(基于SpringAI)的话,你会发现每次对话的时候, Cherry Studio都会启动配置的那个jar包,然后那个jar包就挂在后台了。 我们想是不是可以直接干掉SpringAI,只提供一个main方法,即用即调?答案是可以的, 因为我们想,python和nodejs根本就没有用到Spring这么重量级的框架,也能实现MCP Server。实际上MCP仅仅是一个协议,一个规范。 协议并不依赖于语言,也不管你内部的实现原理,只需要输入输出和接口严格按照协议的要求来,那就没问题。

PS:我提供了一个demo,在 hoppinzq-module-mcp-server 模块,仅需将其打成jar包即可使用。

  1. ①、POM引入mcp官方的Java SDK,这里是JavaSDK源代码

    
    <dependency>
        <groupId>io.modelcontextprotocol.sdk</groupId>
        <artifactId>mcp</artifactId>
        <version>0.8.1</version>
    </dependency>
    

  2. ②、创建MCP Server,支持同步或者异步,区别在于我们编写的MCP Server有没有需要非阻塞的操作。 异步的应用场景我个人感觉比较少,如果你想让AI帮你执行一个耗时的操作(比如下载文件、解析文件内容),你又希望AI能立刻和你继续交互,那就可以用异步编程。

  3. 我们编写一个搜索音乐的MCP Server。传输类型是stdio(不了解?点我)

MCP Server对支持的客户端划分了五大能力:资源(Resources)、提示词(Prompts)、工具(Tools)、采样(Sampling)、根(Roots)。(启发(Elicitation)是6月18号发布的MCP client端的新能力,笔者在本文章未体现)

客户端(Client) 资源(Resources) 提示词(Prompts) 工具(Tools) 采样(Sampling) 根(Roots) 启发(Elicitation) 注释(Notes)
Claude 桌面应用(Claude Desktop App) 完全支持所有 MCP 功能
5ire 支持工具
BeeAI 框架(BeeAI Framework) 在代理工作流中支持工具
Cline 支持工具和资源
Continue 完全支持所有 MCP 功能
Cursor 支持工具
Emacs Mcp 在 Emacs 中支持工具
Firebase Genkit ⚠️ 支持资源列表,并通过工具进行查找。
GenAIScript 支持工具
Goose 支持工具
LibreChat 支持代理的工具
mcp-agent ⚠️ 支持工具、服务器连接管理和代理工作流。
Roo Code 支持工具和资源
Sourcegraph Cody 通过 OpenCTX 支持资源
Superinterface 支持工具
TheiaAI/TheiaIDE 在 Theia AI 和 AI 驱动的 Theia IDE 中支持代理的工具
Windsurf Editor 支持具有 AI Flow 的工具,用于协同开发。
Zed 提示词(Prompts)显示为斜杠命令
SpinAI 支持 Typescript AI 代理的工具
OpenSumi 在 OpenSumi 中支持工具
Daydreams Agents 支持将服务器拖放到 Daydreams 代理中

Tools:服务器暴露可执行功能,供LLM调用以与外部系统交互。

目前最常用,并且被支持最广泛的就是Tools工具调用。这里最重要的,是ToolSchema的声明, ToolSchema应该尽量描述工具及调用的参数,并且符合规范,示例如下:

MCP Client即可解析到声明的工具:

Resources:服务器暴露数据和内容,供客户端读取并作为LLM上下文。

MCP资源是连接AI应用程序与外部数据源的强大机制。 资源代表MCP服务器希望提供给客户端的任何类型的数据。可以是文件内容、数据库内容、API接口响应、日志等数据。 每个资源都由唯一的URI(统一资源标识符)标识,并且可以包含文本或二进制数据。
格式是 [协议]://[主机]/[路径] ,协议和路径结构由MCP Server实现定义。 我们可以定义自己的自定义URI方案,也可以定义资源模版:

  1. 文本文件:file:///D:/ai/rezhi.log
  2. 数据库(资源模版):mysql:///{数据库名}/{表名}

对于支持资源解析的MCP Client,即可解析到声明的资源:

Prompt:服务器定义的提示词,引导LLM交互。

对于支持提示词解析的MCP Client,即可解析到声明的提示词:

Sampling:让服务器借助客户端向LLM发起请求,实现复杂的代理行为。

采样(Sampling)是一项强大、且严重被低估的MCP功能,它允许MCP Server通过MCP Client端请求LLM,从而实现复杂的代理行为。 采样对新手可能难以理解,其目的是弥补MCP Server不具备LLM能力的缺陷。大家应该看过我那个工作流的演示,我让它帮我发起两个流程, 但是MCP Server定义的Tools说:发起流程需要流程定义Key。就是你不能指望通过“请假流程”去发起流程,而是应该通过请假流程定义的key去发起流程。因此在实际发起流程前, MCP Server需要向MCP Client发起一个“请求补全”的调用,由LLM去翻译流程定义key。LLM选择去问用户?还是在上下文里查询?或者看看有没有能用的MCP Server去获取可用的流程定义Key。
由于采样并没有被Client端广泛采用,没有采样能力的Client端就会放飞自我,还是我那个请假流程:我只让AI帮我发起两个流程, 结果发完后LLM自己去查待办,并自动审批待办任务。我都没让它这么干,你越界了哎LLM!如果Client端支持采样,就可以在LLM调用工具前,跟用户去确认:“我能干吗?”。 相当于给MCP Server加个一个审批,让用户去审批允不允许它调用这个工具,从而确保用户保持对LLM的控制,不让它随意执行一些工具。实际上,我们可以通过提示词来让LLM在执行工具前询问用户, 这一点Cursor做的就非常好,Cursor命中工具的时候,会询问用户允不允许执行这个工具。

对于支持采样的MCP Client,即可在调用工具前发起采样请求,只会通过用户允许的调用:

Roots:客户端给服务器指定的一些地址,用来告诉服务器该关注哪些资源和去哪里找这些资源。

根是一个URI,当客户端连接到服务器时,它会声明服务器应该使用的根(注意:根是在MCP Client里声明的,所以我们这里不写代码)。主要用于文件系统路径和API接口, 声明根可以告知服务器关于相关的资源和位置,明确那些资源是需要关注的。 比如:我那个打开我本地的音乐的案例,你不应该让AI扫描整个文件系统,而是在根里声明一个文件路径。表明AI的行为应该局限在这个路径下(可以声明多个)。

对于支持添加根的MCP Client,即可在MCP Server端拿到Client设置的根,我直接将设置的根打印到MCP Server的日志中了:

日志支持

由于stdio不能将日志打印到控制台,因此可以把日志写到本地文件里,也可以丢给Client端,实例代码如下


syncServer.loggingNotification(LoggingMessageNotification.builder()
    .level(LoggingLevel.INFO)
    .logger("custom-logger")
    .data("日志内容")
    .build());

在Client端,即可拿到Server打印的日志:

完整示例代码在: hoppinzq-module-mcp-server 模块,仅需将其打成jar包即可使用。

编写MCP Client

对于初学者来说,通过Cursor、Cherry Studio来使用或者调试MCP Server就够了。但是大部分情况下,你并不能通过上面两个应用来使用MCP。你期望自己编写一个MCP Client集成到 你的AI聊天应用或者AI开发平台,这个时候,你就需要会编写MCP Client的源代码,会通过代码解析MCP Server注册的工具并动态调用。

SpringAI MCP Client

使用SpringAI的好处是它帮我们封装openAI的规范接口和解析的Tools,提供了非常丰富的API供我们调用工具。也提供非常多的接口类供我们实现,拓展性极高。 使得我们无需关注LLM和MCP Server,你只需要配置就行了。

PS:我提供了一个demo,在 hoppinzq-module-spring-ai-mcp-client 模块,仅需将其启动,或者部署在云服务器上即可使用。

①、先确认Java版本,开发环境需要JDK17+,SpringBoot要求3.4.0+。 若需要部署,还需要服务器的JDK17+。

②、POM引入依赖

③、配置文件配置如下内容:


server:
  port: 9001

spring:
  ai:
    openai:
      base-url: openai代理地址
      api-key: apikey
      chat:
        completions-path: v1/chat/completions
        model: gpt-4o-mini # LLM我们使用gpt-4o-mini
        temperature: 1
    mcp:
      client:
        name: myclient
        type: ASYNC
        toolcallback:
          enabled: true
        sse: # sse的MCP Server服务配置
          connections:
            server1:
              url: http://localhost:9000
        stdio: # stdio的MCP Server服务配置
          connections:
            server2:
              command: java
              args:
                - -Dspring.ai.mcp.server.stdio=true
                - -Dspring.main.web-application-type=none
                - -Dspring.main.banner-mode=off
                - -jar
                - D:/hoppinzq-module-mcp-server-1.0.jar
        request-timeout: 30000

代码我就不带大家写了,因为SpringAI的ChatModel被我的HoppinAI实现并重写了,然后我是将注册的Tool是解析成System Prompt了,就非常牛逼。 你们只需要启动我那个服务就行了,用原生的SpringAI也是非常简单的。

好,我们启动项目:

Ops...我让AI帮我搜索音乐报错了,大家知道怎么回事吗?很简单,Client端并没有启用 采样(sampling)的能力,我们翻找了SpringAI的配置文件映射类,并没有相关配置,看来SpringAI并不支持采样。 采样的能力,我们将在下面的MCP Client SDK那里声明和使用。实际上,SpringAI也不支持设置根。。。

将采样和根的代码注释掉,再重新打个包。再次提问就能看到效果了。

MCP Client JavaSDK

PS:我提供了一个demo,在 hoppinzq-module-mcp-client 模块,直接填写MCP Server参数,并执行main方法就行。

  1. ①、POM引入mcp官方的Java SDK,这里是JavaSDK源代码

    
    <dependency>
        <groupId>io.modelcontextprotocol.sdk</groupId>
        <artifactId>mcp</artifactId>
        <version>0.8.1</version>
    </dependency>
    

  2. ②、注册MCP Server应用,有三种方式和两种类型:

  3. ③、直接放源代码吧,MCP Client也分同步异步:

    执行结果如下:

后面你就应该知道怎么做了吧,我们已经解析到了MCP Server工具的name,description和inputSchema。 你可以直接交给大模型,抑或是转成System Prompt。大模型会返回应该调用那个工具和传参,然后在MCP Client里 调用就行了,你自己动动手吧!

MCP Server精选列表

数据来源于Awesome-MCP-ZH。 如果下面链接失效,请联系微信:zhangqiff19。 点我查看演示

更多MCP 服务,请访问https://mcp.so/

🌐 浏览器自动化与网页交互

(让 AI 能够像人一样浏览网页、提取信息、填写表单等)

名称(点击跳转) 中文介绍 备注
microsoft/playwright-mcp 微软官方出品,使用 Playwright 让 AI 精确控制网页,自动化抓取数据。 官方实现,浏览器自动化强推,适合需要精细网页交互的场景。
browserbase/mcp-server-browserbase 云端浏览器自动化服务,能导航网页、提取数据、填表单等,无需本地安装。 官方实现 (Browserbase) 🎖️, TypeScript 开发 📇, 云端浏览器操作。
modelcontextprotocol/server-puppeteer 官方参考实现,使用 Puppeteer 进行浏览器自动化和网页抓取。 官方参考, TypeScript 开发 📇, 本地运行 🏠, 网页抓取和交互基础工具。
apify/actors-mcp-server 集成 Apify 平台 3000+ 云工具,用于网站、电商、社交媒体等数据提取。 官方实现 (Apify), TypeScript 开发 📇, 云端数据抓取工具库 ☁️。
AgentQL 让 AI 代理从非结构化网页中获取结构化数据。 官方实现 (TinyFish IO) 🎖️, TypeScript 开发 📇, 网页数据结构化提取 ☁️。
Firecrawl 使用 Firecrawl 提取网页数据,支持 JavaScript 渲染。 官方实现 (Mendable AI), TypeScript 开发, 高级网页抓取。
Oxylabs 使用 Oxylabs Web API 抓取网站,支持动态渲染和结构化数据提取。 官方实现 (Oxylabs), Python 开发, 专业级网页抓取。
Hyperbrowser 新一代 AI 代理浏览器自动化平台,支持大规模、无缝操作。 官方实现 (Hyperbrowser AI), TypeScript 开发, 大规模浏览器自动化。
ScreenshotOne 使用 ScreenshotOne 服务渲染网站截图。 官方实现 (ScreenshotOne), TypeScript 开发, 网页截图工具。
modelcontextprotocol/server-fetch 官方参考实现,灵活获取网页内容(HTML/JSON/MD),并为 AI 处理优化。 官方参考, Python 开发 🐍, 本地/云端 🏠☁️, 基础网页内容获取。
automatalabs/mcp-server-playwright 使用 Playwright 进行浏览器自动化的 MCP 服务器。 社区实现, Python 开发 🐍.
blackwhite084/playwright-plus-python-mcp 使用 Playwright 的 Python MCP 服务器,更适合 LLM。 社区实现, Python 开发 🐍.
browsermcp/mcp 自动化本地 Chrome 浏览器。 社区实现, TypeScript 开发 📇, 本地运行 🏠.
co-browser/browser-use-mcp-server 将 browser-use 打包为带 SSE 传输的 MCP 服务器,含 Dockerfile。 社区实现, Python 开发 🐍.
executeautomation/playwright-mcp-server 使用 Playwright 进行浏览器自动化和网页抓取的 MCP 服务器。 社区实现, TypeScript 开发 📇.
eyalzh/browser-control-mcp 与浏览器扩展配对,使 LLM 客户端能控制用户的 Firefox 浏览器。 社区实现, TypeScript 开发 📇, 本地运行 🏠.
getrupt/ashra-mcp 从任何网站提取结构化数据,只需提示即可获得 JSON。 社区实现, Python 开发 🐍, 本地运行 🏠.
kimtth/mcp-aoai-web-browsing 使用 Azure OpenAI 和 Playwright 的最小化 MCP 服务器/客户端实现。 社区实现, Python 开发 🐍, 本地运行 🏠.
ndthanhdev/mcp-browser-kit 用于与 manifest v2 兼容浏览器交互的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠.
RAG Web Browser Apify 开源工具,执行网页搜索、抓取 URL 并以 Markdown 格式返回内容。 社区实现 (Apify), TypeScript 开发 📇, 结合 RAG 的网页浏览 ☁️。
scrapling-fetch 从有反爬虫措施的网站获取文本内容。 社区实现, Python 开发, 突破反爬。
jae-jae/fetcher-mcp 使用 Playwright 无头浏览器获取网页内容,支持 JS 渲染和智能提取 (Markdown/HTML)。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Playwright 网页内容提取。
ryoppippi/sitemcp 抓取整个网站并将其作为 MCP 服务器使用。 支持 TypeScript,提供工具命名策略、页面匹配、内容选择器等功能。可通过 NPM、Bun 等安装和运行。
34892002/bilibili-mcp-js 支持搜索 Bilibili 内容的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠.

💻 开发与代码执行

(让 AI 能够运行代码、分析代码库、与开发工具集成等)

名称 中文介绍 备注
pydantic/pydantic-ai/mcp-run-python Pydantic 出品,在安全的沙盒环境中运行 Python 代码,适合开发编程代理。 官方实现 (Pydantic) 🎖️, Python 开发 🐍, 本地运行 🏠, 安全代码执行。
E2B 在 E2B 提供的安全云沙盒中运行代码。 官方实现 (E2B), TypeScript 开发, 云端安全代码沙盒。
JetBrains IDE Proxy JetBrains 官方代理,连接到 JetBrains IDE。 官方实现 (JetBrains) 🎖️, TypeScript 开发 📇, 本地运行 🏠, IDE 连接。
JetBrains JetBrains 官方集成,让 AI 在 JetBrains IDE 中处理代码。 官方实现 (JetBrains), Kotlin 开发, IDE 代码操作。
yepcode/mcp-server-js 在安全可扩展的沙盒环境中执行 LLM 生成的代码,并用 JS/Python 创建自定义 MCP 工具。 官方实现 (YepCode) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 安全代码执行,自定义工具。
yzfly/mcp-python-interpreter 安全、标准化的 Python 环境,支持代码执行、环境和包管理。 社区标杆, 轻量级 Python 执行环境, 适合开发和数据分析。
admica/FileScopeMCP 分析代码库依赖关系,生成图表,帮助 AI 理解项目结构。 社区实现, 多语言 (Py 🐍/TS 📇/Rust 🦀), 代码结构分析。
mem0ai/mem0-mcp 管理代码偏好和模式,支持语义搜索,方便在 IDE 中存取技术文档。 (Mem0 官方) 官方实现 (Mem0 AI) 🎖️, Python 开发 🐍, 本地运行 🏠, 程序员的记忆助手和偏好管理。
code-executor 允许 AI 在指定的 Conda 环境中执行 Python 代码。 社区实现, Python 开发, Conda 环境代码执行。
code-sandbox-mcp 创建安全的 Docker 容器环境来执行代码。 社区实现, Python 开发, Docker 沙盒代码执行。
ForeverVM 在代码沙盒中运行 Python 代码。 官方实现 (Jamsocket), JavaScript 开发, 代码沙盒。
Riza Riza 提供的任意代码执行和工具使用平台。 官方实现 (Riza), Go 开发, 通用代码执行平台。
Semgrep 让 AI 代理使用 Semgrep 进行代码安全扫描。 (Semgrep 官方) 官方实现 (Semgrep) 🎖️, TypeScript 开发 📇, 代码安全扫描 ☁️. (注意: 列表有重复, 一个Py一个TS)
ZenML 与 ZenML MLOps/LLMOps 平台交互,管理机器学习流程。 (ZenML 官方) 官方实现 (ZenML) 🎖️, Python 开发 🐍, 本地/云端 🏠☁️, MLOps 流程管理。
vivekVells/mcp-pandoc 使用 Pandoc 进行无缝文档格式转换(Markdown, HTML, PDF, DOCX, CSV 等)。 社区实现, Python 开发 🐍, 本地运行 🏠, 文档格式转换。
oraios/serena 功能齐全的编码代理,依赖于使用语言服务器的符号化代码操作。 社区实现, Python 开发 🐍, 本地运行 🏠, 编码代理。
ezyang/codemcp 具有基本读、写和命令行工具的编码代理。 社区实现, Python 开发 🐍, 本地运行 🏠, 编码代理。
wonderwhy-er/DesktopCommanderMCP 增强的文件系统和搜索工具,以及特定于编码的命令和提示。(也含命令行功能) 社区实现, TypeScript 开发 📇, 本地运行 🏠, 跨平台 🍎🪟🐧, 编码/文件/命令行工具。
maxim-saplin/mcp_safe_local_python_executor 基于 HF Smolagents LocalPythonExecutor 的安全 Python 解释器。 社区实现, Python 开发, 本地安全 Python 执行。
tumf/mcp-text-editor 面向行的文本文件编辑器。针对 LLM 工具优化,通过高效的部分文件访问最小化 Token 使用。 社区实现, Python 开发 🐍, 本地运行 🏠, 文本编辑。
VSCode Devtools 连接到 VSCode IDE 并使用语义工具,如 find_usages 社区实现, TypeScript 开发 📇, VSCode 集成。
xzq.xu/jvm-mcp-server 基于 JVM 的 MCP 服务器实现项目。 社区实现, TypeScript 开发 📇, 本地运行 🏠, JVM 集成。
yWorks/mcp-typescribe 高效地向代理提供 TypeScript API 信息,使其能够处理未经训练的 API。 官方实现 (yWorks), TypeScript 开发 📇, 本地运行 🏠, TypeScript API 信息。
zcaceres/fetch-mcp 灵活获取 JSON、文本和 HTML 数据的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 数据获取。
idosal/git-mcp 通用远程 MCP 服务器,用于连接任何 GitHub 仓库或项目以获取文档。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 远程 GitHub 文档访问 (gitmcp.io)。
tgeselle/bugsnag-mcp 用于与 Bugsnag 交互的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Bugsnag 集成。
jordandalton/restcsv-mcp-server 用于 CSV 文件的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, CSV 处理。
jjsantos01/jupyter-notebook-mcp 将 Jupyter Notebook 连接到 Claude AI,允许 Claude 直接交互和控制 Jupyter。 社区实现, Python 开发 🐍, 本地运行 🏠, Jupyter 集成。

🖥️ 命令行与 Shell 交互

(让 AI 能够执行命令行指令、与 Shell 交互)

名称 中文介绍 备注
iTerm MCP 集成 macOS 的 iTerm2 终端,让 AI 执行和监控终端命令。 社区实现, Python 开发 🐍, 本地运行 🏠, macOS 终端控制 🍎。
Windows CLI 在 Windows 系统上安全执行命令行(PowerShell, CMD, Git Bash)。 社区实现, Python 开发 🐍, 本地运行 🏠, Windows 命令行控制 🪟。
g0t4/mcp-server-commands 使用 run_commandrun_script 工具运行任何命令。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 通用命令执行。
MladenSU/cli-mcp-server 具有安全执行和可自定义安全策略的命令行接口。 社区实现, Python 开发 🐍, 本地运行 🏠, 安全命令行执行。
OthmaneBlial/term_mcp_deepseek 用于终端的 DeepSeek 类 MCP 服务器。 社区实现, Python 开发 🐍, 本地运行 🏠, 终端交互。
tumf/mcp-shell-server 实现模型上下文协议 (MCP) 的安全 Shell 命令执行服务器。 社区实现, Python 开发, 安全 Shell 执行。
wonderwhy-er/DesktopCommanderMCP 多功能工具,可管理/执行程序,读/写/搜索/编辑代码和文本文件。(也含代码/文件功能) 社区实现, TypeScript 开发 📇, 本地运行 🏠, 跨平台 🍎🪟🐧, 命令行/文件/程序管理。

🔄 版本控制 (Git / GitHub)

(让 AI 能够操作代码仓库、管理 Pull Request、处理 Issues 等)

名称 中文介绍 备注
github/github-mcp-server GitHub 官方出品,让 AI 通过 API 深度集成 GitHub,实现自动化工作流等。 官方实现 (GitHub), Go 开发 🏎️。功能全面,推荐 Docker 部署。
Gitee Gitee 官方集成,管理 Gitee 仓库、Issues 和 Pull Requests。 官方实现 (Gitee/oschina) 🎖️, Go 开发 🏎️, 云端/本地 ☁️🏠, Gitee 用户必备。
gitea/gitea-mcp Gitea 官方集成,通过 MCP 与 Gitea 实例交互。 官方实现 (Gitea) 🎖️, Go 开发 🏎️, 云端/本地 ☁️🏠, 跨平台 🍎🪟🐧, Gitea 集成。
modelcontextprotocol/server-github 官方参考实现,集成 GitHub API,管理仓库、文件、PR 和 Issues。 官方参考, TypeScript 开发 📇, 云服务 ☁️, GitHub 重度用户必备。
modelcontextprotocol/server-git 官方参考实现,直接操作本地 Git 仓库,进行读取、搜索和分析。 官方参考, Python 开发 🐍, 本地运行 🏠, 本地 Git 仓库操作。
modelcontextprotocol/server-gitlab 官方参考实现,集成 GitLab API,进行项目管理和 CI/CD 操作。 官方参考, TypeScript 开发 📇, 云端/本地 ☁️🏠, GitLab 用户适用。
adhikasp/mcp-git-ingest 使用 LLM 读取和分析 GitHub 仓库。 社区实现, Python 开发 🐍, 本地运行 🏠, GitHub 仓库分析。
ddukbg/github-enterprise-mcp 用于 GitHub Enterprise API 集成的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云端/本地 ☁️🏠, GitHub Enterprise 集成。
kopfrechner/gitlab-mr-mcp 无缝地与 GitLab 项目的 Issues 和 Merge Requests 交互。 社区实现, TypeScript 开发 📇, 云服务 ☁️, GitLab Issues/MR 操作。
Github Actions 与 Github Actions 交互,管理工作流。 社区实现, TypeScript 开发, GitHub Actions 管理。
Tiberriver256/mcp-server-azure-devops 用于仓库管理、工作项和流水线的 Azure DevOps 集成。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Azure DevOps 集成。

🗄️ 数据库交互

(让 AI 能够查询数据库、检查表结构、甚至修改数据)

名称 中文介绍 备注
Aiven Aiven 官方集成,导航 Aiven 项目,与 PostgreSQL®, Kafka®, ClickHouse®, OpenSearch® 服务交互。 官方实现 (Aiven) 🎖️, Python 开发 🐍, 云服务 ☁️, Aiven 云数据库管理。
ClickHouse/mcp-clickhouse ClickHouse 官方集成,连接 ClickHouse 数据库进行查询和模式检查。 官方实现 (ClickHouse) 🎖️, Python 开发 🐍, 云服务 ☁️, ClickHouse 数据分析利器。
Chroma Chroma 官方集成,用于嵌入、向量搜索、文档存储和全文搜索。 官方实现 (Chroma) 🎖️, Python 开发 🐍, 本地/云端 🏠☁️, AI 应用数据库,向量搜索。
confluentinc/mcp-confluent Confluent 集成,与 Confluent Kafka 和 Confluent Cloud REST API 交互。 官方实现 (Confluent) 🎖️, Python 开发 🐍, 云服务 ☁️, Kafka 集成。
fireproof-storage/mcp-database-server Fireproof 官方集成,不可变账本数据库,支持实时同步。 官方实现 (Fireproof) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 分布式数据库同步。
googleapis/genai-toolbox Google 官方开源 MCP 服务器,专注于为数据库提供简单、快速、安全的工具。 官方实现 (Google) 🎖️, Go 开发 🏎️, 云服务 ☁️, Google Cloud 数据库工具。
GreptimeDB GreptimeDB 官方集成,让 AI 安全地探索和分析 GreptimeDB 中的时序数据。 官方实现 (Greptime) 🎖️, Python 开发 🐍, 本地运行 🏠, GreptimeDB 时序数据分析。
Milvus Zilliz/Milvus 官方集成,搜索、查询和交互 Milvus 向量数据库中的数据。 官方实现 (Zilliz/Milvus) 🎖️, Python 开发 🐍, 本地/云端 🏠☁️, Milvus 向量数据库操作。
MotherDuck MotherDuck 官方集成,使用 MotherDuck 和本地 DuckDB 查询和分析数据。 官方实现 (MotherDuck), Python 开发, DuckDB 云服务交互。
Neo4j Neo4j 官方贡献,操作 Neo4j 图数据库(模式+读写 Cypher),并提供图数据库支持的记忆功能。 官方贡献 (Neo4j) 🎖️, Python 开发 🐍, 本地运行 🏠, 图数据库操作和记忆。
Neon Neon 官方集成,与 Neon 无服务器 Postgres 平台交互,创建和管理数据库。 官方实现 (Neon) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Neon Serverless PG 管理。
niledatabase/nile-mcp-server Nile 的 Postgres 平台 MCP 服务器 - 使用 LLM 管理和查询 Postgres 数据库、租户、用户、认证。 官方实现 (Nile) 🎖️, Python 开发, Nile PG 平台管理。
Qdrant Qdrant 官方集成,基于 Qdrant 向量搜索引擎实现语义记忆层。 官方实现 (Qdrant) 🎖️, Python 开发 🐍, 本地运行 🏠, Qdrant 向量搜索与记忆。
SingleStore SingleStore 官方集成,与 SingleStore 数据库平台交互。 官方实现 (SingleStore), Python 开发, SingleStore 数据库操作。
StarRocks StarRocks 官方集成,与 StarRocks 数据库交互。 官方实现 (StarRocks), Python 开发, StarRocks 数据仓库交互。
supabase-community/supabase-mcp Supabase 官方 MCP 服务器,将 AI 助手直接连接到你的 Supabase 项目,允许执行任务如管理表、获取配置和查询数据。 官方实现 (Supabase Community) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Supabase 项目管理与查询。
Tinybird Tinybird 官方集成,与 Tinybird 无服务器 ClickHouse 平台交互 (查询和 API 能力)。 官方实现 (Tinybird) 🎖️, Python 开发 🐍, 云服务 ☁️, Tinybird 平台交互。
weaviate/mcp-server-weaviate 连接到 Weaviate 集合作为知识库,并将 Weaviate 用作聊天记忆存储的 MCP 服务器。 官方实现 (Weaviate) 🎖️, Python/TypeScript 开发 🐍📇, 云服务 ☁️, Weaviate 知识库/记忆。
modelcontextprotocol/server-postgres 官方参考实现,集成 PostgreSQL,支持查询和模式分析。 官方参考, TypeScript 开发 📇, 本地运行 🏠, PostgreSQL 数据库操作。
modelcontextprotocol/server-redis 官方参考实现,与 Redis 键值存储进行交互。 官方参考, TypeScript 开发, Redis 缓存/存储操作。
modelcontextprotocol/server-sqlite 官方参考实现,操作 SQLite 数据库,并内置商业智能能力。 官方参考, Python 开发 🐍, 本地运行 🏠, 本地 SQLite 数据库操作。
DBHub 通用数据库 MCP 服务器,可连接 MySQL, PostgreSQL, SQLite, DuckDB 等。 社区实现 (Bytebase) 🎖️, TypeScript 开发 📇, 本地运行 🏠, 多种数据库支持。
alexanderzuev/supabase-mcp-server Supabase MCP 服务器,支持 SQL 查询执行和数据库探索工具。 社区实现, Supabase 集成。
aliyun/alibabacloud-tablestore-mcp-server 阿里云 Tablestore MCP 服务,功能包括添加文档、基于向量和标量的文档语义搜索、RAG 友好、Serverless。 官方实现 (Alibaba Cloud) 🎖️, Java/Python 开发 ☕🐍, 云服务 ☁️, 阿里云 Tablestore。
benborla29/mcp-server-mysql NodeJS 中的 MySQL 数据库集成,具有可配置的访问控制和模式检查。 社区实现, Node.js 开发, 云端/本地 ☁️🏠, MySQL 集成 (Node.js)。
c4pt0r/mcp-server-tidb TiDB 数据库集成,具有模式检查和查询能力。 社区实现, Python 开发 🐍, 云服务 ☁️, TiDB 集成。
Canner/wren-engine 面向 MCP 客户端和 AI Agents 的语义引擎。 社区实现, Python/Rust 开发 🐍🦀, 本地运行 🏠, 语义引擎。
centralmind/gateway MCP 和 MCP SSE 服务器,根据数据库模式和数据自动生成 API。支持 PG, Clickhouse, MySQL, Snowflake, BigQuery, Supabase。 社区实现, Go 开发 🏎️, 本地运行 🏠, 跨平台 🍎🪟, 数据库 API 自动生成。
cr7258/elasticsearch-mcp-server 提供 Elasticsearch 交互的 MCP 服务器实现。 社区实现, Python 开发 🐍, 本地运行 🏠, Elasticsearch 集成。
Dataring-engineering/mcp-server-trino Trino MCP 服务器,用于从 Trino 集群查询和访问数据。 社区实现, Python 开发 🐍, 云服务 ☁️, Trino 集成。
designcomputer/mysql_mcp_server Python 实现的 MySQL 集成,带访问控制和模式检查。 社区实现, Python 开发 🐍, 本地运行 🏠, MySQL 数据库操作。
domdomegg/airtable-mcp-server 读写 Airtable 数据库,带模式检查。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Airtable 读写。
edwinbernadus/nocodb-mcp-server Nocodb 数据库集成,读写能力。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Nocodb 集成。
ergut/mcp-bigquery-server Google BigQuery 集成的服务器实现,支持直接访问和查询。 社区实现, TypeScript 开发 📇, 云服务 ☁️, BigQuery 集成 (TS)。
f4ww4z/mcp-mysql-server 基于 Node.js 的 MySQL 数据库集成,提供安全的数据库操作。 社区实现, Node.js 开发, 本地运行 🏠, MySQL 集成 (Node.js)。
FreePeak/db-mcp-server 高性能多数据库 MCP 服务器 (Go),支持 MySQL & PG (NoSQL 即将推出)。含查询、事务、模式探索等工具。 社区实现, Go 开发 🏎️, 本地运行 🏠, 多数据库支持 (Go)。
furey/mongodb-lens 功能齐全的 MongoDB 数据库 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, MongoDB 高级操作。
gannonh/firebase-mcp Firebase 服务,包括 Auth、Firestore 和 Storage。 社区实现, Firebase 集成 🔥, 云服务 ☁️.
get-convex/convex-backend Convex 数据库集成,用于内省表、函数和运行一次性查询。 官方实现 (Convex) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Convex 集成。 (Source)
hannesrudolph/sqlite-explorer-fastmcp-mcp-server 提供对 SQLite 数据库安全只读访问的 MCP 服务器 (FastMCP)。LLM 可探索查询,带安全特性和查询验证。 社区实现, Python 开发 🐍, 本地运行 🏠, SQLite 安全只读访问 (FastMCP)。
idoru/influxdb-mcp-server 对 InfluxDB OSS API v2 执行查询。 社区实现, TypeScript 开发 📇, 云端/本地 ☁️🏠, InfluxDB 查询。
isaacwasserman/mcp-snowflake-server Snowflake 集成,实现读和(可选)写操作以及洞察跟踪。 社区实现, Python 开发 🐍, 云服务 ☁️, Snowflake 集成。
joshuarileydev/supabase-mcp-server 用于在 Supabase 中管理和创建项目及组织的 Supabase MCP 服务器。 社区实现, Supabase 管理。
jovezhong/mcp-timeplus Apache Kafka 和 Timeplus 的 MCP 服务器。能列出 Kafka 主题、轮询消息、本地保存数据并通过 Timeplus 用 SQL 查询流数据。 社区实现, Python 开发 🐍, 云服务 ☁️, Kafka/Timeplus 集成。
KashiwaByte/vikingdb-mcp-server VikingDB 集成,具有集合和索引介绍、向量存储和搜索能力。 社区实现, Python 开发 🐍, 云服务 ☁️, VikingDB 集成。
kiliczsh/mcp-mongo-server 用于 MongoDB 的模型上下文协议服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, MongoDB 集成 (TS)。
ktanaka101/mcp-server-duckdb DuckDB 数据库集成,具有模式检查和查询能力。 社区实现, Python 开发 🐍, 本地运行 🏠, DuckDB 集成。
BigQuery (by LucasHild) 让 AI 检查 BigQuery 数据库模式并执行查询。 社区实现, Python 开发 🐍, 云服务 ☁️, Google BigQuery 查询。
mcp-server-jdbc 连接到任何兼容 JDBC 的数据库,并执行查询、插入、更新、删除等操作。 社区实现 (Quarkiverse), Java 开发 ☕, 本地运行 🏠, 通用 JDBC 连接。
memgraph/mcp-memgraph Memgraph MCP 服务器 - 包括对 Memgraph 执行查询和模式资源的工具。 官方实现 (Memgraph) 🎖️, Python 开发 🐍, 本地运行 🏠, Memgraph 集成。
openlink/mcp-server-odbc 通过开放数据库连接 (ODBC) 协议实现通用数据库管理系统 (DBMS) 连接的 MCP 服务器。 社区实现 (OpenLink), Python 开发 🐍, 本地运行 🏠, 通用 ODBC 连接。
openlink/mcp-server-sqlalchemy 通过 SQLAlchemy 使用 Python ODBC (pyodbc) 实现通用 DBMS 连接的 MCP 服务器。 社区实现 (OpenLink), Python 开发 🐍, 本地运行 🏠, 通用 SQLAlchemy 连接 (ODBC)。
pab1it0/adx-mcp-server 查询和分析 Azure Data Explorer 数据库。 社区实现, Python 开发 🐍, 云服务 ☁️, Azure Data Explorer 查询。
pab1it0/prometheus-mcp-server 查询和分析 Prometheus 开源监控系统。 社区实现, Python 开发 🐍, 云服务 ☁️, Prometheus 查询。
QuantGeekDev/mongo-mcp MongoDB 集成,使 LLM 能够直接与数据库交互。 社区实现, TypeScript 开发 📇, 本地运行 🏠, MongoDB 集成 (TS)。
rashidazarang/airtable-mcp 将 AI 工具直接连接到 Airtable。使用自然语言查询、创建、更新和删除记录。功能包括库管理、表操作等。 社区实现, Python 开发 🐍, 云服务 ☁️, Airtable 全功能操作 (Python)。
runekaagaard/mcp-alchemy 通用 SQLAlchemy 数据库集成,支持 PG, MySQL, MariaDB, SQLite, Oracle, MS SQL Server 等。含模式/关系检查和大数据集分析能力。 社区实现, Python 开发 🐍, 本地运行 🏠, 通用 SQLAlchemy 集成。
sirmews/mcp-pinecone Pinecone 集成,具有向量搜索能力。 社区实现, Python 开发 🐍, 云服务 ☁️, Pinecone 向量搜索。
TheRaLabs/legion-mcp 通用数据库 MCP 服务器,支持 PG, Redshift, CockroachDB, MySQL, RDS MySQL, MS SQL Server, BigQuery, Oracle DB, SQLite。 社区实现, Python 开发 🐍, 本地运行 🏠, 多种数据库支持 (Python)。
tradercjz/dolphindb-mcp-server DolphinDB 数据库集成,具有模式检查和查询能力。 社区实现, Python 开发 🐍, 云服务 ☁️, DolphinDB 集成。
XGenerationLab/xiyan_mcp_server 支持使用自然语言查询从数据库获取数据的 MCP 服务器,由 XiyanSQL 作为 text-to-SQL LLM 驱动。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 自然语言转 SQL 查询 (XiyanSQL)。
xing5/mcp-google-sheets 用于与 Google Sheets 交互的模型上下文协议服务器。提供创建、读取、更新和管理电子表格的工具。 社区实现, Python 开发 🐍, 云服务 ☁️, Google Sheets 操作。
Zhwt/go-mcp-mysql 易于使用、零依赖的 MySQL MCP 服务器 (Go),具有可配置的只读模式和模式检查。 社区实现, Go 开发 🏎️, 本地运行 🏠, MySQL 集成 (Go)。

☁️ 云平台与服务集成

(让 AI 能够管理云资源、调用云服务 API 等)

名称 中文介绍 备注
Cloudflare Cloudflare 官方集成,部署、配置和查询 Cloudflare 开发者平台资源 (Workers/KV/R2/D1)。 官方实现 (Cloudflare) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Cloudflare 平台管理。
AWS KB Retrieval 官方参考实现,使用 Bedrock Agent Runtime 从 AWS 知识库检索信息。 官方参考, TypeScript 开发, AWS Bedrock 知识库。
AWS S3 AWS 官方示例,灵活地从 S3 获取对象(如 PDF 文档)。 官方示例 (AWS), TypeScript 开发, S3 文件获取。
VolcEngine TOS 火山引擎官方示例,灵活地从火山引擎对象存储 (TOS) 获取对象。 官方示例 (VolcEngine), TypeScript 开发, 火山引擎 TOS 文件获取。
alexbakers/mcp-ipfs 上传和操作 IPFS 存储。 社区实现, TypeScript 开发 📇, 云服务 ☁️, IPFS 存储操作。
alexei-led/aws-mcp-server 轻量级服务器,让 AI 执行 AWS CLI 命令 (带 Unix 管道和模板),支持 Docker 安全运行 (多架构)。 社区实现, Python 开发 🐍, 云服务 ☁️, 通过 CLI 管理 AWS (安全 Docker)。
alexei-led/k8s-mcp-server 轻量级服务器,让 AI 安全地执行 Kubernetes CLI 命令 (kubectl, helm, istioctl, argocd) (带 Unix 管道),支持 Docker 安全运行 (多架构)。 社区实现, Python 开发 🐍, Kubernetes CLI 操作 (安全 Docker)。
AWS Resources Operations 运行生成的 Python 代码以安全地查询或修改任何 boto3 支持的 AWS 资源。 社区实现, Python 开发, 通过 Boto3 管理 AWS 资源。
bright8192/esxi-mcp-server 基于 MCP 的 VMware ESXi/vCenter 管理服务器,提供虚拟机管理的简单 REST API 接口。 社区实现, Python 开发 🐍, 云服务 ☁️, VMware ESXi/vCenter 管理。
flux159/mcp-server-kubernetes Kubernetes 集群操作的 TypeScript 实现 (pods, deployments, services)。 社区实现, TypeScript 开发 📇, 云端/本地 ☁️🏠, Kubernetes 操作 (TS)。
hardik-id/azure-resource-graph-mcp-server 使用 Azure Resource Graph 大规模查询和分析 Azure 资源的 MCP 服务器,使 AI 助手能探索监控 Azure 基础设施。 社区实现, TypeScript 开发 📇, 云端/本地 ☁️🏠, Azure Resource Graph 查询。
jdubois/azure-cli-mcp Azure CLI 命令行包装器,允许直接与 Azure 对话。 社区实现, Azure CLI 封装。
johnneerdael/netskope-mcp 提供对 Netskope Private Access 环境中所有组件的访问,包括详细设置信息和 LLM 使用示例。 社区实现, 云服务 ☁️, Netskope Private Access 集成。
Kubernetes (Go) Go 语言实现的 Kubernetes 服务器,用于浏览 Pods、日志、事件、命名空间等。 社区实现, Go 开发 🏎️, 云端/本地 ☁️🏠, Kubernetes 集群管理 (Go)。
Kubernetes and OpenShift 功能强大的 Kubernetes MCP 服务器,额外支持 OpenShift。提供 CRUD 操作及专用工具。 社区实现, Go 开发 🏎️, 本地运行 🏠, Kubernetes/OpenShift 高级管理。
nwiizo/tfmcp Terraform MCP 服务器,允许 AI 助手管理和操作 Terraform 环境 (读配置/分析计划/应用配置/管理状态)。 社区实现, Rust 开发 🦀, 本地运行 🏠, Terraform 管理。
Pulumi 与 Pulumi API 交互,创建和列出 Stacks(基础设施即代码)。 社区实现, Go 开发, Pulumi IaC 管理。
rohitg00/kubectl-mcp-server 用于 Kubernetes 的 MCP 服务器,使 AI 助手能通过自然语言与 K8s 集群交互。 社区实现, Python 开发 🐍, 云端/本地 ☁️🏠, Kubernetes 自然语言交互。
silenceper/mcp-k8s AI 驱动的 Kubernetes 资源管理工具,允许通过自然语言操作 K8s 集群中的任何资源 (原生/CRD)。 社区实现, Go 开发 🏎️, 云端/本地 ☁️🏠, AI 驱动 K8s 管理。
thunderboltsid/mcp-nutanix 基于 Go 的 MCP 服务器,用于与 Nutanix Prism Central 资源交互。 社区实现, Go 开发 🏎️, 本地/云端 🏠☁️, Nutanix Prism Central 交互。
weibaohui/k8m 提供 MCP 多集群 Kubernetes 管理和操作,带管理界面、日志记录和近 50 个内置工具 (支持标准/CRD)。 社区实现, Go 开发 🏎️, 云端/本地 ☁️🏠, 多集群 K8s 管理 (带 UI)。
weibaohui/kom 提供 MCP 多集群 Kubernetes 管理和操作。可作为 SDK 集成到项目中,含近 50 个内置工具 (支持标准/CRD)。 社区实现, Go 开发 🏎️, 云端/本地 ☁️🏠, 多集群 K8s 管理 (SDK)。
wenhuwang/mcp-k8s-eye 用于 Kubernetes 管理的 MCP 服务器,分析集群和应用健康状况。 社区实现, Go 开发 🏎️, 云端/本地 ☁️🏠, K8s 管理与健康分析。
erikhoward/adls-mcp-server 用于 Azure Data Lake Storage 的 MCP 服务器。可管理容器、读/写/上传/下载文件及管理元数据。 社区实现, Python 开发 🐍, 云端/本地 ☁️🏠, Azure Data Lake Storage 管理。

🔍 搜索

(让 AI 能够调用各种搜索引擎或专业搜索服务)

名称 中文介绍 备注
Exa Exa 官方集成,使用专为 AI 设计的 Exa 搜索引擎进行搜索。 官方实现 (Exa) 🎖️, TypeScript 开发 📇, 云服务 ☁️, AI 专用搜索引擎。
Kagi Search Kagi 官方集成,使用 Kagi 的搜索 API 进行网页搜索。 官方实现 (Kagi) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Kagi 搜索引擎。 (用户列表为Py, awesome为TS)
Perplexity Perplexity 官方集成,连接 Perplexity Sonar API,实现实时全网研究。 官方实现 (Perplexity), Python 开发, Perplexity 实时搜索。
Search1API Search1API 官方集成,一个 API 实现搜索、抓取和站点地图功能 (需付费 API Key)。 官方实现 (Search1API), TypeScript 开发 📇, 云服务 ☁️, 多功能搜索 API。
Tavily Tavily 官方集成,专为 AI 代理设计的搜索引擎(搜索+提取)。 官方实现 (Tavily), Python 开发, AI 代理专用搜索引擎。
tinyfish-io/agentql-mcp AgentQL MCP 服务器,提供 AgentQL 的数据提取能力。 官方实现 (TinyFish IO) 🎖️, TypeScript 开发 📇, 云服务 ☁️, AgentQL 数据提取。
vectorize-io/vectorize-mcp-server Vectorize MCP 服务器,用于高级检索、私有深度研究、任意文件转 Markdown 提取和文本分块。 官方实现 (Vectorize) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 高级检索/RAG。
zoomeye-ai/mcp_zoomeye 通过 ZoomEye MCP 服务器查询网络资产信息。 官方实现 (ZoomEye), TypeScript 开发 📇, 云服务 ☁️, 网络空间测绘搜索。
Brave Search 官方参考实现,使用 Brave 的搜索 API 进行网页和本地搜索。 官方参考, TypeScript 开发 📇, 云服务 ☁️, Brave 搜索引擎。
0xdaef0f/job-searchoor 用于搜索职位列表的 MCP 服务器,支持日期、关键词、远程工作选项等筛选。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 职位搜索。
ac3xx/mcp-servers-kagi Kagi 搜索 API 集成 (社区实现版本)。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Kagi 搜索 (社区 TS 版)。
andybrandt/mcp-simple-arxiv 让 LLM 从 arXiv 搜索和阅读论文的 MCP。 社区实现, Python 开发 🐍, 云服务 ☁️, arXiv 论文搜索。
andybrandt/mcp-simple-pubmed 让 LLM 从 PubMed 搜索和阅读医学/生命科学论文的 MCP。 社区实现, Python 开发 🐍, 云服务 ☁️, PubMed 论文搜索。
angheljf/nyt 使用 NYTimes API 搜索文章。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 纽约时报文章搜索。
Bigsy/Clojars-MCP-Server Clojars MCP 服务器,提供 Clojure 库的最新依赖信息。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Clojure 依赖搜索。
blazickjp/arxiv-mcp-server 搜索 ArXiv 研究论文。 社区实现, Python 开发 🐍, 云服务 ☁️, ArXiv 搜索 (另一版本)。
chanmeng/google-news-mcp-server Google News 集成,自动主题分类,多语言支持,全面搜索能力 (SerpAPI)。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Google News 搜索 (SerpAPI)。
ConechoAI/openai-websearch-mcp 提供 OpenAI web_search 内置工具的 Python MCP 服务器。 社区实现, Python 开发 🐍, 本地/云端 🏠☁️, OpenAI 网页搜索模拟。
devflowinc/trieve 通过 Trieve 爬取、嵌入、分块、搜索和检索数据集信息。 官方实现 (Trieve) 🎖️, TypeScript 开发 📇, 云端/本地 🏠☁️, Trieve RAG 平台。
Dumpling-AI/mcp-server-dumplingai 访问 Dumpling AI 提供的数据、网页抓取和文档转换 API。 官方实现 (Dumpling AI) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Dumpling AI API 集成。
erithwik/mcp-hn 用于搜索 Hacker News、获取头条等的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Hacker News 搜索。
genomoncology/biomcp 生物医学研究服务器,提供对 PubMed、ClinicalTrials.gov 和 MyVariant.info 的访问。 社区实现, Python 开发 🐍, 云服务 ☁️, 生物医学信息搜索。
Google Custom Search 通过 Google 自定义搜索 API 提供 Google 搜索结果。 社区实现, TypeScript 开发, Google 自定义搜索。
hellokaton/unsplash-mcp-server 用于 Unsplash 图片搜索的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Unsplash 图片搜索。
Ihor-Sokoliuk/MCP-SearXNG 连接到 SearXNG 元搜索引擎实例。 社区实现, TypeScript 开发 📇, 本地/云端 🏠☁️, SearXNG 元搜索。
isnow890/naver-search-mcp Naver 搜索 API 集成 MCP 服务器,支持博客、新闻、购物搜索和 DataLab 分析功能。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Naver 搜索 (韩国)。
Bing Web Search API 微软必应网页搜索 API 的服务器实现。 社区实现, Python 开发 🐍, Bing 搜索。 (Awesome列表为TS, 用户列表为Py, 可能有多个实现)
kshern/mcp-tavily Tavily AI 搜索 API (社区实现版本)。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Tavily 搜索 (社区 TS 版)。
mzxrai/mcp-webresearch 搜索 Google 并在任何主题上进行深度网络研究。 社区实现, 搜索与研究。
nickclyde/duckduckgo-mcp-server 使用 DuckDuckGo 进行网页搜索。 社区实现, Python 开发 🐍, 云服务 ☁️, DuckDuckGo 搜索 (Python)。
pskill9/web-search 无需 API Key,使用 Google 搜索结果进行免费网页搜索的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 免费 Google 搜索。
reading-plus-ai/mcp-server-deep-research 提供类 OpenAI/Perplexity 自主深度研究、结构化查询细化和简洁报告的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 自主深度研究。
SecretiveShell/MCP-searxng 连接到 searXNG 实例的 MCP 服务器 (社区实现版本)。 社区实现, Python 开发 🐍, 本地运行 🏠, SearXNG 元搜索 (Python)。
takashiishida/arxiv-latex-mcp 获取 arXiv 论文的 LaTeX 源码,以处理数学内容和公式。 社区实现, Python 开发 🐍, 云服务 ☁️, arXiv LaTeX 源码获取。
the0807/GeekNews-MCP-Server 检索和处理来自 GeekNews 网站新闻数据的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, GeekNews 新闻获取。
Tomatio13/mcp-server-tavily Tavily AI 搜索 API (社区实现版本)。 社区实现, Python 开发 🐍, 云服务 ☁️, Tavily 搜索 (社区 Py 版)。
zhsama/duckduckgo-mcp-server 提供 DuckDuckGo 搜索功能的基于 TypeScript 的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地/云端 🏠☁️, DuckDuckGo 搜索 (TypeScript)。
mcp-local-rag 本地运行的 RAG 式网页搜索,使用 MediaPipe Embedder 和 DuckDuckGo。 社区实现, Python 开发, 本地 RAG 搜索 (无需 API Key)。

📁 文件系统与存储

(让 AI 能够访问本地文件、操作云存储等)

名称 中文介绍 备注
Box Box 官方集成,通过 Box AI 与智能内容管理平台交互。 官方实现 (Box Community) 🎖️, Python 开发, Box 云存储交互。
Fireproof Fireproof 官方集成,不可变账本数据库,支持实时同步。 (也含数据库功能) 官方实现 (Fireproof) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 分布式数据库/存储同步。
microsoft/markitdown MarkItDown MCP 工具访问 - 一个将多种文件格式(本地或远程)转换为 Markdown 以供 LLM 使用的库。 官方实现 (Microsoft) 🎖️, Python 开发 🐍, 本地运行 🏠, 文件转 Markdown。
Xuanwo/mcp-server-opendal 使用 Apache OpenDAL™ 访问任何存储。 社区实现, Python 开发 🐍, 本地/云端 🏠☁️, Apache OpenDAL 通用存储访问。
modelcontextprotocol/server-filesystem 官方参考实现,提供对本地文件系统的直接访问,带可配置权限。 官方参考, TypeScript 开发 📇, 本地运行 🏠, 本地文件系统操作。
modelcontextprotocol/server-google-drive 官方参考实现,集成 Google Drive,用于列出、读取和搜索文件。 官方参考, TypeScript 开发 📇, 云服务 ☁️, Google Drive 文件管理。
calclavia/mcp-obsidian 读取和搜索 Obsidian 库或任何包含 Markdown 笔记的目录。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Obsidian/Markdown 文件访问。
cyberchitta/llm-context.py 通过 MCP 或剪贴板与 LLM 共享代码上下文。 社区实现, Python 开发 🐍, 本地运行 🏠, 代码上下文共享。
exoticknight/mcp-file-merger 文件合并工具,适用于 AI 聊天长度限制。 社区实现, Go 开发 🏎️, 本地运行 🏠, 文件合并。
filesystem@quarkiverse/quarkus-mcp-servers 使用 Quarkus 在 Java 中实现的允许浏览和编辑文件系统。可用作 jar 或原生镜像。 社区实现 (Quarkiverse), Java 开发 ☕, 本地运行 🏠, Java 文件系统操作。
Golang Filesystem Server Go 语言实现的安全文件操作,带可配置访问控制。 社区实现, Go 开发 🏎️, 本地运行 🏠, 本地文件系统操作 (Go)。
hmk/box-mcp-server Box 集成,用于列出、读取和搜索文件 (社区实现版本)。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Box 文件操作 (社区 TS 版)。
mamertofabian/mcp-everything-search 在 Windows 上使用 Everything SDK 快速搜索文件。 (Awesome列表更通用) 社区实现, Python 开发 🐍, 本地运行 🏠, Windows 快速文件搜索 🪟。
Everything Search (mamertofabian) [更新] 在 Windows/macOS/Linux 上快速搜索文件(使用 Everything/mdfind/locate)。 (更新自Awesome列表描述) 社区实现, Python 开发 🐍, 本地运行 🏠, 跨平台 🪟🍎🐧 快速文件搜索。

💬 通讯与协作

(让 AI 能够收发消息、管理日程、参与团队协作等)

名称 中文介绍 备注
agentmail-toolkit/mcp 用于即时创建收件箱以发送、接收和处理邮件的 MCP 服务器。专为 AI Agents 设计的邮件服务。 官方实现 (AgentMail) 🎖️, Python 开发 🐍, 邮件处理。
Inbox Zero Inbox Zero 官方集成,AI 个人邮件助手 (基于 Gmail,提供需回复/需跟进邮件识别等功能)。 官方实现 (Inbox Zero) 🎖️, Python 开发 🐍, 云服务 ☁️, 智能邮件管理。
gotoHuman gotoHuman 官方集成,允许 AI 代理和自动化向人类发送请求以供批准。 官方实现 (gotoHuman), TypeScript 开发, 人机协作审批。
InditexTech/mcp-teams-server 集成 Microsoft Teams 消息传递 (读/发/提及/列成员/线程) 的 MCP 服务器。 社区实现 (InditexTech), Python 开发 🐍, 云服务 ☁️, Microsoft Teams 集成。
modelcontextprotocol/server-bluesky Bluesky 实例集成,用于查询和交互。 官方参考 (推测, 在 MCP org 下), TypeScript 开发 📇, 云服务 ☁️, Bluesky 社交集成。
modelcontextprotocol/server-slack 官方参考实现,集成 Slack,AI 能管理频道、发消息。 官方参考, TypeScript 开发 📇, 云服务 ☁️, Slack 团队协作。
softeria/ms-365-mcp-server 连接整个 Microsoft 365 套件 (Graph API),包括邮件、文件、Excel、日历等的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Microsoft 365 全家桶集成。
AbdelStark/nostr-mcp Nostr MCP 服务器,允许与 Nostr 交互,发布笔记等。 社区实现, 云服务 ☁️, Nostr 社交协议集成。
adhikasp/mcp-twikit 与 Twitter 搜索和时间线交互。 社区实现, Python 开发 🐍, 云服务 ☁️, Twitter 交互。
arpitbatra123/mcp-googletasks 与 Google Tasks API 交互的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Google Tasks 管理 (TS)。
carterlasalle/mac_messages_mcp 安全地与 iMessage 数据库交互的 MCP 服务器,允许 LLM 查询分析对话 (含验证/附件/联系人/群聊/收发)。 社区实现, Go 开发 🏎️, 本地运行 🏠, macOS iMessage 集成 🍎。
chaindead/telegram-mcp Telegram API 集成,访问用户数据、管理对话、检索消息和处理已读状态。 社区实现, Go 开发 🏎️, 本地运行 🏠, Telegram 集成 (Go)。
ClaudePost 实现 Gmail 的无缝邮件管理,支持邮件搜索、阅读和发送。 社区实现, Python 开发, Gmail 邮件操作。
Discord (by v-3) 通过机器人连接 Discord 服务器,读写频道消息。 社区实现, TypeScript 开发, Discord 消息交互。
gotoolkits/wecombot 向企业微信群机器人发送各种类型消息的 MCP 服务器应用。 社区实现, Go 开发 🚀, 云服务 ☁️, 企业微信机器人。
Gmail 支持自动认证的 Gmail 集成,用于 Claude Desktop。 社区实现, Python 开发, Gmail 集成 (带认证)。
Gmail Headless 可远程托管的 Gmail 服务器,无需本地凭证或文件系统即可收发邮件。 社区实现, Python 开发, 远程 Gmail 操作。
Google Calendar (by v-3) 集成 Google Calendar,检查日程、查找空闲时间、添加/删除事件。 社区实现, TypeScript 开发, Google 日历管理。
hannesrudolph/imessage-query-fastmcp-mcp-server 提供对 iMessage 数据库安全访问的 MCP 服务器 (FastMCP),LLM 可查询分析对话 (含验证/附件)。 社区实现, Python 开发 🐍, 本地运行 🏠, macOS iMessage 集成 🍎 (FastMCP)。
jagan-shanmugam/mattermost-mcp-host 提供对 Mattermost 团队、频道和消息访问的 MCP 服务器及主机。主机作为机器人集成,可配置 MCP 服务器。 社区实现, Python 开发 🐍, 本地运行 🏠, Mattermost 集成。
lharries/whatsapp-mcp 用于搜索个人 WhatsApp 消息、联系人以及向个人或群组发送消息的 MCP 服务器。 社区实现, Python/Go 开发 🐍🏎️, WhatsApp 交互。
LINE 集成 LINE Bot,让 AI 读取和分析 LINE 对话。 社区实现, Python 开发, LINE 对话分析。
MarkusPfundstein/mcp-gsuite Gmail 和 Google Calendar 集成。 社区实现, Python 开发 🐍, 云服务 ☁️, Gmail/Google Calendar 集成。
Apple Calendar 与 macOS 日历交互,创建/修改事件、列出日程、查找空闲时段等。 社区实现, Python 开发 🐍, 本地运行 🏠, macOS 日历管理 🍎。
sawa-zen/vrchat-mcp 与 VRChat API 交互的 MCP 服务器。可获取好友、世界、虚拟形象等信息。 社区实现, TypeScript 开发 📇, 本地运行 🏠, VRChat API 交互。
takumi0706/google-calendar-mcp 与 Google Calendar API 交互的 MCP 服务器 (TypeScript 版)。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Google Calendar 集成 (TS)。
teddyzxcv/ntfy-mcp 使用 ntfy 向手机发送通知的 MCP 服务器。 社区实现, ntfy 通知。
Telegram 通过 Telethon 集成 Telegram,支持分页读取聊天、检索和发送消息。 社区实现, Python 开发, Telegram 消息交互。
userad/didlogic_mcp DIDLogic MCP 服务器。增加管理 SIP 端点、号码和目的地的功能。 社区实现, Python 开发 🐍, 云服务 ☁️, DIDLogic (VoIP) 集成。
X (Twitter) (by vidhupv) 直接通过 Claude 创建、管理和发布 X/Twitter 推文。 社区实现, Python 开发, Twitter 发推管理。
Google Tasks (by zcaceres) Google Tasks API 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Google Tasks 管理 (TS)。

📸 多媒体与内容创作

(让 AI 能够生成动画、编辑视频、处理图像、语音合成等)

名称 中文介绍 备注
Amazon Bedrock Nova Canvas 使用 Amazon Nova Canvas 模型进行图像生成。 社区实现, TypeScript 开发 📇, 云服务 ☁️, AWS Bedrock 图像生成。
apinetwork/piapi-mcp-server PiAPI MCP 服务器使用户能够直接从 Claude 或任何其他 MCP 兼容应用生成 Midjourney/Flux/Kling/Hunyuan/Udio/Trellis 等媒体内容。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 多模型媒体内容生成 (PiAPI)。
abhiemj/manim-mcp-server 用 Manim 生成动画,适合制作数学、科技类可视化内容。 社区实现, Python 开发 🐍, 本地运行 🏠, 跨平台 🪟🐧, 数学/科技动画。
awkoy/replicate-flux-mcp 提供通过 Replicate API 生成图像的能力。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Replicate 图像生成 (Flux)。
burningion/video-editing-mcp 视频编辑神器,支持添加、分析、搜索和生成视频剪辑。 社区实现, Python 开发 🐍, 视频内容创作。
diivi/aseprite-mcp 使用 Aseprite API 创建像素艺术的 MCP 服务器。 社区实现, Python 开发 🐍, 本地运行 🏠, Aseprite 像素艺术。
EverArt 官方参考实现,使用多种模型进行 AI 图像生成。 官方参考, TypeScript 开发, AI 图像生成。
ElevenLabs 集成 ElevenLabs TTS API,能生成包含多种声音的完整画外音。 社区实现, Python 开发, 文本转语音 TTS。
Image Generation 使用 Replicate Flux 模型提供图像生成能力。 社区实现, Python 开发, AI 图像生成 (Replicate)。
InhiblabCore/mcp-image-compression 用于本地压缩各种图像格式的 MCP 服务器。 社区实现, Python 开发 🐍, 本地运行 🏠, 图像压缩。
j3k0/speech.sh 让代理大声说出内容,并在工作完成时用简短摘要通知你。 社区实现, 本地运行 🏠, 语音输出/通知。
kimtaeyoon83/mcp-server-youtube-transcript 获取 YouTube 字幕和转录文本供 AI 分析。 社区实现, TypeScript 开发 📇, 云服务 ☁️, YouTube 字幕/转录。
Replicate 在 Replicate 上搜索、运行和管理机器学习模型,处理生成的图像。 社区实现, TypeScript 开发, Replicate 模型调用。
samuelgursky/davinci-resolve-mcp DaVinci Resolve 的 MCP 服务器集成,提供视频编辑、调色、媒体管理和项目控制的强大工具。 社区实现, Python 开发 🐍, DaVinci Resolve 视频编辑。
YouTube 全面的 YouTube API 集成,用于视频管理、Shorts 创建和分析。 社区实现, Python 开发, YouTube 管理与分析。
anaisbetts/mcp-youtube 获取 YouTube 字幕 (另一版本)。 社区实现, TypeScript 开发 📇, 云服务 ☁️, YouTube 字幕。

🧠 知识、记忆与 RAG

(让 AI 拥有长期记忆、能够基于特定知识库回答问题等)

名称 中文介绍 备注
Graphlit Graphlit 官方集成,将各种来源(Slack, Gmail, 播客等)内容摄入可搜索的 Graphlit 项目。 官方实现 (Graphlit) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 多源内容 RAG。
Inkeep Inkeep 官方集成,基于 Inkeep 的 RAG 搜索你的内容。 官方实现 (Inkeep), Python 开发, Inkeep RAG 搜索。
Needle Needle 官方集成,提供开箱即用的生产级 RAG,用于搜索和检索自有文档。 官方实现 (Needle AI), TypeScript 开发, 生产级 RAG。
pinecone-io/assistant-mcp 连接到你的 Pinecone Assistant,并从其知识引擎中为 Agent 提供上下文。 官方实现 (Pinecone) 🎖️, Rust 开发 🦀, 云服务 ☁️, Pinecone Assistant RAG。
modelcontextprotocol/server-memory 官方参考实现,基于知识图谱的持久记忆系统。 官方参考, TypeScript 开发 📇, 本地运行 🏠, 知识图谱记忆。
Basic Memory 本地优先的知识管理系统,从 Markdown 文件构建语义图,实现跨对话持久记忆。 社区实现, TypeScript 开发, 本地 Markdown 知识图谱记忆。
CheMiguel23/MemoryMesh 增强的基于图的记忆,专注于 AI 角色扮演和故事生成。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 图记忆 (角色扮演/故事)。
cognee-mcp GraphRAG 记忆服务器,支持自定义摄取、数据处理和搜索。 社区实现, TypeScript 开发 📇, 本地运行 🏠, GraphRAG 记忆。
entanglr/zettelkasten-mcp 实现 Zettelkasten 知识管理方法的 MCP 服务器,允许通过 Claude 等客户端创建、链接和搜索原子笔记。 社区实现, Python 开发 🐍, 本地运行 🏠, Zettelkasten 笔记法。
hannesrudolph/mcp-ragdocs 提供通过向量搜索检索和处理文档工具的 MCP 服务器实现,使 AI 助手能用相关文档上下文增强响应。 社区实现, Python 开发 🐍, 本地运行 🏠, 文档 RAG (向量搜索)。
kaliaboi/mcp-zotero 让 LLM 与 Zotero Cloud 上的收藏和文献来源交互的连接器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Zotero 文献管理。
mcp-summarizer AI 摘要 MCP 服务器,支持多种内容类型:纯文本、网页、PDF 文档、EPUB 书籍、HTML 内容。 社区实现, Go 开发 📕, 云服务 ☁️, 多格式内容摘要。
mem0ai/mem0-mcp 管理代码偏好和模式,支持语义搜索,方便在 IDE 中存取技术文档。 (Mem0 官方) (已在开发工具列出) 官方实现 (Mem0 AI) 🎖️, Python 开发 🐍, 本地运行 🏠, 程序员的记忆助手和偏好管理。
Minima 用于本地文件 RAG 的 MCP 服务器。 社区实现, Python 开发, 本地文件 RAG。
Rememberizer AI 与 Rememberizer 数据源交互,促进增强的知识检索。 社区实现, Python 开发, 知识检索。
topoteretes/cognee 使用各种图和向量存储的 AI 应用和 Agents 记忆管理器,允许从 30+ 数据源摄取。 (cognee-mcp 的开发分支) 社区实现, TypeScript 开发 📇, 本地运行 🏠, GraphRAG 记忆 (更通用)。
unibaseio/membase-mcp 通过 Membase 以分布式方式保存和查询你的 Agent 记忆。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 分布式 Agent 记忆。

🔒 安全与分析

(让 AI 能够进行安全扫描、二进制分析、风险评估等)

名称 中文介绍 备注
BICScan 获取 EVM 区块链地址(EOA, CA, ENS)甚至域名的风险评分/资产持有情况。 (BICScan 官方) (已在金融部分列出) 官方实现 (AhnLab) 🎖️, Python 开发 🐍, 云服务 ☁️, 区块链地址风险分析。
Semgrep Semgrep 官方集成,让 AI 代理使用 Semgrep 进行代码安全扫描。 (已在开发工具列出) 官方实现 (Semgrep) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 代码安全扫描。
13bm/GhidraMCP 集成 Ghidra 进行二进制分析,支持函数检查、反编译、内存探索、导入/导出分析等。 社区实现, Python+Java 开发 🐍☕, 本地运行 🏠, 二进制逆向工程 (Ghidra)。
atomicchonk/roadrecon_mcp_server 用于分析来自 Azure 租户枚举的 ROADrecon 收集结果的 MCP 服务器。 社区实现, Python 开发 🐍, Windows 本地 🪟🏠, Azure AD 分析 (ROADrecon)。
BurtTheCoder/mcp-dnstwist dnstwist MCP 服务器,强大的 DNS 模糊测试工具,帮助检测域名抢注、钓鱼和企业间谍活动。 社区实现, TypeScript 开发 📇, Windows/云端 🪟☁️, DNS Fuzzing (dnstwist)。
BurtTheCoder/mcp-maigret maigret MCP 服务器,强大的 OSINT 工具,从各种公共来源收集用户账户信息。提供跨社交网络搜索用户名和分析 URL 的工具。 社区实现, TypeScript 开发 📇, Windows/云端 🪟☁️, OSINT (maigret)。
BurtTheCoder/mcp-shodan 用于查询 Shodan API 和 Shodan CVEDB 的 MCP 服务器。提供 IP 查找、设备搜索、DNS 查找、漏洞查询等工具。 社区实现, TypeScript 开发 📇, Windows/云端 🪟☁️, Shodan API 查询。
BurtTheCoder/mcp-virustotal 用于查询 VirusTotal API 的 MCP 服务器。提供扫描 URL、分析文件哈希和检索 IP 地址报告的工具。 社区实现, TypeScript 开发 📇, Windows/云端 🪟☁️, VirusTotal API 查询。
fosdickio/binary_ninja_mcp Binary Ninja 插件、MCP 服务器和桥接器,无缝集成 Binary Ninja 与 MCP 客户端,自动化二进制分析和逆向工程。 社区实现, Python 开发 🐍, 本地运行 🏠, 跨平台 🍎🪟🐧, 二进制分析 (Binary Ninja)。
fr0gger/MCP_Security 用于查询 ORKL API 的 MCP 服务器。提供获取威胁报告、分析威胁行为者和检索情报来源的工具。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 威胁情报 (ORKL API)。
Gaffx/volatility-mcp Volatility 3.x 的 MCP 服务器,允许使用 AI 助手执行内存取证分析。通过 REST API 和 LLM 使 pslist 和 netscan 等插件易于访问。 社区实现, 内存取证 (Volatility)。
heurist-network/heurist-mesh-mcp-server 访问 Heurist Mesh 网络中的专业 Web3 AI 代理,进行区块链分析、智能合约安全、代币度量等。 (已在金融部分列出) 官方实现 (Heurist) 🎖️, Python 开发 🐍, 云端/本地 🏠☁️, Web3 安全与分析。
mrexodia/ida-pro-mcp IDA Pro 的 MCP 服务器,允许使用 AI 助手执行二进制分析。此插件实现反编译、反汇编,并允许自动生成恶意软件分析报告。 社区实现, Python 开发 🐍, 本地运行 🏠, 二进制逆向工程 (IDA Pro)。
nickpending/mcp-recon 由 httpx 和 asnmap 驱动的对话式侦察接口和 MCP 服务器。支持不同级别的域分析、安全头检查、证书分析和 ASN 查找。 社区实现, Go 开发 🏎️, 本地运行 🏠, 网络侦察 (httpx, asnmap)。
OpenCTI 与 OpenCTI 平台交互,检索威胁情报数据(报告、指标、恶意软件等)。 社区实现, Python 开发, 威胁情报获取。
qianniuspace/mcp-security-audit 强大的 MCP 服务器,审计 npm 包依赖项的安全漏洞。内置远程 npm 注册表集成,用于实时安全检查。 社区实现, TypeScript 开发 📇, 云服务 ☁️, NPM 依赖安全审计。
rad-security/mcp-server RAD Security 的 MCP 服务器,为 Kubernetes 和云环境提供 AI 驱动的安全洞察。提供查询 Rad Security API 等工具。 社区实现, TypeScript 开发 📇, 云服务 ☁️, K8s/云安全 (RAD Security)。
roadwy/cve-search_mcp 用于查询 CVE-Search API 的 MCP 服务器。提供全面访问 CVE-Search,浏览供应商/产品、按 ID 获取 CVE、获取最新 CVE。 社区实现, Python 开发 🐍, 本地运行 🏠, CVE 漏洞信息查询 (CVE-Search)。
sapientpants/deepsource-mcp-server 与 DeepSource 集成的 MCP 服务器,为 AI 助手提供代码质量指标、问题和质量门状态的访问。 社区实现, TypeScript 开发 📇, 云端/本地 ☁️🏠, 代码质量 (DeepSource)。
sapientpants/sonarqube-mcp-server 与 SonarQube 集成的 MCP 服务器,为 AI 助手提供代码质量指标、问题和质量门状态的访问。 社区实现, Rust 开发 🦀, 云端/本地 ☁️🏠, 代码质量 (SonarQube)。
securityfortech/secops-mcp 将流行的开源工具整合到单一 MCP 接口中的一体化安全测试工具箱。连接 AI 代理,实现渗透测试、漏洞赏金、威胁狩猎等任务。 社区实现, Python 开发 🐍, 本地运行 🏠, 安全测试工具箱。

💰 金融与加密货币

(让 AI 能够获取金融数据、分析股票、与区块链交互等)

名称 中文介绍 备注
BICScan 获取 EVM 区块链地址(EOA, CA, ENS)甚至域名的风险评分/资产持有情况。 (BICScan 官方) 官方实现 (AhnLab) 🎖️, Python 开发 🐍, 云服务 ☁️, 区块链地址风险分析。
Bankless Onchain 查询链上数据,如 ERC20 代币、交易历史、智能合约状态。 (Bankless 官方) 官方实现 (Bankless) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 链上数据查询。
base/base-mcp Base Network 集成,提供链上工具,允许与 Base 网络和 Coinbase API 交互 (钱包/转账/合约/DeFi)。 官方实现 (Base/Coinbase) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Base 链与 Coinbase API。
Chargebee Chargebee 官方集成,将 AI 代理连接到 Chargebee 计费平台。 官方实现 (Chargebee) 🎖️, TypeScript 开发 📇, 云服务 ☁️, Chargebee 计费管理。
codex-data/codex-mcp Codex API 集成,提供 60+ 网络上实时丰富的区块链和市场数据。 官方实现 (Codex Data) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 多链实时数据。
coinpaprika/dexpaprika-mcp Coinpaprika 的 DexPaprika MCP 服务器,暴露高性能 DexPaprika API (20+ 链/5M+ 代币/实时价格/流动性/历史数据)。 官方实现 (Coinpaprika) 🎖️, TypeScript 开发 📇, 云服务 ☁️, 跨平台 🍎🪟🐧, DEX 聚合数据。
Financial Datasets 专为 AI 代理设计的股票市场 API。 官方实现, Python 开发, AI 友好型股票数据。
heurist-network/heurist-mesh-mcp-server 访问 Heurist Mesh 网络中的专业 Web3 AI 代理 (区块链分析/合约安全/代币度量等)。 (Heurist 官方) 官方实现 (Heurist) 🎖️, Python 开发 🐍, 云端/本地 🏠☁️, Web3 AI 代理网络。
Stripe Stripe 官方集成,与 Stripe API 交互,处理支付、客户和退款。 官方实现 (Stripe), TypeScript 开发, Stripe 支付处理。
Thirdweb Thirdweb 官方集成,读写 2000+ 区块链,查询数据、分析/部署合约、执行交易。 官方实现 (Thirdweb), Python 开发, 多链区块链交互。
anjor/coinmarket-mcp-server Coinmarket API 集成,获取加密货币列表和报价。 社区实现, Python 开发 🐍, 云服务 ☁️, CoinMarketCap 数据。
berlinbra/alpha-vantage-mcp Alpha Vantage API 集成,获取股票和加密货币信息。 社区实现, Python 开发 🐍, 云服务 ☁️, AlphaVantage 金融数据 (另一版本)。
bitteprotocol/mcp Bitte Protocol 集成,在多个区块链上运行 AI Agents。 社区实现, TypeScript 开发 📇, Bitte Protocol 区块链 Agent。
Bsc-mcp 连接 AI 与 BNB Chain,执行复杂的链上操作(转账、交易、安全检查等)。 社区实现, Python 开发, BNB Chain 操作。
EVM MCP Server 为 30+ EVM 网络提供全面的区块链服务,支持代币、NFT、智能合约、交易和 ENS。 社区实现, TypeScript 开发 📇, 云服务 ☁️, EVM 多链服务。
ferdousbhai/investor-agent Yahoo Finance 集成,获取股市数据,包括期权推荐。 社区实现, Python 开发 🐍, 云服务 ☁️, Yahoo Finance 数据与期权。
ferdousbhai/tasty-agent Tastyworks API 集成,处理 Tastytrade 上的交易活动。 社区实现, Python 开发 🐍, 云服务 ☁️, Tastytrade 交易。
getalby/nwc-mcp-server 由 Nostr Wallet Connect 驱动的比特币闪电网络钱包集成。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 比特币闪电网络钱包 (NWC)。
intentos-labs/beeper-mcp Beeper 在 BSC 上提供交易,包括余额/代币转移、Pancakeswap 代币交换和 beeper 奖励领取。 社区实现, Python 开发 🐍, BSC 链交互 (Beeper)。
janswist/mcp-dexscreener 使用开放免费的 Dexscreener API 获取实时链上市场价格。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Dexscreener 实时价格。
kukapay/crypto-feargreed-mcp 提供实时和历史的加密货币恐惧与贪婪指数数据。 社区实现, Python 开发 🐍, 云服务 ☁️, 加密货币情绪指数。
kukapay/crypto-indicators-mcp 提供一系列加密货币技术分析指标和策略的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, 加密货币技术指标。
kukapay/crypto-portfolio-mcp 用于跟踪和管理加密货币投资组合分配的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, 加密货币投资组合管理。
kukapay/crypto-sentiment-mcp 向 AI 代理提供加密货币情绪分析的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, 加密货币情绪分析。
kukapay/cryptopanic-mcp-server 向 AI 代理提供最新加密货币新闻 (由 CryptoPanic 驱动)。 社区实现, Python 开发 🐍, 云服务 ☁️, CryptoPanic 新闻。
kukapay/dune-analytics-mcp 将 Dune Analytics 数据桥接到 AI 代理的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Dune Analytics 集成。
kukapay/freqtrade-mcp 与 Freqtrade 加密货币交易机器人集成的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Freqtrade 交易机器人集成。
kukapay/jupiter-mcp 使用 Jupiter 的新 Ultra API 在 Solana 区块链上执行代币交换的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Solana Jupiter 交易 (Ultra API)。
kukapay/pancakeswap-poolspy-mcp 跟踪 Pancake Swap 上新创建池子的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, PancakeSwap 新池子监控。
kukapay/rug-check-mcp 检测 Solana meme 代币潜在风险的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Solana Meme 币风险检测。
kukapay/thegraph-mcp 用来自 The Graph 的索引化区块链数据赋能 AI 代理的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, The Graph 数据集成。
kukapay/token-minter-mcp 为 AI 代理提供在多个区块链上铸造 ERC-20 代币工具的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, 多链 ERC-20 铸造。
kukapay/token-revoke-mcp 用于检查和撤销多个区块链上 ERC-20 代币授权的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, 多链 ERC-20 授权管理。
kukapay/uniswap-poolspy-mcp 跟踪多个区块链上 Uniswap 新创建流动性池的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Uniswap 新池子监控 (多链)。
kukapay/uniswap-trader-mcp 用于 AI 代理在多个区块链上自动化 Uniswap DEX 代币交换的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Uniswap 自动交易 (多链)。
kukapay/whale-tracker-mcp 用于跟踪加密货币巨鲸交易的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, 加密货币巨鲸追踪。
laukikk/alpaca-mcp Alpaca 交易 API 的 MCP 服务器,用于管理股票和加密货币投资组合、下单和访问市场数据。 社区实现, Python 开发 🐍, 云服务 ☁️, Alpaca 交易 API 集成。
longportapp/openapi LongPort OpenAPI 提供实时股市数据,通过 MCP 为 AI 提供分析和交易能力。 官方实现 (LongPort) 🎖️, Python 开发 🐍, 云服务 ☁️, LongPort 股票数据与交易。
mcpdotdirect/starknet-mcp-server 全面的 Starknet 区块链集成,支持原生代币 (ETH, STRK)、智能合约、StarknetID 解析和代币转移。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Starknet 全功能集成。
minhyeoky/mcp-server-ledger ledger-cli 集成,用于管理金融交易和生成报告。 社区实现, Python 开发 🐍, 本地运行 🏠, ledger-cli 记账。
narumiruna/yfinance-mcp 使用 Yahoo Finance API 获取金融数据,方便进行股票分析。 社区实现, Python 开发 🐍, 云服务 ☁️, Yahoo Finance 数据获取。
openMF/mcp-mifosx 核心银行集成,用于管理客户、贷款、储蓄、股份、金融交易和生成财务报告。 社区实现 (OpenMF), 云端/本地 ☁️🏠, Mifos X 核心银行系统集成。
pwh-pwh/coin-mcp-server Bitget API 获取加密货币价格。 社区实现, Python 开发 🐍, 云服务 ☁️, Bitget 价格获取。
QuantGeekDev/coincap-mcp 使用 CoinCap 公共 API 的实时加密货币市场数据集成,无需 API Key 即可访问价格和市场信息。 社区实现, TypeScript 开发 📇, 云服务 ☁️, CoinCap 实时数据。
SaintDoresh/Crypto-Trader-MCP-ClaudeDesktop 使用 CoinGecko API 提供加密货币市场数据的 MCP 工具。 社区实现, Python 开发 🐍, 云服务 ☁️, CoinGecko 数据。
SaintDoresh/YFinance-Trader-MCP-ClaudeDesktop 使用 Yahoo Finance API 提供股市数据和分析的 MCP 工具。 社区实现, Python 开发 🐍, 云服务 ☁️, Yahoo Finance 数据分析。
Solana Agent Kit 使用 Solana Agent Kit 与 Solana 区块链交互,支持 40+ 协议操作。 社区实现, TypeScript 开发, Solana 链交互。
AlphaVantage AlphaVantage 股票市场数据 API 服务器。 社区实现, Python 开发, AlphaVantage 金融数据。

📊 数据分析、处理与可视化

(让 AI 能够处理表格数据、生成图表、进行数据探索等)

名称 中文介绍 备注
Axiom Axiom 官方集成,用自然语言查询和分析 Axiom 日志、追踪等事件数据。 官方实现 (Axiom), Python 开发, Axiom 日志分析。
Comet Opik Comet 官方集成,用自然语言查询和分析 Opik 日志、追踪、提示等 LLM 遥测数据。 官方实现 (Comet ML) 🎖️, TypeScript 开发 📇, 云端/本地 🏠☁️, LLM 可观测性数据分析。
flowcore/mcp-flowcore-platform 与 Flowcore 交互以执行操作、摄取数据,并分析、交叉引用和利用数据核心中的任何数据。 官方实现 (Flowcore) 🎖️, TypeScript 开发 📇, 云端/本地 🏠☁️, Flowcore 数据平台交互。
GreptimeDB GreptimeDB 官方集成,让 AI 安全地探索和分析 GreptimeDB 中的时序数据。(已在数据库部分列出) 官方实现 (Greptime) 🎖️, Python 开发 🐍, 本地运行 🏠, GreptimeDB 时序数据分析。
JordiNei/mcp-databricks-server 连接到 Databricks API,允许 LLM 运行 SQL 查询、列出作业和获取作业状态。 社区实现, Databricks API 集成。
jwaxman19/qlik-mcp Qlik Cloud API 的 MCP 服务器,支持查询应用、工作表和从可视化中提取数据 (带认证和速率限制)。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Qlik Cloud API 集成。
Keboola Keboola 官方集成,在单一平台上构建数据工作流、集成和分析。 官方实现 (Keboola) 🎖️, Python 开发, Keboola 数据平台。
yzfly/mcp-excel-server 通过自然语言与 Excel 交互的 MCP 服务器。 社区标杆, Excel 读写、分析、可视化。
ChronulusAI/chronulus-mcp 使用 Chronulus AI 预测和预测代理预测任何事物。 社区实现, Python 开发 🐍, 云服务 ☁️, AI 预测服务。
Excel (by haris-musa) Excel 操作,包括读写、工作表管理、格式化、图表和数据透视表 (提供更高级的功能)。 社区实现, Python 开发 🐍, 本地运行 🏠, Excel 高级操作。
Data Exploration 对 .csv 数据集进行自主数据探索,轻松获得智能见解(注意:会执行代码)。 社区实现, Python 开发 🐍, 云服务 ☁️, CSV 数据自动探索。
Dataset Viewer 浏览和分析 Hugging Face 数据集,支持搜索、过滤、统计和导出。 社区实现, Python 开发, HuggingFace 数据集浏览。
Vega-Lite 使用 Vega-Lite 格式和渲染器从获取的数据生成可视化图表。 社区实现, Python 开发 🐍, 本地运行 🏠, 数据可视化生成。
QuickChart 使用 QuickChart.io 生成图表。 社区实现, Python 开发, 图表生成服务。
Mindmap 从包含 Markdown 代码的输入生成美观的交互式思维导图。 社区实现, Python 开发 🐍, 本地运行 🏠, 思维导图生成。
JSON JSON 处理服务器,支持 JSONPath 查询和多种操作。 社区实现, Python 开发, 高级 JSON 处理。
zcaceres/markdownify-mcp 将几乎任何文件或 Web 内容转换为 Markdown 的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 文件/网页转 Markdown。

🛠️ 效率工具与集成 (Office)

(让 AI 能够使用日历、任务管理、项目管理、笔记等工具)

名称 中文介绍 备注
Dart Dart 官方集成,与 AI 原生项目管理工具 Dart 中的任务、文档、项目数据交互。 官方实现 (Dart) 🎖️, TypeScript 开发 📇, Dart 项目管理。
Fibery Fibery 官方集成,在 Fibery 工作区中执行查询和实体操作。 官方实现 (Fibery) 🎖️, TypeScript 开发 📇, Fibery 工作管理。
Make Make 官方集成,将 Make 场景转换为 AI 助手可调用的工具。 官方实现 (Make/Integromat) 🎖️, TypeScript 开发 📇, 本地运行 🏠, 连接 Make 生态。
PipedreamHQ/pipedream Pipedream 官方集成,一站式连接 2500+ API,集成 8000+ 工具,并管理用户服务器。 官方实现 (Pipedream) 🎖️, Node.js 开发, 云端/本地 ☁️🏠, 超强 API/工具集成平台。
Rember 在 Rember 中创建间隔重复抽认卡,记住聊天中学到的任何东西。 (Rember 官方) 官方实现 (Rember) 🎖️, TypeScript 开发 📇, 本地运行 🏠, 间隔重复记忆工具。
Zapier Zapier 官方集成,将 AI 代理即时连接到 8000+ 应用。 官方实现 (Zapier), 连接 Zapier 生态。
Airtable (by domdomegg) 读写 Airtable 数据库,带模式检查。(已在数据库部分列出) 社区实现, TypeScript 开发 📇, 本地运行 🏠, Airtable 读写。
akseyh/bear-mcp-server 允许 AI 读取你的 Bear 笔记 (仅 macOS)。 社区实现, macOS Bear 笔记读取 🍎.
awwaiid/mcp-server-taskwarrior 用于基本本地 taskwarrior 使用的 MCP 服务器 (添加/更新/删除任务)。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Taskwarrior 任务管理。
Badhansen/notion-mcp 与 Notion API 集成以高效管理个人待办事项列表的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Notion ToDo 管理 (Python)。
bart6114/my-bear-mcp-server 允许通过直接与 Bear 的 SQLite 数据库集成来读取 Bear 笔记应用的笔记和标签。 社区实现, TypeScript 开发 📇, 本地运行 🏠, macOS Bear 笔记读取 🍎 (SQLite 直连)。
danhilse/notion_mcp 与 Notion API 集成以管理个人待办事项列表。 社区实现, Python 开发 🐍, 云服务 ☁️, Notion ToDo 管理 (Python, 另一版本)。
evalstate/mcp-miro 访问 MIRO 白板,批量创建和读取项目。需要 REST API 的 OAUTH 密钥。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Miro 白板交互。
fradser/mcp-server-apple-reminders 用于与 macOS 上的 Apple Reminders 交互的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, macOS Reminders 管理 🍎。
hiromitsusasaki/raindrop-io-mcp-server 允许 LLM 使用 MCP 与 Raindrop.io 书签交互的集成。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Raindrop.io 书签管理。
hmk/attio-mcp-server 允许 AI 客户端在 Attio CRM 中管理记录和笔记。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Attio CRM 管理。
ivo-toby/contentful-mcp 在 Contentful Space 中更新、创建、删除内容、内容模型和资产。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Contentful CMS 管理。
kelvin6365/plane-mcp-server 此 MCP 服务器将帮助您通过 Plane 的 API 管理项目和问题。 社区实现, Go 开发 🏎️, 本地运行 🏠, Plane 项目管理。
k-jarzyna/mcp-miro Miro MCP 服务器,暴露官方 Miro SDK 中可用的所有功能。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Miro 白板交互 (更全面)。
kj455/mcp-kibela 允许 AI 模型与 Kibela 交互。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Kibela 知识库交互。
KS-GEN-AI/confluence-mcp-server 通过 CQL 获取 Confluence 数据并阅读页面。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 跨平台 🍎🪟, Confluence 数据读取。
KS-GEN-AI/jira-mcp-server 通过 JQL 和 API 读取 Jira 数据,并执行请求以创建和编辑工单。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 跨平台 🍎🪟, Jira 数据读写。
lciesielski/mcp-salesforce 具有与 Salesforce 实例交互基本演示的 MCP 服务器。 社区实现, 本地/云端 🏠☁️, Salesforce 集成示例。
Linear (by jerhadf) 与 Linear API 交互进行项目管理,包括搜索、创建和更新 Issues。 社区实现, TypeScript 开发, Linear 项目管理。
MarkusPfundstein/mcp-obsidian 通过 REST API 与 Obsidian 交互。 社区实现, Python 开发 🐍, 云端/本地 🏠☁️, Obsidian REST API 交互。
Notion (by v-3) Notion 集成,通过 Claude 搜索、读取、更新和创建页面。 社区实现, TypeScript 开发 📇, Notion 页面管理。
recursechat/mcp-server-apple-shortcuts 与 Apple Shortcuts 集成的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, macOS Apple Shortcuts 集成 🍎。
roychri/mcp-server-asana Asana 的 MCP 服务器实现,允许从 MCP 客户端与 Asana API 对话。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Asana 项目管理。
sirmews/apple-notes-mcp 允许 AI 从本地 Apple Notes 数据库读取 (仅 macOS)。 社区实现, Python 开发 🐍, 本地运行 🏠, macOS Apple Notes 读取 🍎。
sooperset/mcp-atlassian Atlassian 产品 (Confluence 和 Jira) 的 MCP 服务器。支持 Cloud/Server/DC。提供全面的工具用于搜索、读取、创建和管理内容。 社区实现, Python 开发 🐍, 云服务 ☁️, Confluence/Jira 全功能管理。
suekou/mcp-notion-server 与 Notion API 交互。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Notion API 交互 (另一版本)。
tacticlaunch/mcp-linear 与 Linear 项目管理系统集成。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 跨平台 🍎🪟🐧, Linear 项目管理 (另一版本)。
Todoist 与 Todoist 交互来管理你的任务。 社区实现, Python 开发, Todoist 任务管理。
Home Assistant (by tevonsb) 与 Home Assistant 交互,查看和控制灯光、开关、传感器等智能家居设备。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 智能家居控制。
allenporter/mcp-server-home-assistant 通过 MCP 服务器暴露所有 Home Assistant 语音意图,实现家庭控制。 社区实现, Python 开发 🐍, 本地运行 🏠, Home Assistant 语音控制。
yuna0x0/hackmd-mcp 允许 AI 模型与 HackMD 交互。 社区实现, TypeScript 开发 📇, 云服务 ☁️, HackMD 协作笔记。

🌍 地理位置与出行

(让 AI 能够处理地理位置数据、地图、天气、交通出行信息等)

名称 中文介绍 备注
Airbnb MCP Server 提供搜索 Airbnb 和获取房源详情的工具。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Airbnb 搜索。
briandconnelly/mcp-server-ipinfo 使用 IPInfo API 获取 IP 地址地理位置和网络信息。 社区实现, Python 开发 🐍, 云服务 ☁️, IP 地址信息 (IPInfo)。
jagan-shanmugam/open-streetmap-mcp 具有基于位置服务和地理空间数据的 OpenStreetMap MCP 服务器。 社区实现, Python 开发 🐍, 本地运行 🏠, OpenStreetMap 数据。
kukapay/nearby-search-mcp 用于附近地点搜索的 MCP 服务器,带基于 IP 的位置检测。 社区实现, Python 开发 🐍, 云服务 ☁️, 附近地点搜索。
KyrieTangSheng/mcp-server-nationalparks 国家公园服务 API 集成,提供美国国家公园的公园详情、警报、游客中心、露营地和活动的最新信息。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 美国国家公园信息。
louiscklaw/hko-mcp 从香港天文台获取天气信息的基本演示 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 香港天气。
modelcontextprotocol/server-google-maps Google Maps 集成,提供定位服务、路线规划和地点详情。 官方参考, TypeScript 开发 📇, 云服务 ☁️, Google Maps 集成。
NS Travel Information MCP Server 访问荷兰铁路 (NS) 的旅行信息、时刻表和实时更新。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 荷兰铁路信息。
pab1it0/tripadvisor-mcp 使 LLM 能与 Tripadvisor API 交互的 MCP 服务器,支持位置数据、评论和照片。 社区实现, TypeScript/Python 开发 📇🐍, Tripadvisor API 集成。
QGIS MCP 通过 MCP 将 QGIS Desktop 连接到 Claude AI。实现提示辅助的项目创建、图层加载、代码执行等。 社区实现, QGIS 集成。
SaintDoresh/Weather-MCP-ClaudeDesktop 使用 OpenWeatherMap API 提供实时天气数据、预报和历史天气信息的 MCP 工具。 社区实现, Python 开发 🐍, 云服务 ☁️, OpenWeatherMap 天气数据。
SecretiveShell/MCP-timeserver 访问任何时区的本地时间和获取当前本地时间。 (已在“其他”部分列出Time) 社区实现, Python 开发 🐍, 本地运行 🏠, 时间/时区工具。
webcoderz/MCP-Geo 用于 nominatim, ArcGIS, Bing 的地理编码 MCP 服务器。 社区实现, Python 开发 🐍, 本地运行 🏠, 地理编码服务。

🏃 体育与游戏

(让 AI 能够访问体育赛事数据、游戏信息等)

名称 中文介绍 备注
CoderGamester/mcp-unity 用于 Unity3d 游戏引擎集成的 MCP 服务器,用于游戏开发。 社区实现, TypeScript/C# 开发 📇#️⃣, 本地运行 🏠, Unity3D 集成。
Coding-Solo/godot-mcp 用于与 Godot 游戏引擎交互的 MCP 服务器,提供编辑、运行、调试和管理 Godot 项目中场景的工具。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Godot 引擎集成。
kw510/strava-mcp 用于 Strava (体育锻炼追踪应用) 的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Strava API 集成 (另一版本)。
mikechao/balldontlie-mcp 集成 balldontlie API,提供 NBA、NFL 和 MLB 的球员、球队和比赛信息。 社区实现, TypeScript 开发 📇, 体育赛事数据 (balldontlie API)。
pab1ito/chess-mcp 访问 Chess.com 玩家数据、对局记录和其他公共信息,允许 AI 助手搜索和分析国际象棋信息。 社区实现, Python 开发 🐍, 云服务 ☁️, Chess.com 数据。
r-huijts/firstcycling-mcp 通过自然语言访问自行车比赛数据、结果和统计信息。功能包括从 firstcycling.com 检索出发名单、比赛结果和车手信息。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 自行车赛事数据 (firstcycling)。
r-huijts/strava-mcp 连接到 Strava API 的 MCP 服务器,提供通过 LLM 访问 Strava 数据的工具。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Strava API 集成。
rishijatia/fantasy-pl-mcp 用于实时 Fantasy Premier League 数据和分析工具的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Fantasy Premier League (英超梦幻足球)。
sawa-zen/vrchat-mcp 与 VRChat API 交互的 MCP 服务器。可获取好友、世界、虚拟形象等信息。 (已在通讯协作部分列出) 社区实现, TypeScript 开发 📇, 本地运行 🏠, VRChat API 交互。

🏛️ 艺术与文化

(让 AI 能够访问艺术收藏、文化遗产、博物馆数据库等)

名称 中文介绍 备注
djalal/quran-mcp-server 通过官方 REST API v4 与 Quran.com 语料库交互的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 古兰经文本交互。
r-huijts/rijksmuseum-mcp Rijksmuseum API 集成,用于艺术品搜索、详情和收藏。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 荷兰国立博物馆艺术品。
r-huijts/oorlogsbronnen-mcp Oorlogsbronnen (战争来源) API 集成,访问荷兰二战时期 (1940-1945) 的历史记录、照片和文件。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 荷兰二战历史资料。
yuna0x0/anilist-mcp 集成 AniList API 的 MCP 服务器,用于动漫和漫画信息。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 动漫/漫画信息 (AniList)。

🛠️ 其他实用工具与集成

(包括计算器、API 集成、特定平台工具、聚合器、框架辅助等)

名称 中文介绍 备注
AgentRPC AgentRPC 官方集成,跨网络边界连接任何语言的任何函数。 官方实现 (AgentRPC), Go/Python/TS/Rust 开发 🏎️🐍📇🦀, 跨语言函数调用。
APIMatic MCP APIMatic 官方集成,使用 APIMatic 验证 OpenAPI 规范。 官方实现 (APIMatic), C# 开发 #️⃣, OpenAPI 规范验证。
IBM wxflows IBM 官方工具平台,为任何数据源构建、测试和部署工具。 官方实现 (IBM), JavaScript 开发, 通用工具平台。
Langfuse Prompt Management Langfuse 官方集成,用于协作编辑、版本控制、评估和发布提示的开源工具。(已在开发工具部分列出) 官方实现 (Langfuse) 🎖️, Python 开发 🐍, 本地运行 🏠, Prompt 管理。
UnifAI UnifAI 官方集成,使用 UnifAI 网络动态搜索和调用工具。 官方实现 (UnifAI), Go 开发, 动态工具发现与调用。
VeyraX VeyraX 官方集成,单一工具控制 100+ API 集成和 UI 组件。 官方实现 (VeyraX), Go 开发, 大规模 API/UI 控制。
modelcontextprotocol/server-everything 展示 MCP 协议所有功能的 MCP 服务器。 官方参考, TypeScript 开发 📇, 本地运行 🏠, MCP 协议功能演示。
Calculator 使 LLM 能够使用计算器进行精确的数值计算。 社区实现, Python 开发 🐍, 本地运行 🏠, 基础计算器功能。
Time 官方参考实现,提供时间和时区转换能力。 官方参考, TypeScript 开发, 时间/时区工具。
Sequential Thinking 官方参考实现,通过思考序列进行动态和反思性问题解决。 官方参考, TypeScript 开发, 复杂问题解决框架。
OpenAPI AnyApi 使用内置语义搜索与大型 OpenAPI 文档交互,可自定义前缀。 社区实现, Python 开发, 大型 OpenAPI 交互。
OpenAPI Schema 让 LLM 在不增加上下文的情况下探索大型 OpenAPI 模式。 社区实现, TypeScript 开发, 大型 OpenAPI 模式探索。
GraphQL Schema 让 LLM 在不增加上下文的情况下探索大型 GraphQL 模式。 社区实现, TypeScript 开发, 大型 GraphQL 模式探索。
julien040/anyquery 通过 SQL 查询 40+ 应用,并连接 PG/MySQL/SQLite 数据库。本地优先,注重隐私。 社区实现, Go 开发 🏎️, 本地/云端 🏠☁️, 多应用/数据库查询聚合器。
MetaMCP MetaMCP 是统一的中间件 MCP 服务器,通过 GUI 管理您的 MCP 连接。 社区实现, TypeScript 开发 📇, 云端/本地 ☁️🏠, 跨平台 🍎🪟🐧, MCP 连接管理 GUI。
OpenMCP 10 秒内将 Web API 转换为 MCP 服务器,并将其添加到开源注册表 open-mcp.org 社区实现, TypeScript 开发 📇, 本地运行 🏠, 跨平台 🍎🪟🐧, Web API 转 MCP 服务器。
VeriTeknik/pluggedin-mcp-proxy 将多个 MCP 服务器组合到单个接口的综合代理服务器,具有广泛可见性功能 (工具/提示/资源/模板发现管理,调试平台)。 社区实现, TypeScript 开发 📇, 本地运行 🏠, MCP 代理与管理。
AbdelStark/bitcoin-mcp 使 AI 模型能与比特币交互的 MCP 服务器 (生成密钥/验证地址/解码交易/查询区块链等)。 社区实现, 比特币交互 ₿.
amidabuddha/unichat-mcp-server 通过工具或预定义提示使用 MCP 协议向 OpenAI, MistralAI, Anthropic, xAI, Google AI 或 DeepSeek 发送请求。 社区实现, Python/TypeScript 开发 🐍📇, 云服务 ☁️, 多 LLM API 调用。
anaisbetts/mcp-installer 为您安装其他 MCP 服务器的 MCP 服务器。 社区实现, Python 开发 🐍, 本地运行 🏠, MCP 服务器安装器。
andybrandt/mcp-simple-openai-assistant 与 OpenAI Assistants 对话的 MCP (Claude 可以使用任何 GPT 模型作为其助手)。 社区实现, Python 开发 🐍, 云服务 ☁️, 调用 OpenAI Assistants。
andybrandt/mcp-simple-timeserver 允许检查客户端机器本地时间或从 NTP 服务器获取当前 UTC 时间的 MCP 服务器。 社区实现, Python 开发 🐍, 本地/云端 🏠☁️, 时间获取 (本地/NTP)。
automation-ai-labs/mcp-link 无缝集成任何带有 OpenAPI Schema 的 API 与 AI Agents。 社区实现, Go 开发 🏎️, 本地运行 🏠, OpenAPI API 集成。
baba786/phabricator-mcp-server 与 Phabricator API 交互。 社区实现, Python 开发 🐍, 云服务 ☁️, Phabricator 集成。
billster45/mcp-chatgpt-responses 让 Claude 与 ChatGPT 对话并使用其网页搜索能力的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Claude 调用 ChatGPT (含搜索)。
blurrah/mcp-graphql 允许 AI 查询 GraphQL 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, GraphQL 查询。
chrishayuk/mcp-cli 用于测试 MCP 服务器的另一个 CLI 工具。 社区实现, Python 开发 🐍, 本地运行 🏠, MCP 测试 CLI。
evalstate/mcp-hfspace 直接从 Claude 使用 HuggingFace Spaces。使用开源图像生成、聊天、视觉任务等。支持图像、音频和文本上传/下载。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Hugging Face Spaces 调用。
future-audiences/wikimedia-enterprise-model-context-protocol Wikipedia 文章查找 API。 社区实现 (Wikimedia), Python 开发 🐍, 云服务 ☁️, Wikipedia 文章查找。
gotoolkits/DifyWorkflow 用于查询和执行 Dify 工作流的工具。 社区实现, Go 开发 🏎️, 云服务 ☁️, Dify 工作流执行。
jagan-shanmugam/climatiq-mcp-server 用于访问 Climatiq API 计算碳排放的 MCP 服务器。使 AI 助手能执行实时碳计算并提供气候影响见解。 社区实现, Python 开发 🐍, 本地运行 🏠, 碳排放计算 (Climatiq API)。
joshuarileydev/mac-apps-launcher-mcp-server 在 macOS 上列出和启动应用程序的 MCP 服务器。 社区实现, TypeScript 开发 📇, 本地运行 🏠, macOS 应用启动器 🍎。
kenliao94/mcp-server-rabbitmq 启用与 RabbitMQ 的交互(管理操作、消息入队/出队)。 社区实现, Python 开发 🐍, 本地运行 🏠, RabbitMQ 交互。
kukapay/whattimeisit-mcp 精确告知当前时间的轻量级 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, 时间工具。
kukapay/whereami-mcp 基于当前 IP 精确告知您所在位置的轻量级 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, IP 定位。
kukapay/whoami-mcp 精确告知您是谁的轻量级 MCP 服务器。(可能指用户信息?) 社区实现, Python 开发 🐍, 本地运行 🏠, 用户信息(?)。
lamemind/mcp-server-multiverse 中间件服务器,使同一 MCP 服务器的多个隔离实例能以独特的命名空间和配置独立共存。 社区实现, TypeScript 开发 📇, 本地运行 🏠, MCP 服务器多实例管理。
lightconetech/mcp-gateway MCP SSE 服务器的网关演示。 社区实现, TypeScript 开发 📇, MCP SSE 网关示例。
magarcia/mcp-server-giphy 通过 Giphy API 从 Giphy 的庞大库中搜索和检索 GIF。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Giphy GIF 搜索。
marcelmarais/Spotify 控制 Spotify 播放和管理播放列表。 社区实现, TypeScript 开发 📇, 本地运行 🏠, Spotify 控制。
mcp-server-jfx 在 JavaFX 画布上绘图。 社区实现 (Quarkiverse), Java 开发 ☕, 本地运行 🏠, JavaFX 绘图。
mediar-ai/screenpipe 本地优先系统,捕获屏幕/音频并带时间戳索引,SQL/嵌入存储,语义搜索,LLM 历史分析,事件触发动作。通过 NextJS 插件生态系统构建上下文感知 AI 代理。 官方实现 (mediar.ai) 🎖️, Rust 开发 🦀, 本地运行 🏠, macOS 🍎, 屏幕/音频捕获与分析 RAG。
mrexodia/user-feedback-mcp 简单的 MCP 服务器,在 Cline 和 Cursor 等工具中启用人机回圈工作流。 社区实现, Python 开发 🐍, 本地运行 🏠, 人机回圈反馈。
mrjoshuak/godoc-mcp Token 高效的 Go 文档服务器,为 AI 助手提供对包文档和类型的智能访问,无需读取整个源文件。 社区实现, Go 开发 🏎️, 本地运行 🏠, Go 文档智能访问。
mzxrai/mcp-openai 与 OpenAI 最智能的模型聊天。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 调用 OpenAI 模型。
NakaokaRei/swift-mcp-gui 可以执行键盘输入和鼠标移动等命令的 MCP 服务器。 社区实现, 本地运行 🏠, macOS 🍎, GUI 自动化 (Swift)。
nguyenvanduocit/all-in-one-model-context-protocol 面向开发者的有用工具集合,几乎包含工程师所需的一切:Confluence, Jira, Youtube, 运行脚本, 知识库 RAG, Fetch URL, 管理 Youtube 频道, 邮件, 日历, Gitlab。 社区实现, Go 开发 🏎️, 本地运行 🏠, 开发者工具集。
NON906/omniparser-autogui-mcp 屏幕 GUI 的自动操作。 社区实现, Python 开发 🐍, GUI 自动化。
Open Strategy Partners Marketing Tools Open Strategy Partners 的一套营销工具,包括写作风格、编辑规范和产品营销价值图创建。 社区实现, Python 开发 🐍, 本地运行 🏠, 营销工具套件。
paulotaylor/voyp-mcp VOYP - Voice Over Your Phone MCP 服务器,用于拨打电话。 社区实现, TypeScript 开发 📇, 电话拨打。
pierrebrunelle/mcp-server-openai 直接从 Claude 使用 MCP 协议查询 OpenAI 模型。 社区实现, Python 开发 🐍, 云服务 ☁️, Claude 调用 OpenAI。
pskill9/hn-server 解析 news.ycombinator.com (Hacker News) 的 HTML 内容,并为不同类型的故事提供结构化数据。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Hacker News 内容解析。
pskill9/website-downloader 使用 wget 下载整个网站的 MCP 服务器。保留网站结构并将链接转换为本地工作。 社区实现, Go 开发 🚀, 网站下载器 (wget)。
PV-Bhat/vibe-check-mcp-server 通过调用 "Vibe-check" Agent 来确保用户对齐,防止级联错误和范围蔓延的 MCP 服务器。 社区实现, TypeScript 开发 📇, 云服务 ☁️, Agent 对齐检查。
pwh-pwh/cal-mcp 用于数学表达式计算的 MCP 服务器。 社区实现, 数学计算。
pyroprompts/any-chat-completions-mcp 与任何其他 OpenAI SDK 兼容的聊天完成 API 聊天,如 Perplexity, Groq, xAI 等。 社区实现, 任意 OpenAI 兼容 API 调用。
reeeeemo/ancestry-mcp 允许 AI 读取 .ged 文件和遗传数据。 社区实现, Python 开发 🐍, 本地运行 🏠, 家族史/遗传数据读取 (.ged)。
rusiaaman/wcgw 自主 Shell 执行、计算机控制和编码代理 (Mac)。 社区实现, Python 开发 🐍, 本地运行 🏠, macOS 🍎, 自主控制/编码代理。
SecretiveShell/MCP-wolfram-alpha 用于查询 Wolfram Alpha API 的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Wolfram Alpha 查询。
Seym0n/tiktok-mcp 与 TikTok 视频交互。 社区实现, TypeScript 开发 📇, 云服务 ☁️, TikTok 交互。
tomekkorbak/oura-mcp-server 用于 Oura (睡眠追踪应用) 的 MCP 服务器。 社区实现, Python 开发 🐍, 云服务 ☁️, Oura 睡眠数据。
wanaku-ai/wanaku Wanaku MCP 路由器是基于 SSE 的 MCP 服务器,提供可扩展的路由引擎,允许将企业系统与 AI Agents 集成。 官方实现 (Wanaku AI), 云端/本地 🏠☁️, MCP 路由引擎。
wong2/mcp-cli 用于测试 MCP 服务器的 CLI 工具 (另一版本)。 社区实现, TypeScript 开发 📇, 本地运行 🏠, MCP 测试 CLI (TS)。
ws-mcp 用 WebSocket 包装 MCP 服务器 (用于 kitbitz)。 社区实现, WebSocket 包装器。
ZeparHyfar/mcp-datetime 提供各种格式的日期和时间功能的 MCP 服务器。 社区实现, 日期时间工具。
zueai/mcp-manager 用于安装和管理 Claude Desktop App 的 MCP 服务器的简单 Web UI。 社区实现, TypeScript 开发 📇, 云服务 ☁️, MCP 服务器管理 Web UI。
HenryHaoson/Yuque-MCP-Server 用于集成语雀 API 的 MCP 服务器,允许 AI 模型管理文档、与知识库交互、搜索内容和访问语雀平台的分析数据。 社区实现, TypeScript 开发 📇, 云服务 ☁️, 语雀 API 集成。
ttommyth/interactive-mcp 通过在 MCP 循环中直接添加本地用户提示和聊天功能,实现交互式 LLM 工作流。 社区实现, TypeScript 开发 📇, 本地运行 🏠, 人机交互工作流。
Whois MCP 对域名、IP、ASN 和 TLD 执行 whois 查询。 社区实现, Python 开发, Whois 查询。

日志

Java SDK
MCP Java SDK发布
2025-02-14

我们很高兴地宣布,由 VMware Tanzu 的 Spring AI 开发的 Java SDK 现在是 MCP 的官方 Java SDK。 这与我们现有的 Kotlin SDK 一起,构成了我们不断增长的支持语言列表。 Spring AI 团队将维护该 SDK,使其成为模型上下文协议(MCP)组织不可或缺的一部分。 我们很高兴欢迎他们加入 MCP 社区!

Python SDK
Python SDK 1.2.1发布
2025-01-27

MCP Python SDK 的 1.2.1 版本已发布,提供了重要的稳定性改进和错误修复。