MCP 协议 (Model Context Protocol)
MCP 是 Anthropic 于 2024 年 11 月开源的 AI 模型与外部工具/数据的标准化连接协议,被称为”AI 的 USB-C”。它解决了从 M×N 碎片化集成到 M+N 标准化连接的范式转变。
一、为什么需要 MCP?
1.1 大模型的根本限制
大模型本质上是一个封闭系统——它能”说”但不能”做”。无法获取训练集之外的信息,无法执行文本输出之外的操作。这是 AI Agent 落地的根本瓶颈:不论模型多聪明,不能连接现实世界的业务系统和数据,用处就极其有限。
1.2 MCP 之前是怎么做的?
| 方案 | 问题 |
|---|---|
| RAG + 向量数据库 | 前 Agent 时代的做法,只能做检索增强,不能做工具调用 |
| 大模型插件(如 GPT-4 Plugins) | OpenAI 私有协议,不开放 |
| Function Call / Tool Use | Agent 开发者必须在内部定义和实现每个 Tool,形成封闭系统 |
Function Call 方式的核心问题是:每次新增一个功能,必须由 Agent 开发者在代码中定义并实现一个新 Tool。M 个 AI 模型对接 N 个工具 → M×N 种适配方案。无法形成开放的生态。
二、MCP 是什么?
2.1 一句话定义
MCP 是一个开放的、标准化的协议,用单一协议取代碎片化的集成,让 AI 系统能够以统一方式访问数据源和工具。
类比:MCP 之于 AI 工具连接,如同 USB-C 之于设备连接——一根线走天下。
2.2 两个最大价值
- 开放系统:Agent 应用通过接入 MCP 变成开放系统——外部信息可以进来,物理上隔离的各种服务也能进入大模型上下文
- 关注点分离:功能提供方只需按协议暴露服务,Agent 应用只需知道它能按协议访问哪些服务——两者解耦
2.3 架构角色
MCP 架构中有三个严格区分的角色:
┌─────────────────┐ JSON-RPC 2.0 ┌─────────────────┐
│ MCP Client │ ◄──────────────────► │ MCP Server │
│ (协议客户端) │ Streamable HTTP │ (功能提供方) │
└────────┬────────┘ or stdio └─────────────────┘
│
┌────┴────┐
│MCP Host │ ← AI 应用(Claude Desktop、OpenClaw 等)
│(应用程序) │ 内部集成 MCP Client
└─────────┘
- MCP Host:想要通过 MCP 访问工具的 AI 应用程序(AI 推理在此,与 MCP 协议无关)
- MCP Client:与 Server 1:1 连接的协议客户端(仅连接功能)
- MCP Server:按协议公开功能的服务(仅暴露能力)
2.4 三类能力
| 能力 | 用途 |
|---|---|
| Tools | 外部函数调用(查询数据库、发送消息、操作文件) |
| Resources | 数据源访问(文件内容、API 响应) |
| Prompts | 提示模板(预定义的交互模式) |
三、MCP 的关键时间线
| 时间 | 事件 |
|---|---|
| 2024.11 | Anthropic 开源 MCP |
| 2025.03 | 发布 spec 2025-03-26,Streamable HTTP 取代 SSE 成为推荐传输 |
| 2025.12 | 捐赠给 Linux 基金会(Agentic AI Foundation),从公司项目升级为行业标准 |
| 2026 初 | 9700 万+ 月 SDK 下载量,10000+ 活跃 MCP Server |
四、MCP vs Skills:能力扩展的两层
MCP 和 Agent Skills 是分层协作关系,不是替代关系。这是理解 Agent 架构的关键区分:
| 维度 | MCP | Skills |
|---|---|---|
| 层次 | 工具层(连接外部世界) | 知识层(教 Agent 怎么做) |
| 连接方式 | 运行时动态连接(Client-Server) | 静态文件系统加载 |
| 协议 | JSON-RPC 2.0 over Streamable HTTP | 文件目录 + YAML + Markdown |
| 状态 | 有状态(会话连接) | 无状态(按需读取) |
| 开发成本 | 需写 Server 代码 | 只需写 Markdown 文件 |
| 类比 | USB-C 接口 | 操作手册 / SOP |
MCP 是”递给你一把锤子”,Skills 是”教你怎么用这把锤子钉钉子”。
MCP 解决”能够连接”的问题,Skills 解决”知道如何使用”的问题。MCP 适合动态数据和工具连接,Skills 适合静态知识和流程规范——之前很多开发者用 MCP Server 传递静态知识(编码规范、部署流程),这些事 Skills 更合适。
五、企业级 MCP 最佳实践
5.1 MCP 的定位
在企业 Agent 架构中,MCP 是连接层——标准化接入外部系统,同时负责身份认证和审计治理。
5.2 关键原则
- 不要做成 REST API 镜像:不要把每个 REST 端点暴露为一个独立 Tool(导致上下文膨胀、模型选择困难)→ 应面向任务封装聚合工具,或实现”先检索再调用”缩小工具集
- 连接即治理:MCP 适合必须连接远程业务系统且有身份/权限/审计要求的场景
- 与 CLI 互补:MCP 管远程连接治理,CLI 管本地高效执行,两者覆盖不同场景
5.3 未来趋势:Skills over MCP
未来 MCP Server 可能不仅暴露工具,还通过 skills/list 分发配套的 Skill,实现:MCP 向下连接系统/数据,向上交付”技能”。
六、MCP 在协议栈中的位置
Skills(知识层:教怎么做)
↓
Agent(推理层:决定做什么)
↓
MCP(工具层:连接外部系统)── 纵向集成
A2A(协作层:Agent 间委派)── 横向协作
↓
Runtime(运行层:OpenClaw / Claude Code)
MCP 是纵向的——一个 Agent 连接多个工具。A2A 是横向的——多个 Agent 之间互相协作。两者组合被类比为 AI 领域的”TCP/IP 时刻”。
七、常见反模式
| 反模式 | 正确做法 |
|---|---|
| 把每个 REST 端点暴露为独立 Tool | 面向任务封装聚合工具 |
| 用 MCP Server 传递静态知识 | 静态知识用 Skills,MCP 只做动态连接 |
| 在无需远程连接时上 MCP | 本地操作优先用 CLI,MCP 仅用于必须远程的场景 |
| MCP 和 Skills 互斥选择 | 两者分层协作,不是替代关系 |