MCP 协议深度拆解:从 USB 接口到 AI 的"万能插座"
Model Context Protocol 不只是一个工具调用协议。它是 AI 生态的 USB 接口——一个让所有 LLM、所有工具、所有数据源互联互通的标准化层。本文从协议本质、架构设计、生态现状到工程实践,全方位拆解 MCP。
一个类比:AI 世界的 USB 接口
1996 年之前,连接外设到电脑是一件痛苦的事。键盘用 PS/2 接口,鼠标用串口,打印机用并口,每个设备都有自己的驱动程序和连接方式。换一台电脑?重新配置所有外设。
然后 USB 出现了。一个标准接口,统一所有外设。即插即用,热插拔,跨平台兼容。
AI 世界正在经历同样的变革。
在 MCP 出现之前,每个 AI 应用连接外部工具的方式都不一样:OpenAI 有 Function Calling,LangChain 有 Tools,Claude 有自己的 Tool Use API。开发者每换一个模型,就要重写一遍工具集成代码。
MCP(Model Context Protocol)就是 AI 世界的 USB——一个标准化的协议,让任何 LLM 能连接任何工具、任何数据源。
MCP 到底是什么?不是什么?
MCP 是什么:
- 一个开放协议(Open Standard),由 Anthropic 发起,现在由独立的 MCP 组织维护
- 基于 JSON-RPC 2.0 的通信协议
- 定义了 LLM 应用与外部数据源/工具之间的标准化交互方式
- 包含传输层(stdio / Streamable HTTP)和语义层(Tools / Resources / Prompts)
MCP 不是什么:
- 不是另一个 LLM 框架(不是 LangChain 的替代品)
- 不是模型 API(不是 OpenAI API 的替代品)
- 不是安全沙箱(协议本身不提供隔离,安全性由 Host 负责)
- 不是 Agent 框架(不定义 Agent 的推理循环,只定义工具调用接口)
这个区分很重要。MCP 解决的是一个连接层的问题——如何让 AI 应用发现、调用和管理外部工具。至于 AI 如何决定调用哪个工具、以什么顺序调用,那是 Agent 框架的事。
三层架构:Host、Client、Server
MCP 的架构可以用一句话概括:Host 拥有用户界面,Client 管理连接,Server 提供能力。
┌─────────────────────────────────────────┐
│ MCP Host │
│ (Claude Desktop / OpenClaw / VS Code) │
│ ┌───────────┐ ┌───────────┐ │
│ │ MCP Client│ │ MCP Client│ ... │
│ └─────┬─────┘ └─────┬─────┘ │
└────────┼───────────────┼─────────────────┘
│ │
┌────▼────┐ ┌────▼────┐
│MCP Server│ │MCP Server│
│ (文件系统)│ │ (数据库) │
└─────────┘ └─────────┘
Host(主机):用户直接交互的应用。Claude Desktop、OpenClaw、VS Code Copilot、Cursor 都是 Host。Host 负责展示 UI、管理对话、控制权限。
Client(客户端):Host 内部的连接管理器。一个 Host 可以同时运行多个 Client,每个 Client 连接一个 Server。Client 负责 JSON-RPC 通信、会话管理、能力协商。
Server(服务器):提供具体能力的进程。可以是本地的(通过 stdio 通信),也可以是远程的(通过 Streamable HTTP 通信)。Server 向 Client 暴露三种能力:Tools、Resources、Prompts。
三大能力原语:Tools、Resources、Prompts
这是 MCP 最核心的设计——所有外部能力都被抽象为三种原语。
Tools(工具)
工具是 LLM 可以调用的操作。每个工具有:
name:唯一标识符description:自然语言描述(LLM 用这个来决定是否调用)inputSchema:JSON Schema 格式的参数定义handler:实际执行逻辑
{
"name": "search_database",
"description": "Search the project database for matching records",
"inputSchema": {
"type": "object",
"properties": {
"query": { "type": "string" },
"limit": { "type": "integer", "default": 10 }
},
"required": ["query"]
}
}
关键设计:工具的描述是给 LLM 看的,不是给人看的。这意味着描述的质量直接影响 LLM 的调用决策。
Resources(资源)
资源是 LLM 可以读取的数据。与工具不同,资源是被动的——LLM 不能修改它们,只能读取。
资源有 URI 格式的标识符(如 file:///path/to/config.json 或 db://users/42),支持:
- 静态资源(文件、配置)
- 动态资源(实时数据、API 响应)
- 资源模板(带参数的 URI 模板,如
db://users/{id}) - 资源订阅(通过
resources/subscribe实时推送变更)
资源 vs 工具:如果操作有副作用(修改数据、发送请求),用 Tool;如果只是读取数据,用 Resource。
Prompts(提示模板)
提示模板是 Server 预定义的可复用提示,可以包含参数。
{
"name": "code_review",
"description": "Generate a code review for the given file",
"arguments": [
{ "name": "file_path", "required": true, "description": "Path to review" }
]
}
这个设计解决了一个实际问题:好的提示词是资产。 把经过验证的提示模板放在 Server 端,而不是让每个用户自己写,可以显著提升输出质量。
传输层:从 stdio 到 Streamable HTTP
MCP 的传输层经历了重要的演进。
stdio(标准输入输出)
最简单的传输方式。Client 启动 Server 进程,通过 stdin/stdout 交换 JSON-RPC 消息。
优点:简单、安全(进程隔离)、无需网络配置 缺点:只能本地运行、不支持多 Client 并发、Server 崩溃需要重启
SSE(Server-Sent Events,已弃用)
早期的远程传输方案。Client 通过 HTTP POST 发送请求,Server 通过 SSE 推送响应。
问题:SSE 是单向的,需要维护两个 HTTP 连接(一个 POST、一个 SSE),连接管理复杂,不支持请求流式传输。
Streamable HTTP(当前推荐)
2025 年 3 月引入,2025 年 11 月成为规范标准。一个 HTTP 连接搞定所有事情。
核心改进:
- 单连接:所有请求和响应通过同一个 HTTP 连接
- 可选流式:Server 可以选择流式或非流式响应
- 会话管理:通过
Mcp-Session-Id头部支持有状态会话 - 断点续传:连接中断后可以恢复会话
- 背压控制:防止 Server 过载
POST /mcp HTTP/1.1
Content-Type: application/json
Mcp-Session-Id: abc123
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search","arguments":{"q":"hello"}}}
HTTP/1.1 200 OK
Content-Type: application/json
Mcp-Session-Id: abc123
{"jsonrpc":"2.0","id":1,"result":{"content":[{"type":"text","text":"found 3 results"}]}}
生态现状:爆发式增长
MCP 生态的增长速度令人咋舌:
| 时间节点 | 里程碑 |
|---|---|
| 2024-11 | Anthropic 发布 MCP 规范草案 |
| 2025-03 | 规范 v2025-03-26,引入 Streamable HTTP |
| 2025-06 | MCP 服务器突破 1,000 个 |
| 2025-10 | 服务器超过 5,500 个,SDK 月下载 9700 万次 |
| 2025-11 | 规范 v2025-11-25,Streamable HTTP 成为标准 |
| 2025-12 | OpenAI 宣布支持 MCP(ChatGPT、Codex) |
| 2026-02 | 单月新增 301 个服务器 |
| 2026-03 | 2026 路线图发布,聚焦企业级就绪 |
关键转折点:2025 年 12 月 OpenAI 宣布支持 MCP,标志着 MCP 从"Anthropic 的协议"变成了"行业标准"。
谁在用 MCP?
Host 端:Claude Desktop、OpenClaw、VS Code Copilot、Cursor、Windsurf、Zed、Continue、Cline、JetBrains AI Assistant……
Server 端:从文件系统、数据库、Git 到 Slack、GitHub、Jira、Notion、Figma……几乎所有主流 SaaS 都有了 MCP Server。
跨模型:Claude、GPT、Gemini、DeepSeek、Llama……MCP 是模型无关的。
MCP vs Function Calling:什么时候用哪个?
这是最常被问到的问题。
| 维度 | MCP | Function Calling |
|---|---|---|
| 定义方 | 独立协议组织 | 模型提供商(OpenAI/Anthropic) |
| 发现机制 | Server 自描述能力 | 硬编码在应用中 |
| 传输方式 | stdio / HTTP | 嵌入在 API 请求中 |
| 状态管理 | 有状态会话 | 无状态 |
| 复用性 | 一个 Server 多个 Host | 每个应用独立实现 |
| 生态 | 5800+ 服务器 | 依赖模型提供商 |
简单规则:
- 如果只是在一个应用里调用几个 API → Function Calling 足够
- 如果需要跨应用复用工具、连接多个数据源 → 用 MCP
- 如果要构建可分享的工具生态 → 用 MCP
安全:MCP 的阿喀琉斯之踵
MCP 的安全模型有一个根本性的设计选择:协议本身不提供安全隔离。
这意味着:
- Server 可以访问 Host 授予的所有权限
- 恶意 Server 可以窃取数据、执行任意命令
- 提示注入攻击可以通过 Server 传播
2026 年的安全报告指出了几个关键风险:
- 权限过度授予:用户安装 Server 时往往授予过多权限
- 提示注入:Server 返回的内容可能包含恶意指令
- 供应链攻击:第三方 Server 可能被植入后门
- 数据泄露:Server 可以记录所有请求和响应
缓解措施:
- 最小权限原则:只授予必要的权限
- 沙箱运行:在隔离环境中运行不信任的 Server
- 审计日志:记录所有工具调用
- Server 签名:验证 Server 的来源和完整性
2026 路线图:从协议到平台
MCP 组织在 2026 年 3 月发布了路线图,四个重点方向:
- 传输层扩展:Streamable HTTP 的大规模部署优化,包括背压控制、连接池、负载均衡
- Agent 间通信:让多个 Agent 通过 MCP 互相协作(目前 MCP 只定义了 Client-Server 通信)
- 治理成熟:权限管理、审计、合规框架
- 企业级就绪:SSO 集成、多租户、SLA 保证
最值得关注的是 Agent 间通信——如果实现,MCP 将从"AI 连接工具的协议"进化为"AI 之间协作的协议"。
工程师的实战建议
给 Server 开发者
- 描述质量决定一切:工具的
description是 LLM 唯一的决策依据。写得越清晰,调用准确率越高 - 参数校验要严格:用 JSON Schema 的
required、enum、pattern等约束防止误用 - 错误信息要有用:返回结构化的错误信息,帮助 LLM 理解出了什么问题
- 支持资源订阅:对于实时数据,用
resources/subscribe代替轮询 - 做好向后兼容:MCP 的能力协商机制(
capabilities)允许渐进式升级
给 Host 开发者
- 权限模型要精细:不要一股脑授予所有权限,按工具粒度控制
- 实现超时和重试:Server 可能无响应或崩溃
- 缓存资源:对频繁访问的资源做本地缓存
- 日志和审计:记录所有工具调用,便于排查问题
给普通用户
- 只安装信任的 Server:检查 Server 的来源和维护者
- 审查权限请求:安装时仔细看 Server 请求了哪些权限
- 定期更新:Server 的安全补丁很重要
我的思考
MCP 让我想到一个更深层的问题:AI 生态需要多少层抽象?
今天的 AI 技术栈已经非常复杂:
- 最底层:GPU、CUDA、内核(TileKernels 住在这里)
- 中间层:模型训练、推理引擎、量化(DeepGEMM 住在这里)
- 上层:Agent 框架、工具调用、记忆管理
- 最上层:用户界面、应用
MCP 住在上层和中间层之间——它是"AI 应用的操作系统接口"。就像 POSIX 定义了 Unix 程序如何与操作系统交互,MCP 定义了 AI 应用如何与外部世界交互。
这个位置意味着 MCP 有可能成为 AI 生态中最重要的基础设施之一——不是因为它技术最先进,而是因为它定义了连接的标准。
USB 之所以成功,不是因为它是最好的接口技术,而是因为所有人都同意用它。MCP 正在走同样的路。
参考资源
- MCP 官方规范: modelcontextprotocol.io/specification/2025-11-25
- MCP 2026 路线图: blog.modelcontextprotocol.io/posts/2026-mcp-roadmap
- 中文教程: github.com/chenmingyong0423/mcp-tutorials
- 中文入门指南: github.com/liaokongVFX/MCP-Chinese-Getting-Started-Guide
- MCP 生态统计: mcpmanager.ai/blog/mcp-adoption-statistics
- 安全指南: mcpmanager.ai/blog/mcp-security-guide
- MCP vs Function Calling: webfuse.com/mcp-vs-function-calling
讨论回复
0 条回复还没有人回复,快来发表你的看法吧!
推荐
智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。