微软发布 MCP C# SDK 2.0:HTTP 默认无状态,交互工具支持多轮往返
微软正式发布官方 MCP C# SDK 2.0 版本,实现了 MCP 规范的 2026-07-28 修订版。
微软已推出官方
MCP C# SDK 2.0,对应 MCP 规范 2026-07-28 修订版。新版本把 Streamable HTTP 服务器默认设为无状态,并统一了 HTTP 请求头,让基础设施在路由 MCP 流量时更省事;面向交互式工具,还加入了多轮往返请求(MRTR)。此后 8 月至 10 月,2.1、2.2、2.3 三个次要版本陆续发布。
MCP 是一套开放协议,用来规范应用程序以何种方式向大语言模型提供上下文和工具。C# SDK 由微软参与联合维护,构建在 ASP.NET Core 之上。SDK 团队表示,这次规范修订是协议发布以来动作最大的一回,原因是它把 MCP 在 HTTP 上的运行方式重新设计了一遍。
initialize 握手和 Mcp-Session-Id请求头这一层被去掉了。协议版本和功能声明如今跟着每个请求走,于是任意一个服务器实例都能处理请求,不必依赖粘性路由,也不用共享会话存储。HttpServerTransportOptions.Stateless 现在默认为 true需要会话能力的服务器,可以把它设为false客户端则会先探测server/discover碰到旧服务器,客户端就回退到传统握手方式。只与有状态模式相关的配置、以及传统 SSE 端点,现在会抛出MCP9006、MCP9004 警告。
tools/call 请求新增 Mcp-Method、Mcp-Name请求头, 特性则能把工具参数提升为Mcp-Param-*请求头。负载均衡器和网关能直接按请求头完成路由,不必再解析请求体。不过请求体仍是最终依据:一旦请求头与请求体对不上,服务端就会返回HeaderMismatch 错误。
无状态化改造把服务器在调用过程中向客户端索取输入的通道去掉了。接替它的是 MRTR:工具会抛出InputRequiredException其中包含一个或多个输入请求,这些请求可通过InputRequest.ForElicitation、ForSampling 或 ForRootsList来构建,并附带一个不透明的requestState。客户端把响应收集起来,再通过inputResponses重新发起调用。若已注册处理程序,McpClient就会自动执行相应操作。面对 2025-11-25 或更早版本客户端的有状态会话,SDK 会桥接到旧的服务器发起请求;而低版本的无状态连接遇到该请求,则会抛出McpException。按照 SEP-2577,Roots、采用和日志 API 均被标记为废弃,警告码是MCP9005。
公告称,稳定的 1.x API 仍可继续使用。只有 Tasks 是例外,它已挪到ModelContextProtocol.Extensions.Tasks包中,与 1.3 和 1.4 版本里的实验版本不兼容。实验性的ModelContextProtocol.Extensions.Apps这一版包可以用在 MCP App 场景里。发布的说明还写明了更严的 OAuth 规则:由 RFC 9207 做签发者校验,对外声明时强制要求 PKCES256支持,动态客户端注册则会自动推断应用类型。可支持的目标框架涵盖 .NET 8、9、10,另外还包括 .NET Standard 2.0。
2.1 版本加了一个可选的subscriptions/listen处理器,作用是让服务器端通知流可以自行定制;一旦server/discover在 HTTP 层出错,就会回退到initialize。到了 2.2 版本,又引入了HttpServerSessionMode,这样用 2025-11-25 和 2026-07-28 修订版的客户端就能共用一个端点,同时还修掉了McpHeaderEncoder.DecodeValue 中的异常。
2.3 版本把McpClient.ServerInfo改成可空,这是源码层面的重大变更——服务器未必会在server/discover里回传可选的身份元数据;文档也提醒,别拿服务器自己报的身份信息去做安全决策。Streamable HTTP 现在的做法是先等第一个协议消息到达,再发响应头,所以那些长时间不出声的处理器,可能需要输出进度信息,或者把 HTTP 超时设得更长。McpClientOptions.TimeProvider其余改动有这些:列出工具、提示词和资源时保留注册顺序,暴露DiscoverProbeTimeout,写确定性的超时测试会方便些;OAuth 被排除在
之外;stdio 服务器则会在等待优雅退出之前先关掉输入。
有读者在博文评论区问,协议怎么防止被篡改或者跨会话重用,眼下评论区还没有官方回应。团队说下一阶段的重点是端到端身份认证与授权。SDK 在 NuGet 上能拿到,文档在项目站点,2.0、2.1、2.2 和 2.3 的发布说明都在 GitHub 上。