用途:把现有 MCP TypeScript 服务器从 @modelcontextprotocol/sdk v1.x 单包迁移到 v2 拆分包 SDK。适用前提是已有 v1 代码并明确要迁移;新项目或仅维护 v1 不应使用。
主要变更:包拆分为 @modelcontextprotocol/server、/client、/node、/express、/hono;处理器上下文 extra 改为 ctx(如 extra.signal→ctx.mcpReq.signal、extra.authInfo→ctx.http?.authInfo);Zod v3 升级到 v4(import * as z from "zod/v4")并移除 raw shape,须用 z.object();McpError/ErrorCode 改为 ProtocolError/ProtocolErrorCode;setRequestHandler 改为方法字符串键(如 "tools/call");移除服务端 OAuth 路由(mcpAuthRouter、requireBearerAuth、OAuthServerProvider)与 SSE 传输。
用法要点:先盘点 v1 导入、extra 字段、传输类、Zod 形状、错误调用点与框架接线;选择策略(全量重写、元包 shim、HTTP 层认证迁移或暂留 v1);可运行 bash scripts/check-v2-feasibility.sh <project-dir> 与 bash scripts/migrate-imports.sh <project-dir>(先 dry-run,确认后再加 --write)。迁移后需 Node 20+、package.json 加 "type": "module"(v2 仅 ESM),锁定精确 alpha 版本(--save-exact),先类型检查、单测,再用 npx @anthropic-ai/mcp-inspector 冒烟,接真实客户端并在非生产环境观察至少一周后再切换。
限制:v2 为 alpha,不应直接上生产;不可在同一模块图中混用 v1 与 v2 包;ctx.http? 可能为 undefined;Express 适配器可自动透传 req.auth,但需显式接线 HTTP 层认证中间件;better-auth MCP 插件标记弃用且面向 v1,不应新采用。技能未提供具体收费与平台信息。