MCP 版本 2 将于 2026 年 7 月 28 日正式上线。它取消了所有的握手(handshake)、session-ID 请求头,以及将 Model Context Protocol (MCP) 与粘性会话(sticky-session)服务器绑定的三个遗留子系统。该协议将变得完全无状态(stateless),因此任何自动扩缩容或无服务器(serverless)实例都可以处理任何请求,而无需保留客户端状态。
为什么这一转变至关重要
MCP v1 强制要求客户端通过 initialize 握手来启动会话;随后服务器会分配一个 Mcp-Session-Id。此后的每一次调用都必须携带该请求头,从而将用户固定在单个后端节点上。负载均衡器必须强制执行会话亲和性(session affinity),这增加了延迟和运维摩擦。
无状态化消除了这种摩擦。所有的上下文现在都存在于随每个 HTTP 调用传输的专用元字段(meta fields)中。一个请求可以落在任何实例上进行处理,并且在响应发送的瞬间,该实例即可被丢弃。使用无服务器平台、容器编排集群或任何按需启动/停止 Pod 环境的团队,现在可以将协议与其基础设施完美匹配。
哪些功能将被弃用
三个依赖于持久连接的子系统将正式被弃用:
- Sampling(采样) – 在 v1 中,服务器可以请求客户端生成文本,这种模式需要保持会话开启。v2 要求服务器直接调用大语言模型(LLM)提供商,或者使用
InputRequiredResult模式,即由客户端在后续请求中提供缺失的输入。 - Roots(根路径) – 此前,客户端通过发送 URI 来限制服务器对外部资源的视图。新方法将这些 URI 作为工具参数传递,或将其嵌入到请求的资源字段中,从而取消了独立的“roots”协商步骤。
- Logging(日志) – 协议层面的日志请求头将消失。请通过
stderr进行本地调试,或采用 OpenTelemetry 进行生产环境的可观测性建设。
弃用窗口期为一年。弃用的功能在该期间内仍可继续工作,为团队在协议拒绝这些功能之前进行重构留出时间。
除了无状态化之外还有哪些新特性
MCP v2 增加了两个官方扩展:
- MCP Apps – 一种轻量级的方式,用于描述协议可以调用的服务器端渲染用户界面。
- Tasks – 一种用于处理可能跨越多个“请求-响应”周期的长耗时操作的模式。
这两个扩展都基于无状态请求模型,并避免了隐藏的会话状态。
风险与注意事项
这次变更并非“即插即用”式的升级。v2 SDK 目前仍处于 beta 阶段,其公开 API 在正式稳定版发布前可能会发生变化。对于无法容忍破坏性变更(breaking changes)的生产负载,请继续使用稳定的 v1 SDK,直到 v2 SDK 进入正式版。
开发者还需要审计现有代码,检查是否使用了上述三个被弃用的子系统。
务实的迁移路线图
- 立即审计 – 扫描您的服务,检查是否使用了握手、
Mcp-Session-Id、采样调用、roots URI 以及协议级日志。识别在无状态模型下会失效的代码。 - 在非关键节点进行测试 – 当稳定的 v2 SDK 发布时,启动一个沙盒服务器,将其指向测试客户端,并验证所有必需的元字段是否已存在且被正确解析。
- 在截止日期前完成全面迁移 – 在一年的宽限期结束前,完成所有生产节点的切换,以避免运行时被拒绝。
后续关注重点
- 稳定版 SDK 发布 – Beta 版 SDK 将被冻结,并发布一个版本化的稳定包。该版本将是任何关键部署的安全目标。
过渡期需要进行代码更改并经历一段短暂的 beta SDK 实验期,但回报是为任何基于 LLM 的应用提供一个更简洁、更具扩展性的集成点。
核心要点: 如果您的技术栈仍依赖于 MCP 握手或那三个被弃用的子系统,请立即开始审计;一年的宽限期虽然充裕,但真正的成本在于重构的工作量,而非截止日期。
