微软正式推出MCP C# SDK 2.0版本,核心实现MCP规范2026-07-28修订版。该版本将Streamable HTTP服务器设为默认无状态,标准化HTTP请求头,支撑基础设施高效路由MCP流量,并为交互式工具新增多轮往返请求(MRTR)。自版本发布后,2.1至2.3三个次要版本持续迭代优化,通过调整无状态特性、支持自定义通知流、规范头部编码等持续升级能力。MCP作为标准化应用程序与大模型交互的开放协议,C# SDK基于ASP.NET Core构建,这一版本修订是协议发布以来最大优化,重新设计了HTTP运行方式,移除握手机制并支持无状态传输,极大提升请求处理灵活性。同时,版本对废弃API进行规范标记,明确1.x稳定版本仍可使用,细化OAuth行为与安全管控,并支持适配多框架,持续完善协议兼容性,为开发者提供稳定可靠的技术支持。
--91likeyou---
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 签发者校验、强制要求对外声明 PKCE S256 支持,以及动态客户端注册自动推断应用类型。包支持的目标框架包括 .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,方便编写确定性超时测试,将 OAuth 排除在 DiscoverProbeTimeout 之外,以及在等待优雅退出前关闭 stdio 服务器的输入。
有读者在博文评论区询问协议如何防止 被篡改或跨会话重用,目前评论区暂无官方回复。
查看英文原文:
🔥 热词:#MCP · #HTTP · #SDK · #默认启用 · #无状态模式 · #新增多轮请求能力 · #微软正式发布官方 · #版本