MCP 协议详解:agent 接外部世界的标准插头
📍 Agent 通用知识 3/X · 上一篇:← 给 Agent 配齐 6 类 API 工具

这一篇换个视角
Section titled “这一篇换个视角”之前 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-11 | Anthropic 发布 MCP,作为 Claude Desktop 的工具接入协议 |
| 2025-03 | OpenAI、Google 等大厂表态支持 |
| 2025-06 | spec 增加 OAuth Resource Server 规范,解决 token 安全 |
| 2025-09 | MCP Registry 上线,几个月长到近 2000 个 server |
| 2025-11 | 2025-11-25 spec 发布 —— 至今最大更新:async tasks / sampling / elicitation / server-side agent loops |
| 2026-01 | SEP-1865 / MCP Apps —— server 能直接返回 React 组件等交互 UI |
| 2026 至今 | Linux Foundation 接管,成为完全中立的开源标准 |
到 2026 年 5 月,MCP 已经是事实上的 AI agent 工具协议,不再属于任何一家公司。
为啥需要 MCP?(不能用各家 Tool Use 吗?)
Section titled “为啥需要 MCP?(不能用各家 Tool Use 吗?)”
没 MCP 的世界
Section titled “没 MCP 的世界”你做了一个 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 的世界
Section titled “有 MCP 的世界”你写一个 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,各家电脑都能插。
协议三层架构
Section titled “协议三层架构”
MCP 把世界分成三件东西:
1. Client(客户端)
Section titled “1. Client(客户端)”跟用户对话的应用。例子:
- Claude Desktop / Claude Code(Anthropic)
- Cursor / Trae(IDE)
- Cline / Continue(VS Code 扩展)
- Claude Web Chat(咱家自建)
Client 的工作:接用户输入 → 调 LLM → 如果 LLM 想用工具,通过 MCP 协议去问 server。
2. Protocol(协议层)
Section titled “2. Protocol(协议层)”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}任何符合这个协议的双方都能通信,跟用什么编程语言无关。
3. Server(服务端)
Section titled “3. Server(服务端)”真正干活的进程。一个 server 提供:
- Tools(工具):LLM 能调的函数,如
create_issue/query_db - Resources(资源):LLM 能读的数据,如文件、数据库记录
- Prompts(提示词模板):预定义的 prompt,LLM 选着用
- Sampling(2025-11 新增):server 主动让 client 帮它跑一次 LLM 调用(用在多步推理)
跨工具支持现状
Section titled “跨工具支持现状”
到 2026 年 5 月,几乎所有主流 AI 工具都接入了 MCP:
| 客户端 | 平台 | MCP 支持 |
|---|---|---|
| Claude Desktop | Anthropic 桌面 | ✅ 原生(第一个支持的) |
| Claude Code | Anthropic CLI | ✅ 原生 |
| Cursor | AI IDE | ✅ 原生 |
| Trae | 字节 AI IDE | ✅ 原生(国内版也支持) |
| Cline | VS Code 扩展 | ✅ 原生 |
| Continue | VS Code 扩展 | ✅ 原生 |
| VS Code GitHub Copilot | Microsoft | ✅ 2025-08 起原生 |
| OpenAI API 兼容应用 | OpenAI / 国内代理 | ✅ 通过 MCP-Bridge |
| N8N / Zapier | 工作流平台 | ✅ 原生节点 |
| 扣子 Coze | 字节 Agent 平台 | ✅ 原生 |
这意味着:你写一个 MCP server,就开放给上面所有平台用。
自己写一个 MCP server(Python 10 行)
Section titled “自己写一个 MCP server(Python 10 行)”
最快的方式 —— 用 FastMCP(官方 Python SDK 里的高层框架):
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
跑起来:
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:工具生态
Section titled “MCP Registry:工具生态”
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 流程:
- 上 PulseMCP 或 modelcontextprotocol.io/servers 浏览
- 看到喜欢的,复制配置 snippet
- 粘到
~/.claude/mcp.json(或 Claude Desktop 配置) - 重启 Claude Code → 工具立刻可用
这跟「Chrome 插件市场」一个体验。
MCP vs Tool Use:什么时候用哪个
Section titled “MCP vs Tool Use:什么时候用哪个”| 维度 | Tool Use API | MCP |
|---|---|---|
| 绑定 | 跟具体 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 能干更复杂的事:
Async Tasks(异步任务)
Section titled “Async Tasks(异步任务)”之前:调用 → 立即返回。 现在:调用 → 拿一个 task ID → 后续轮询结果。
适用场景:长任务(比如「跑测试套件」「批量处理 1000 个文件」)—— 不用占住 LLM 一直等。
Sampling(采样)
Section titled “Sampling(采样)”反向调用:server 主动让 client 帮它跑一次 LLM 推理。
适用:server 里需要 LLM 推理(比如「server 拿到一段日志,想让 LLM 帮忙总结」)。省去 server 自己接 LLM API + key 的麻烦。
Elicitation(发问)
Section titled “Elicitation(发问)”server 中途反问用户:「我需要更多信息,请提供 X」,client 弹窗让用户填。
适用:多步任务(订机票:「请确认日期 / 座位 / 餐食」)。
Server-side Agent Loops
Section titled “Server-side Agent Loops”server 内部可以自己跑 ReAct 循环,client 不用管中间步骤。
适用:复杂 agent(server 自己是一个小 agent,跑完了再回主 client)。
MCP 干了三件事:
- 统一协议:LLM 调工具不再各家一套
- 生态分离:server 是独立进程 + 独立生命周期,跟 client 解耦
- 跨工具共用:写一次 server,所有 MCP-aware client 都能用
对个人开发者:写个 MCP server,可能比写 SaaS 起步更快。 对 agent 产品:不接 MCP 等于在 USB 时代还在用串口。 对企业:internal MCP servers 是「新 internal API gateway」,所有内部 LLM 应用共用。
牛学板块导航
Section titled “牛学板块导航”- 上一篇:← 给 Agent 配齐 6 类 API 工具
- 本板块:Agent 通用知识
- 1/X AI agent 是怎么思考的:ReAct 模式
- 2/X 给 Agent 配齐 6 类 API 工具
- 3/X MCP 协议详解(就是这一篇)
- 4/X(规划中)Memory:让 agent 记住你
- 5/X(规划中)多 agent 编排
- 看 Claude Code 用户视角的 MCP → MCP(外部服务连接器):Claude Code 怎么接
- 下一板块:Trae 完整教程 →
评论
不记名、不需要注册——不要邮箱,不要手机号,不要任何身份信息,填个昵称就能留言。放心说。