Wink Pings

MCP把会话删了,状态被挪到模型能看见的地方

Anthropic这轮MCP更新删掉initialize握手和Mcp-Session-Id。服务器能跑普通轮询负载均衡、serverless和边缘,但三个功能被迫重建。更有意思的是,状态没有消失,只是从header挪进了模型能读的参数。

MCP是让模型调用外部工具的协议。以前的MCP服务器像打电话:客户端和服务器先做initialize握手,服务器返回一个session id,后续每个请求都带着它。这个session是某个服务器进程里的活对象,里面装着协商好的状态。

问题很具体。状态只在一个进程里,负载均衡器就没法把请求随便分给三个MCP服务器实例。团队只能用sticky session把同一个客户端钉在同一台机器上,或者把session状态塞进共享存储。自动扩缩容被卡住,一次重启还会丢掉所有打开的session。

这轮被Daily Dose of Data Science称为Anthropic最大的MCP更新,直接删掉了这些。initialize握手和Mcp-Session-Id header没了,每个请求自己在_meta字段里带协议版本、客户端身份和能力。客户端想提前拿能力列表,可以调用server/discover,但没有强制要求。

换个说法:以前餐馆里接单的服务员是唯一知道订单的人,服务员下班就麻烦。现在每张订单都是书面单,任何一个服务员都能接。请求可以落到普通轮询负载均衡后面的任意实例,不需要共享session store。MCP服务器变成普通HTTP服务,能跑在serverless和边缘环境里,也能扛住重启。

删掉session会打断三个功能,所以它们各自重建了。

工具在调用中途需要问用户时,以前靠保持打开的流把问题推下去。现在服务器返回input_required,客户端带着答案重试。

方法和工具名移到Mcp-Method和Mcp-Name两个header里。网关或限流器不用解析JSON-RPC body就能路由和计量。

列表响应带上ttlMs和cacheScope。客户端可以缓存工具目录,不必每次重连都重新拉。

这里最值得记的一点:状态没消失,只是换了个位置。需要连续性的应用,从工具拿一个显式handle,模型下次调用时把它当参数传回去。session id藏在header里,模型看不见;handle放在参数里,模型能读,能在工具之间穿,也能在调用失败后恢复。

所以这轮更新对部署是减负,对设计是转移责任。有回复提醒得对:认证、长任务、每用户上下文仍然要自己找地方放。无状态传输不等于这些关注点自动消失。

原始推文:https://x.com/DailyDoseOfDS_/status/2119459958198808965

发布时间: 2026-11-09 18:29