跳到主要内容
返回时间线
mastra.ai来源发表:

MCP服务器不再记会话:Mastra支持新规范,请求可落到任意实例

核心概要

Mastra 的 @mastra/mcp 2.0 开始支持 MCP 2026-07-28 规范,该规范取消了服务器会话,每个请求自带全部信息。旧规范下客户端先发 initialize 建立会话,后续请求必须携带会话 ID,一旦负载均衡把请求转到别的实例就会报 400 session not found,只能靠粘性会话或 Redis 共享会话存储绕开。新规范下任意实例都能应答任意请求,普通轮询负载均衡即可,实例崩溃后下一个请求转到别处,客户端照常继续。

Source-provided article image: Introducing MCP 2.0 Support in Mastra
mastra.ai

深度剖析

用 Mastra 构建的 MCP 服务器现在可以像普通 HTTP 服务一样横向扩展,部署在负载均衡的多实例后面,或放在可缩容到零的 serverless 平台上。 旧版 MCP 规范要求客户端每次连接先发 initialize 请求,服务器据此创建会话并返回会话 ID,之后每个请求都必须带上它。 会话 ID 把客户端绑定在签发它的那个实例上,请求被负载均衡转到不识别该 ID 的实例时返回 400 session not found;此前的做法是粘性会话或 Redis 一类共享会话存储,能工作但增加复杂度、延迟和潜在成本。

请求之间不再有协议层状态,每个请求独立,行为与普通 HTTP 请求一致。 2026-07-28 规范的两项改动是 SEP-2575 去掉 initialize 握手、SEP-2567 去掉 Mcp-Session-Id 头和协议级会话。 在轮询负载均衡下任意实例都能应答任意请求,无需粘性会话或会话存储;某个实例崩溃时,负载均衡把下一个请求转给另一实例,客户端继续正常工作。

每个 HTTP 请求现在携带 Mcp-Method 头,工具调用、提示和资源类请求还带 Mcp-Name 头,网关、限流器和防火墙不必解析请求体就能对请求做判断。 列表类结果如 tools/list 和 resources/list 增加了两个借自 HTTP 缓存的提示:ttlMs 表示结果保持新鲜的时间,cacheScope 表示结果可跨用户共享(public)还是仅供调用方复用(private)。 server/discover 方法用于了解一个 MCP 服务器的能力,在 Mastra 中通过 getServerInfo() 查看,返回内容包含支持的 MCP 规范版本、能力以及名称和描述。

启示与展望

报道范围限于 Mastra 对 MCP 2026-07-28 规范的支持说明:@mastra/mcp 2.0 已移除 SSE 传输、roots、sampling 和动态客户端注册,并且只接受 2026-07-28 规范的客户端。适合正在自建或运维 MCP 服务器的工程师判断是否需要迁移。规范同时弃用 HTTP+SSE 传输、roots、sampling、logging 和 OAuth 动态客户端注册,弃用特性登记表列出各自的迁移路径与最早移除日期。

任务(tasks)此前是实验特性,现为正式扩展,长时工具调用可先返回任务句柄并在后台继续,客户端用 tasks/get 查询结果;Mastra 表示仍在研究在 @mastra/mcp 中支持任务,在此之前长时工具可用 context.mcp.progress() 报告进度。requestState 允许服务器在调用中途向用户提问而不保持连接,在 Mastra 中由工具执行函数里的 suspend() 发起、resumeData 读取回答,反序列化后记录工具、参数指纹、问题及提问方。