30 秒快速回答

2026 年 7 月 28 日,MCP(Model Context Protocol)正式发布第五版规范,代号 2026-07-28。这是协议自 2024 年 11 月推出以来规模最大的一次架构重构——核心变化只有一句话:MCP 从有状态协议变成了无状态协议initialize 握手和 Mcp-Session-Id 被彻底移除,每次请求自包含版本和能力信息,任意服务器实例都能处理。这意味着 MCP 服务不再需要粘性会话和共享 Session 存储,可以像普通 HTTP 服务一样水平扩展。


一、无状态化:最大的架构变革

旧版 MCP(2025-11-25)的连接流程是”先握手、再干活”:客户端必须先发 initialize 请求,服务端返回 Mcp-Session-Id,后续每次调用都要带着这个 ID,把客户端”钉”在最初建立会话的那台实例上。

新版直接把整个握手和会话机制删了。来看对比:

旧版(2025-11-25):

POST /mcp HTTP/1.1
Content-Type: application/json

{"jsonrpc":"2.0","id":1,"method":"initialize",
 "params":{"protocolVersion":"2025-11-25",
           "clientInfo":{"name":"my-app","version":"1.0"}}}

→ 服务端返回 Mcp-Session-Id: 1868a90c

POST /mcp HTTP/1.1
Mcp-Session-Id: 1868a90c-3a3f-4f5b
Content-Type: application/json

{"jsonrpc":"2.0","id":2,"method":"tools/call",
 "params":{"name":"search","arguments":{"q":"AI教程"}}}

新版(2026-07-28):

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

{"jsonrpc":"2.0","id":1,"method":"tools/call",
 "params":{"name":"search","arguments":{"q":"AI教程"},
           "_meta":{"io.modelcontextprotocol/clientInfo":
                     {"name":"my-app","version":"1.0"}}}}

一次请求,自描述,即可完成调用。关键区别:

维度 2025-11-25 2026-07-28
连接模型 initialize 握手,维护 Session 取消握手,每次请求自描述
会话标识 Mcp-Session-Id 移除
能力声明 初始化时一次性交换 _meta 随请求携带 + 可选 server/discover
水平扩展 需要粘性路由 + 共享 Session 存储 普通轮询负载均衡即可
服务端主动请求 双向流中回调 MRTR(见下文)

重要理解:协议层无状态 ≠ 应用层无状态。如果你的工具需要跨调用保持状态(比如浏览器会话、购物车),可以通过服务端生成显式句柄(如 basket_id),作为普通参数在调用间传递。这种做法比隐藏的 Session 状态更透明——模型能看到这些句柄并主动编排它们。


二、MRTR:服务端需要用户确认怎么办?

无状态协议带来的一个难题是:服务端处理请求时突然需要用户确认或补充信息,怎么办?旧版靠双向流直接向客户端发请求,新版不能用这招了。

MCP 2026-07-28 引入了 Multi Round-Trip Requests(MRTR)。原理很巧妙:

服务端不是等在那要答案,而是把”我需要什么信息”作为结果返回,让客户端收集完信息后重试原始请求

{
  "resultType": "input_required",
  "inputRequests": {
    "approve_cost": {
      "type": "elicitation",
      "message": "本次训练预计占用 400 GPU·h,是否继续?",
      "schema": { "type": "boolean" }
    }
  },
  "requestState": "eyJzdGVwIjoxLCJmaWxlcyI6WyJhIiwiYiIsImMiXX0="
}

客户端展示确认对话框,用户回答后,携带 inputResponsesrequestState 重新发起原始请求。任何服务器实例都能接手这次重试,因为所需状态全部在载荷里。

这个设计特别适合高风险操作:删除工作区、提交昂贵计算任务、覆盖已有数据——在执行前展示影响范围并等待确认。


三、网关友好:Header 路由与缓存

新版要求 Streamable HTTP 请求必须携带两个标准 Header:

  • Mcp-Method:操作类型,如 tools/callresources/read
  • Mcp-Name:具体工具或资源名,如 run_synthesis

这意味着 API 网关、WAF、限流器可以直接基于 Header 做策略,无需解析 JSON 请求体。企业可以建立按工具分级的访问控制:

工具 推荐策略
query_report 项目成员可调用,只读审计
run_training 项目权限 + GPU 配额 + 并发限制
delete_workspace 指定角色 + MRTR 审批 + 变更留痕

同时,tools/listresources/list 等列表接口现在返回 缓存提示

  • ttlMs:结果可保持新鲜的时长(毫秒)
  • cacheScopepublic(可跨用户共享)或 private(仅当前用户)
  • 确定性排序:相同工具集合保持相同顺序,避免上游 Prompt Cache 因顺序抖动而失效

四、Tasks 异步任务与扩展框架

长时间运行的操作(数据管道、模型训练、CI 流水线)不能指望 HTTP 连接一直保持。新版将 Tasks 从实验性特性升级为正式扩展:

  1. 客户端调用 tools/call,服务端立即返回一个持久化的 taskId
  2. 客户端通过 tasks/get 轮询状态,tasks/update 补充中途所需输入
  3. Task 有五种状态:workinginput_requiredcompleted / failed / cancelled

客户端即使崩溃重启,只要保留 taskId 就能继续追踪任务。

此外,新版建立了正式的 Extensions 扩展框架,目前官方扩展方向包括:

扩展 用途
io.modelcontextprotocol/tasks 长任务、轮询、恢复
MCP Apps 服务端渲染交互式 UI(在对话中嵌入 sandbox iframe)
Enterprise Managed Authorization 企业 IdP 集中管理员工对 MCP 服务的访问

五、授权强化与弃用清单

授权方面也收紧了边界:

  • 客户端必须验证授权响应的 Issuer(RFC 9207),防止跨授权服务器的 Code 混用
  • Dynamic Client Registration(DCR)进入弃用,推荐使用 Client ID Metadata Documents(CIMD)
  • 新增 application_type 字段,防止 localhost 重定向伪装成 Web 应用
  • 正式支持 W3C Trace Context 传播,方便接入 OpenTelemetry

以下功能被标记为 弃用(Deprecated),至少 12 个月内不会被移除(最早 2027 年 7 月 28 日):

  • Roots:改用工具参数传递路径
  • Sampling:直接调用 LLM API
  • Logging:改用 stderr + OpenTelemetry
  • HTTP+SSE 传输:由 Streamable HTTP 替代
  • Dynamic Client Registration:由 CIMD 替代

六、我该不该迁移?

如果你是 MCP Server 维护者,检查这三点:

  1. 服务端是否依赖跨调用的隐式状态(Session 中偷偷存了东西)→ 改为显式句柄
  2. 是否使用了 Roots / Sampling / Logging → 开始规划替代方案
  3. 远程部署是否用了 HTTP+SSE → 切换到 Streamable HTTP

如果你是 MCP Client 开发者,核心改动:

  • 删除 initialize 逻辑,改为每次请求携带 _meta
  • 理解 resultType 字段(result / input_required / task
  • 审查 OAuth 流程是否符合 2.1 / OIDC 要求

四个 Tier 1 SDK(TypeScript、Python、Go、C#)已在发布当天同步更新,附带了详细的迁移指南。不必恐慌:弃用功能有至少 12 个月的缓冲期,SDK 也会在过渡期兼容旧协议。


总结

MCP 2026-07-28 是一次”换心脏”级别的重构,核心关键词是无状态化。它让 MCP 从依赖长连接和粘性会话的”本地插件协议”,进化成可以跑在普通负载均衡器后面的”企业 AI 工具总线”。对于已经在生产环境部署 MCP 的团队来说,这是运维复杂度的一次大幅降低。

延伸阅读