AGENT PULSESJCPal Special EditionAI 行业证据与趋势
2026年9月23日 · @modelcontextprotocol/codemod

@modelcontextprotocol/codemod@2.1.0

发生了什么

MCP TypeScript SDK 发布 @modelcontextprotocol/codemod@2.1.0 补丁版本,修复 v1→v2 codemod 的项目类型推断问题。此前源码扫描器会匹配文件中任意位置被引号包裹的 @modelcontextprotocol/sdk/client|server 子路径,导致把仅作为数据出现的 server 路径(示例文本、日志消息、配置值)误判为同时使用 client 与 server,从而把共享类型导入改写为 @modelcontextprotocol/server 并添加项目实际未使用的 server 依赖。新扫描器要求匹配处于模块说明符位置:静态 import 与 re-export、副作用 import、动态 import(含 webpack magic comments)、require/require.resolve,以及 mock-paths 转换所改写的 vi./jest. mock 方法调用。已知限制:扫描仍是词法级的,若字符串文本内嵌完整 import 语句仍会被计入。

EVENT STORY

发展脉络

  1. 首次出现@modelcontextprotocol/codemod@2.1.0MCP TypeScript SDK Releases
  2. 当前判断MCP 生态的迁移工具开始处理误改写这类工程细节,说明协议版本升级已进入需要批量代码迁移的规模,工具链正确性会直接影响下游项目的依赖卫生。判断:这类修复降低升级摩擦,但尚不足以证明采用规模,需观察后续版本节奏与 issue 反馈。Agent Pulse · 分析
改变了什么

MCP TypeScript SDK 的 codemod 包发布 2.1.0 补丁,修复 v1→v2 迁移工具的项目类型误判。旧版扫描器只要在文件任意位置发现被引号包裹的 @modelcontextprotocol/sdk/client 或 server 子路径就计入,因此把仅作为数据存在的 server 路径(示例文本、日志消息、配置值)当成真实依赖,使纯 client 项目被判定为 client+server 双类型,进而把共享类型导入改写到 @modelcontextprotocol/server 并引入项目从未使用的 server 依赖。2.1.0 要求匹配必须出现在模块说明符位置,覆盖静态 import 与 re-export、副作用 import、动态 import(含 webpack magic comments)、require/require.resolve,以及 mock-paths 转换改写的 vi./jest. mock 调用。官方同时声明扫描仍为词法级,字符串内嵌完整 import 语句仍会被误计。

能力边界怎么变了

这是迁移工具中典型的词法匹配与语法位置判定之间的取舍:把匹配范围收紧到模块说明符位置,能消除字符串数据造成的假阳性,但代价是保留词法扫描而非 AST 解析,因此内嵌完整 import 语句的字符串仍会误判。可验证的下一信号是后续版本是否引入 AST 或作用域感知解析,以及是否在 release notes 中列出该已知限制的关闭状态。

为什么重要

MCP 生态的迁移工具开始处理误改写这类工程细节,说明协议版本升级已进入需要批量代码迁移的规模,工具链正确性会直接影响下游项目的依赖卫生。判断:这类修复降低升级摩擦,但尚不足以证明采用规模,需观察后续版本节奏与 issue 反馈。

对谁有影响

对维护 MCP 相关 TypeScript 项目的团队,升级到 2.1.0 可避免迁移时被写入未使用的 server 依赖与错误的类型导入路径,减少后续依赖清理与构建排查成本;建议在 CI 中对 codemod 输出做 diff 审查。

接下来观察

若词法扫描的已知限制持续存在,使用大量示例代码或配置字符串的项目在迁移时仍可能被误加依赖;可验证信号是后续 release 是否改为 AST 解析或提供 dry-run 差异报告。