MCP 协议今天推出了第五个大版本(版本号 2026-07-28),核心变化:从有状态双向协议变成了无状态的请求/响应协议。 这是 MCP 社区呼声最高的改动。 之前的 MCP ...
AI 摘要
MCP协议发布重大版本,核心从有状态双向改为无状态请求/响应,每个请求独立携带版本和客户端信息,可负载到任意实例,使服务器能像HTTP服务部署,便于负载均衡和serverless。同时引入MRTR处理用户输入确认,请求头新增字段便于路由鉴权,授权加固。废弃部分功能但提供12个月过渡期。四个一级SDK同步更新,AWS、Microsoft、Cloudflare、Google Cloud等支持。开发者需评估迁移成本,但SDK团队已简化流程。 核心观点: 1. 协议改为无状态请求/响应,每个请求独立携带版本和客户端信息,可负载均衡,支持serverless部署。 2. MRTR允许服务端返回“需要输入”状态,客户端带用户回答重新请求,解决中途确认问题。 3. 请求头新增Mcp-Method和Mcp-Name,网关可直接根据请求头路由鉴权,无需解析JSON体。
推荐理由高信息密度,值得细读
原文
这是 MCP 社区呼声最高的改动。
之前的 MCP 客户端连上来要先握手,服务端要给你一个会话 ID(session ID),后续每次请求都得带着这个 ID。这意味着你的请求被限制在了某一台服务器实例上,不方便做负载均衡。
现在每个请求都是独立的,自带协议版本和客户端信息,可以负载到任何一个实例上。也就是说 MCP 服务器终于可以像普通 HTTP 服务一样部署了,serverless、边缘计算、或者 CDN 后面放一排实例。
那如果业务确实需要跨请求的状态呢?协议的建议是:由工具自己生成一个句柄(handle),让模型在工具调用之间传递。状态放在业务层而不是协议层,模型能看到这个句柄,也能理解要怎么用它。
【其他变化】
MRTR(多轮往返请求)解决中途需要用户输入确认的问题。
比如 Supabase 的 MCP 服务器想在创建项目前告诉你费用,或者在执行删除操作前让你确认。以前这需要维持一个双向流不断开,现在服务端返回“需要输入”状态,客户端带上用户的回答重新发请求即可。
请求头里新增了 Mcp-Method 和 Mcp-Name 两个字段,网关和防火墙可以直接根据请求头做路由和鉴权,不用解析 JSON 请求体。
授权方面做了几项加固,包括要求验证授权服务器的 issuer 参数(堵上了一个授权服务器混淆漏洞)。动态客户端注册(DCR)正式废弃,改用客户端元数据文档(CIMD)。
Roots、Sampling、Logging 三个功能标记为废弃,但至少还能用 12 个月。旧版 HTTP+SSE 传输同样进入废弃轨道。协议首次引入正式的废弃策略,保证最少 12 个月过渡窗口,这对生产环境的团队来说很实际:你可以排期升级,不用被动救火。
【生态与迁移】
四个一级开发工具包(SDK)同步更新:TypeScript、Python、Go、C#。Rust SDK 以 beta 状态跟进。MCP 目前月下载量接近 5 亿次,TypeScript 和 Python SDK 各自累计下载量都超过了 10 亿。
AWS(Amazon Bedrock AgentCore)、Microsoft(Foundry)、Cloudflare(Workers)、Google Cloud 等都已宣布支持新规范。Figma、Supabase、Honeycomb 等工具厂商也在跟进。
新规范有破坏性变更,依赖会话标识符的实现需要改造。SDK 团队表示根据早期测试反馈已经简化了迁移流程,但具体成本因项目而异。如果你现在在生产环境跑着 MCP 服务器,建议先看一遍完整的 changelog 和迁移指南,评估影响面再动手。
金句
每个请求都是独立的,自带协议版本和客户端信息,可以负载到任何一个实例上。
协议首次引入正式的废弃策略,保证最少12个月过渡窗口,这对生产环境的团队来说很实际:你可以排期升级,不用被动救火。
如果你现在在生产环境跑着 MCP 服务器,建议先看一遍完整的 changelog 和迁移指南,评估影响面再动手。
讨论
暂无评论。