mcp1和mcp2对比
MCP 2.0(即 2026-07-28 协议修订版)是一次从架构到交互模式的重大升级。它最核心的变化是从“有状态的本地会话”转向了“无状态的分布式协议”,目标是让 MCP 成为 AI Agent 时代的真正基础设施。
下面是 v2.0 引入的核心新方法,以及与 v1.0 的主要变更对比。
🚀 MCP 2.0 的核心新方法(新特性)
MCP 2.0 引入了一套全新的机制来解决 v1.0 时代的关键限制:
| 新特性/方法 | 核心作用 | 通俗解释 |
|---|---|---|
无状态请求 & _meta 元数据 |
废除初始化握手,每个请求独立自描述。协议版本、客户端信息等通过_meta字段传递。 |
就像 HTTP 请求,每个请求都自带“身份信息”,服务器无需记住你之前的对话。 |
| Multi Round-Trip Requests (MRTR) | 替代 v1 的服务器推模式(如elicitation/create)。服务器若需要用户输入(如确认付款),会在响应中返回一个input_required结果和requestState令牌,由客户端收集信息后重试原请求。 |
解决了服务器不能主动给客户端“发消息”的问题,现在可以“问”客户端要信息了。 |
server/discover RPC |
一个用于发现服务器功能的端点,替代了原来的initialize握手流程。 |
客户端不再需要复杂的握手协商,直接询问服务器“你能做什么”。 |
| Streamable HTTP 传输 | 新标准传输协议,取代了 v1 的 HTTP+SSE。请求和响应都通过单一的 HTTP POST 完成。 | 让 MCP 请求可以像普通 HTTP API 一样被负载均衡、网关等基础设施处理,更利于云上部署。 |
| Extensions 扩展框架 | 协议核心被精简,官方功能(如 Tasks, MCP Apps)都作为独立扩展实现。 | 协议本身变得“小而稳”,新功能可以像插件一样添加,无需修改核心规范。 |
| MCP Registry 注册中心 | 一个统一的服务器注册表,用于发现和分发 MCP Server。 | 类似“MCP 应用商店”,让 AI 应用能轻松发现和连接远程服务。 |
📊 与 MCP 1.0 的主要变更对比
以下表格清晰地展示了从 v1.0 到 v2.0 的关键变迁:
| 方面 | MCP 1.0 (2025-11-25 及更早) | MCP 2.0 (2026-07-28) | 变更影响 |
|---|---|---|---|
| 核心架构 | 有状态会话。需先进行initialize握手,建立会话ID。 |
无状态请求。废除握手,每个请求自带版本和能力信息于_meta中。 |
最关键变更。使服务器能横向扩展,不再依赖“粘性会话”,降低了运维成本。 |
| 传输协议 | 以 stdio(本地通信)为主,支持 HTTP+SSE(远程通信)。 | Streamable HTTP 成为新标准,HTTP+SSE 被正式弃用。 | 标准化了远程通信,让 MCP 流量能被标准 HTTP 基础设施(如负载均衡器)处理。 |
| 服务器请求模式 | 通过 elicitation/create、sampling/createMessage 等由服务器发起的请求与客户端交互。 |
废除服务器发起请求,MRTR 取而代之。 | 解决了服务器无法主动向客户端发送请求的难题,实现了无需会话状态的双向交互。 |
| 会话与状态管理 | 依赖 Mcp-Session-Id 头维持会话状态。 |
不再需要 Session ID。多轮交互的状态通过 MRTR 的 requestState 承载。 |
一个请求可以被集群中任何实例处理,实现了真正的无状态水平扩展。 |
| 功能发现 | 通过 initialize 握手流程进行能力协商。 |
通过独立的 server/discover RPC 方法进行发现。 |
将“发现”从“连接”中解耦,逻辑更清晰。 |
| 工具定义 | 需在代码中静态定义工具及其输入输出 Schema。 | 支持动态注册机制,服务器能力可以在运行时注册或更新。 | 工具的定义更加灵活,适合动态变化的系统。 |
| 生态与扩展 | 核心功能(如 Tasks)处于实验阶段,体系相对单薄。 | 引入 Extensions 扩展机制和 Registry 注册中心。 | 构建了清晰的插件体系和发现机制,为构建 AI Agent 大型生态打下基础。 |
⚠️ 被弃用或移除的功能
部分 v1.0 的功能在 v2.0 中被标记为弃用或已移除:
- 已移除:
initialize握手、Mcp-Session-Id、elicitation/create、sampling/createMessage、roots/list等服务器发起的请求模式。 - 已弃用:
roots、sampling、logging功能,以及HTTP+SSE传输方式。它们有各自的迁移路径(见下表)。
| 已弃用功能 | 迁移/替代方案 |
|---|---|
roots (根目录列表) |
通过工具参数、资源 URI 或服务器配置直接传递目录信息。 |
sampling (采样) |
由客户端或代理直接调用 LLM 提供商的 API。 |
logging (日志) |
使用 stderr(在 stdio 模式下)或 OpenTelemetry 等标准可观测性方案。 |
HTTP+SSE 传输 |
迁移到新的 Streamable HTTP 传输方式。 |
| WebSocket 传输 | 该传输方式从未成为 MCP 官方规范的一部分,已被移除。 |
虽然 v2.0 是重大升级,但官方 SDK(如 C#、Python)在设计上保持了向前兼容性,这意味着一个 v2.0 的客户端仍然可以与一个 v1.0 的服务器通信,反之亦然,为开发者提供了平滑的迁移路径。
浙公网安备 33010602011771号