跳转到内容

MCP 协议详解:agent 接外部世界的标准插头

📍 Agent 通用知识 3/X · 上一篇:← 给 Agent 配齐 6 类 API 工具

中心一个 USB-C 接口形状,两侧用曲线连接到多个设备图标(笔记本/数据库/齿轮/云)

之前 03 区 MCP(外部服务连接器) 那篇,讲的是「Claude Code 用户怎么装一个 MCP」—— 从应用层视角。

这一篇换协议设计者视角讲:

  • MCP 协议本身长啥样
  • 为啥需要它(不能每个工具自己写 Tool Use 吗?)
  • 协议三层架构
  • 跨工具支持现状(Claude / Cursor / Cline / VS Code / Trae / 扣子 / N8N 都支持)
  • 自己写一个 MCP server(Python 10 行)
  • MCP Registry:已经 2000+ 个 server 的生态

适合做 agent 产品 / 想自己搭 MCP server / 想理解为啥 2025 年所有 AI 工具突然都支持 MCP 的人。


MCP = AI agent 圈的 USB-C

它把「LLM 怎么调外部工具」这件事,从「每家自己一套」改成了「一套标准,大家都用」。

结果就是:你写一个 MCP server,Claude Code / Cursor / Trae 全都能直接接,不用为每家单独适配


时间线:从 Anthropic 内部协议到 Linux Foundation 标准

Section titled “时间线:从 Anthropic 内部协议到 Linux Foundation 标准”
时间事件
2024-11Anthropic 发布 MCP,作为 Claude Desktop 的工具接入协议
2025-03OpenAI、Google 等大厂表态支持
2025-06spec 增加 OAuth Resource Server 规范,解决 token 安全
2025-09MCP Registry 上线,几个月长到近 2000 个 server
2025-112025-11-25 spec 发布 —— 至今最大更新:async tasks / sampling / elicitation / server-side agent loops
2026-01SEP-1865 / MCP Apps —— server 能直接返回 React 组件等交互 UI
2026 至今Linux Foundation 接管,成为完全中立的开源标准

到 2026 年 5 月,MCP 已经是事实上的 AI agent 工具协议,不再属于任何一家公司。


为啥需要 MCP?(不能用各家 Tool Use 吗?)

Section titled “为啥需要 MCP?(不能用各家 Tool Use 吗?)”

左半 3 个 app 各自用奇形怪状的接头插进模型(乱糟糟),右半 3 个 app 用同一个标准化接头干净地插进模型

你做了一个 GitHub 操作工具,想给 LLM 用。有 MCP 之前,你要这样做:

  • 为 Claude 写一份 Anthropic Tool Use JSON
  • 为 OpenAI 写一份 OpenAI Function Calling JSON
  • 为 Gemini 写一份 Google Function Calling
  • 为 Cursor 写一个 Cursor 插件
  • 为 VS Code 写一个 VS Code extension
  • 为 Slack bot 写一个 Slack app

每家协议不一样,工具被绑死在用它的 app 上

你写一个 MCP server,所有支持 MCP 的客户端直接能用:

  • Claude Desktop / Claude Code
  • Cursor / Cline / Continue
  • VS Code(GitHub Copilot agent mode)
  • Trae
  • 扣子 / 文心 / 通义
  • N8N / Zapier 等工作流平台
  • 任何 OpenAI API 兼容应用(通过 MCP-Bridge)

截至 2026 年初,有 572 个客户端实现了 MCP(PulseMCP 统计)。

类比:USB 之前,每个外设要自己一套接口(PS/2 鼠标、串口打印机、专用键盘接口);USB 之后,鼠标/键盘/U 盘/麦克风都用 USB,各家电脑都能插。


三层方块堆叠(Client)/中层带代码的纸卷(Protocol)/底层工具图标(Server),箭头连接

MCP 把世界分成三件东西:

跟用户对话的应用。例子:

  • Claude Desktop / Claude Code(Anthropic)
  • Cursor / Trae(IDE)
  • Cline / Continue(VS Code 扩展)
  • Claude Web Chat(咱家自建)

Client 的工作:接用户输入 → 调 LLM → 如果 LLM 想用工具,通过 MCP 协议去问 server

JSON-RPC over stdio(本地)或 HTTP/SSE(远程)。

简化版例子(client 调 server):

{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "create_issue",
"arguments": {
"title": "Bug",
"body": "页面崩了"
}
},
"id": 1
}

Server 返回:

{
"jsonrpc": "2.0",
"result": {
"content": [{"type": "text", "text": "Issue #42 已创建"}]
},
"id": 1
}

任何符合这个协议的双方都能通信,跟用什么编程语言无关。

真正干活的进程。一个 server 提供:

  • Tools(工具):LLM 能调的函数,如 create_issue / query_db
  • Resources(资源):LLM 能读的数据,如文件、数据库记录
  • Prompts(提示词模板):预定义的 prompt,LLM 选着用
  • Sampling(2025-11 新增):server 主动让 client 帮它跑一次 LLM 调用(用在多步推理)

网络图(笔记本/手机/IDE) + 下方三个服务图标(GitHub/数据库/聊天气泡),通过中心 hub 互连

到 2026 年 5 月,几乎所有主流 AI 工具都接入了 MCP:

客户端平台MCP 支持
Claude DesktopAnthropic 桌面✅ 原生(第一个支持的)
Claude CodeAnthropic CLI✅ 原生
CursorAI IDE✅ 原生
Trae字节 AI IDE✅ 原生(国内版也支持)
ClineVS Code 扩展✅ 原生
ContinueVS Code 扩展✅ 原生
VS Code GitHub CopilotMicrosoft✅ 2025-08 起原生
OpenAI API 兼容应用OpenAI / 国内代理✅ 通过 MCP-Bridge
N8N / Zapier工作流平台✅ 原生节点
扣子 Coze字节 Agent 平台✅ 原生

这意味着:你写一个 MCP server,就开放给上面所有平台用


三步面板 → 中间出现工具盒子 → 右侧机器人收到工具开心微笑

最快的方式 —— 用 FastMCP(官方 Python SDK 里的高层框架):

Terminal window
pip install mcp

写一个 my_server.py:

from mcp.server.fastmcp import FastMCP
mcp = FastMCP("我的服务器")
@mcp.tool()
def add(a: int, b: int) -> int:
"""把两个数加起来"""
return a + b
@mcp.tool()
def get_weather(city: str) -> str:
"""查询某个城市当前天气"""
# 这里可以调真实天气 API
return f"{city} 今天 18 度,晴"
if __name__ == "__main__":
mcp.run()

就这样,完事

  • @mcp.tool() 装饰器:自动从函数签名生成工具 schema(参数类型、必填项、描述)
  • 不用手写 JSON Schema
  • 不用手写 JSON-RPC handler

跑起来:

Terminal window
python my_server.py

然后在 Claude Code 里接它(在 ~/.claude/mcp.json 加一行):

{
"mcpServers": {
"my-server": {
"command": "python",
"args": ["/path/to/my_server.py"]
}
}
}

重启 Claude Code,你的两个工具(add / get_weather)就出现了,LLM 能自己调。

💡 TypeScript / Go / Java / C# / Rust 等也都有官方 SDK,跟 Python 的 FastMCP 概念一样。


市场货架式布局,多个工具箱标着不同图标(齿轮/链子/云/数据库/搜索),小机器人在逛

MCP Registry 是官方维护的 server 目录,2025-09 上线,到 2026 年初已经有近 2000 个 server

主要分类(部分示例):

类别示例 server
代码 / 开发github / gitlab / npm / brave-search
数据库postgres / mysql / sqlite / redis
聊天 / 通信slack / discord / telegram / gmail
云服务aws / cloudflare / vercel
文件 / 内容filesystem / fetch / google-drive
浏览器自动化playwright / puppeteer / browserbase
媒体youtube-dl / spotify / imagemagick
知识库obsidian / notion / linear

装一个 MCP 流程:

  1. PulseMCP 或 modelcontextprotocol.io/servers 浏览
  2. 看到喜欢的,复制配置 snippet
  3. 粘到 ~/.claude/mcp.json(或 Claude Desktop 配置)
  4. 重启 Claude Code → 工具立刻可用

这跟「Chrome 插件市场」一个体验


维度Tool Use APIMCP
绑定跟具体 LLM 厂商绑死(Anthropic / OpenAI 各一套)跨 LLM、跨客户端通用
协议层通过 LLM API 请求直接传独立进程通过 JSON-RPC
复用工具被绑在你的应用里server 装一次,所有客户端都能用
进程模型工具跟应用同进程server 是独立进程,可以是 Python / Node / Go 写的
何时用单 app、内部工具、跟特定 LLM 深度集成多 app 共用、第三方分享、长期生态

实操建议:

  • 快速原型:直接 Tool Use(少一层)
  • 正式产品 / 跨工具:走 MCP(标准化、好维护)
  • 跨团队共享:必须 MCP(每个团队装一次配置)

2025-11 大更新:async tasks / sampling / elicitation

Section titled “2025-11 大更新:async tasks / sampling / elicitation”

MCP 在 2025 年底有一波架构升级,让 server 能干更复杂的事:

之前:调用 → 立即返回。 现在:调用 → 拿一个 task ID → 后续轮询结果

适用场景:长任务(比如「跑测试套件」「批量处理 1000 个文件」)—— 不用占住 LLM 一直等。

反向调用:server 主动让 client 帮它跑一次 LLM 推理。

适用:server 里需要 LLM 推理(比如「server 拿到一段日志,想让 LLM 帮忙总结」)。省去 server 自己接 LLM API + key 的麻烦

server 中途反问用户:「我需要更多信息,请提供 X」,client 弹窗让用户填。

适用:多步任务(订机票:「请确认日期 / 座位 / 餐食」)。

server 内部可以自己跑 ReAct 循环,client 不用管中间步骤。

适用:复杂 agent(server 自己是一个小 agent,跑完了再回主 client)。


MCP 干了三件事:

  1. 统一协议:LLM 调工具不再各家一套
  2. 生态分离:server 是独立进程 + 独立生命周期,跟 client 解耦
  3. 跨工具共用:写一次 server,所有 MCP-aware client 都能用

对个人开发者:写个 MCP server,可能比写 SaaS 起步更快。 对 agent 产品:不接 MCP 等于在 USB 时代还在用串口。 对企业:internal MCP servers 是「新 internal API gateway」,所有内部 LLM 应用共用。


评论

不记名、不需要注册——不要邮箱,不要手机号,不要任何身份信息,填个昵称就能留言。放心说。

  • 加载中 …