MCP无状态化背后的真正逻辑配套资源包
用途:配合"参考资料和命令放在简介和置顶评论"。以下三块内容可直接复制到视频简介和置顶评论。
用途:配合参考资料和命令放在简介和置顶评论。以下三块内容可直接复制到视频简介和置顶评论。
一、grep 自查清单(十分钟定位你的迁移分位)
在你的 MCP server 代码仓库根目录执行:
# 1. session 依赖:找 Redis 会话存储、sticky cookie、K8s 会话亲和
rg -n "Mcp-Session-Id|sessionId|StreamableHTTPServerTransport"
# 2. 握手残留:initialize 握手与 initialized 通知
rg -n "initialize|notifications/initialized"
# 3. 旧传输类:HTTP+SSE 已正式废弃,优先迁移
rg -n "SSEServerTransport|sse"
# 4. 实验性 Tasks 拦截层:v2 已整体移除
rg -n "tasks/list|experimental.*tasks"
# 5. 旧错误码字面量:-32002 已无法发出,资源不存在统一返回 -32602
rg -n "\-32002"
# 6. SDK 错误面与上下文(TS):McpError 改名 ProtocolError,extra.* 改 ctx.*
rg -n "McpError|ErrorCode|extra\."
# 7. TS 项目跑完 codemod 后,找它无法安全改写、需要人工处理的位置
rg -n "@mcp-codemod-error"
判读标准(对照官方千服调研的分位):
- 以上全部零命中 → 约等于升一次 SDK(官方调研中 90% 的服务器在这一档)
- 命中第 1 条且把 session id 当存储键 → 迁移成本最高的一档,需要显式句柄改造
- 命中第 3 条 → 旧 HTTP+SSE 传输,宽限期最短,优先处理
- 命中第 5、6 条 → 属于 SDK 升级的正确性修复,跟着迁移指南走即可
二、新旧兼容矩阵(客户端 × 服务器协议时代)
来源:MCP 2026-07-28 规范生命周期章节(Modern = 2026-07-28 起;Legacy = 2025-11-25 及以前;Dual-era = 同时支持两者)。
| 客户端 | 服务器 | 结果 |
|---|---|---|
| Modern | Modern | 工作。server/discover 可选;版本不匹配时报 -32022 并附支持版本列表,客户端换版本重试 |
| Modern | Legacy | 失败。客户端应先探测 server/discover 以确定性失败,再回退旧握手 |
| Dual-era | Modern | 工作。探测返回现代结果,保持 modern |
| Dual-era | Legacy | 工作。探测失败或超时后回退 initialize |
| Legacy | Modern | 失败。缺 _meta 必需字段或必需头,旧客户端没有前向回退机制 |
| Legacy | Dual-era | 工作。服务器应答 initialize,按协商的旧版本服务 |
| Legacy | Legacy | 按旧版本工作 |
三条容易踩的行为规则:
- 时代判定是服务器的属性,不是单个请求的属性。客户端可以缓存判定结果,失败时重新探测。
- 双时代服务器按客户端的开场方式选择行为:带现代 _meta 的请求走无状态,initialize 请求走旧语义,同一个端点可以并发服务两个时代。
- HTTP 上现代服务器也用 400 表达版本不支持、缺能力、头校验失败。客户端收到 400 要先看响应体里有没有现代 JSON-RPC 错误,再决定要不要回退 legacy。
三、原始链接
官方一手来源
- MCP 官方博客(2026-07-28 发布公告):https://blog.modelcontextprotocol.io/posts/2026-07-28/
- 规范变更日志:https://modelcontextprotocol.io/specification/2026-07-28/changelog
- 废弃注册表:https://modelcontextprotocol.io/specification/2026-07-28/deprecated
- SEP 目录(SEP-2575 移除握手 / SEP-2567 移除会话 / SEP-2322 MRTR / SEP-2243 路由头 / SEP-2549 列表缓存 / SEP-2468 iss 校验 / SEP-2663 Tasks / SEP-2577 废弃清单 / SEP-2596 废弃政策):https://modelcontextprotocol.io/seps
- TypeScript SDK v2 迁移指南:https://ts.sdk.modelcontextprotocol.io/v2/
- Python SDK v2 迁移指南:https://py.sdk.modelcontextprotocol.io/v2/
- Go SDK 发布页:https://github.com/modelcontextprotocol/go-sdk/releases
- C# SDK 发布页:https://github.com/modelcontextprotocol/csharp-sdk/releases
引用的社区一手材料
- Lambda 第二次调用崩溃(app 要放进 handler 里构建):python-sdk Issue #3121
https://github.com/modelcontextprotocol/python-sdk/issues/3121 - MRTR 毁掉延迟统计(6 秒被算成 2 次 1 秒):mcpsnoop 维护者复盘文档
https://github.com/kerlenton/mcpsnoop/blob/main/docs/2026-07-28-mrtr-breaks-latency.md - Glama 网关运营者证词 + 提前迁移者证词(同一 HN 帖):
https://news.ycombinator.com/item?id=49088058 - 老部署 15-30ms 换水平扩容:channel.tel 生产实践博客
https://www.channel.tel/blog/mcp-stateless-spec-2026-guide - httpx2 的 TLS 校验改走系统信任库:pydantic 官方博客
https://pydantic.dev/articles/httpx2 - CIMD redirect_uris 精确匹配(含端口)背景:
https://agentpatterns.ai/standards/oauth-client-id-metadata-documents/