【AI】MCP 协议深度解析:AI Agent 的「USB-C 时刻」
1. 一个熟悉的困境
如果你做过 AI Agent,下面这段经历大概率不陌生:
- 先为 Claude 写了一套工具定义
- 换到 GPT,发现参数格式要重写
- 再支持一下国内模型,又是一套
- 每个 Agent 框架(LangChain、AutoGen、CrewAI)又各有各的封装
- 想把同一个数据库查询能力复用到三个 Agent 上?复制粘贴吧
工具调用的能力模型各异、集成方式各异、复用性极差,这是 2024 年 AI 应用开发中最典型的「重复造轮子」。
2024 年 11 月,Anthropic 开源了 Model Context Protocol(MCP),试图解决这个问题。业内普遍把它比作「AI 界的 USB-C」:一个统一的接口标准,让任何模型都能连接任何工具或数据源。
2. MCP 是什么
MCP 是一个开放协议,定义了 AI 应用(Client) 与 外部能力提供方(Server) 之间的通信方式。
它基于 JSON-RPC 2.0,支持三种传输方式:
- stdio:通过标准输入输出通信,适合本地进程(如本地文件系统、CLI 工具)
- HTTP + SSE(旧版):通过 HTTP 长连接实现服务端推送
- Streamable HTTP(2025 年新版):更简洁的 HTTP 流式传输,支持无状态部署
一个典型的 MCP 架构包含三个角色:
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ MCP Client │ ◄─────► │ MCP Server │ ◄─────► │ 外部资源 │
│ (AI App) │ JSON │ (Adapter) │ 原生 │ DB/API/FS │
└─────────────┘ RPC └─────────────┘ 协议 └─────────────┘- Host:运行 AI 应用的宿主环境(如 Claude Desktop、IDE 插件)
- Client:Host 内部与单个 Server 建立的连接
- Server:暴露工具、资源、提示词模板的服务
3. MCP 的三大核心原语
MCP 不只是「工具调用」,它定义了三种核心原语,分别对应 Agent 需要的三类能力:
3.1 Tools(工具)
模型可以主动调用的函数。例如「查询数据库」「发送邮件」「创建工单」。
这是最常见也最重要的一类。每个 Tool 都包含名称、描述、参数 JSON Schema,和 Function Calling 的定义很相似,但标准化了发现机制:Client 可以通过 tools/list 动态获取可用工具,而不需要硬编码。
3.2 Resources(资源)
由 Server 提供的只读数据,类似「文件」或「文档」。例如「项目 README」「数据库 Schema」「当前配置文件」。
Resources 与 Tools 的区别在于:Resources 是被动的数据,Tools 是主动的操作。Client 可以列出资源、读取资源,但不需要模型自己发起函数调用。
3.3 Prompts(提示词模板)
Server 可以提供预定义的提示词模板,用于引导用户完成特定任务。例如「代码审查」「生成周报」等。
这个原语在实际落地中用得相对少,但它的价值在于:把最佳实践封装在服务端,让用户开箱即用。
4. 相比 Function Calling 的改进
MCP 并不是要取代 Function Calling,而是在其之上解决「集成与复用」问题。
| 能力 | 原生 Function Calling | MCP |
|---|---|---|
| 工具定义 | 每个模型/框架自己定义 | 统一协议,一次定义到处用 |
| 工具发现 | 硬编码在应用里 | 动态 tools/list |
| 传输方式 | 各家自定 | stdio / HTTP 标准化 |
| 复用性 | 复制粘贴 | 一个 Server 可被多个 Client 使用 |
| 生态 | 各自为战 | 已有官方与社区 Server 生态 |
一个直观的收益是:如果有一个团队维护了「公司内部知识库」的 MCP Server,那么 Claude Desktop、Cursor、自研 Agent 都可以直接接入,而不需要为每个客户端重新实现一遍。
5. 落地时的真实问题
MCP 的理念很清晰,但在实际使用中仍有几个坑需要提前知道。
5.1 工具数量与上下文压力
当 Client 接入十几个 Server,每个 Server 又暴露十几个工具时,工具定义本身就会占用大量上下文。这与「上下文工程」的取舍问题直接相关——不是接入越多越好,而是接入当前任务真正需要的。
社区正在探索的解决方案包括:工具按需加载、分层工具目录、动态筛选等。
5.2 安全边界
MCP Server 拥有访问外部系统的能力。一个配置不当的 Server 可能带来严重的安全风险:
- 本地文件系统 Server 如果配置了过宽的访问路径,可能泄露敏感文件
- 数据库 Server 如果权限过大,可能被恶意提示词诱导执行危险操作
- 第三方 Server 的供应链安全需要审查
原则:最小权限、显式授权、隔离运行。 生产环境不建议直接把高权限 Server 暴露给不可信的 Agent。
5.3 调试与可观测性
MCP 通信是 JSON-RPC,出问题时排查链路比较长。建议:
- 保留完整的请求/响应日志(注意脱敏)
- 使用官方 Inspector 工具调试 Server
- 对工具调用做超时与重试控制
5.4 状态管理
MCP 本身是无状态协议(Streamable HTTP 引入了 session 概念,但整体偏无状态)。对于需要长任务的场景,状态管理仍需应用层自己处理。
6. 小结
MCP 的出现,标志着 AI Agent 的工具生态正在从「野蛮生长」走向「标准化」。它的意义不在于协议本身有多复杂,而在于:
- 降低了集成成本:一次实现,多处复用
- 催生了生态:Server 市场开始出现
- 推动了标准化:其他厂商也在跟进类似的开放协议
当然,标准化的另一面是「标准本身的成熟需要时间」。目前的 MCP 仍在快速演进,安全性、可观测性、性能优化等方面都还有不少空间。
如果你的团队正在构建 Agent 基础设施,现在开始关注 MCP 是一个不错的时机。但也要清楚:协议解决的是连接问题,不解决「该连接什么」的问题。选对工具、控制好上下文,依然是应用层的核心功课。