<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>RC on Kalend's Blog</title><link>https://blog.kalend.top/tags/rc/</link><description>Recent content in RC on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Tue, 28 Jul 2026 10:00:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/tags/rc/index.xml" rel="self" type="application/rss+xml"/><item><title>MCP RC版全面解读：无状态架构+Extensions框架+9项规范变更</title><link>https://blog.kalend.top/2026/07/28/mcp-rc-fully-explained.html/</link><pubDate>Tue, 28 Jul 2026 10:00:00 +0800</pubDate><guid>https://blog.kalend.top/2026/07/28/mcp-rc-fully-explained.html/</guid><description>&lt;p&gt;MCP 的 7 月 RC，是协议诞生以来最大的一次重构。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;一句话结论：MCP 从「能调用工具的协议」变成了「可大规模运行的基础设施」。&lt;/strong&gt; 核心变化三个：无状态设计让协议具备水平扩展能力，Extensions 框架让新功能不再往核心协议里塞，三个历史包袱（Roots/Sampling/Logging）正式废弃。3000+ 现有 MCP Server（据 MCP.Directory 统计）都需要迁移。&lt;/p&gt;
&lt;h2 id="无状态核心握手和会话消失了"&gt;无状态核心：握手和会话消失了
&lt;/h2&gt;&lt;p&gt;这是最根本的架构变化。SEP-2575 移除了 &lt;code&gt;initialize&lt;/code&gt;/&lt;code&gt;initialized&lt;/code&gt; 握手流程，SEP-2567 移除了 &lt;code&gt;Mcp-Session-Id&lt;/code&gt; 头。两个 SEP 合在一起，把 MCP 从有状态协议变成了完全无状态的请求-响应模型。&lt;/p&gt;
&lt;p&gt;旧方式需要两步才能开始通信：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt; 1
&lt;/span&gt;&lt;span class="lnt"&gt; 2
&lt;/span&gt;&lt;span class="lnt"&gt; 3
&lt;/span&gt;&lt;span class="lnt"&gt; 4
&lt;/span&gt;&lt;span class="lnt"&gt; 5
&lt;/span&gt;&lt;span class="lnt"&gt; 6
&lt;/span&gt;&lt;span class="lnt"&gt; 7
&lt;/span&gt;&lt;span class="lnt"&gt; 8
&lt;/span&gt;&lt;span class="lnt"&gt; 9
&lt;/span&gt;&lt;span class="lnt"&gt;10
&lt;/span&gt;&lt;span class="lnt"&gt;11
&lt;/span&gt;&lt;span class="lnt"&gt;12
&lt;/span&gt;&lt;span class="lnt"&gt;13
&lt;/span&gt;&lt;span class="lnt"&gt;14
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;# 旧方式：先握手拿 Session-Id
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST /mcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Content-Type: application/json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;{&amp;#34;method&amp;#34;: &amp;#34;initialize&amp;#34;, &amp;#34;params&amp;#34;: {&amp;#34;protocolVersion&amp;#34;: &amp;#34;2026-03-26&amp;#34;, &amp;#34;clientInfo&amp;#34;: {&amp;#34;name&amp;#34;: &amp;#34;my-client&amp;#34;}}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;# 响应拿到 Session-Id
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;{&amp;#34;sessionId&amp;#34;: &amp;#34;abc-123&amp;#34;, &amp;#34;serverInfo&amp;#34;: {&amp;#34;name&amp;#34;: &amp;#34;my-server&amp;#34;}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;# 后续每个请求必须携带
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST /mcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Mcp-Session-Id: abc-123
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;{&amp;#34;method&amp;#34;: &amp;#34;tools/list&amp;#34;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;新方式每个请求自包含，协议版本和客户端信息都在 &lt;code&gt;_meta&lt;/code&gt; 中：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;# 新方式：直接请求，无需握手
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST /mcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Content-Type: application/json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Mcp-Method: tools
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Mcp-Name: list
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;{&amp;#34;method&amp;#34;: &amp;#34;tools/list&amp;#34;, &amp;#34;_meta&amp;#34;: {&amp;#34;protocolVersion&amp;#34;: &amp;#34;2026-07-28&amp;#34;, &amp;#34;clientInfo&amp;#34;: {&amp;#34;name&amp;#34;: &amp;#34;my-client&amp;#34;}}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Session 消失了，那需要状态怎么办？答案是&lt;strong&gt;显式 handle&lt;/strong&gt;。把状态管理从协议层移到应用层：&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-python" data-lang="python"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 旧方式：依赖 Session-Id 存状态&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;Mcp-Session-Id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]]&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;session&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;basket&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# 新方式：通过参数显式传递 handle&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;basket_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;request&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;basket_id&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="c1"&gt;# 任何实例都能处理&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="n"&gt;baskets&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;basket_id&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;add_item&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;item&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这意味着什么？任何 MCP 请求可以落到任意 Server 实例，不再需要 sticky session。负载均衡、自动扩缩、多区域部署，全部成为可能。Uber 已经在生产环境通过 MCP Gateway 每周运行数万次 Agent 执行，验证了这条路线。&lt;/p&gt;
&lt;h2 id="路由缓存追踪三大运维优化"&gt;路由/缓存/追踪：三大运维优化
&lt;/h2&gt;&lt;p&gt;无状态是基础，但光有无状态还不够。三个新 SEP 解决了生产环境的实际问题。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;路由头（SEP-2243）&lt;/strong&gt;：每个请求必须携带 &lt;code&gt;Mcp-Method&lt;/code&gt; 和 &lt;code&gt;Mcp-Name&lt;/code&gt; 头。LB、网关、限流器无需解析 JSON body 即可路由。头和 body 不一致时服务端必须拒绝请求——这是个安全设计，防止 header spoofing。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;# 网关直接从 header 路由，不碰 body
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;POST /mcp
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Mcp-Method: tools
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Mcp-Name: call
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;Content-Type: application/json
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;{&amp;#34;method&amp;#34;: &amp;#34;tools/call&amp;#34;, &amp;#34;params&amp;#34;: {&amp;#34;name&amp;#34;: &amp;#34;search&amp;#34;, &amp;#34;arguments&amp;#34;: {&amp;#34;query&amp;#34;: &amp;#34;MCP&amp;#34;}}}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;缓存元数据（SEP-2549）&lt;/strong&gt;：&lt;code&gt;tools/list&lt;/code&gt; 和 resource read 结果带 &lt;code&gt;ttlMs&lt;/code&gt; + &lt;code&gt;cacheScope&lt;/code&gt;，类似 HTTP 的 &lt;code&gt;Cache-Control&lt;/code&gt;。不再需要长连接 SSE 来监听 &lt;code&gt;tools/list_changed&lt;/code&gt; 通知，按 TTL 主动拉取即可。&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;div class="chroma"&gt;
&lt;table class="lntable"&gt;&lt;tr&gt;&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code&gt;&lt;span class="lnt"&gt;1
&lt;/span&gt;&lt;span class="lnt"&gt;2
&lt;/span&gt;&lt;span class="lnt"&gt;3
&lt;/span&gt;&lt;span class="lnt"&gt;4
&lt;/span&gt;&lt;span class="lnt"&gt;5
&lt;/span&gt;&lt;span class="lnt"&gt;6
&lt;/span&gt;&lt;span class="lnt"&gt;7
&lt;/span&gt;&lt;span class="lnt"&gt;8
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class="lntd"&gt;
&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-http" data-lang="http"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;# 响应带缓存元数据
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;{
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;tools&amp;#34;: [...],
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;_meta&amp;#34;: {
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;ttlMs&amp;#34;: 300000,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; &amp;#34;cacheScope&amp;#34;: &amp;#34;instance&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt; }
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="err"&gt;}
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;&lt;strong&gt;分布式追踪（SEP-414）&lt;/strong&gt;：&lt;code&gt;_meta&lt;/code&gt; 中标准化 &lt;code&gt;traceparent&lt;/code&gt;/&lt;code&gt;tracestate&lt;/code&gt;/&lt;code&gt;baggage&lt;/code&gt; 键名，与 W3C Trace Context 和 OpenTelemetry 兼容。跨 SDK、跨网关的端到端追踪成为标配。&lt;/p&gt;
&lt;p&gt;三个 SEP 加在一起，MCP 的生产运维能力从「勉强能用」升级到了「大规模可运维」。再加上 SEP-2322 引入的多轮请求机制——用 &lt;code&gt;InputRequiredResult&lt;/code&gt; 替代 SSE 流，客户端收集回答后带 &lt;code&gt;inputResponses&lt;/code&gt; + &lt;code&gt;requestState&lt;/code&gt; 重新发起请求，状态同样在 payload 中，任何实例都能处理——整个无状态架构的最后一块拼图补齐了。&lt;/p&gt;
&lt;h2 id="extensions-框架mcp-从协议变成平台"&gt;Extensions 框架：MCP 从协议变成平台
&lt;/h2&gt;&lt;p&gt;SEP-2133 引入的 Extensions 框架是这次 RC 的另一个核心变化。之前所有新功能只能往核心协议里塞，协议越来越臃肿，版本迭代越来越慢。Extensions 把这个耦合拆开了。&lt;/p&gt;
&lt;p&gt;设计很直接：核心协议只管通信，扩展能力按需加载。每个 Extension 用反向 DNS ID 标识（如 &lt;code&gt;io.modelcontextprotocol/apps&lt;/code&gt;），独立版本、独立仓库（&lt;code&gt;ext-*&lt;/code&gt; 系列），有委托维护者。新增 Extensions Track 在 SEP 流程中走规范审批。&lt;/p&gt;
&lt;p&gt;能力协商发生在 initialize 阶段——Client 和 Server 通过 &lt;code&gt;capabilities&lt;/code&gt; 字段声明各自支持的 extensions，取交集生效。认证模块可以独立发布 v2，不影响 Tasks 的版本节奏。&lt;/p&gt;
&lt;h2 id="两个官方扩展mcp-apps-和-tasks"&gt;两个官方扩展：MCP Apps 和 Tasks
&lt;/h2&gt;&lt;p&gt;Extensions 框架定下来，立刻就有两个重量级扩展落地。它们代表了两个不同的扩展方向：一个扩展「表达能力」，一个扩展「时间维度」。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;MCP Apps（SEP-1865）&lt;/strong&gt;：让工具调用返回交互式 UI。Server 在 &lt;code&gt;tools/list&lt;/code&gt; 中声明关联的 app 资源，工具调用后返回 &lt;code&gt;app://&lt;/code&gt; URI，Host 在沙箱 iframe 中渲染 Server 提供的 HTML，通过 postMessage 实现双向通信。Claude 和 ChatGPT 已原生支持。&lt;/p&gt;
&lt;p&gt;举个实际场景：你有一个数据库查询工具，旧方式只能返回 JSON 文本，你需要自己解析、自己拼表格。有了 MCP Apps，同一个工具可以直接返回一个可排序、可筛选的交互式表格界面——你在对话窗口里直接操作，不用切到别的应用。Server 开发者只需按规范打包前端资源，Client 端负责渲染和沙箱隔离，安全边界很清晰。官方仓库在 &lt;code&gt;github.com/modelcontextprotocol/ext-apps&lt;/code&gt;。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Tasks（SEP-2663）&lt;/strong&gt;：从 2025 年 11 月的实验功能正式毕业为独立扩展。&lt;code&gt;tools/call&lt;/code&gt; 不再同步阻塞等结果，而是返回异步 task handle。Client 通过 &lt;code&gt;tasks/get&lt;/code&gt; 轮询状态，支持 &lt;code&gt;tasks/update&lt;/code&gt; 推送进度、&lt;code&gt;tasks/cancel&lt;/code&gt; 取消。注意：&lt;code&gt;tasks/list&lt;/code&gt; 被移除了——在无会话设计下无法安全作用域。&lt;/p&gt;
&lt;p&gt;创建模式是 server-directed：客户端声明支持 Tasks 扩展，服务端决定哪些调用作为 task 处理。这对长时间运行的操作（模型训练、大规模数据处理、编译任务）很有价值——Agent 可以同时发起多个长任务，轮流检查进度，而不是排队阻塞等待。从串行等待变成并行管理，用户体验完全不同。&lt;/p&gt;
&lt;p&gt;两者共同指向一个方向：MCP 从只能传文本数据的管道，变成了能渲染 UI、能管理异步任务的平台。&lt;/p&gt;
&lt;h2 id="授权加固2-个-sep-补齐安全短板"&gt;授权加固：2 个 SEP 补齐安全短板
&lt;/h2&gt;&lt;p&gt;MCP 的授权一直被诟病「不够严谨」。这次 RC 用 2 个 SEP 补齐：&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;SEP&lt;/th&gt;
					&lt;th&gt;内容&lt;/th&gt;
					&lt;th&gt;解决什么问题&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;SEP-2468&lt;/td&gt;
					&lt;td&gt;iss 参数验证（RFC 9207）&lt;/td&gt;
					&lt;td&gt;防 mix-up 攻击&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SEP-2207&lt;/td&gt;
					&lt;td&gt;OIDC refresh token 指南&lt;/td&gt;
					&lt;td&gt;明确 offline_access scope 下的 refresh token 行为&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这两个 SEP 把 MCP 的安全模型从「能用」变成了「可审计」。&lt;/p&gt;
&lt;h2 id="废弃清单rootssamplinglogging-正式退役"&gt;废弃清单：Roots、Sampling、Logging 正式退役
&lt;/h2&gt;&lt;p&gt;SEP-2577 定义了三个功能的废弃路线。注解级废弃（不是立即删除），12 个月移除窗口。&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;废弃功能&lt;/th&gt;
					&lt;th&gt;替代方案&lt;/th&gt;
					&lt;th&gt;理由&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Roots&lt;/td&gt;
					&lt;td&gt;Tool 参数传路径、Resource URI、服务端配置&lt;/td&gt;
					&lt;td&gt;无状态架构下不需要客户端告知文件系统根目录&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Sampling&lt;/td&gt;
					&lt;td&gt;直接集成 LLM provider API&lt;/td&gt;
					&lt;td&gt;Server 端直接调用模型 API 更高效、更可控&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Logging&lt;/td&gt;
					&lt;td&gt;stderr（stdio 模式）/ OpenTelemetry（结构化日志）&lt;/td&gt;
					&lt;td&gt;行业标准方案，不需要协议层自建&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;如果你的 Server 还在用这三个功能，现在就该动手迁移了。12 个月听着长，但 Tier 1 SDK 需要在 10 周窗口内发布支持，生态倒逼的速度会比你想象得快。&lt;/p&gt;
&lt;h2 id="迁移行动指南"&gt;迁移行动指南
&lt;/h2&gt;&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;阶段&lt;/th&gt;
					&lt;th&gt;时间&lt;/th&gt;
					&lt;th&gt;做什么&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;现在&lt;/td&gt;
					&lt;td&gt;7月&lt;/td&gt;
					&lt;td&gt;读 draft spec，审计 auth 代码，检查是否依赖 Roots/Sampling/Logging&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;6 周内&lt;/td&gt;
					&lt;td&gt;8月&lt;/td&gt;
					&lt;td&gt;用 RC SDK 重建 Server，验证路由头和缓存元数据&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;10 周内&lt;/td&gt;
					&lt;td&gt;9月&lt;/td&gt;
					&lt;td&gt;部署无状态变体，测试自动扩缩，声明新协议版本&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;12 个月后&lt;/td&gt;
					&lt;td&gt;2027年7月&lt;/td&gt;
					&lt;td&gt;废弃功能正式移除，确保迁移完成&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;最优先的改动：移除 &lt;code&gt;initialize&lt;/code&gt; 握手和 &lt;code&gt;Mcp-Session-Id&lt;/code&gt; 依赖，改用 &lt;code&gt;_meta&lt;/code&gt; 传递协议信息。这是所有其他变更的前提。如果你的 Server 框架（如 FastMCP）还没有发布 RC 兼容版本，关注框架的更新动态，等框架适配后再动手会省很多力气。&lt;/p&gt;
&lt;p&gt;其次是检查授权代码——2 个 SEP 涉及 OAuth/OIDC 流程的细节改动，如果授权实现不规范，安全审计这关过不去。&lt;/p&gt;
&lt;p&gt;最后别忘了 JSON Schema 升级到 2020-12（SEP-2106），支持 &lt;code&gt;oneOf&lt;/code&gt;/&lt;code&gt;anyOf&lt;/code&gt;/&lt;code&gt;allOf&lt;/code&gt;/&lt;code&gt;$ref&lt;/code&gt;/&lt;code&gt;$defs&lt;/code&gt;。错误码也有调整：&lt;code&gt;-32002&lt;/code&gt; 改为 &lt;code&gt;-32602&lt;/code&gt;（SEP-2164），和 JSON-RPC 规范对齐。&lt;/p&gt;
&lt;h2 id="结语"&gt;结语
&lt;/h2&gt;&lt;p&gt;这次 RC 的意义不只是「改了 9 个东西」。MCP 从一个原型友好的实验协议，转型为可大规模运行的基础设施。无状态核心让它能水平扩展，Extensions 框架让它能持续演进，授权加固让它能过安全审计。Apple Safari 技术预览版 247 已支持 MCP，Linux Foundation 已接手协议托管——这些信号说明 MCP 的生态位已经从「Anthropic 的项目」变成了「行业基础设施」。&lt;/p&gt;
&lt;p&gt;对于正在使用或计划使用 MCP 的开发者，协议刚定型、生态还在早期，现在介入的门槛和成本都比较低。&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;作者：varkm&lt;/em&gt;&lt;/p&gt;</description></item></channel></rss>