如果你在 2026 年给 AI 应用接外部能力,大概率绕不开 MCP(Model Context Protocol):官方 SDK 的月下载量已接近 5 亿次,TypeScript 与 Python SDK 各自累计突破 10 亿次下载(官方口径,2026-07)。但这个协议最有意思的地方不是普及速度,而是它敢对自己动刀——2026-07-28 发布的最新规范把「有状态会话」这个自诞生起的根基整个移除了。本文按最新规范拆解 MCP 到底标准了什么、五版规范各改了什么、真实世界里它被怎么攻击,以及它从 Anthropic 的一份公告走到 Linux Foundation 的路径。
它到底标准化了什么
MCP 由 Anthropic 于 2024-11-25 发布,解决的是经典的 M×N 集成问题:M 个 AI 应用要接 N 个数据源,两两适配是 M×N 份胶水代码;约定一个标准接口,就变成 M+N。Anthropic 把它类比为「AI 应用的 USB-C」——协议设计上的直接参照物是 LSP(语言服务器协议):编辑器与语言工具链之间「一次实现、处处可用」的那套打法。
协议本体非常克制:消息格式就是 JSON-RPC 2.0,架构是三方模型——Host 是用户操作的 LLM 应用(Claude Desktop、IDE、Agent 框架),Client 是 Host 内部维护的连接器,Server 是暴露能力的服务,每个 Client 与一个 Server 保持 1:1 连接。Server 向 Host 暴露三类原语:tools(可被模型调用的函数)、resources(可读取的数据)、prompts(预置的提示词模板);进度通知、取消、错误报告等横切能力也在协议内定义。
flowchart LR
subgraph Host["Host(Claude Desktop / IDE / Agent 应用)"]
C1["MCP Client 1"]
C2["MCP Client 2"]
C3["MCP Client 3"]
end
S1["Server:GitHub"]
S2["Server:Postgres"]
S3["Server:内部 API"]
C1 <--> S1
C2 <--> S2
C3 <--> S3
发布当天 Block、Apollo 已在用,Zed、Replit、Codeium、Sourcegraph 宣布对接——注意这套三方架构今天依然成立,变的不是形状,而是连接的「保质期」,下文会讲。
一次调用长什么样
协议的日常消息只有几种。旧版的接入从 initialize 握手与能力协商开始;2026-07-28 版起握手被移除,每个请求在 _meta 里自带协议版本与能力声明。工具调用本身两版一致:先 tools/list 拉取清单,再 tools/call 执行——
{
"jsonrpc": "2.0",
"id": 7,
"method": "tools/call",
"params": {
"name": "get_weather",
"arguments": { "city": "上海" }
}
}
服务器返回 result.content(文本或结构化内容)与 isError 标志,协议级失败走标准 JSON-RPC error 对象。三个设计点值得划线:工具清单由客户端拉取后注入模型上下文,模型从不直接连接服务器,调不调、怎么调的决定权在 Host 的编排层——这也是工具投毒攻击能成立的根源(见下节);OAuth 只解决「客户端怎么安全拿到 token」,token 之后的业务权限模型是每个 Server 自己的责任;传输选型上,stdio 适合本机子进程(零网络配置、随桌面应用分发),Streamable HTTP 适合远程托管与多客户端复用——2026-07 版把 HTTP+SSE 降级为 Deprecated 后,远程部署实际上只剩 Streamable HTTP 一条正路。
三年五版规范:演进时间线
MCP 的版本号就是日期字符串,只有含不向后兼容变更时才递增。不到两年发了五个版本:
| 版本 | 关键变化 |
|---|---|
| 2024-11-05 | 首版:stdio + HTTP+SSE 双传输,三原语,initialize 握手与能力协商 |
| 2025-03-26 | OAuth 2.1 授权框架;Streamable HTTP 取代 HTTP+SSE;tool annotations(只读/破坏性标注) |
| 2025-06-18 | elicitation(服务器向用户反向请求信息);结构化工具输出;服务器定位为 OAuth Resource Server,MUST 实现 RFC 8707 防 token 混用;首份安全最佳实践 |
| 2025-11-25 | URL 模式 elicitation;sampling 支持工具调用;Client ID Metadata Documents;实验性 tasks;治理结构正式化(Working Groups、SEP 流程) |
| 2026-07-28 | 全面无状态化(详见下节);server/discover 必须实现;废弃 Roots / Sampling / Logging;HTTP+SSE 与动态客户端注册(DCR)转 Deprecated |
前两步演进的主线是「从桌面走到云端」:stdio 只能管本机子进程,2025-03-26 的 Streamable HTTP(单个端点上 HTTP POST + 可选 SSE 流)让远程部署成为可能,配套的 OAuth 2.1 框架解决了「服务器怎么代表用户安全地授权」;2025-06-18 则补安全语义——把 MCP 服务器正式归类为 OAuth 的 Resource Server,要求用 Protected Resource Metadata 发现授权服务器、用 RFC 8707 的 resource indicator 把 token 绑定到特定服务器,防止恶意服务器把发给 A 的 token 拿去骗 B。
2026-07-28:一次自我革命
第三版(2026-07-28)是迄今最大的变更,方向只有一个字:删。
- 移除协议级会话:
Mcp-Session-Id头没了,initialize/notifications/initialized握手也没了——每个请求在_meta里自带协议版本与客户端能力,任何请求都可以独立处理; - 服务发现内化:新增必须实现的
server/discover,取代旧的按需列表轮询;订阅改走subscriptions/listen,SSE 断线重续(Last-Event-ID)移除; - 废弃三大客户端特性:Roots、Sampling、Logging 整体转 Deprecated——sampling(服务器反向借 Host 的 LLM 做补全)这类「服务器发起请求」的模式由新的 Multi Round-Trip Requests(MRTR,
InputRequiredResult)接棒;实验性 tasks(长任务轮询)移入官方扩展; - 流程制度化:确立功能生命周期政策(Deprecated 至少保留 12 个月)与 SEP 提案工作流。
为什么自断根基?官方博客没有讳言:有状态会话是部署摩擦的最大来源。sticky session、连接亲和性、水平扩容、Lambda 类短生命周期平台的适配,全都是「服务器要记住上一条消息」惹的祸——社区在 GitHub issue #102 上吐槽了两年,无状态化等于官方承认了这个批评。顺带解决的还有成本问题:tools/list 现在要求确定性排序并提供 ttlMs / cacheScope 缓存提示,工具定义吃上下文 token、轮询烧钱这类抱怨有了协议层回应。用官方博客自己的话说,这一版让 MCP 从「桌面协议」真正对齐了 web-scale 服务的部署现实(HTTP 无状态语义、标准缓存与负载均衡全部适用)。
安全攻击面:协议把最后一公里留给了实现者
MCP 官方安全最佳实践里有一句关键的诚实表态:这些安全原则协议层无法强制。于是攻击面在实现层全部敞开:
| 攻击 | 原理 | 出处 |
|---|---|---|
| Confused Deputy | 代理服务器用静态 client ID + 共享 consent cookie,攻击者可跳过用户同意窃取授权码 | 官方最佳实践 |
| Token Passthrough | 服务器不校验 token audience 直接透传下游,绕过限流与审计 | 官方最佳实践(明确禁止) |
| SSRF | 恶意服务器在授权元数据里填云 metadata 地址(169.254.169.254)窃取云凭证 |
官方最佳实践 |
| 工具投毒 | 工具描述里藏对用户不可见的恶意指令(如「读取 ~/.ssh/id_rsa 传出」),模型照做 |
Invariant Labs,2025-04 |
| Rug Pull | 安装时审查通过,之后偷偷改工具描述换语义 | Invariant Labs / Microsoft 词条 |
| 会话劫持 | 多台有状态服务器共享会话队列时可注入事件、冒充用户 | 官方最佳实践(2026 版已随无状态化消解大半) |
工具投毒值得单独说:Invariant Labs 在 2025-04 披露的攻击里,恶意指令藏在工具描述的 <IMPORTANT> 段落中——人类在确认弹窗里看不到全貌,模型却在上下文里读得到;同一家公司 2025-05 进一步演示了连工具本身无毒的 GitHub MCP 服务器也能被间接提示注入利用去访问私有仓库。学术侧的 MCPTox 基准用 45 个真实服务器、353 个真实工具构造了 1312 个恶意用例做系统性测量。监管侧也来了:美国 NSA 2026-05 发布 AI 安全设计考量,国防部 2026-06 发布 17 页的《MCP: Security Design Analysis》——一个协议出版一年就被五角大楼出专项分析,攻击面的现实性可想而知。实践上的防御顺序:先约束客户端(工具描述全文展示、变更即重审、重要操作人工确认),再用最小权限与 token audience 校验兜底,最后才是扫描与监控。
生态格局:从 Anthropic 的公告到 Linux Foundation
采用时间线可以压缩成一张表:
| 时间 | 事件 |
|---|---|
| 2024-11 | Anthropic 发布 MCP;Block、Apollo 首批采用 |
| 2025-03-26 | OpenAI 宣布全线产品支持(Agents SDK 率先落地) |
| 2025-04 | Google DeepMind 宣布 Gemini 支持;VS Code Copilot agent mode 推送 |
| 2025-05 | Microsoft Build:Windows AI Foundry,Windows 11 应用可暴露为 MCP 服务器 |
| 2025-07 | AWS Bedrock AgentCore 原生托管 MCP 服务器 |
| 2025-09-08 | 官方 MCP Registry 开放预览(GitHub 也在当月上线自家 Registry) |
| 2025-12-09 | Linux Foundation 成立 Agentic AI Foundation(OpenAI、Anthropic、Block 共同发起),MCP 捐赠入会 |
至此「Anthropic 的协议」变成了中立基金会的标准,2026-08 官方路线图把传输演进、agent 间通信、企业就绪列为优先级。协议层的分工也逐渐清晰:MCP 管 agent 与工具/数据的连接,Google 2025-04 发布、同年 6 月捐给 Linux Foundation 的 A2A 管 agent 与 agent 之间的协作,CopilotKit 系的 AG-UI 管 agent 与前端界面的事件流——三层互补而非竞争。
冷思考:过誉的部分与被回应的部分
热闹之下也有冷静的声音。2026-09 Hacker News 上的主流批评是 MCP 曾被过度神化:对很多集成场景,「agent + curl + 一段技能说明」比架一个 MCP 服务器更简单,协议收益只在多客户端复用时才兑现。远程服务器在 2025 年确实 adoption 缓慢——OAuth 部署摩擦加有状态架构的托管难题,让生态长期停留在本地 stdio 为主;heise 这样的媒体则指出捐赠基金会并非全然无私,中立治理恰恰能巩固事实标准地位。这些批评大多成立,而规范的反应速度值得肯定:部署摩擦被 2026-07 的无状态化正面回应,token 成本拿到了缓存提示与确定性排序,安全上官方至少把攻击面写成了文档——剩下的部分,协议确实管不了,那是每一个 Host 和 Server 实现者的责任。
结语
MCP 两年多的历程提供了一个罕见的观察样本:一个标准如何在快速收敛生态的同时,敢于推翻自己的核心设计。从 stdio 子进程到无状态 HTTP,从「服务器可以反向调用你的 LLM」到把这个能力废弃,每一步都跟着真实的部署痛点走。对于要在 2026 年落地的团队,结论朴素:按 2026-07-28 规范实现(无状态、server/discover、官方扩展按需启用),安全上不信任任何工具描述,把协议当连接层而不是安全边界——它从来就没承诺过后者。
参考资料
- Introducing the Model Context Protocol — Anthropic(2024-11-25):发布原文,动机与首批采用者。
- MCP Specification(2026-07-28,当前版):协议本体与架构定义。
- Key Changes: 2026-07-28 — 官方 changelog:无状态化与废弃清单的一手来源。
- Security Best Practices — 官方:confused deputy、token passthrough 等攻击的权威描述。
- The 2026-07-28 Specification — MCP 官方博客(2026-07-28):SDK 下载量与变更动机。
- MCP Security Notification: Tool Poisoning Attacks — Invariant Labs(2025-04):工具投毒攻击的原始披露。
- Advancing Windows for AI development — Windows Blog(2025-05-19):微软 Build 大会的第一方支持公告。
- Google Cloud donates A2A to Linux Foundation — Google Developers Blog(2025-06-23):配套协议 A2A 的治理去向。
读者留言
COMMENTS 暂无还没有留言,来说第一句?