ARTICLE · 1044474
掀桌了!AI 工具的 USB 时刻:MCP 用 610 天删掉"会话",你的充电器线要通用了
2024 年 11 月 25 日,Anthropic 发布 Model Context Protocol(MCP)的时候,几乎所有人都说同一句话:这是 AI 工具圈的 USB-C 时刻。一个协议统一所有模型接工具的方式,一次编写、处处可插。
610 天后的 2026 年 7 月 28 日,MCP 官方发布了史上最大改版的新规范。翻开变更清单第一行,我却有点恍惚:
initialize 握手,删了。Mcp-Session-Id 会话头,删了。服务器反向调用客户端的 sampling/roots/elicitation,换了整套机制。
翻译成人话:第一代"USB 线"里最像传统插头的那部分,被官方亲手剪掉了。
这篇讲清楚三件事:这根线当初为什么能统一江湖、又是怎么差点变成巴别塔的、以及 7 月 28 日这刀到底切在了哪根神经上。文末有一台真实 MCP 服务器的完整代码和 curl 实测——你会看到新协议的一条请求长什么样,3 个头、1 个 JSON,再没有别的。
📏 第一幕:插口确实统一了
先看一组官方口径的数字(来源见文末,均为可查证的公开发布):
截至 2025 年 12 月,Anthropic 生态报告称公开可用的 MCP 服务器超过 10000 个; 到 2026 年 8 月,四大注册表合计约 15930 个服务器,仅官方 registry 就收录了 9652 个; 官方 2026 年 7 月 28 日发布公告披露:Tier 1 官方 SDK(TypeScript、Python、Go、C#)合计月下载量近 5 亿次,其中 TypeScript 和 Python 两个 SDK 的累计下载各自突破了 10 亿; 可观测性公司 Honeycomb 在官方公告里引用了自家数据:其平台每月约 20% 的交互式查询由 AI agent 发起。
对比一下同期"对手"的遭遇你就知道这数字多不正常。2024 年底到 2025 年,每家模型厂商都有自家私有工具调用格式:OpenAI 的 functions、Anthropic 的 tool_use、Google 的 function calling,字段名、流式语义、错误格式各说各话。给三家模型各写一遍 GitHub 集成,是三份代码、三份维护。MCP 出现后 4 个月——2025 年 3 月 26 日——OpenAI 官方宣布在 Agents SDK 里支持 MCP,一家 frontier lab 采纳了竞争对手发起的标准。这个信号比任何宣传都硬。
为什么大家愿意用?因为 MCP 的核心抽象只有三招,而且全部是"声明式"的:
tools —— 服务器声明"我会做什么"(带 JSON Schema 的参数定义) resources —— 服务器声明"我有什么数据可读"(URI 寻址) prompts —— 服务器声明"我有哪些现成的提示词模板"客户端(你的 agent)连上来先问一句 tools/list,拿到清单塞进模型上下文,模型想调哪个就调哪个。传输层随便换:本地进程用 stdio,远程用 Streamable HTTP。一次编写、处处可插——在"插口"这个层面,USB-C 的比喻完全成立。
一句话:你的 AI 助手接工具这件事,确实从"每家一个专有接口"收敛成了"一个协议通吃"。
🗼 第二幕:插头统一了,设备之间说的是方言
如果故事到这就结束,今天就没有这篇文章。问题是"巴别塔"的隐喻恰恰在统一之后开始显形——而且分两层。
第一层:工程上的巴别塔
MCP 第一代协议是有状态的:客户端要先发 initialize 握手,服务器回一个 Mcp-Session-Id,之后每个请求都得带上这个会话头,双向长连接维持上下文。这个设计在"一个 Claude Desktop 连三个本地插件"的场景里毫无问题。
但 2025 年 5 月远程服务器兴起后,云厂商发现这跟现代 HTTP 基础设施处处打架:
会话意味着粘性路由——同一用户必须一直打到同一台实例,负载均衡器不敢随便轮询; 实例重启或扩容,所有 Mcp-Session-Id 集体作废,客户端整场重连; SSE 长连接在网关、CDN、企业防火墙后面被反复掐断,运维要为"一条永远不断的连接"专门加基础设施。
一个本来想当"AI 工具 HTTP"的协议,运行时负担却更像 WebSocket 集群。Cloudflare、Microsoft 这些把 MCP 当规模化基础设施卖的公司,抱怨了一年。
第二层:安全上的裸奔
更难看的是安全面。2026 年 5 月,美国国家安全局(NSA)发布了一份专门针对 MCP 的安全设计建议(编号 PP-26-1834),定性相当重:MCP 的快速普及已经跑在了它的安全模型前面,协议沿用了早期 Web 协议"先发后补"的路子,且反转了传统客户端-服务器的信任方向。
学术论文把"裸奔"量化了。2026 年 7 月一篇对公网 MCP 服务器的动态安全测量(arXiv:2608.00150)扫了 640 台生产服务器、动态审计 414 台,结果:
- 91.8%
的被审计服务器没有任何 OAuth 认证; 687 个工具实例直接暴露 shell 执行能力且无访问控制; SQL 注入、打云主机元数据服务(169.254.169.254)的 SSRF、路径遍历,全都真实命中; 最讽刺的一条:41.6% 的服务器在三次间隔约 72 小时的扫描之间消失了——上线像周末玩具,下线像临时摊贩。
还有 2026 年 4 月 OX Security 爆出的 STDIO 传输设计级漏洞:官方 SDK 从配置参数拼命令行时不经校验直达系统 shell,波及 Python/TypeScript/Java/Rust 四套官方实现、估算 1.5 亿下载量。这个锅的微妙之处在于它是"设计默认"而非"编码失误"——参考实现自己就这么写。
第三笔账:token
工具太多还会撑爆上下文。Anthropic 工程博客 2025 年 11 月给过一个实测案例:把 MCP 工具改成"代码执行"方式调用(agent 写代码去调工具,而不是每个工具定义常驻上下文),一个真实工作流从 15.5 万 token 降到 2000,省了 98.7%。反过来说:老老实实把几十个服务器、几百个工具的 JSON Schema 全塞进上下文,你的模型一半工资都在背工具说明书。
一句话:插口统一了,但没规定电流安全标准,也没人管你家里插座够不够用。
🔧 第三幕:7 月 28 日那一刀,切在了"状态"上

新旧协议一次调用的对比
新规范(版本号就按发布日命名,2026-07-28)的核心动作只有一句话:把 MCP 从双向有状态协议改造成纯粹的请求/响应无状态协议。拆开看五个关键改动,环环相扣:
1. 握手和会话彻底删除。 不再有 initialize/initialized 交换,不再有 Mcp-Session-Id。协议版本、客户端信息、能力声明全部下沉到每个请求自带的 _meta 信封里。每条请求自描述,任何一条都可以落在负载均衡器后面的任何一台实例上——普通轮询即可,粘性路由作废。想要预先了解服务器能力的客户端,可以选做一次 server/discover,但它从"必经仪式"降级成了"可选优化"。
2. 方法名搬进 HTTP 头。 新增 Mcp-Method 和 Mcp-Name 两个头:调什么方法、调哪个工具,网关不用解 JSON body 就能路由、限流、鉴权。这是把"给基础设施留钩子"写进了协议——你的 API 网关终于能看懂 MCP 流量了。
3. 服务器反向请求改用 MRTR。 老协议里服务器可以中途反过头来请求客户端(sampling 借模型生一次成、elicitation 向用户追问一句),这需要一条永远开着的反向通道。新方案 Multi Round-Trip Requests 把它改成:服务器返回一个 InputRequiredResult,客户端把缺的信息补上再发一条新请求。来回变成了"回合制",长连接不需要了。
4. 工具清单可以缓存了。tools/list 的响应现在带 ttlMs 和 cacheScope,且顺序确定。以前每次重连工具清单可能换个顺序,上游 prompt cache 直接失效;现在目录稳定可缓存,上面那笔 token 账至少好算了一半。
5. 官方扩展框架 + 12 个月弃用期。 Tasks(长时任务)、MCP Apps(服务器渲染的交互界面)、企业托管授权这些能力被正式移出核心协议、进扩展框架,用反向 DNS 命名、独立版本化——想给协议加东西的不用再另起炉灶搞方言了。同时立了规矩:弃用任何特性至少提前 12 个月,Roots、Sampling、Logging 三个老特性按此进入弃用窗口(暂不删除)。
从"发布 USB 接口"到"补充电流安全标准和兼容期规则"——这次改版更像 IEEE 联盟干的事,而不是一个 side project。官方公告里维护者的原话是:这是"launch 以来最大的一次修订",并且直接引用了开发者呼声最高的诉求就是无状态化。
🧪 实测:一台 20 行的新协议服务器
光说不练假把式。我用 Python SDK v2.0.0(7 月 28 日当天随规范同步发布)搭了一台演示服务器,代码一共 12 行:
from mcp.server.mcpserver import MCPServer server = MCPServer("demo-weather") @server.tool() def current_weather(city: str) -> str: """查询指定城市的当前天气(演示数据)。""" data = {"beijing": "晴 26°C", "shanghai": "多云 28°C"} return data.get(city.lower(), f"{city}:晴 25°C(演示值)") if __name__ == "__main__": server.run(transport="streamable-http", port=8931)注意 import 路径:老教程里的 from mcp.server.fastmcp import FastMCP 已经没了,v2 SDK 里那个类就叫 MCPServer。看到网上还在抄 fastmcp 老写法的文章,基本可以按 2025 年的知识打折。
然后用最朴素的 curl 直接调它——没有 initialize,没有 session id:
curl -X POST http://203.0.113.10:8931/mcp \ -H 'Content-Type: application/json' \ -H 'MCP-Protocol-Version: 2026-07-28' \ -H 'Mcp-Method: tools/call' \ -H 'Mcp-Name: current_weather' \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call", "params":{"name":"current_weather","arguments":{"city":"Beijing"}, "_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28", "io.modelcontextprotocol/clientCapabilities":{}, "io.modelcontextprotocol/clientInfo":{"name":"curl","version":"8.0"}}}}'第一次跑的时候我故意把 _meta 信封删了,服务器回了个干脆的 400:
{"jsonrpc":"2.0","id":1,"error":{"code":-32602, "message":"params._meta must be an object carrying the required 'io.modelcontextprotocol/protocolVersion' and 'io.modelcontextprotocol/clientCapabilities' envelope keys"}}补上信封后拿到 200 响应,全文如下——单条 JSON 往返,连接即可断开,全程没有任何"会话"存在过:
{"jsonrpc":"2.0","id":1,"result":{ "content":[{"text":"晴 26°C","type":"text"}], "isError":false, "resultType":"complete", "structuredContent":{"result":"晴 26°C"}}}顺手拉了一下工具清单,响应里出现了新字段 cacheScope 和 ttlMs——就是上面说的可缓存目录,工具定义还自动带了 outputSchema,返回结构也是契约的一部分了。
我本机 Hermes 里配置的远程 MCP 服务器同样受益于这轮演进:hermes mcp add 一条命令挂上任意符合标准的远程服务器,工具自动出现在 agent 的工具列表里;反过来 hermes mcp serve 让 Hermes 自己变身为一台 MCP 服务器,被别的 agent 当工具插。一台设备既是用电器又是插座——这大概就是"USB-C 时刻"完整体的样子。
一句话:新协议下的 MCP 服务器就是最普通的无状态 HTTP 服务,任何网关、任何语言、任何 curl 都能直接对话。
🧭 现在上车该注意什么
分三类人说。
跑远程 MCP 服务器的:这次是有 breaking change 的改版,但官方给了 10 周验证窗口(5 月 21 日锁 RC、7 月 28 日落锤)外加 12 个月弃用期,新旧版本会长期共存。真正要动手的是两件事:把会话粘性依赖拆掉,以及把认证补上——91.8% 无认证这个数据里别再贡献一个分母,NSA 报告和那篇公网扫描论文都不是写给同行看的,是写给监管看的。
接服务器用的(agent 开发者/重度用户):先别急着把工具全换成代码执行模式。98.7% 那个数字是真的,但它的前提是你有安全沙箱去跑生成的代码;工具数量在两位数以下的,全量 Schema 进上下文的成本还不至于肉疼。等生态把 MCP Apps(服务器渲染 UI)的客户端支持铺开,再评估交互层的迁移。
只观望的普通用户:你的体感变化是"远程 MCP 服务器变稳了"——以前挂一晚上掉三次线、网关一改配置全断的服务器,迁移到新协议后就是一台普通 HTTP 服务,该有健康检查有健康检查、该走 CDN 走 CDN。巴别塔风险的真正解法不是推翻重来,而是新规范里那句不起眼的元数据:"扩展要注册、弃用要一年、版本要写进每个请求"。
回扣标题的问题:USB 时刻还是巴别塔?我的看法是,2024 年的 MCP 完成了 USB 的"形"(统一接口),2026 年 7 月 28 日这版才补上"实"(工程标准与治理规则)。统一接口用了 4 个月就被全行业采纳,补治理规则用了 610 天——中间那笔安全裸奔的账,是 15930 台服务器用真漏洞替标准组织交的学费。你的充电器线现在可以通用了,但记得先看插头上有没有安规认证标。
你的团队或项目现在挂着几个 MCP 服务器?迁移窗口内有没有被"删会话"坑到的实测经历?评论区聊一句。
点个在看,转给那个刚把三个私有工具接口重写成 MCP、还没给服务器加认证的朋友。
下一篇预告:聊完 AI 怎么"接工具",换个口味讲 AI 怎么"啃书"——一册几百页的教材 PDF,怎么全自动变成一棵能直接打开的思维导图笔记。方法、管道、坑,都会带。
资料来源
MCP 官方博客《The 2026-07-28 Specification》(2026-07-28,发布无状态核心、MRTR、header 路由、可缓存清单、扩展框架与 12 个月弃用期,及 SDK 月下载近 5 亿、Honeycomb 引用数据) MCP 官方博客《The 2026-07-28 MCP Specification Release Candidate》(2026-05-21,RC 锁定与新协议请求格式) MCP 官方博客《First MCP Anniversary》(2025-11-25)及 OpenAI Agents SDK MCP 文档(2025-03-26 采纳) NSA/CSS《Model Context Protocol (MCP): Security Design Considerations》PP-26-1834(2026 年 5 月) 《Exposed by Design: A Dynamic Security Assessment of Internet-Facing MCP Servers at Scale》(arXiv:2608.00150,2026 年 7 月,640/414 台与 91.8%、41.6% 数据) Cloud Security Alliance 研究简报《MCP Security Crisis》与 OX Security STDIO 漏洞披露(2026 年 4 月) Anthropic Engineering《Code execution with MCP》(2025 年 11 月,155K→2K token / 98.7%) Tech Insider《MCP Hits 10000+ Servers》(2026 年 7 月,注册表规模数据为媒体转引,供参考) modelcontextprotocol.io 规范站 Versioning 页与官方 registry 公开数据 实测环境:Python SDK mcp 2.0.0(PyPI,2026-07-28 随规范发布)、Hermes Agent 的 hermes mcp 子命令。示例主机 203.0.113.10 为 RFC 5737 文档保留地址