跳转到内容
Guide

MCP 走向无状态:2026 年规范对服务器进行的 5 项更改

| 8 min read

MCP 规范候选版本已于 2026 年 5 月 21 日锁定,并于 7 月 28 日发布,版本为 2026-07-28。 无状态核心、任务、扩展、MCP 应用程序和 OAuth 强化,以及服务器作者所需的确切传输更改。

Data center network switches representing stateless MCP transport
Photo by Taylor Vick on Unsplash

模型上下文协议候选版本已于 2026 年 5 月 21 日锁定。它作为版本发布 2026-07-28 7 月 28 日,标题更改重写了每个服务器处理 request:MCP在协议层是无状态的。 不 initialize 握手,没有 Mcp-Session-Id,无粘性路由。 Any request can land on any instance.

如果您在负载均衡器后面运行 MCP 服务器,这将删除一个基础设施 这使得水平缩放变得烦人:共享会话存储。 以下是五个变化 在客户开始发送新版本之前,您需要进行重要的传输编辑。

1.无状态核心去掉了握手

2025 年交通开通 initialize/initialized 交换。 的 服务器创建了一个会话,并返回了一个 Mcp-Session-Id,客户也回应了这一点 每次以后的请求。 该会话必须位于负载均衡器和服务器的某个地方 可以到达,因此您运行了粘性会话或共享商店。

2026年的运输将其全部删除。 曾经存在于会话中的协议元数据现在 乘坐 _meta 每个请求上的字段。 客户通过新的方式读取功能 server/discover 方法而不是在连接时读取它们一次。 结果: 没有会话对象可以丢失,没有实例可以固定。

2. 路由移入请求标头

因为没有要检查的会话,所以规范添加了 Mcp-MethodMcp-Name 请求标头,以便代理可以在不解析 JSON-RPC 主体的情况下进行路由。 一个 tools/call 为了 dns_lookup 两者都包含在标头中,并且您的边缘可以 将重型工具发送到更大的池,而无需反序列化任何内容。

您可以通过检查它返回到的内容来确认已部署的服务器使用新的传输方式。 简单的请求。 botoi headers 端点显示任何 URL 的响应状态和标头,因此 您可以检查 MCP 端点的 Allow 和 CORS 标头,无需编写客户端:

3. 状态通过显式句柄生存

无状态传输并不意味着无状态工具。 长时间运行的作业仍需要跟踪 进步。 规范的答案是显式句柄模式:工具调用返回 ID、模型 在下一次调用时将该 ID 传回,并且状态位于由句柄键入的数据存储中。 任何实例都可以为后续服务提供服务,因为请求携带了密钥。

这与 REST API 使用的形状相同。 该请求携带服务器所需的所有内容,因此您 通过添加 Pod 来扩展,而不是通过同步会话来扩展。 botoi MCP 服务器已经以这种方式运行: 无状态,每个请求一个新的处理程序,API 密钥在标头中转发。

4. 任务、扩展和 MCP 应用程序毕业

此次修订正式确定了三个功能:

  • 任务 从实验性核心功能转移到带有清理器的扩展 生命周期。 客户推动进步 tasks/get, tasks/update, 和 tasks/cancel 而不是旧的投票设计。
  • 扩展 现在携带反向 DNS 标识符,通过功能进行协商 地图、版本独立,并遵循自己的规范增强提案轨道。 你 无需等待核心发布即可发布功能。
  • MCP 应用程序 让服务器返回在沙盒 iframe 中呈现的交互式 HTML。 每个 UI 操作都会经历与工具调用相同的审核路径,因此会记录按钮单击 并像其他操作一样进行权限检查。

5. RFC 9207 周围的授权强化

六个 SEP 加强了 OAuth 2.0 和 OpenID Connect 的一致性。 您无法跳过的更改: 验证 iss 每个 RFC 9207 的参数。没有它,攻击者可以注入 由一台服务器将授权代码生成到另一台服务器的流中,这是一类跨服务器攻击 这会影响在共享身份验证后面运行多个 MCP 服务器的任何部署。 规格还 澄清刷新令牌轮换并警告不要在同意范围内进行静默范围积累 屏幕。

A formal deprecation policy ships alongside the spec. 功能现在通过 Active 移动, 弃用和删除阶段,弃用和删除之间至少有 12 个月的时间间隔。 你的2025服务器不会在7月28日崩溃; 相反,它会进入弃用时钟。

您的迁移清单

  • 删除会话存储。 停止铸造和阅读 Mcp-Session-Id。 从以下位置读取协议元数据 _meta 根据每个请求。
  • 添加路由标头。 发出并接受 Mcp-MethodMcp-Name 所以你的代理路由而不解析正文。
  • 将会话转换为句柄。 从有状态工具返回一个 ID 并键入您的 存储在其上。 任何实例都会回答后续问题。
  • 添加 iss 检查。 根据 RFC 9207 验证授权服务器颁发者 每次代币交换。
  • 固定到 2026-07-28 现在就针对 RC 进行构建; 它的功能已被冻结 并符合最终规格。

Botoi 目前运行带有 49 个精选工具的无状态 MCP 服务器,因此您可以研究生产 无状态传输而不是猜测。 将其连接到 Claude Code、Cursor 或 VS Code MCP 设置页面, 或 检查任何端点的响应 /v1/headers交互式文档

FAQ

无状态MCP规范什么时候生效?
候选版本于 2026 年 5 月 21 日锁定,最终规范于 2026 年 7 月 28 日发布,版本字符串为 2026-07-28。 RC 的功能已冻结,因此您现在针对它构建的任何内容都将符合最终规格。 旧版 2025 版本上的服务器在新的 12 个月弃用政策下继续工作,但无状态传输是每个新客户端都会登陆的地方。
无状态核心中到底删除了什么?
初始化/初始化握手和 Mcp-Session-Id 标头消失了。 服务器不再在请求之间保存会话对象。 过去存在于会话中的协议元数据现在在每个请求的 _meta 字段中传输,客户端使用新的服务器/发现方法获取功能,而不是在连接时读取一次。
我是否必须重写我的 MCP 服务器?
只有传输层。 工具处理程序、模式和描述保持不变。 您删除会话存储,停止读取 Mcp-Session-Id,从每个请求的 _meta 读取协议元数据,并添加 Mcp-Method 和 Mcp-Name 请求标头,以便负载均衡器可以在不检查正文的情况下进行路由。 后台已经无状态的服务器几乎不需要任何工作。
如果协议是无状态的,状态如何生存?
通过显式句柄模式。 工具调用返回一个 ID,模型在下一次调用时将该 ID 传回。 状态存在于由句柄键入的数据存储中,而不是协议会话中。 这与 REST API 多年来使用的模式相同:请求携带服务器执行操作所需的所有内容,因此任何实例都可以为其提供服务。
授权发生了什么变化?
六项规范增强提案加强了 OAuth 2.0 和 OpenID Connect 的一致性。 首要要求是根据 RFC 9207 验证 iss 参数,以停止跨服务器的授权代码注入,以及刷新令牌轮换和范围累积的更清晰规则。 如果您交付经过身份验证的 MCP 服务器,则 iss 检查是您无法跳过的一项更改。

开始使用 botoi 构建

150+ 个 API 端点,涵盖查询、文本处理、图片生成和开发者工具。免费套餐,无需信用卡。