摘要:MCP 2026-07-28 不是一次“多几个字段”的小更新,而是一次需要开发者重新检查传输层、状态管理、版本协商、授权和长任务机制的架构级升级。旧 MCP Server 如果依赖 initialize 握手、Mcp-Session-Id、Sticky Session、服务端主动请求或旧式 HTTP+SSE,就不能简单地只修改版本号。本文将从“旧服务能否继续跑、哪些地方必须改、怎样兼容旧客户端、如何灰度上线”四个问题出发,给出一套可执行的迁移路径。对于只是本地自用、功能简单的 stdio Server,可以先保持兼容;对于已经运行在公网、负载均衡、企业网关或多实例环境中的 MCP Server,建议尽快建立 2026-07-28 兼容测试分支。
核心结论
旧 MCP Server 可以升级到 2026-07-28,但不能把它理解为“升级 SDK 然后重新启动”。这次版本把 MCP 的协议核心从有握手、有协议级 Session 的连接模型,转向每个请求自描述的无状态模型。迁移时最关键的不是 Tool 本身,而是围绕 Tool 的状态、版本协商、HTTP 路由、授权、缓存和交互方式。官方在 2026 年 7 月 28 日发布最终规范,并同步说明 TypeScript、Python、Go、C# Tier 1 SDK 已支持该版本。
- 第一优先级:清点是否依赖
initialize/initialized、Mcp-Session-Id、Sticky Session 或服务器内存 Session。 - 第二优先级:把跨调用状态改成显式 handle、数据库状态或经过完整性保护的
requestState,不要继续依赖协议级 Session。 - 第三优先级:为新版请求补齐每请求
_meta、版本协商、Mcp-Method/Mcp-Name等 Streamable HTTP 要求。 - 第四优先级:检查 MRTR、Tasks、缓存、授权和已弃用的 Roots/Sampling/Logging,避免新代码继续绑定即将退出的能力。
- 实施建议:生产项目不要“一刀切”;优先采用双栈、自动版本协商和灰度流量,保留旧版本回退路径,确认客户端生态已经兼容后再移除 Legacy 路径。
如果你正在搭建企业智能体、Coding Agent 或自动化平台,可以同时参考 AI Stack Nav 的企业级智能体平台能力拆解以及从编程助手接入 MCP 的安装配置思路,理解 MCP 在真实 Agent 系统中承担的“工具与上下文连接层”角色。
背景与主要变化:为什么说 2026-07-28 是架构级升级
根据 MCP 官方发布说明,2026-07-28 版本的核心方向可以概括成四个词:stateless、routable、cacheable、extensible。也就是把协议变得更无状态、更容易通过标准网关路由、更适合缓存,也更适合用 Extensions 扩展长期任务、应用 UI 和企业授权能力。对开发者而言,这些变化直接影响生产部署方式:过去一个远程 MCP Server 可能依赖会话 ID、长连接、粘性会话甚至共享 Session Store;新版的目标则是让任意请求都能落到负载均衡后的任意实例。
| 迁移点 | 旧模式 | 2026-07-28 新模式 | 是否需要重点检查 |
|---|---|---|---|
| 初始化 | initialize + notifications/initialized | 每请求携带版本与能力;可选 server/discover | 是 |
| 协议级会话 | Mcp-Session-Id | 移除协议级 Session | 是 |
| 跨调用状态 | 内存 Session / 连接上下文 | 显式 handle、持久化状态或受保护的 requestState | 是 |
| 服务器向客户端要信息 | 服务器主动发起请求并依赖保持中的双向流 | MRTR:input_required + 客户端重试原请求 | 是 |
| HTTP 路由 | 网关常需解析 JSON body | Mcp-Method / Mcp-Name Header | 远程 Server 必查 |
| Tool/Resource 列表 | 经常重复拉取 | ttlMs + cacheScope,并要求稳定顺序 | 建议 |
| Tasks | 实验性核心能力 | io.modelcontextprotocol/tasks Extension | 使用长任务时必查 |
| 授权 | 旧 OAuth/DCR 集成 | issuer 校验、凭据 issuer 绑定,DCR 转向 CIMD | 公网与企业项目必查 |

图 1|MCP 2026-07-28 的核心变化:从握手与协议级 Session,迁移为每请求自描述、可路由、可缓存的无状态核心。
官方最终规范明确:initialize/initialized 交换以及 Mcp-Session-Id 被移除;新版请求在 _meta 中携带协议版本、客户端能力等信息,同时服务器必须实现 server/discover 以供客户端查询支持版本、能力和身份。对于 HTTP 流量,标准请求 Header 还增加了可被网关直接消费的路由信息。
这次升级对旧 MCP Server 的真实影响
如果你的 Server 只是一个本地 stdio 工具,注册两三个 Tool,处理完请求就返回结果,而且没有 OAuth、长任务、Elicitation、Sampling、Roots 或 Session 状态,那么迁移成本通常不高。真正需要警惕的是已经“工程化”的远程 MCP Server:例如把用户身份、当前工作区、临时任务、OAuth Token、购物车、审批步骤或数据库事务放在 Session 内存中;或者在 Nginx、Cloudflare、Kubernetes、API Gateway 后面依赖 Sticky Session;又或者在一个 POST 请求上维持长时间双向 SSE 交互。
无状态协议不代表业务不能有状态。新规范只是要求不要再把业务状态隐含在协议 Session 中。你的 Agent 仍然可以维护项目、任务、订单、会话历史和审批状态,只是这些状态需要变得显式、可验证、可持久化、可跨实例恢复。例如创建任务后返回 task_id,后续 Tool 把 task_id 作为参数继续调用;或者把状态存入 Redis/PostgreSQL,以用户身份与任务 ID 为主键,而不是以某个临时连接的 Session ID 为主键。
这也是新版更适合生产环境的关键原因:当请求不再被某个 Session 固定到单个实例后,普通 Round-Robin 负载均衡即可分发流量;实例滚动升级、自动扩缩容、故障切换也更自然。不过这并不会自动让你的业务代码获得高可用——如果你的 Tool 本身仍把重要状态只存在进程内存里,那么实例重启后一样会丢失。因此,迁移协议和迁移状态模型要同时进行。
迁移前准备:先确定你的旧项目属于哪一类
不要一上来就改代码。先把当前 MCP 项目归类,才能判断应该直接升级、双栈迁移还是暂时维持旧版本。下面这一步往往比“照着文档改 API”更重要。
| 项目类型 | 典型特征 | 推荐策略 |
|---|---|---|
| 本地 stdio 简单 Server | 少量 Tool,无远程授权,无 Session | 先升级 SDK,再做新旧协议兼容测试 |
| TypeScript v1 Server | 依赖 @modelcontextprotocol/sdk | 先 v1→v2,再显式启用 2026-07-28 |
| TypeScript v2 但仍跑 2025-era | 已拆包但未开启新版协议 | 直接按 2026-07-28 支持指南迁移 |
| 远程 Sessionful Streamable HTTP | 使用 Mcp-Session-Id、粘性会话 | 双栈最稳妥,先保留 Legacy Handler |
| 旧 HTTP+SSE Server | 仍使用历史 SSE transport | 迁往 Streamable HTTP,不建议继续扩展旧传输 |
| 企业 OAuth / Gateway Server | 授权服务器、WAF、API Gateway、多租户 | 协议迁移与授权审计同步进行 |
迁移前至少保留三样东西:当前可运行版本的 Git Tag、生产配置的脱敏备份、以及一套能够验证 tools/list、tools/call、鉴权、错误码和断线恢复的回归测试。如果没有回归测试,先补测试再升级。
完整迁移步骤:旧 MCP Server 升级到 2026-07-28
登录后阅读全文
以下为核心实操内容。登录或免费注册后,即可查看完整步骤、参数配置、提示词和报错解决方案。
事实依据与来源
内容核验日期:2026-08-11。
官方已确认:MCP 官方在 2026 年 7 月 28 日发布 2026-07-28 最终规范;该版本移除协议级 Session 与旧初始化握手,引入 server/discover、每请求元数据、MRTR、Header 路由、可缓存 List/Read 结果、Tasks Extension、授权强化和正式弃用策略;TypeScript、Python、Go、C# Tier 1 SDK 已在官方发布说明中列为支持该规范。详细变化以MCP 官方 2026-07-28 发布说明和官方 Key Changes为准。
官方 SDK 迁移依据:TypeScript 项目如果仍使用 @modelcontextprotocol/sdk v1.x,应先按照TypeScript SDK v1→v2 迁移指南完成 SDK 层升级,再按照2026-07-28 协议支持指南处理版本协商、HTTP Handler、requestState、MRTR、缓存和授权。
编辑实施建议:本文提出的“双栈灰度比例、共享状态层、监控指标、Tool 高风险审批、回滚开关”等属于面向生产环境的工程建议,不是 MCP 规范强制要求。企业应根据自身 Host、SDK、网关、身份系统、合规要求和客户端覆盖率实测后决定上线节奏。
仍需实测:不同 MCP Host、第三方 SDK、IDE、Agent 平台对 2026-07-28 的实际采用速度并不完全一致;即使服务器 SDK 已支持新规范,也不代表你的所有客户端已经启用新协议。因此正式切换前必须验证真实客户端的版本协商和功能矩阵。
FAQ
1. MCP 2026-07-28 是正式版本还是 RC?
2026-07-28 已在 2026 年 7 月 28 日作为正式规范发布。此前存在 RC,但本文讨论的是最终 2026-07-28 规范。生产项目仍应以当前官方规范页和所用 SDK 的稳定版本说明为准。
2. 旧 MCP Server 不升级会立刻失效吗?
不会因为新规范发布就自动失效。MCP 有版本协商与兼容机制,旧规范仍可能被 SDK 和客户端支持一段时间。但如果项目依赖已弃用能力或希望接入只支持新版的客户端,就需要安排迁移;长期维护的生产 Server 也不建议无限期停在旧架构。
3. 取消 Mcp-Session-Id 后,Agent 的长期记忆是不是也没了?
不是。取消的是协议级 Session,不是业务状态。长期记忆应该存入数据库、向量库或其他持久化存储,并通过用户、租户、项目或记忆 ID 关联;多步交互可使用显式 handle 或经过安全保护的 requestState。
4. TypeScript 项目只升级到 SDK v2 就自动使用 2026-07-28 吗?
不能这样假设。官方 v2 文档明确区分“SDK v1→v2”与“启用 2026-07-28 协议”。某些手工创建的 Client/Server 默认仍保持 2025-era 行为,新版协议需要使用相应入口或版本协商配置。因此升级后必须实际读取协商结果并做协议测试。
5. server/discover 是每次调用都必须先执行吗?
服务器必须实现 server/discover,但客户端不一定每次业务请求前都要调用。它主要用于提前了解支持版本、能力与服务器身份,以及在某些场景做兼容探测。具体调用和缓存策略应遵循使用的 SDK。
6. Roots、Sampling、Logging 还能不能继续用?
在 2026-07-28 中它们进入弃用状态,并不是立即删除。旧实现为兼容可以继续工作,但新实现不应继续增加依赖。官方建议 Roots 用 Tool 参数、Resource URI 或 Server 配置替代;Sampling 改为直接集成模型提供商 API;Logging 则使用 stdio 的 stderr 或 OpenTelemetry 等观测方案。
7. HTTP+SSE 和 Streamable HTTP 有什么迁移原则?
Legacy HTTP+SSE 已被纳入弃用路径,新的远程 Server 应优先使用 Streamable HTTP。老项目可以先通过兼容桥接继续服务旧客户端,同时让新客户端迁到 Streamable HTTP,等覆盖率和监控稳定后再关闭旧入口。
8. 企业迁移最容易忽略什么?
最容易忽略的是网关与身份系统。开发环境直连 Server 能跑通,不代表生产环境 WAF 会保留 Mcp-Method/Mcp-Name,也不代表 issuer、凭据隔离、缓存 scope、多租户状态和审计已经正确。建议把协议升级当作一次端到端基础设施变更,而不是只升级 npm/pip 包。
参考来源
- Model Context Protocol 官方:The 2026-07-28 Specification
- Model Context Protocol 2026-07-28 官方规范
- MCP 2026-07-28 Key Changes
- MCP TypeScript SDK:v1.x → v2 迁移指南
- MCP TypeScript SDK:Supporting protocol revision 2026-07-28
- SEP-2577:Deprecate Roots, Sampling, and Logging
会员充值与订阅排查资料
适合阅读会员充值、订阅购买、权益对比和支付问题类文章后继续转化。