截至 2026 年 7 月 28 日发布第五个规范版本时,Anthropic 主导的 Model Context Protocol(MCP)SDK 月下载量已达 4 亿次,连竞争对手 OpenAI 也在 Responses API 中直接提供了对远程 MCP 服务器的原生支持。AI 基础设施与安全厂商 Runlayer 刚刚上线了交互式技术站《MCP Explained》,把协议从 2025-11-25 默认规范到 2026-07-28 新版的底层通信、协议外优化与五大攻击面拆了个底朝天。多数开发者还把 MCP 当作一套静态的本地 JSON-RPC 工具调用规范,但这份全景拆解指向一个反常识的事实——在拿下行业事实标准后,MCP 正在把早期引以为傲的有状态长连接和双向通信亲手砍掉。

先把账算清楚。

在智能体互操作架构里,MCP 与模型侧的 OpenAI Function Calling、跨智能体协作的 Agent2Agent(A2A,由 Linux 基金会托管,截至 2026 年 4 月 9 日获 150 多家组织支持并集成至 Google、Microsoft、AWS 平台)并非零和博弈,而是分层嵌套。Function Calling 管模型到应用运行时,A2A 管跨组织智能体协作,MCP 专管 AI 宿主应用到外部工具与上下文服务器。但当这套号称 AI 时代 USB-C 接口的标准从本地桌面走向云端高并发环境时,三大工程瓶颈集中爆发,直接促成了 2025 至 2026 年间的架构大改:

  • 传输层去状态化.2025-06-18 先废弃了 JSON-RPC 的 Batch 批处理;到了 2026-07-28 规范,Streamable HTTP 彻底移除协议级会话、Mcp-Session-Id、初始化握手以及 SSE 断点续传,服务端也不再向客户端发起反向请求。
  • 上下文成本失控.接入数十个工具后,全量塞入 Schema 会瞬间撑爆大模型上下文窗口。工程突围全靠协议外的宿主控制技术(Harness techniques),通过延迟搜索与代码模式将 Token 消耗最高压缩 98.7%。
  • 安全边界坍塌.攻击者无需执行恶意工具,仅靠工具描述元数据就能劫持可信服务器;即使用了 OAuth 2.1,若未严格校验 Token 受众(Audience)而直接透传,依然会让权限边界崩溃。
智能体互操作三层架构与 MCP 边界 跨系统层 · A2A (Agent2Agent) 智能体系统 ↔ 独立智能体系统(Linux 基金会托管,150+ 组织支持) 宿主连接层 · MCP (Model Context Protocol) AI 宿主应用 ↔ 外部工具 / 资源 / 提示词服务器(SDK 月下载 4 亿次) 模型内生层 · Function Calling 大模型 ↔ 应用运行时(解析输出结构与触发本地函数)

挥刀自宫:2026-07-28 规范为何砍掉握手与反向请求

早期 MCP 带有浓厚的本地桌面软件基因。在 2025-11-25 默认规范中,客户端与服务端建立连接必须先走一套完整的生命周期握手,维护 Mcp-Session-Id,并且允许双向通信——服务端可以通过 Sampling(借用客户端的模型推理)和 Elicitation(向用户追问缺失信息)主动向客户端发 Request。

新版规范砍掉长连接握手,改用无状态单向消息通信(示意图)
新版规范砍掉长连接握手,改用无状态单向消息通信(示意图)

这套设计在本地 stdio 管道里跑得很顺,一上云原生网关就成了运维灾难。

二十多年前,Web 服务曾经历过从有状态 SOAP 协议向无状态 REST 架构的痛苦迁移。原因很简单,只要协议层强依赖会话状态和长连接握手,负载均衡器就必须做粘性会话(Sticky Sessions),Serverless 函数就无法做到毫秒级冷启动与用完即毁。早期的 MCP 恰恰踩进了同一个泥坑。

到了 2026-07-28 规范,协议制定者终于向云原生现实低头,对 Streamable HTTP 传输层动了大手术:

  • 废除初始化握手与会话 ID.直接砍掉协议级会话和 Mcp-Session-Id,将协议版本与能力声明塞进每条消息的 _meta 字段,新增 Mcp-Method 与 Mcp-Name 请求头方便网关直接路由,并用 subscriptions/listen 替代原本的 GET 通知端点。
  • 服务端彻底放弃反向请求.在 2026-07-28 版本中,Server 不再向 Client 发送任何请求。所有返回结果强制携带 resultType 字段,值只能是 complete 或 input_required。当服务端需要调用模型或向用户追问时,不再维持挂起状态反向索取,而是直接返回 input_required,由客户端拿到答案后重新发起下一轮请求。
MCP 协议架构演进:从有状态长连接到云原生无状态 2025-11-25 默认规范 · 强制 Initialize 握手与生命周期管理 · 维护 Mcp-Session-Id 与 SSE 断点续传 · 双向请求:Server 可主动请求 Client · 授权依赖动态客户端注册 (DCR) 痛点:云网关粘性会话重、扩容难 2026-07-28 演进规范 · 移除握手与会话 ID,能力声明放入 _meta · 新增 Mcp-Method 与 Mcp-Name 路由头 · 单向化:返回 input_required 多轮重试 · 转向客户端 ID 元数据文档与 iss 绑定 收益:对齐标准无状态 HTTP 与 Serverless

真正省下 98.7% Token 的功夫,全在协议规范之外

开发者社区里一直有个流行抱怨,觉得用 MCP 比直接调原生 Function Calling 更费 Token。这其实冤枉了协议本身。MCP 的 JSON-RPC 消息跑在应用通信层,根本不直接进大模型的 Prompt;真正把账单和延迟拉爆的,是宿主应用把几十上百个 MCP 工具的 JSON Schema 一股脑塞进系统提示词。

按需延迟检索工具定义,能直接削减约 85% 上下文开销(示意图)
按需延迟检索工具定义,能直接削减约 85% 上下文开销(示意图)

我更在意的是,解决这个死穴的核心方案,目前根本不在 MCP 官方规范里,而是被归为协议外的宿主工程技巧(Harness techniques)。

《MCP Explained》重点拆解了两把工程手术刀,分别对应工具发现和工具调用的冗余:

第一把刀是 Tool Search(延迟按需发现)。面对上千个工具,宿主不再开局全量加载定义,而是只给模型一个搜索接口,用到什么查什么。Anthropic 的实测表明,仅靠延迟按需加载,就能削减约 85% 的上下文开销。

第二把刀是 Codemode(代码模式)。传统模式下,如果一项复杂任务需要连续调用 20 次工具,模型就要与宿主来回吐 20 轮中间结果,上下文像滚雪球一样膨胀。Codemode 的思路是让大模型直接写一段脚本程序,在沙箱里一次性编排完成多次工具调用,只把最终结果传回模型。Anthropic 实测数据显示,在特定复杂任务中,配合代码执行可将 Token 消耗从 150,000 直接压到 2,000,降幅高达 98.7%;Red Hat 针对跨 4 个 MCP 服务器、38 个工具的 codemode-lite 测试也印证,沙箱化代码接口在相同任务下能降低 53% 的 Token 开销。

协议外工程优化(Harness Techniques)降本实测 Tool Search 延迟加载 -85% 按需检索替代全量加载 数据来源:Anthropic 实测 Codemode 沙箱代码执行 -98.7% 从 150,000 降至 2,000 Token 数据来源:Anthropic 特定示例 codemode-lite 跨服测试 -53% 跨 4 个服务器、38 个工具 数据来源:Red Hat 基准测试
决定协议生死的往往不是规范文本,而是规范外的控制层。

目前 MCP 社区已经成立了渐进式披露(Progressive disclosure)工作组,试图把 Tool Search 和代码模式正式收编进未来的协议标准。在此之前,谁家的 Agent 宿主能把沙箱代码编排做得更稳,谁就能在生产环境里省下真金白银的推理账单。

  • 结论.企业评估 Agent 平台时,不要只看它支不支持 MCP 协议,更要看它的宿主层有没有内置按需工具检索(Tool Search)与代码编排沙箱(Codemode),这两项直接决定生产环境的 Token 账单能否降下八成以上。

不调用工具也会中毒,用了 OAuth 依然可能裸奔

把外部工具接进大模型,最危险的错觉就是拿传统微服务 API 的安全经验去套 Agent。

失陷服务端透传 OAuth 令牌,越权调取下游服务(示意图)
失陷服务端透传 OAuth 令牌,越权调取下游服务(示意图)

在传统软件里,一段外部代码只要不被执行,它就是死的;可在 MCP 架构里,工具的描述文档(Metadata)会在初始化或检索阶段直接读入大模型的上下文。元数据本身就是可执行的攻击载荷。

安全机构 Invariant Labs 早在 2025 年 4 月 1 日就通过实验演示了工具投毒(Tool Poisoning)与跨服务器工具遮蔽(Tool Shadowing),在 Cursor 编辑器中成功窃取敏感文件,并悄无声息地篡改了可信邮件工具的收件人地址。随后在 2025 年 8 月 19 日发布的学术基准测试 MCPTox 中,研究人员基于 45 个真实世界 MCP 服务器和 353 个工具系统验证了这一漏洞——攻击者根本不需要诱导用户去调用那个恶意工具,只要在恶意工具的描述字段里藏一段隐蔽指令,就能隔空操纵大模型去篡改另一个高权限可信服务器(比如企业内部邮箱或代码库)的调用参数。许多团队以为只要拦截同名工具冲突就能防住遮蔽攻击,殊不知大模型看的是自然语言语义,不同名的工具照样能跨服劫持。

除了工具投毒、工具遮蔽和返回结果里的提示词注入(Prompt Injection),身份与交互层还有两处致命暗礁:

攻击面类型触发位置与核心机制2026-07-28 规范及工程防御手段
Token 透传 (Passthrough)恶意或失陷 Server 接收客户端发来的 OAuth 令牌后,直接拿去调用下游其他服务,形成糊涂侍卫(Confused Deputy)攻击强制校验令牌受众(Audience),要求验证授权响应 iss 参数与凭证颁发者绑定存储;废弃动态客户端注册(DCR),转向客户端 ID 元数据文档
追问钓鱼 (Elicitation Phishing)服务端利用 Elicitation 特性向用户弹出交互表单,伪装成系统级授权框骗取 API 密钥或密码宿主端严格隔离工具级表单与系统级 OAuth 授权流,禁止通过普通文本追问收集敏感凭证
  • 风险.切勿在企业内部混用未经元数据审计的第三方 MCP Server;只要有一个低权限边缘工具的描述字段被投毒,同一个宿主会话下的核心数据库与邮件工具就会彻底失去参数边界。

这里也得看清《MCP Explained》背后的商业算盘。把协议图谱做得如此精美的 Runlayer,本身就是卖 AI 运行时安全与网关产品(Runlayer Guard)的厂商。他们把大量篇幅放在协议外的工程技巧与五大安全攻击面,固然有官方变更日志与学术研究背书,但客观上也是在替自家的安全网关做市场教育——毕竟协议层把状态砍得越干净、工具生态越庞杂,企业就越不敢让客户端裸连外部 Server,中间那层负责审计元数据、拦截越权调用的商业网关也就越值钱。至于这类安全网关在实际复杂业务流里的误杀率与拦截率究竟如何,目前行业里还缺乏独立的第三方基准测试。

按照官方路线图,MCP 正在把 Skills(服务端托管的智能体技能)、MCP Apps(工具直接返回交互式 UI)、Server Cards(连接前预知服务器能力)以及官方 Registry 纳入扩展生态,下一个大版本定在 2027 年 3 月发布。回头看去,从 4 亿次下载量的狂飙,到 2026 年 7 月大刀阔斧砍掉长连接握手,MCP 正在洗去早期玩具期的天真。当所有连接都退回无状态的 HTTP 请求,当每一行工具描述都被视为潜在的攻击代码,Agent 基础设施才算真正迈进了残酷的工业化成人礼。