从插件接口到公共设施:MCP 第五版规范的三笔真实赌注

MCP 不再像一个厂商的插件接口,它开始像一条公共管道。管道会更结实,但也会更没脾气。

文章作者、来源:0x9999in1,ME News



TL;DR

  • 2026 年 7 月 28 日,MCP 发布第五版规范 2026-07-28,官方定性为协议诞生以来最大规模的一次修订。核心动作只有一个:删掉协议层的会话。
  • initialize/initialized 握手没了,Mcp-Session-Id 请求头没了。每个请求自带协议版本、客户端身份和能力声明,写在 _meta 里。任何请求可以落在任何一台实例上,一个普通的轮询负载均衡就够。
  • 这不是性能优化,是架构认错。粘性会话和共享 session 存储,曾经是 MCP 服务器上规模时最贵的那部分账单。
  • 状态没有消失。它被从传输层搬到了工具参数里,叫"显式句柄"。模型看得见它,也就管得住它。
  • 交互界面(MCP Apps)和长任务(Tasks)被正式收进版本化扩展框架,核心协议不再为新能力加肥。身份验证向真实世界的 OAuth 2.0 与 OIDC 靠拢,企业级托管授权扩展同日转稳定版。
  • 代价是真金白银的:这是一次 breaking change。Roots、Sampling、Logging 与旧的 HTTP+SSE 传输集体进入弃用期,官方给了至少 12 个月过渡窗口。
  • 一句话判断:MCP 不再像一个厂商的插件接口,它开始像一条公共管道。管道会更结实,但也会更没脾气。

一、删掉的那两行,才是这次改版的重量

先说一个反直觉的事实。

这次被称为"史上最大改版"的更新,最重要的部分不是加了什么,是删了什么。

initialize 和 initialized 这一对握手,从 MCP 2024 年 11 月诞生那天起就在。Mcp-Session-Id 这个请求头,是远程 MCP 落地后所有部署方案的地基。7 月 28 日,两样东西一起被摘掉。

新的请求长什么样?很朴素。

POST /mcp HTTP/1.1
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/call
Mcp-Name: search

方法名和工具名被抬到 HTTP 头上。网关、限流器、WAF 不用再拆开 JSON 包体去猜这次调用要干什么,看头就行。协议版本、客户端信息、能力声明,全部塞进 _meta 随请求走。想提前问服务器有什么本事?新加了一个 server/discover,但它是可选的,不是必须的。

这意味着什么?意味着 MCP 服务器终于变成了一个普通的 HTTP 工作负载。

Netlify 应用 AI 副总裁 Sean Roberts 的说法很直白:无状态核心让 MCP 成了一等公民的 HTTP 负载,没有会话管理需要绕开。Cloudflare 的表述更狠一点,说这一版让 Agent 基础设施开始像 web 的其他部分那样工作,无状态、可缓存、可路由、可全球扩展。

听着像标准的厂商站台话术。但这次不太一样,因为它们说的是同一件具体的事:会话消失了,所以 Lambda 能跑,Workers 能跑,边缘节点能跑。

二、粘性会话,是 Agent 规模化路上真实的天花板

为什么要下这么大狠手?

因为旧模型有一个逃不掉的物理限制:会话被钉死在处理握手的那台实例上。

于是所有人都被迫做同一件事。要么开粘性会话,让负载均衡记住每个客户端该去哪台机器;要么架一层 Redis 之类的共享存储,把 session 状态存起来给所有实例读。

这两条路都能走通。但都在付一笔隐形的税。

粘性会话意味着扩缩容变得难看。一台实例要下线,挂在上面的会话就得断。流量突增时新拉起的实例接不到老会话,负载永远歪的。共享存储那条路更贵,你为一个本质上只是"记住客户端叫什么"的需求,引入了一个有状态中间件,还得为它做高可用。

规模小的时候这不叫问题。规模上来了就叫问题。

看一组数字就明白规模是怎么变的。2025 年 12 月,MCP 诞生一周年时,SDK 月下载量是 9700 万次。到 2026 年 7 月这次发布,Anthropic 给出的数字是月下载量超过 4 亿次,官方博客的说法是"接近五亿",年内增长四倍。TypeScript 和 Python 两个 SDK 的累计下载量各自越过了十亿次门槛。

Anthropic 自家的 Claude 连接器目录里,现在列着超过 950 个 MCP 服务器。可观测性厂商 Honeycomb 的数据更能说明 Agent 已经在真实干活:他们每月全部交互式查询里,接近 20% 是 Agent 发起的。

半年四倍。这种曲线下面,任何架构上的"隐形税"都会被放大成明账。

所以官方的措辞是"开发者呼声最高的功能之一"。翻译一下:不是我们想改,是跑在生产环境里的人已经受不了了。

三、状态没消失,它被搬到了模型眼前

这里有个必须讲清楚的误解。

协议无状态,不等于你的应用无状态。

规范给出的替代方案叫显式句柄。你的工具需要跨调用保留状态?那就让工具返回一个标识符,比如 basket_id,然后由模型把这个 ID 当参数带回下一次调用。

官方博客里那句话,我认为是整份文档里最有意思的一句:他们发现这样比把状态藏在传输层里效果更好,因为模型能看见这个句柄,也就能在工具之间把它串起来。

停一下想想这句话的分量。

过去的设计逻辑是:状态是基础设施的事,模型不该操心。现在的逻辑反过来了:状态是模型推理链条的一部分,藏起来反而让模型判断失准。

隐藏状态让模型变傻。这个结论不是从架构美学推出来的,是从一年半的生产事故里捞出来的。

同样的思路贯穿到了服务器主动发起请求这条路上。过去工具执行中间要问用户一句"确认删除这 3 个文件吗",得靠一条持续挂着的 SSE 流把请求推回客户端。无状态之后这条流没了,取而代之的是 Multi Round-Trip Requests,简称 MRTR。

机制不复杂。服务器返回一个"需要输入"的结果类型,附上它要问的问题,再附上一段 requestState。客户端收集完答案,带着 inputResponses 和原封不动的 requestState 重新发一次原调用。因为续接所需的一切都在 requestState 里,这次重试落到另一台机器上也能接着走。

Supabase 产品负责人 Inian Parameshwaran 说了句实在话:支持 elicitation 在他们路线图上挂了很久,但因为 Supabase MCP 本来就是无状态跑的,一直做不了。MRTR 之后可以了,工具能在建项目前先确认成本,能在删数据前先问一句。

这里我要提一个规范文档没重点讲、但工程上一定会撞上的点:requestState 由客户端保管并回传,它天然处在信任边界之外。服务器如果把它当成可信输入直接反序列化,就是给自己开了一个口子。签名、加密、设过期,这三件事我认为会很快变成社区里的标准做法。这是我的判断,不是规范要求。

四、扩展框架:协议开始学会"不长胖"

第二个真赌注,是扩展框架从惯例变成了制度。

反向 DNS 命名、通过 extensions 映射做能力协商、独立的 ext-* 仓库配授权维护者、版本独立于核心规范。听起来很枯燥,但它解决的是所有成功协议都会遇到的病:核心越来越肥。

两个扩展这次被正式扶正。

MCP Apps 让服务器把交互界面直接送进对话。不是纯文本,不是结构化 JSON,是跑在沙箱 iframe 里的完整 HTML 界面。图表、表单、选择器,都可以。关键设计在于工具要提前声明 UI 模板,这样客户端能预取,也能在渲染任何东西之前先做安全审查。界面上的操作走的还是普通工具调用那条 JSON-RPC 通道。

Tasks 处理另一半问题:耗时任务。它从实验特性升级为官方扩展,生命周期被重新设计成无状态的:tools/call 返回一个任务句柄,客户端用 tasks/get 轮询,配上新的 tasks/update 和 tasks/cancel。

值得注意的是 tasks/list 被删了。理由很干脆:没有会话,"列出所有任务"这个操作就不再安全,你无法界定"所有"属于谁。

这个扩展是 AWS 贡献的。Amazon 的 Agentic AI 副总裁 Swami Sivasubramanian 说新规范和无状态核心已经进了 Bedrock AgentCore。微软那边,Foundry 工程副总裁 Tina Schuchman 的表述是 MCP 让他们从几十个集成扩展到几千个,Foundry toolbox 用一个统一 MCP 端点把工具聚起来,集中管治理、身份和可观测性。

一个协议同时被 AWS、微软、Google Cloud、Cloudflare 拿来当地基往上砌东西。这已经不是某家公司的插件规范了。

五、真正的痛点从来不是连接,是身份

官方博客里有一句诚实的自述:过去一年和实现者聊下来,授权是他们花时间最多的地方。

这一版在授权上补了六个 SEP,全是些不性感但必要的东西。授权服务器要按 RFC 9207 返回 iss 参数,客户端必须在兑换 code 前校验它,这一刀堵的是授权服务器混淆攻击。客户端在动态注册时要声明 application_type,桌面和 CLI 应用的 localhost 回调终于不会被无理由拒绝。凭据被绑定到签发它的 issuer,不能跨授权服务器复用。

更有信号意义的是:动态客户端注册(DCR)本身被正式弃用,方向指向客户端 ID 元数据文档(CIMD)。DCR 还能用,向后兼容留着,但未来版本会移除。

同一天,企业级托管授权扩展(EMA)转为稳定版。这件事对企业 IT 的意义可能比无状态还大。

老模型下每个员工要给每个服务器单独授权一次。入职就是手动连接一个又一个服务。安全团队没法执行统一策略,权限是每个用户自己点出来的,没有集中控制,也没有审计线索。更糟的是工作账号和个人账号混着,没机制强制走企业身份。

EMA 把企业自己的身份提供商变成决策方。底层走的是 IdP 在单点登录时签发的 ID-JAG 断言,客户端拿它去换 MCP 服务器授权服务器的访问令牌。用户全程不经过任何单服务器的同意页。

Okta 是第一个支持的 IdP,走的是它的 Cross App Access。客户端侧 Claude 全线和 VS Code 都接了。服务器侧 Asana、Atlassian、Canva、Figma、Granola、Linear、Supabase 已经支持,Slack 在做。Linear 工程负责人 Tom Moor 的评价挺可爱:登录一次,所有 MCP 连接器自动配好,这挺魔幻的。

魔幻的部分不在体验,在治理。访问决策终于回到了 IdP 管理台里,一条审计链贯穿所有连接器。

但我必须把话说完整:无状态和 EMA 解决的是身份与规模,不是 Agent 安全的全部。思科《2026 年 AI 安全现状》报告里那两个数字一直挂在那儿,83% 的组织计划部署 Agent 能力,只有 29% 觉得自己准备好了。提示注入、工具描述投毒、Agent 被当作横向移动跳板,这些问题不会因为协议删掉了会话而消失。

好消息是,Mcp-Method 和 Mcp-Name 上头之后,网关做策略执行的成本降下来了。规范还要求服务器拒绝头和包体不一致的请求,这堵掉的是一类路由与安全错配。这是防御姿态的实质改善。但也就到这儿。

六、代价:这是一次破坏性变更,账单已经开出

我不喜欢只讲收益不讲账。

这一版是 breaking change 级别的。Roots、Sampling、Logging 三个特性集体进入弃用状态。旧的 HTTP+SSE 传输也被正式弃用。规范同时立了一条形式化的特性生命周期政策:Active 到 Deprecated 到 Removed,每一档至少 12 个月。

还有些细碎但会咬人的:工具的输入输出 schema 现在支持完整的 JSON Schema 2020-12 词汇表,oneOf、anyOf、条件都能用;而"资源未找到"的错误码从自定义的 -32002 改成了标准 JSON-RPC 的 -32602。你要是把 -32002 硬编码在代码里,这行必须改。

迁移成本最重的地方,官方自己点明了:依赖会话标识符的开发者。

所以时间表值得复述一遍。发布候选版在 5 月 21 日就锁定了,到 7 月 28 日正式发布,中间留了整整十周给 SDK 维护者和客户端实现者做验证。四个 Tier 1 SDK(TypeScript、Python、Go、C#)当天全部支持新版本,Rust SDK 是 beta。

十周的公开验证窗口 + 12 个月的弃用过渡期 + 标准化 SEP 必须先在一致性测试套件里有对应场景才能定稿。这三条加起来才是我眼里这次改版最专业的部分。

它不是把破坏性变更粉饰过去,也不是把破坏性变更扔给社区自己扛。

一致性要求那条尤其关键。以后想往标准轨道上塞新特性,先写出可测的场景。这是把"设计意图"和"实现事实"绑在一起的做法,很多协议是吃过大亏之后才学会的。

有意思的是,迁移居然还带出了正向收益。开源框架 mcp-use 背后的 Manufact 首席技术官 Enrico Toniato 给了组具体数字:基于新的 SDK v2 做客户端与服务器拆分,包体积砍掉了大约 83%,速度快了 25%。

一次架构瘦身,顺手把包也瘦了。这种事不常有。

七、我的判断

那么,怎么看这次改版?

我的第一个判断是:这是一次认错,而且是漂亮的认错。

MCP 最初的双向有状态设计,是围绕本地场景长出来的。你的编辑器连着一个跑在本机的服务器,握手一次维持一条连接,完全合理。问题出在远程 MCP 起来之后,这套模型被拖进了云环境,然后所有人开始为它打补丁。粘性会话是补丁,Redis 存 session 是补丁,为了 elicitation 挂一条长连接也是补丁。

补丁多到一定程度,就该改地基了。协议共同发明人 David Soria Parra 的说法是这一版把过去 18 个月的教训全收进来了。核心维护者 Nick Cooper 讲得更贴切:MCP 一岁半,正在吸收数十年 web 协议设计的经验,变成一个更成熟的协议。

第二个判断:这次改版真正的分水岭意义,在治理而不在技术。

时间线值得再对一遍。2024 年 11 月 25 日,Anthropic 开源 MCP。2025 年 12 月 9 日,MCP 被捐给 Linux 基金会下新成立的 Agentic AI Foundation,这是一个定向基金,由 Anthropic、Block、OpenAI 共同发起,Google、微软、AWS、Cloudflare、彭博提供支持。八个月后,第一个大版本落地。

一个由单一厂商发明的协议,在被交出去之后完成了它最痛的一次手术,而不是在交出去之后陷入委员会僵局。这件事本身就是对开放治理有效性的一次验证。

从生态站台名单也能看出重心变了。Figma 讲的是设计与代码打通,Intuit 讲的是要给一亿消费者和企业客户交付可信的财务智能体验,Zoom 讲的是把会议智能安全地送进 AI 平台。这些都不是开发者玩具的语言,是产品线的语言。

第三个判断,也是我觉得最该说出口的:协议成熟是要付代价的,代价叫"没脾气"。

无状态、可路由、可缓存、可追踪。W3C Trace Context 现在通过 _meta 里固定的键名传递,开箱就是 OpenTelemetry 兼容的分布式追踪。这些词你在 HTTP、在 REST、在 gRPC 的演进史里全见过。

MCP 正在变成一条你不会去谈论的管道。就像没人会讨论今天的 TCP 有多激动人心。

这算好事吗?我觉得算。数据这一层的胜利从来不属于最惊艳的那个设计,属于最不容易坏的那个。会话被删掉的那一刻,MCP 放弃了一部分优雅,换来了在轮询负载均衡后面横向铺开的能力。

Agent 的规模化,卡的从来不是模型有多聪明。卡的是那些没人想聊的东西:会话往哪存、身份怎么继承、断线之后任务还在不在、一万个员工连一千个服务器要点多少次同意按钮。

这一版把这几件事往前推了一大截。

至于兴奋感,管道是不负责提供兴奋感的。它只负责在你不看它的时候,别漏。

引用来源

  1. Model Context Protocol Blog, "The 2026-07-28 Specification", 2026 年 7 月 28 日. https://blog.modelcontextprotocol.io/posts/2026-07-28/
  2. Model Context Protocol Blog, "Enterprise-Managed Authorization: Zero-touch OAuth for MCP", 2026 年. https://blog.modelcontextprotocol.io/posts/enterprise-managed-auth/
  3. Claude by Anthropic, "Bringing MCP 2026-07-28 to Claude", 2026 年 7 月 28 日. https://claude.com/blog/bringing-mcp-2026-07-28-to-claude
  4. MCP Servers Blog, "The 2026-07-28 MCP Specification: A Stateless, Extensible Future", 2026 年. https://blog.mcpservers.org/posts/mcp-spec-2026-07-28
  5. Linux Foundation, "Linux Foundation Announces the Formation of the Agentic AI Foundation", 2025 年 12 月 9 日. https://linuxfoundation.org/press/linux-foundation-announces-the-formation-of-the-agentic-ai-foundation
  6. Anthropic, "Donating the Model Context Protocol and establishing the Agentic AI Foundation", 2025 年 12 月. https://anthropic.com/news/donating-the-model-context-protocol-and-establishing-of-the-agentic-ai-foundation
  7. Cisco, "State of AI Security 2026", 2026 年. https://blogs.cisco.com/ai/cisco-state-of-ai-security-2026-report
  8. IT之家,《问世以来最大更新:MCP 2026-07-28 规范发布,转向"无状态"核心》,2026 年 7 月 29 日. https://www.ithome.com/0/983/102.htm