7 月 28 日,MCP 的成人礼:协议砍掉状态,生态打响第一场官司
7 月 28 日,MCP 的成人礼:协议砍掉状态,生态打响第一场官司
2026 年 7 月 28 日,MCP(Model Context Protocol)生态在同一天迎来两件事。
第一件在规范层:MCP 2026-07-28 版规范正式发布,官方维护者称之为「协议诞生以来最大的一次修订」。核心变更一句话:MCP 不再有状态了。 initialize 握手没了,session ID 没了,协议从有状态的双向连接改成了无状态的请求/响应。
第二件在商业层:MCP 安全网关创企 Runlayer 起诉 Rippling,指控这家 HR 科技公司以「准客户」身份试用近一年、拿到产品 roadmap 和源码之后,转身自建了同类 MCP 网关产品。诉由三项:商业机密盗用、不正当竞争、违约。这是 MCP 生态的第一场商业诉讼。
一个协议在同一天完成两件事:向运维现实低头,和证明自己值得打官司。这两件事哪件单拎出来都不小,但放在一起读才是完整的故事——一项技术从实验品变成基础设施的成人礼,恰好被压缩进了 24 小时。
先把两件事分别拆开。
规范这边:砍掉的是什么,为什么
新规范由 5 月 21 日锁定的 Release Candidate 演化而来,中间留了 10 周给各语言 SDK 维护者做验证。主要变更集中在几个 SEP(规范增强提案)上:
SEP-2575 砍掉了 initialize 握手。 旧协议里客户端和服务器要先握手交换版本和能力,才能开始干活;新协议里这些信息随每个请求走——协议版本和客户端能力放进 _meta 字段(io.modelcontextprotocol/protocolVersion、io.modelcontextprotocol/clientCapabilities),另有 MCP-Protocol-Version、Mcp-Method、Mcp-Name 三个 HTTP header 随请求携带。想了解服务器能力?新增的 server/discover 端点随时可查,不用握手。
SEP-2567 砍掉了 Mcp-Session-Id。 协议层的会话概念整个移除。工具调用之间确实需要跨请求状态的,改用服务器显式签发的 handle,当普通参数传回来。
MRTR(Multi Round-Trip Requests)接替了服务器主动请求。 旧协议里工具执行到一半要用户确认,得靠一条常开的双向流回传;新设计里服务器直接返回 resultType: "input_required" 带上问题,客户端拿到用户输入后重新发起调用。没有长连接,一样能对话。
为什么这么改?因为旧设计在生产环境里撞了墙。经典事故是:负载均衡后面跑多个实例,pod A 签发了 session ID,下一个请求被路由到 pod B,404。要么上粘性会话,要么上共享存储,serverless 和边缘部署基本没法做。有状态协议和水平扩展天生打架——这是 Web 后端二十年前就学过的课,MCP 现在把学费补上了。
这个方向不难理解:MCP 最初是桌面时代的设计,stdio 传输、一人一进程,状态放内存里天经地义。但当 SDK 月下载量超过 4 亿次(一年涨了 4 倍)、服务器要跑在别人的云上服务几万人时,桌面时代的假设就成了负债。无状态化不是炫技,是协议对自己真实使用场景的追认。
弃用清单:比无状态更值得看的信号
改版里还有一批弃用项,我认为它们比无状态本身更能说明 MCP 的走向:
- Roots、Sampling、Logging 集体弃用(SEP-2577)。官方给出的替代方案很直白:目录当工具参数传、想调模型直接调 LLM 厂商 API、日志走 stderr 或 OpenTelemetry。
- HTTP+SSE 传输弃用(SEP-2596),Streamable HTTP 成为唯一推荐。
- 弃用政策:被标记的特性至少保留 12 个月,最早 2027 年 7 月 28 日才会移除;新客户端遇到旧服务器会自动回落到 initialize 握手,新旧互通不断。
注意 Sampling 弃用的潜台词。Sampling 原本让 MCP 服务器能反过来借客户端的模型做推理——这是「MCP 想当 agent 时代通用协议」的野心所在。现在官方亲口说「直接调 LLM API 吧」,等于把这块领土主动让了出去。加上 Roots 和 Logging 出局,这次改版的真实主题浮出来了:MCP 在收缩野心,从「什么都管的 agent 协议」退守成「把工具调用这一件事做好的协议」。协议设计里,敢删东西通常比堆东西更接近成熟。
你的东西会不会坏
按人群分三档:
-
只是在 Claude Code / Cursor / VS Code 里配 MCP 服务器的用户:基本无感。 配置文件格式(
.mcp.json之类)不在这次改动范围里,改的是底下的通信协议。顺带一提,本站的 MCP 配置生成器覆盖的四种客户端格式全部继续有效,其中的 SSE 弃用警告在新规范下从「提醒」升级成了「实锤」。 -
用官方 SDK 写服务器的开发者:升级 SDK,基本躺平。 握手回落、header 注入 SDK 都替你处理了。要自查的是业务逻辑里有没有偷偷依赖「同一连接内的状态」——list 结果现在被视为可缓存、不随连接变化,per-connection 的动态工具列表这类玩法需要改成显式 handle。
-
手写传输层、或者在做网关/代理的:这次是真的要干活。 握手移除、必带 header、
resultType、新错误码,全都落在你自己维护的代码上。12 个月窗口看着宽裕,但网关类产品要同时兼容新旧两个世界,工作量是双份的。
官司这边:第一场诉讼为什么发生在网关层
再看同一天的另一件事。Runlayer 的指控链条是:双方签了互相 NDA 和禁止复制的试用协议,Rippling 以准客户身份深度试用近一年,期间拿到了 roadmap 直至源码,价格没谈拢后终止合作——随后 Runlayer 称有对方内部人士爆料,Rippling 在用这些材料自建克隆品。Rippling 的回应是确认自己在做 MCP 网关,但否认盗用,称诉讼是「靠编造指控逃避竞争的恐慌之举」。(细节留一笔:递交法院的说法各家报道不一致,以后续法庭文件为准。)
官司本身谁对谁错,法庭会给答案。对旁观者更有信息量的是两个结构性事实:
第一,MCP 生态的第一场官司发生在网关层,不是服务器层。 几万个 MCP 服务器没人为之打官司,因为服务器本身不值钱——真正值钱的是企业接入 MCP 时的那个控制点:鉴权、审计、权限治理。钱在哪,官司就在哪。这场诉讼等于给「MCP 网关是不是一门真生意」盖了章:值得偷的东西,才值得告。
第二,试用协议挡不住有工程能力的客户。 卖 AI 基建给大厂的团队都该把这案子贴在墙上:当你的「准客户」自己就养着几百个工程师,一年期的深度试用同时也是一年期的需求调研和竞品分析。NDA 管得住文件外流,管不住「见过正确答案之后再自己做一遍」。
还有一层讽刺值得单独记下:当天发布的新规范,恰好在动摇网关厂商的一部分护城河。 无状态化之后,请求级路由变得平凡——不用再管粘性会话和 session 亲和,代理和网关的实现难度直线下降。协议越成熟,纯技术层面的门槛越薄,网关厂商就越要靠治理、合规、审计这些「难而无聊」的部分立足。Runlayer 起诉的那天,它所在赛道的技术壁垒刚好又矮了一截。
两件事合起来读
把 7 月 28 日这两条新闻并排放好,你会看到基础设施成熟的两个经典标志同时出现:
协议开始为运维买单——砍状态、明确弃用政策、留 12 个月迁移窗口、向后兼容自动回落,这些都是「有大量生产流量在身上」才会长出来的纪律。实验品不需要弃用政策,因为没人依赖它。
生态开始为利益开火——第一场商业诉讼意味着有公司把身家押在了这个协议的周边市场上。没人会为玩具打官司。
对开发者的行动清单,三条:
- 别拖到窗口末尾。 12 个月弃用期的教训在每代技术里都重演过:拖到最后一刻的人挤在同一个季度里踩同样的坑。官方 SDK 用户现在升级,成本最低。
- 盘点你对 Sampling / Roots / 协议层 Logging 的依赖。 这三样是明确的死刑缓期,替代路径官方都给了,迁移是体力活不是难题——但得先知道自己用没用。
- 选型 AI 基建供应商时,把「试用期数据边界」写进合同评审。 这条是给买方也是给卖方的:Runlayer 案无论结果如何,「深度试用给到源码」这个行业惯例大概率会被这场官司重新定价。
尾声
一个协议的成熟,从来不是发布会上宣布的,是由两类不起眼的文件宣告的:一份弃用时间表,和一纸诉状。
前者说明有足够多的人依赖它,多到改动必须给出承诺;后者说明有足够多的钱围绕它,多到值得请 Sullivan & Cromwell。7 月 28 日,MCP 在同一天集齐了两样。
这一天之后,再叫它「新兴协议」就不合适了。基础设施的待遇它已经开始享受——包括那些不那么愉快的部分。