微软发布 MCP C# SDK 2.0 默认启用 HTTP 无状态模式并新增多轮请求能力
MCP C# SDK 2.0 默认启用 HTTP 无状态模式,新增多轮请求能力
微软联合维护的 MCP C# SDK 正式发布 2.0 版本,基于 ASP.NET Core 构建并实现了 MCP 规范的 2026-07-28 修订版。该版本核心变化是将 Streamable HTTP 服务器默认设为无状态模式,移除了 initialize 握手和 Mcp-Session-Id 请求头,使得任何服务器实例均可处理请求而无需粘性路由或共享会话存储。同时引入了多轮往返请求(MRTR)机制替代传统的有状态输入通道,允许工具抛出 InputRequiredException 并通过 requestState 重新发起调用。
技术细节上,标准化后的 HTTP 请求头支持负载均衡器直接基于 Mcp-Method、Mcp-Name 等头部进行路由,但服务端仍保留请求体作为权威来源以校验一致性。安全层面实施了更严格的 OAuth 行为,包括 RFC 9207 签发者校验、强制 PKCE S256 支持及动态客户端注册。后续发布的 2.1 至 2.3 次要版本进一步增加了可选的 subscriptions/listen 处理器、修复了异常处理逻辑,并将 McpClient.ServerInfo 设为可空以避免依赖不可信的自报身份元数据。
事实层面,该更新标志着 MCP 协议在 HTTP 传输层从有状态向无状态的架构迁移,兼容 .NET 8、9 和 10 框架。推断层面,这一变更显著降低了 MCP 服务在大规模分布式环境下的基础设施复杂度,消除了对会话存储的依赖,但也要求客户端必须适配新的 MRTR 流程而非旧式握手。猜测层面,团队明确表示下一阶段重点为端到端身份认证与授权,目前评论区关于防篡改和跨会话重用的具体防御机制尚无官方回复,需关注后续规范演进。
SDK 2.0 将 HTTP 无状态设为默认并移除会话 ID,直接改变 MCP 在云原生环境的部署架构与负载均衡策略。
来源:InfoQ 中文 · infoq.cn