作者:互联网 时间: 2026-07-29 08:29:56
MCP v2 是一次架构级大改版,配套全新 2026-07-28 MCP 协议规范,计划 2026-07-28 正式稳定发布,当前处于 2.0.0-beta.2 预发布阶段;整体分为包结构重构、协议能力升级、API 重构、构建/运行时、破坏性变更、迁移工具六大模块,同时兼容旧版 2025 协议客户端。
v1 单一包 @modelcontextprotocol/sdk 转为按需安装的独立模块化包后,体积得以减小,原包废弃:
@modelcontextprotocol/client:只包含客户端实现@modelcontextprotocol/server:只包含服务端实现@modelcontextprotocol/core:底层编解码以及协议类型、通用 Schema@modelcontextprotocol/express / @modelcontextprotocol/fastify:适配 Web 框架@modelcontextprotocol/node:原生 Node http 兼容层@modelcontextprotocol/server-legacy:兼容旧版 OAuth 的服务@modelcontextprotocol/codemod:v1→v2 自动化迁移脚本# v1npm install @modelcontextprotocol/sdk# v2 服务端npm install @modelcontextprotocol/server @modelcontextprotocol/express# v2 客户端npm install @modelcontextprotocol/client
beta.2 新增双构建输出,解决 Node CJS 项目导入报错问题:
.mjs + 类型声明 .d.mts.cjs + 类型声明 .d.ctspackage.json exports 配置 require 条件,require() 可以正常加载core 从 .js 调整为 .mjs,不影响对外导入路径一项服务即可响应两代协议请求:v2 原生支持新版协议,并兼容 2025 旧协议客户端。
Mcp-Method / Mcp-Name 请求头,不解析 body 也能完成路由工具执行期间可以向用户请求输入,不必通过长连接持续阻塞:
InputRequiredResult 暂停执行并等待用户输入requestState 密封存储:HMAC-SHA256 签名工具已经内置 createRequestStateCodec,以 TTL 实现防篡改tools/list/resources/read 等接口会自动携带 ttlMs、cacheScope 缓存字段,默认 ttlMs:0, privateresultType 该字段对上层业务类型隐藏,仅保留在 2026 协议 wire 层-32601 方法不存在错误默认使用 Ajv2020 校验,严格支持 $defs/prefixItems/unevaluatedProperties;旧 Draft-07 可手动降级配置。
createMcpHandler() 以 Web 标准形式返回 { fetch, close, notify, bus },Node/Bun/Deno/Workers 均获原生支持.node(req, res) 接口,Node 环境借助 toNodeHandler 进行适配转换serveStdio() stdio 服务只用一行便能运行ctx(替代 v1 模糊 extra 参数)强类型会传给每个工具/资源处理器 ctx,内置能力包括:
ctx.mcpReq.requestState<T>()从 v1 的强制内置 Zod,转变为 v2 的完全解耦:
@valibot/to-json-schema).tool() → v2 .registerTool()registerXXX 风格 API-32602 Invalid Params,同时兼容新旧协议ResourceNotFoundError,携带 uri 元数据CallToolResult.content 不再自动使用空数组,字段缺失会直接抛出 -32602 v1 会用空数组静默补齐,否则属于校验错误。structuredContent 非对象根类型也被支持;为兼容旧客户端,文本序列化内容由服务端自动补充。@deprecated。_meta 请求元数据仍可被自定义处理器读取,不再自动删除;过滤范围只包括协议保留字段。绝大多数机械修改可交由官方的一键迁移脚本处理:
npx @modelcontextprotocol/codemod@beta v1-to-v2 .
@modelcontextprotocol/sdk → server/client/core).tool() → registerTool()server-legacy 支持 RFC9207,并由包负责 OAuth 旧兼容逻辑 iss 颁发者校验onerror,方便开展日志监控