MCP 2026-07-28 官方发布封面图
官方发布封面图。来源:Model Context Protocol Blog - The 2026-07-28 Specification

一句话总结

MCP 2026-07-28 版最大的变化,是把协议核心从“依赖会话和长连接的有状态协议”,推进成“每个请求自描述、可路由、可缓存、可横向扩展的无状态请求/响应协议”。

阅读指引

如果你只想快速抓重点,可以按这个顺序读:

  1. 先看“最大变化”表,理解它和 2025-11-25 的差别。
  2. 再看“主要更新”的前四节:无状态核心、server/discover、MRTR、Header 路由。
  3. 最后看“对开发者意味着什么”,判断你自己的 MCP Client / Server 需要改哪里。

版本背景

MCP,全称 Model Context Protocol,是面向 AI 应用、Agent、工具、资源、提示词和外部系统集成的一套开放协议。它解决的问题可以简单理解为:让大模型应用用统一方式发现工具、调用工具、读取资源、处理用户交互和授权。

这次官方发布的是 2026-07-28 规范,上一篇可对比的正式规范是 2025-11-252025-11-25 更像是“能力扩展版”:增强授权发现、工具和资源图标、Elicitation、Sampling 工具调用、Client ID Metadata Documents、实验性 Tasks,以及 SDK 分级治理。2026-07-28 则明显变成“生产基础设施版”:重点不再只是给协议加功能,而是重塑 MCP 在大规模部署下的运行方式。

官方博客也提到,这次同步更新了 Tier 1 SDK,包括 TypeScript、Python、Go、C#;Rust SDK 已支持新规范的 beta。对于已经依赖 Mcp-Session-Id 或初始化会话的实现,这次会有迁移成本。

最大变化

维度 2025-11-25 之前的思路 2026-07-28 新思路 影响
协议核心 依赖 initialize/initialized 握手和协议级 session 移除握手和 Mcp-Session-Id,每个请求自己携带版本、能力和客户端信息 MCP Server 更容易做无状态扩容,请求可以落到任意实例
服务端反向请求 依赖长期保持的双向流来做 Sampling、Roots、Elicitation 等 引入 Multi Round-Trip Requests,服务端返回 input_required,客户端带答案重试原请求 不需要为了中途补信息一直挂住双向连接
网关和负载均衡 网关通常要理解请求体,或者依赖连接级状态 Streamable HTTP 请求要求带 Mcp-MethodMcp-Name Header API Gateway、WAF、Rate Limiter 可以直接基于 Header 路由和限流
列表和资源读取 tools/listresources/list 等结果更偏即时获取 列表和资源读取结果加入 ttlMscacheScope,并要求稳定顺序 客户端能缓存工具目录,减少重复拉取,也更利于 LLM prompt cache
长任务 tasks 是实验性核心能力 tasks 移到 io.modelcontextprotocol/tasks 官方扩展,并改为 tasks/get 轮询和 tasks/update 输入 核心协议更瘦,长任务进入正式扩展体系
授权 已经开始支持 CIMD 等机制 进一步强化 OAuth:iss 校验、凭证按 issuer 绑定、DCR 正式弃用 降低授权服务器混淆、凭证复用等安全风险
生命周期治理 有功能演进,但弃用节奏不够制度化 引入正式弃用策略,最少 12 个月窗口 企业和 SDK 维护者可以按节奏升级,而不是被动追改

一句话概括:2025-11-25 是 MCP 在“补能力”,2026-07-28 是 MCP 在“去连接状态、上生产规模”。

主要更新

1. 无状态协议核心:不再依赖隐藏 session

新规范移除了协议级 session 和 Mcp-Session-Id Header,也移除了 initialize / notifications/initialized 握手。每个请求现在要在 _meta 里携带协议版本和客户端能力,例如:

官方原文中的 stateless protocol core 演示视频。来源:Model Context Protocol Blog
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "search",
    "arguments": {
      "q": "MCP 2026-07-28"
    },
    "_meta": {
      "io.modelcontextprotocol/protocolVersion": "2026-07-28",
      "io.modelcontextprotocol/clientInfo": {
        "name": "my-agent",
        "version": "1.0.0"
      }
    }
  }
}

这不是说业务不能有状态,而是协议不再替你藏状态。如果某个工具调用确实需要跨请求上下文,服务端应该显式生成一个 handle,让模型把这个 handle 当作普通参数继续传递。这个变化很关键:状态从“传输层隐含”变成“模型和应用可见”。

2. server/discover:把能力发现从握手里拆出来

既然初始化握手被移除,服务端能力发现就需要一个新入口。2026-07-28 增加了 server/discover RPC,服务端必须实现它,用来声明自己支持的协议版本、能力和身份信息。

客户端可以先调它来选择版本,也可以直接发起请求。这个设计让发现变成可选前置步骤,而不是每条连接都必须经历的会话初始化流程。

3. MRTR:无状态协议下继续支持“中途问用户”

旧模型里,如果服务端在工具执行过程中需要向客户端要信息,比如确认操作、补参数、让模型采样,就倾向于依赖服务端发起请求和长期保持的双向流。新规范引入 Multi Round-Trip Requests,简称 MRTR。

MRTR 的核心模式是:

  1. 客户端发起原始请求。
  2. 服务端发现缺少信息,返回 resultType: "input_required"
  3. 返回体里的 inputRequests 描述需要客户端补什么。
  4. 客户端收集答案后,用 inputResponses 重试原请求。

这样一来,Elicitation、Sampling、Roots 这类原本容易绑在双向连接上的交互,都可以被改造成请求/响应模式。它牺牲了一点流程上的“直接”,换来的是更适合 HTTP 基础设施的可靠性。

4. Header 路由:MCP 请求终于更像普通 Web 流量

新规范要求 Streamable HTTP POST 请求带上 Mcp-MethodMcp-Name Header。比如工具调用可以在 Header 里暴露 tools/call 和具体工具名。

这对企业部署非常现实:网关、限流器、WAF、审计系统可以直接看 Header 做路由、鉴权、限流和观测,而不用解析 JSON-RPC Body。对于部署在 API Gateway、Cloudflare Workers、AWS、Kubernetes Ingress 这类基础设施上的 MCP Server,这个变化很实用。

5. 列表结果可缓存:减少工具目录反复拉取

tools/listprompts/listresources/listresources/readresources/templates/list 的结果现在需要带 ttlMscacheScope

ttlMs 表示新鲜度提示,客户端可以据此减少重复请求;cacheScope 表示缓存范围,区分 public 和 private。与此同时,服务端还应该稳定返回 tools/list 的顺序。这一点不只是省网络请求,也会影响 LLM prompt cache:工具列表顺序稳定,提示词缓存命中率才更可控。

6. 授权安全继续加固

授权是 MCP 落地里最复杂的部分之一。2026-07-28 做了几件安全加固:

  • 授权服务器应该返回符合 RFC 9207 的 iss 参数,客户端在兑换 code 前必须校验已记录的 issuer。
  • 客户端凭证必须绑定到签发它的 authorization server,不能跨授权服务器复用。
  • Dynamic Client Registration,也就是 DCR,被正式标记为弃用;推荐方向是 Client ID Metadata Documents,也就是 CIMD。
  • 客户端在 DCR 时需要设置合适的 application_type,减少桌面和 CLI 应用在 localhost redirect 上遇到的 OpenID Connect 冲突。

这里的主线不是“换一个 OAuth 写法”这么简单,而是让 MCP 的授权模型更接近生产环境里的多授权服务器、多客户端、多租户现实。

7. Extensions 框架:核心协议瘦身,创新放到扩展

新规范给 ClientCapabilitiesServerCapabilities 增加了 extensions 字段,用来支持核心协议之外的可选扩展。tasks 就是一个代表:它从实验性核心能力移到了 io.modelcontextprotocol/tasks 官方扩展。

新版 Tasks 改成通过 tasks/get 轮询获取进度和结果,并增加 tasks/update 让客户端向服务端补输入。这个方向很像很多成熟协议的演进路径:核心保持稳定,变化更快的能力进入扩展体系。

被弃用的内容

这次有几项比较重要的弃用:

  • Roots、Sampling、Logging 被标记为 Deprecated。它们仍然能用,并且会有至少 12 个月弃用窗口,但新实现不建议继续采用。
  • HTTP+SSE Transport 被正式归入 Deprecated,迁移方向是 Streamable HTTP。
  • Sampling 里的 includeContext: "thisServer""allServers" 被标记为 Deprecated。
  • OAuth 2.0 Dynamic Client Registration 被标记为 Deprecated,推荐转向 CIMD。

我的理解是,这些弃用不是简单砍功能,而是配合“无状态、可路由、可扩展”的新协议心智模型做收敛。Roots、Sampling、Logging 这类功能如果继续停留在核心协议里,会让核心越来越重;HTTP+SSE 和 DCR 则会拖住大规模部署和企业授权模型。

对开发者意味着什么

如果你只是 MCP Client 的使用者,最直接的变化是:升级 SDK 后,客户端请求需要适配新的 _metaresultType、MRTR 等协议结构。旧服务端返回结果时没有 resultType,新客户端必须把它当作 "complete" 处理,这是官方给出的兼容要求。

如果你在写 MCP Server,重点检查这些地方:

  • 是否依赖 Mcp-Session-Id 或初始化握手保存状态。
  • 是否把用户确认、Sampling、Roots 等逻辑建立在服务端主动请求客户端的长连接上。
  • tools/listresources/list 等列表结果是否能返回稳定顺序、ttlMscacheScope
  • Streamable HTTP POST 是否带上 Mcp-MethodMcp-Name
  • 授权流程是否校验 iss,凭证是否按 issuer 隔离保存。
  • 是否还在新实现里引入 Roots、Sampling、Logging、HTTP+SSE 或 DCR。

更具体一点,我会按这个顺序迁移:

优先级 要做什么 验证方式
P0 先确认 Client / Server 是否真的要协商到 2026-07-28,还是继续兼容旧版本 server/discover 或 SDK 的版本协商日志确认最终协议版本
P0 去掉对 Mcp-Session-Idinitialize、连接粘性的强依赖 用多实例、非 sticky 的负载均衡压测工具调用
P1 把服务端向客户端要输入的流程改成 MRTR 人工触发确认、补参数、采样等场景,确认 input_required 可以被客户端继续推进
P1 给列表和资源读取补 ttlMscacheScope,并稳定排序 连续请求 tools/list,检查顺序、缓存策略和 prompt cache 命中
P2 清理 DCR、HTTP+SSE、Roots、Sampling、Logging 的新依赖 把新实现默认走 Streamable HTTP、CIMD、OpenTelemetry 或业务参数

如果你做的是企业级 Agent 平台,这个版本的意义更大。它让 MCP Server 可以像普通 HTTP 服务一样被负载均衡、横向扩容、接入网关、做审计和限流,而不是总要围绕“某条连接上的某个 session”设计基础设施。

这版到底是干嘛的

我会把 MCP 2026-07-28 理解成一次“协议基础设施化”的发布。

之前的 MCP 已经证明了工具调用、资源访问、提示词管理、授权和交互这些能力有价值;但要跑进企业生产环境,真正麻烦的是扩容、路由、缓存、授权边界、长任务、弃用策略和 SDK 一致性。

所以这版的核心目标不是让 Agent 多一个炫酷能力,而是让 MCP 更适合被当作生产级 Agent 基础设施来部署:

  • 无状态,让服务端更容易扩容。
  • Header 路由,让网关和安全设备更容易接入。
  • MRTR,让交互流程摆脱长期双向连接依赖。
  • CacheableResult,让客户端和基础设施可以缓存稳定列表。
  • Extensions,让核心协议保持稳定,创新能力进入扩展层。
  • 授权加固和弃用策略,让企业集成更可控。

如果一句话给升级优先级:新项目可以直接按 2026-07-28 设计;老项目如果依赖 session、HTTP+SSE、DCR、Roots、Sampling、Logging,要尽早规划迁移;如果只是通过官方 SDK 做普通工具调用,可以优先升级 SDK,再按迁移指南补协议字段和测试。

参考资料