InfoQ

MCP C# SDK 2.0 Makes HTTP Stateless by Default and Adds Multi Round-Trip Requests

8.5内容质量
MCP C# SDK 2.0 Makes HTTP Stateless by Default and Adds Multi Round-Trip Requests

TL;DR · AI 摘要

MCP C# SDK 2.0 默认使 HTTP 无状态,引入多往返请求(MRTR),提升交互工具性能。

核心要点

  • MCP C# SDK 2.0 默认启用 HTTP 无状态,简化服务器路由。
  • 新增 Multi Round-Trip Requests(MRTR)支持复杂交互场景。
  • HTTP 头标准化后,负载均衡器可基于头信息路由请求,无需读取请求体。

结构提纲

按章节快速跳转。

  1. 介绍 MCP C# SDK 2.0 的发布及主要更新。

  2. 默认启用 HTTP 无状态,标准化头信息,引入 MRTR。

  3. 移除会话 ID,协议版本随请求传递,简化服务器处理。

  4. 通过 InputRequiredException 支持多轮交互请求。

  5. 向后兼容 1.x API,旧版本客户端使用桥接机制。

思维导图

用一张图看清主题之间的关系。

查看大纲文本(无障碍 / 无 JS 友好)
  • MCP C# SDK 2.0 更新
    • 核心特性
      • HTTP 无状态化
      • Multi Round-Trip Requests (MRTR)
      • HTTP 头标准化
    • 兼容性
      • 支持旧版客户端桥接
      • 1.x API 向后兼容

金句 / Highlights

值得收藏与分享的关键句。

#C##SDK#HTTP#MCP协议
打开原文

MCP C# SDK 2.0 默认使 HTTP 无状态并新增多往返请求功能 - InfoQ

InfoQ 首页 News MCP C# SDK 2.0 默认使 HTTP 无状态并新增多往返请求功能

.NET

QCon AI 波士顿(2027年7月8-9日):AI 原型已成功运行。生产环境会发生什么?

MCP C# SDK 2.0 默认使 HTTP 无状态并新增多往返请求功能

2026年10月26日 3分钟阅读

作者:

  • Edin Kapić

#### 关注我们

Youtube

232K 粉丝

Linkedin

26K 粉丝

Instagram

新

RSS

19K 读者

X

57.1k 粉丝

Facebook

21K 点赞

Bluesky

收听本文 -

0:00

音频准备就绪

您的浏览器不支持音频元素。

正常

1.25x

1.5x

喜欢

新下拉阅读列表

  • 阅读列表

微软宣布正式发布 MCP C# SDK 2.0 稳定版本,实现了 2026-07-28 版本的模型上下文协议(MCP)规范。此次发布默认使 Streamable HTTP 服务器变为无状态,标准化 HTTP 头信息以便基础设施路由 MCP 流量,并为交互工具引入多往返请求(MRTR)功能。8月至10月期间陆续发布了三个次要版本 2.1 至 2.3。

MCP 是一个开源协议,规范了应用程序向大型语言模型提供上下文和工具的方式。C# SDK 在与微软合作维护,并基于 ASP.NET Core 构建。SDK 团队将新规范版本描述为自协议发布以来最大的一次更新,因为它重新思考了 MCP 在 HTTP 上的工作方式。

初始化握手和 Mcp-Session-Id 头信息已被移除。协议版本和功能信息现在随每个请求传递,因此任何服务器实例都可以在不依赖粘性路由或共享会话存储的情况下处理任何请求。HttpServerTransportOptions.Stateless 现在默认设为 true;需要会话的服务器将其设为 false。客户端首先探测服务器/发现功能,若失败则回退到旧版握手流程。仅支持会话的选项和旧版 SSE 端点现在会触发 MCP9006 和 MCP9004 警告。

工具/调用请求现在携带 Mcp-Method 和 Mcp-Name 头信息,[McpHeader] 属性可将工具参数提升为 Mcp-Param-* 头信息。负载均衡器和网关可以基于头信息进行路由而无需读取正文内容。正文仍具有权威性:头信息与正文不匹配时,服务器将返回 HeaderMismatch 错误。

无状态设计去除了用于在调用过程中向客户端请求输入的通道服务器。MRTR 取而代之:工具抛出 InputRequiredException 并附带一个或多个输入请求,这些请求通过 InputRequest.ForElicitation、ForSampling 或 ForRootsList 创建,并包含一个不透明的 requestState。客户端收集答案后,通过 inputResponses 重新发起调用。当注册处理程序时,McpClient 会自动执行此操作。对于使用 2025-11-25 或更早版本客户端的有状态会话,SDK 会桥接到旧版服务器主动请求;在无状态低版本连接上,请求会以 McpException 形式暴露。根、采样和日志 API 在 MCP9005 下已弃用,遵循 SEP-2577 规范。

根据公告,1.x版本的稳定API将继续正常工作。例外情况是Tasks功能,该功能已迁移至需手动启用的ModelContextProtocol.Extensions.Tasks包中,并与1.3和1.4版本中的实验性版本不兼容。一个实验性包ModelContextProtocol.Extensions.Apps用于支持MCP应用。发布说明中还提到更严格的OAuth行为:遵循RFC 9207的颁发者验证、强制要求支持PKCE S256、以及在动态客户端注册中推断应用类型。相关包支持.NET 8、9、10以及.NET Standard 2.0。

2.1版本新增了可选的订阅/监听处理器用于自定义服务器端通知流,并在HTTP层服务器/发现失败时添加了回退初始化机制。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服务器的输入。

有读者在公告中询问协议是否对requestState进行保护,防止跨会话的篡改或重复使用;但评论中未出现相关回复。

团队表示下一步的重点是端到端的身份验证和授权。SDK可通过NuGet获取,项目网站包含文档,GitHub上提供了2.0、2.1、2.2和2.3版本的发布说明。

关于作者

作者信息

#### Edin Kapić

显示更多

显示更少

#### 本内容属于.NET主题

##### 相关主题:

  • 开发
  • .NET
  • 模型上下文协议(MCP)
  • C#
  • 相关编辑
  • 相关赞助商
  • 相关赞助商 2026年11月19日,美国东部时间下午12点

扩展OpenTelemetry:管理收集器、配置和成本 由Datadog的高级产品市场经理David Iparraguirre和产品经理Jessica Yang呈现

InfoQ新闻通讯

每周五发送InfoQ最新内容摘要,每周二发送。加入超过25万名高级开发者的社区。查看示例

我们保护您的隐私。