MCP 协议详解——AI 应用的标准化连接层
本文为「AI Agent 技术系列」第 3 篇。Function Calling(第 2 篇)解决了”模型如何决定调用工具”,MCP 解决”工具如何被标准化接入”。
一、主题定义与背景
MCP 的正式定义
MCP 官方规范的定义 [1]:
“Model Context Protocol (MCP) 是一个开放协议,能够在 LLM 应用程序和外部数据源及工具之间实现无缝集成。无论您是构建 AI 驱动的 IDE、增强聊天界面,还是创建自定义 AI 工具,MCP 都提供了标准化的连接方式。”
USB-C 类比:从 N×M 到 N+M
1 | 传统模式(N×M 集成): |
就像 USB-C 让充电这件事变得简单统一——一个标准协议,让 AI 连接所有数据源和工具。
提出背景
MCP 由 Anthropic 于 2024 年 11 月发布,旨在解决 AI 工具集成的碎片化问题。MCP 规范当前最新版本为 2025-11-25 [1],已被 Claude、ChatGPT、VS Code、Cursor 等主流 AI 应用和开发工具采用。
二、核心技术原理与架构设计
2.1 三角色架构
graph TB
subgraph Host主机
H[AI 应用<br/>如 Claude / VS Code]
C1[Client 1<br/>连接器]
C2[Client 2<br/>连接器]
end
S1[MCP Server 1<br/>本地文件系统]
S2[MCP Server 2<br/>远程数据分析]
H --> C1
H --> C2
C1 <-->|MCP协议| S1
C2 <-->|MCP协议| S2
| 角色 | 职责 | 示例 |
|---|---|---|
| Host(主机) | AI 应用本身,用户直接面对的程序,负责统筹多个连接 | Claude Desktop、VS Code、Cursor |
| Client(客户端) | 主机内部的”连接器”,每个客户端与一个服务器保持专用连接 | 主机内嵌入的 MCP Client 实例 |
| Server(服务器) | 提供数据或工具的程序,可运行在本地或云端 | 文件系统 Server、GitHub Server、数据库 Server |
关键设计:一个 Host 可同时连接多个 Server——例如 VS Code 可以同时连接本地文件系统 Server 和远程数据分析 Server。
2.2 四步工作流程
sequenceDiagram
participant H as Host (AI应用)
participant C as Client
participant S as Server
H->>C: ① 发起连接
C->>S: 建立 MCP 连接
S-->>C: ② 发现:通知可用工具和数据
C-->>H: 返回工具清单
H->>C: ③ 调用:请求执行某工具
C->>S: 转发调用请求
S-->>C: 返回执行结果
C-->>H: ④ 更新:数据变化通知
| 步骤 | 说明 |
|---|---|
| ① 连接 | Host 通过 Client 连接到提供数据或工具的 Server |
| ② 发现 | Server 告诉 AI:”我有这些工具和数据,你可以使用它们” |
| ③ 调用 | AI 根据需要调用 Server 提供的功能,获取数据或执行操作 |
| ④ 更新 | 数据变化时,Server 实时通知 AI,保持信息同步 |
整个流程在后台自动完成,用户只需像平时一样使用 AI 助手。
2.3 三类核心原语
Server 通过三类原语为 LLM 提供上下文 [2]:
| 原语 | 控制方 | 描述 | 示例 |
|---|---|---|---|
| Prompts(提示) | 用户控制 | 预定义的提示模板,用户主动选择 | “代码审查”提示模板 |
| Resources(资源) | 用户控制 | 可读取的数据源,类似 GET 端点 | 文件内容、数据库记录 |
| Tools(工具) | 模型控制 | 可执行的函数,类似 POST 端点 | 发送邮件、创建文件 |
关键区别:Prompts 和 Resources 由用户控制(用户决定何时使用),Tools 由模型控制(AI 自主决定何时调用)。
2.4 传输方式
MCP 2025-11-25 版本定义了两种标准传输方式 [3]:
| 传输方式 | 说明 | 适用场景 |
|---|---|---|
| stdio | 通过标准输入/输出通信 | 本地 Server(如文件系统访问) |
| Streamable HTTP | 基于 HTTP 的流式传输,替代旧的 HTTP+SSE | 远程 Server(如云端 API) |
注意:在 MCP 协议 2025-11-25 版本中,Streamable HTTP 替代了之前版本(2024-11-05)中的 HTTP+SSE 传输方式 [3]。
三、实际应用场景与最佳实践
场景一:VS Code 连接本地文件系统 MCP Server
1 | // npm install @modelcontextprotocol/sdk |
场景二:企业 CRM 集成
1 | // MCP Server:企业 CRM 查询 |
安全最佳实践四原则
| 原则 | 说明 | 实践要点 |
|---|---|---|
| 信任但要验证 | 收到的令牌必须检查是否过期、是否确实发给你的 Server | 每次请求验证 Token 有效性 |
| 最小权限 | 一开始只申请最少权限,需要更多时再临时申请 | 定期审查并撤销不必要的权限 |
| 安全通信 | 生产环境务必使用 HTTPS,绝不记录密码和令牌 | 拦截发往内网的请求(防 SSRF) |
| 本地防护 | 安装 MCP Server 前确认来源可信 | 在沙箱中运行,执行操作前向用户展示具体命令 |
四、常见挑战与解决方案
六大安全威胁详解
| 威胁 | 说明 | 防御方案 |
|---|---|---|
| 冒充攻击 | 攻击者冒充已授权用户,利用系统记住的权限 | Token 绑定到特定 session/context |
| 令牌泄露 | Server 把数字钥匙直接转手给别人,不检查合法性 | 每个新 session 要求 Token 更新 [4] |
| SSRF 攻击 | 恶意 Server 诱导 AI 访问不该访问的内部系统 | 拦截内网请求,限制出站目标 |
| 会话劫持 | 攻击者偷走对话 ID,冒充你与系统交互 | Session ID 绑定 IP/设备指纹 |
| 本地入侵 | 安装了恶意 MCP Server,在电脑上搞破坏 | 沙箱运行 + 来源确认 |
| 权限过大 | 一次性申请太多权限,一旦泄露后果严重 | 最小权限原则 + 定期审查 |
工具投毒攻击(Tool Poisoning Attack)
2025 年 3 月,Invariant Labs 披露了一种新型攻击 [5]:
1 | 攻击原理: |
OWASP 已发布 MCP Top 10 安全风险清单,其中 MCP01:2025 就是”令牌管理不当与密钥暴露” [4]。
OAuth 2.1 授权机制六步详解
flowchart LR
A[① 询问身份<br/>Client尝试连接] --> B[② 获取清单<br/>Server告知授权位置]
B --> C[③ 用户授权<br/>浏览器弹窗确认]
C --> D[④ 登记注册<br/>Client注册身份标识]
D --> E[⑤ 获取凭证<br/>颁发Token通行证]
E --> F[⑥ 验证通行<br/>每次请求出示Token]
MCP 遵循 OAuth 2.1 标准——经过验证的行业安全方案,不是自己发明的”土办法” [1]。
| 步骤 | 说明 |
|---|---|
| ① 询问身份 | 客户端尝试连接,服务器要求”请先证明你是谁” |
| ② 获取清单 | 服务器告诉客户端需要到哪里获取授权 |
| ③ 用户授权 | 浏览器弹出页面,用户确认”是的,我允许这个操作” |
| ④ 登记注册 | 客户端在授权服务器上注册自己,获得身份标识 |
| ⑤ 获取凭证 | 授权服务器颁发”数字通行证”(Token) |
| ⑥ 验证通行 | 每次请求都出示通行证,服务器验证是否有效 |
五、行业趋势与前沿进展
MCP 生态最新进展
截至 2026 年 6 月,MCP 生态快速扩张:
| 类别 | 支持的工具/平台 |
|---|---|
| AI 应用 | Claude Desktop、ChatGPT、其他智能助手 |
| 开发工具 | VS Code、Cursor、Zed、Warp、JetBrains |
| 企业系统 | CRM、ERP、各类业务系统 |
| 开发框架 | LangChain、AutoGen 等已集成 MCP 支持 |
“一次构建,处处集成”——开发者只需按 MCP 标准开发一次,就能在所有支持的平台上使用。
MCP 安全研究前沿
2025-2026 年,MCP 安全研究成为热点 [6][7]:
- CVE 追踪:GitHub 上已有专门的 MCP CVE 项目,追踪已披露的 MCP 相关漏洞 [6]
- 工具投毒攻击:Invariant Labs 2025 年 3 月披露,引发社区广泛关注 [5]
- 传输层安全:stdio、SSE、Streamable HTTP 三种传输方式的安全差异被深入研究 [3]
最新安全建议 [7]:
- 传输层选择:本地用 stdio(最安全),远程用 Streamable HTTP + HTTPS
- Token 管理:每个 session 绑定独立 Token,不跨 session 复用
- 工具描述审查:对第三方 Server 的工具描述进行安全扫描
MCP vs OpenAI Plugins vs Custom Tools
| 方案 | 定位 | 优势 | 劣势 |
|---|---|---|---|
| MCP | 开放标准协议 | 跨平台、跨应用通用 | 规范仍在演进中 |
| OpenAI Plugins | OpenAI 生态专用 | 与 ChatGPT 深度集成 | 仅限 OpenAI 生态 |
| Custom Tools | 自定义集成 | 完全可控 | 无法复用,开发成本高 |
趋势:MCP 正在成为 AI 领域的”通用语言”——它让不同的 AI 应用和不同的数据源能够互相理解、顺畅协作。
结论
MCP 的核心价值在于标准化——用一个协议替代无数个定制集成。对于技术决策者:
- 评估采用:如果你的 AI 应用需要连接 3 个以上外部系统,MCP 的标准化收益将超过学习成本
- 安全优先:MCP 的安全威胁是真实的——工具投毒、SSRF、令牌泄露都需要防御
- 关注演进:MCP 规范仍在快速迭代(2025-11-25 是当前最新版本),传输方式和安全机制都在演进
从 Function Calling(第 2 篇)到 MCP,工具集成正在从”各自为政”走向”标准统一”。
参考资料
[1] Model Context Protocol Specification (2025-11-25). 2025-11-25
[2] MCP Protocol Specification - Primitives
[3] MCP Transports 规范. 2025-11-25
[4] OWASP MCP Top 10 - MCP01:2025 Token Mismanagement. 2026-05-11
[5] MCP 工具投毒攻击(Tool Poisoning Attack). 2025-09-13
[6] MCP CVE Project
[7] MCP Transport Security: STDIO, SSE, Streamable HTTP Risks. 2026-06-19