用途:把已有的 MCP TypeScript 服务器从 @modelcontextprotocol/sdk v1.x 单包迁移到 v2 拆分包 SDK(@modelcontextprotocol/server、/client、/node、/express、/hono)。适用于确有迁移意图的现有 v1 代码库;新建 v1/v2 服务器或仅维护 v1 不适用。
主要能力:提供 v1→v2 表面映射,包括包拆分与导入路径改写、extra→ctx 处理器上下文映射(如 extra.signal→ctx.mcpReq.signal、extra.authInfo→ctx.http?.authInfo)、Zod v3→v4 与 raw shape 移除(inputSchema 需改为 z.object)、McpError/ErrorCode→ProtocolError/ProtocolErrorCode、setRequestHandler 由 Schema 改为方法字符串键(如 "tools/call")、Express/Hono 适配器与传输类改名、OAuth 路由移除的替代方案。
使用方式:先盘点 v1 服务器(package.json、tsconfig、src 下所有导入、extra 字段、传输类、Zod 形状、错误调用、setRequestHandler、框架接线),可运行 bash scripts/check-v2-feasibility.sh <project-dir> 做初步检查;再选择策略(全量重写、元包 shim、HTTP 层鉴权过渡或留在 v1);随后按导入、schema、handler、错误与请求键、鉴权、传输适配器分步改写;最后校验与灰度。导入部分可用 bash scripts/migrate-imports.sh <project-dir> 预览,确认后再加 --write。
限制:v2 为预发布 alpha(最新 2.0.0-alpha.2),生产服务器应继续使用 @modelcontextprotocol/sdk@^1.x,仅用于规划、测试和分阶段迁移。需 Node 20+ 且 package.json 加 "type": "module"(仅 ESM)。同一模块图不得混用 v1 与 v2 包(除非有意分阶段),须用 --save-exact 固定 alpha 版本。ctx.http? 可为空(stdio 下为 undefined)。服务端 OAuth 已移除,需改用 HTTP 层鉴权或过渡包。保留可部署的 v1 分支直至 v2 稳定。迁移完成后可交由 build-mcp-server-sdk-v2 继续维护。