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="
}
客户端展示确认对话框,用户回答后,携带 inputResponses 和 requestState 重新发起原始请求。任何服务器实例都能接手这次重试,因为所需状态全部在载荷里。
这个设计特别适合高风险操作:删除工作区、提交昂贵计算任务、覆盖已有数据——在执行前展示影响范围并等待确认。
三、网关友好:Header 路由与缓存
新版要求 Streamable HTTP 请求必须携带两个标准 Header:
Mcp-Method:操作类型,如tools/call、resources/readMcp-Name:具体工具或资源名,如run_synthesis
这意味着 API 网关、WAF、限流器可以直接基于 Header 做策略,无需解析 JSON 请求体。企业可以建立按工具分级的访问控制:
| 工具 | 推荐策略 |
|---|---|
query_report |
项目成员可调用,只读审计 |
run_training |
项目权限 + GPU 配额 + 并发限制 |
delete_workspace |
指定角色 + MRTR 审批 + 变更留痕 |
同时,tools/list、resources/list 等列表接口现在返回 缓存提示:
ttlMs:结果可保持新鲜的时长(毫秒)cacheScope:public(可跨用户共享)或private(仅当前用户)- 确定性排序:相同工具集合保持相同顺序,避免上游 Prompt Cache 因顺序抖动而失效
四、Tasks 异步任务与扩展框架
长时间运行的操作(数据管道、模型训练、CI 流水线)不能指望 HTTP 连接一直保持。新版将 Tasks 从实验性特性升级为正式扩展:
- 客户端调用
tools/call,服务端立即返回一个持久化的taskId - 客户端通过
tasks/get轮询状态,tasks/update补充中途所需输入 - Task 有五种状态:
working→input_required→completed/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 维护者,检查这三点:
- 服务端是否依赖跨调用的隐式状态(Session 中偷偷存了东西)→ 改为显式句柄
- 是否使用了 Roots / Sampling / Logging → 开始规划替代方案
- 远程部署是否用了 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 的团队来说,这是运维复杂度的一次大幅降低。
延伸阅读: