用途:把 @modelcontextprotocol/server(MCP TypeScript SDK v2)的一次发布吸收进 Figwright,端到端完成审计→升级→证明线上契约未变。该包是运行时依赖,会序列化每个工具结果、生成每个工具的 JSON Schema、协商协议版本,因此类型检查绿灯不代表客户端看到的行为未变。
主要能力:解析声明版本、已安装版本与 npm 最新版本;把 GitHub Releases 当索引用,按 PR 号查实际改动文件;按文件路径判断是否影响 Figwright(仅导入 @modelcontextprotocol/server 与 /stdio 两个入口);对已发布 tarball 按内容哈希分区,得出真正需读的变更文件清单;把变更分类为类型级、线上行为、依赖/供应链;运行 packages/mcp/test/e2e/mcp-wire.test.ts 门与 probe.mjs 探针差分。
使用方式(保持原样): cd "$SCRATCH" && mkdir -p mcp-sdk-audit && cd mcp-sdk-audit npm pack @modelcontextprotocol/server@<installed> @modelcontextprotocol/server@<target> @modelcontextprotocol/core@<installed> @modelcontextprotocol/core@<target> --pack-destination . pnpm build && pnpm vitest run packages/mcp/test/e2e/mcp-wire.test.ts node "$REPO/.claude/skills/mcp-sdk-audit/probe.mjs" "$REPO" "$SCRATCH/mcp-sdk-audit/base.json" node "$REPO/.claude/skills/mcp-sdk-audit/probe.mjs" --diff "$SCRATCH/mcp-sdk-audit/base.json" "$SCRATCH/mcp-sdk-audit/after.json" pnpm -C packages/mcp add @modelcontextprotocol/server@^<target> pnpm typecheck && pnpm lint && pnpm format:check && pnpm knip && pnpm build && pnpm test
适用场景:升级 MCP SDK 并需证明线上契约不变;需区分类型级与行为级变更;需确认真实客户端(Claude Code、Cursor 等)兼容性。
限制:并不验证真实客户端,最后一步需用户重连并手动跑读工具;若发布同时动了 zod 版本,schema 门可能仍绿而客户端 schema 已变,需另跑 packages/mcp/test/json-schema-generation.test.ts 并读其 diff;探针需先 pnpm build;升级后采集的基线无效;无法覆盖未被 PR 列出的构建产物;不适用于 v1 旧线(@modelcontextprotocol/sdk)标签。