.NET+AI | MCP | MCP 2.0 正式发布:AI 应用接入协议,开始进入「云原生时代」

发布时间:2026/7/30 21:49:51
.NET+AI | MCP | MCP 2.0 正式发布:AI 应用接入协议,开始进入「云原生时代」 目录一、最大的变化MCP 默认走向无状态Before有状态 HTTP MCP ServerAfter无状态 HTTP MCP Server二、HTTP 变得更标准网关终于看得懂 MCPBefore先初始化再携带 Session IDAfter请求自带协议版本和路由信息三、多轮请求交互式工具不再依赖长连接Before参数不够只能报错或让用户重试After工具执行中主动请求用户补充信息四、长任务从同步阻塞到 Tasks 扩展Before长任务阻塞一次工具调用After启用 Tasks让长任务后台运行五、MCP Apps从纯文本返回到可渲染 UIBefore工具只返回文本或 JSONAfter工具关联可视化 UI六、工具 Schema从文本约定到结构化输出Before工具输出主要靠文本约定After返回结构化对象Schema 更清晰七、安全与授权更接近生产级 OAuth八、Roots、Sampling、Logging 被标记为弃用九、C# SDK v2.0兼容旧代码拥抱新协议十、这次发布真正意味着什么给开发者的迁移建议1. 检查 HTTP Server 是否还依赖 Session2. 检查工具是否依赖文本返回3. 检查长任务是否还在同步阻塞4. 检查复杂工具是否需要用户确认5. 检查是否需要可视化 UI结语MCP 2.0 是 Agent 基础设施的重要分水岭参考链接2026 年 7 月 28 日官方 [MCP C# SDK v2.0.0 正式发布][^1] , 这次更新不是一次普通的 SDK 升级而是 MCP 自发布以来最大的一次协议级重构它把 MCP over HTTP 从「有会话、强连接、偏单机」的形态推进到「无状态、可路由、可扩展、云原生」的新阶段。如果说 MCP 1.x 解决的是「模型如何调用外部工具」那么 MCP 2.0 要解决的就是当 MCP 服务真正进入生产环境跑在 API Gateway、负载均衡、Serverless、边缘节点和多实例集群之后协议本身如何支撑稳定扩展。这也是 MCP 2.0 最值得关注的地方它不只是让 Agent 多了一些能力而是让 Agent 能力开始真正进入生产基础设施。一、最大的变化MCP 默认走向无状态MCP 2.0 最核心的关键词是无状态。在旧版本中客户端通过 Streamable HTTP 调用 MCP Server 时通常需要先完成initialize握手。服务端会返回一个Mcp-Session-Id后续客户端每次请求都要带上这个 Session ID。这意味着请求会被绑定到某个服务实例。生产部署时如果 MCP Server 有多个副本就需要考虑粘性会话、共享 Session Store或者额外的会话迁移机制。这对实验项目没什么问题但对生产系统来说会增加不少部署和运维复杂度。Before有状态 HTTP MCP Server在这种模式下客户端和服务端之间存在一个逻辑会话。后续请求通常需要依赖前面建立的Mcp-Session-Id。After无状态 HTTP MCP Server新规范移除了initialize / initialized握手也取消了Mcp-Session-Id。协议版本、能力信息等上下文会随每次请求携带每个请求都变成「自包含」的独立请求。结果就是任意服务实例都可以处理任意 MCP 请求。这让 MCP Server 更像标准 Web API也让它可以更自然地运行在 Kubernetes、Azure Container Apps、Serverless、边缘计算和普通负载均衡之后。一句话总结BeforeMCP Server 更像「长连接会话服务」部署多副本时要考虑 Session 亲和。AfterMCP Server 更像标准 Web API任意实例都可以处理任意请求。二、HTTP 变得更标准网关终于看得懂 MCPMCP 2.0 另一个重要变化是对 HTTP 层做了标准化。在旧模式下网关看到的通常只是一个/mcp地址。至于这次请求是tools/list、tools/call还是调用了哪个具体工具都藏在 JSON body 里。这对网关、负载均衡、限流、审计、日志和观测系统都不友好。它们要么完全不知道 MCP 请求在做什么要么必须解析 JSON body。MCP 2.0 引入了标准 Header例如MCP-Protocol-VersionMcp-MethodMcp-NameMcp-Param-*这样一来API Gateway、负载均衡器、限流系统、日志系统可以不解析 JSON body仅通过 Header 就识别请求类型、工具名称和参数信息。Before先初始化再携带 Session ID服务端返回后续调用工具时After请求自带协议版本和路由信息这看起来只是多了几个 Header但对生产运维非常关键。它意味着 MCP 流量开始具备三个重要能力可路由网关可以按工具、资源、方法做路由。可缓存工具列表、资源读取等响应可以表达缓存语义。可观测一次 MCP 调用可以进入统一链路追踪体系。一句话总结Before网关看到的只是/mcp真正的方法和工具名藏在 JSON body 里。After网关可以直接通过 Header 做路由、限流、审计和观测。这也是 MCP 2.0 非常关键的一步它不再像「套在 HTTP 里的私有协议」而是更像一个真正能被云基础设施理解和治理的 Web workload。三、多轮请求交互式工具不再依赖长连接MCP 2.0 引入了 Multi Round-Trip Requests也就是多轮往返请求机制。过去某些工具调用如果需要用户补充信息、确认操作或完成交互往往不好表达。工具要么直接失败要么返回一段文字让用户重新调用要么依赖长连接或服务端会话保存中间状态。这和真实业务场景不太匹配。例如一个部署工具需要用户选择区域、规格、预算上限一个审批工具需要用户确认金额、收件人和权限范围一个数据分析工具需要用户补充筛选条件一个 OAuth 授权工具需要用户先完成第三方登录。MCP 2.0 让这些交互可以用更清晰、更可扩展的协议方式表达。Before参数不够只能报错或让用户重试这种方式的问题是工具不能在执行过程中自然地「追问用户」。它只能告诉模型或用户你参数没给够请重新来一次。After工具执行中主动请求用户补充信息在这个版本中工具不再只是一个一次性函数。它可以在执行过程中向客户端发起请求让用户补充必要信息然后继续完成任务。一句话总结BeforeAI 工具像一次性函数参数不够就失败。AfterAI 工具可以像真实助手一样在关键步骤追问、确认、继续执行。这会极大提升复杂工具调用的可用性。尤其是在企业场景中很多动作不能一把梭执行而是需要确认、补充、授权和审计。MCP 2.0 的多轮请求机制正是在补齐这块能力。四、长任务从同步阻塞到 Tasks 扩展MCP 2.0 还引入了 Tasks 扩展用来处理长时间运行的任务。这类任务在真实系统里非常常见生成一份复杂报告执行一次大规模数据分析部署一组云资源扫描一个代码仓库执行一次批量迁移跑一次长时间测试。过去如果这些任务直接放在一次工具调用里客户端只能等待请求结束。请求时间越长失败概率越高用户体验也越差。Before长任务阻塞一次工具调用这种方式的问题很明显客户端只能等。中间进度、取消、失败状态、后续输入请求都不好表达。After启用 Tasks让长任务后台运行客户端可以使用 Tasks 方式调用工具启用 Tasks 后工具调用可以返回「任务已创建」。客户端再通过任务状态持续跟踪进度。一句话总结Before长任务占住一次请求用户只能等。After工具可以返回「任务已创建」客户端通过任务状态持续跟踪进度。这让 MCP 更适合处理真实世界中的长流程而不是只适合做短平快的函数调用。五、MCP Apps从纯文本返回到可渲染 UIMCP 2.0 生态里另一个非常重要的方向是 MCP Apps。过去MCP 工具主要返回文本或结构化 JSON。模型可以理解这些内容但用户看到的体验往往比较单薄。例如一个天气工具返回 JSON这对模型足够但对用户来说不一定直观。MCP Apps 让工具可以关联一个可由客户端渲染的 HTML UI 资源。这样MCP 工具不只可以返回数据还可以带出图表、表单、仪表盘、审批卡片、配置面板等交互界面。Before工具只返回文本或 JSONAfter工具关联可视化 UI服务端启用 MCP Apps一句话总结Before模型拿到的是文本用户看到的是一段描述。After工具可以带出一个交互式界面比如图表、表单、仪表盘或审批卡片。这非常适合企业应用场景。例如数据分析工具返回图表云资源工具返回拓扑图审批工具返回确认卡片配置工具返回表单运维工具返回监控面板。MCP Apps 让 MCP 从「工具调用协议」进一步走向「AI 应用协议」。六、工具 Schema从文本约定到结构化输出MCP 2.0 还增强了工具输入输出 Schema 的表达能力。工具参数和返回值越清晰模型越容易生成正确调用客户端也越容易校验、渲染和后续编排。过去很多工具会返回一段文本。人能看懂但系统很难稳定解析。Before工具输出主要靠文本约定这种返回对人可读但对后续工具编排不友好。比如下一个工具想根据Tier做判断就必须从文本里提取字段容易出错。After返回结构化对象Schema 更清晰进一步复杂的输入也可以用类型表达一句话总结Before模型和客户端需要「猜」文本里的结构。After输入输出都有明确 Schema适合校验、编排、UI 渲染和自动化工作流。这点在 Agent 工作流里尤其重要。因为 Agent 不只是调用一个工具而是经常需要把一个工具的输出传给另一个工具。结构化输出越稳定工作流越可靠。七、安全与授权更接近生产级 OAuthMCP 2.0 还强化了授权体系使其更贴近 OAuth 和 OpenID Connect 的真实生产部署。在 C# SDK v2.0.0 的发布内容中可以看到多项与 OAuth、动态客户端注册、PKCE、授权状态校验相关的修复和增强。这说明 MCP 正在面向更严肃的企业级场景不仅要能调用工具还要能明确谁在调用代表谁调用具备什么权限授权是否可信访问是否可审计对于涉及企业数据、云资源、数据库、代码仓库和内部系统的 MCP Server 来说授权能力会成为能否上线生产的关键门槛。可以把它理解为MCP 1.x 更关注「能不能连上工具」。MCP 2.0 开始关注「能不能安全、合规、可治理地使用工具」。八、Roots、Sampling、Logging 被标记为弃用在 MCP 2026-07-28 规范中Roots、Sampling 和 Logging 被标记为弃用。这并不代表现有实现立刻失效。弃用意味着这些能力进入迁移窗口已有客户端和服务端仍需正确处理相关能力但新实现不应继续依赖它们。为什么要这么做因为 MCP 正在从早期探索阶段走向更稳定、更可治理、更可长期演进的阶段。一些采用率有限、语义不够清晰或者可以通过更明确方式替代的能力会逐步从核心协议中移出。这也和 MCP 2.0 的整体方向一致核心协议更轻扩展机制更强生产语义更清晰。九、C# SDK v2.0兼容旧代码拥抱新协议对 .NET 开发者来说最值得放心的一点是官方 C# SDK v2.0 保持向后兼容。升级 SDK 不代表你必须立刻重写所有 MCP Server。稳定的 v1 代码仍可以继续编译和运行。但与此同时C# SDK v2.0 已经跟进新规范HTTP Server Transport 支持无状态模式支持新的协议版本支持标准化 Header支持 Elicitation / 多轮请求支持 Tasks 扩展支持 MCP Apps 扩展支持更完整的工具 Schema 表达改进 OAuth 和授权相关能力。这让 .NET 成为实现生产级 MCP 服务的一个自然选择。原因也很直接ASP.NET Core 本来就擅长做 HTTP 服务、鉴权、中间件、日志、链路追踪、依赖注入、健康检查和云原生部署。MCP 2.0 的无状态协议设计正好可以复用这些成熟基础设施。十、这次发布真正意味着什么MCP 2.0 的意义不只是「多了几个功能」。它真正改变的是 MCP 的部署模型和编程模型。过去MCP 更像是 Agent 应用和本地工具之间的连接协议。现在它正在变成一个可以被企业基础设施承载的 AI 能力协议。它开始认真考虑负载均衡网关路由缓存链路追踪授权安全异步任务用户交互UI 扩展结构化输出长期演进。这说明 MCP 的下一阶段重点已经非常清晰从「能接入工具」走向「能规模化运行」。从「开发者实验协议」走向「生产级 AI 应用基础设施」。给开发者的迁移建议如果你已经在使用 MCP Server可以优先检查下面几件事1. 检查 HTTP Server 是否还依赖 Session如果你的服务部署在多个副本之后建议优先评估无状态模式2. 检查工具是否依赖文本返回如果工具结果会被后续工具继续使用建议改成结构化对象返回3. 检查长任务是否还在同步阻塞如果工具执行时间可能超过几十秒可以考虑 Tasks 扩展而不是让一次请求一直等待。4. 检查复杂工具是否需要用户确认如果工具涉及部署、删除、付款、授权、审批等高风险动作建议使用 Elicitation / 多轮请求而不是直接执行。5. 检查是否需要可视化 UI如果工具返回的是复杂表格、图表、配置项或审批信息可以评估 MCP Apps把用户体验从文本升级到可交互界面。结语MCP 2.0 是 Agent 基础设施的重要分水岭MCP 2.0 的发布标志着 AI Agent 生态正在进入一个新阶段。在这个阶段大家关注的不再只是「模型能不能调用工具」而是工具如何被治理、如何被观测、如何被授权、如何被扩展、如何在云上稳定运行。对于开发者现在是重新审视 MCP Server 架构的好时机是否还依赖 Session是否能横向扩展是否有清晰的授权模型工具 Schema 是否足够严格长任务是否有标准表达交互式任务是否支持用户确认结果是否能被客户端稳定解析和渲染对于企业和平台团队MCP 2.0 则提供了一个更接近生产要求的协议基础。如果说 MCP 1.x 打开了模型连接外部世界的大门那么 MCP 2.0 正在把这扇门修成一条真正可以承载流量、权限、运维和生态的高速公路。这也是 MCP 2.0 最重要的信号Agent 不再只是 Demo。Agent 正在进入生产系统。而 MCP正在成为连接 Agent 与生产世界的基础协议。参考链接https://github.com/modelcontextprotocol/csharp-sdk/releases/tag/v2.0.0https://devblogs.microsoft.com/dotnet/announcing-v20-of-the-official-mcp-csharp-sdk/引入地址