微软发布MCP C# SDK 2.0默认启用无状态HTTP
微软正式推出MCP C# SDK 2.0,全面适配2026年7月28日修订的MCP规范。该版本基于ASP.NET Core重构HTTP层,默认启用无状态Streamable HTTP服务器,标准化请求头,并为交互式工具加入多轮往返请求(MRTR)。SDK团队称,这是MCP发布以来规模较大的一次HTTP运行方式调整。随后,2.1、2.2和2.3版本分别在8月至10月发布。
新版本移除了initialize握手和Mcp-Session-Id请求头,协议版本与能力声明会随每次请求发送,因此任意服务器实例都能处理请求,不再依赖粘性路由或共享会话存储。HttpServerTransportOptions.Stateless默认值改为true,需要会话的服务端可手动设为false。客户端会先探测server/discover,遇到旧服务器时自动退回传统握手;仅有状态模式配置和传统SSE端点分别触发MCP9006、MCP9004警告。
tools/call请求新增Mcp-Method和Mcp-Name请求头,工具参数也可通过特性映射为Mcp-Param-*头,便于负载均衡器和网关按请求头路由,而无需解析请求体。请求体仍是最终依据,若其内容与请求头不一致,服务器会返回HeaderMismatch错误。无状态模式取消了服务器在调用期间主动向客户端索取输入的通道,改由工具抛出InputRequiredException,并通过InputRequest.ForElicitation、ForSampling或ForRootsList生成请求及不透明requestState;客户端提交inputResponses后重新调用,已注册处理程序时McpClient可自动完成相关操作。旧版有状态连接可桥接传统服务器请求,无状态低版本连接则会抛出McpException。
稳定的1.x API仍可继续使用,但Tasks已迁移至ModelContextProtocol.Extensions.Tasks,且不兼容1.3、1.4中的实验版本;ModelContextProtocol.Extensions.Apps则用于MCP App场景。OAuth行为也更严格,包括RFC 9207签发者校验、必须对外声明PKCE S256支持,以及动态客户端注册自动推断应用类型。SDK支持.NET 8、9、10和.NET Standard 2.0。依据SEP-2577,Roots、采纳和日志API被标记为废弃,并产生MCP9005警告。
2.1增加可选的subscriptions/listen处理器,并在server/discover无法通过HTTP完成时回退initialize;2.2引入HttpServerSessionMode,使采用2025年11月25日或2026年7月28日协议的客户端能够共享端点,同时修复McpHeaderEncoder.DecodeValue异常。2.3将McpClient.ServerInfo改为可空,原因是服务器可能不在server/discover中提供可选身份元数据,文档提醒不要据此进行安全判断。
此外,Streamable HTTP会等到首个协议消息到达后才发送响应头,长时间无输出的处理器可能需要发送进度或延长HTTP超时。其他调整包括保留工具、提示词和资源的注册顺序,公开McpClientOptions.TimeProvider以便编写确定性超时测试,将OAuth排除在DiscoverProbeTimeout之外,并在等待优雅退出前关闭stdio服务器输入。SDK可通过NuGet获取,团队下一阶段将重点推进端到端身份认证与授权。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文