MCP变形重构工具
概要
这个MCP 服务器ts变形 利用,利用TypeScript 单击功能区上JavaScript 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。 Cursor 等编辑器扩展功能,进行符号名的变更、文件/文件夹名的变更、参照位置的检索等AST (Abstract Syntax Tree) 中所述修改相应参数的值。
提供的功能
这个MCP 服务器提供以下重构功能:。每个功能 ts-morph 利用,利用AST 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
重命名符号(rename_symbol_by_tsmorph)
- 机能:在整个项目中成批更改指定文件中特定位置的符号(函数、变量、类、接口等)的名称。
- 用例:想变更函数名和变量名,但是参照的地方很多,手工变更很困难的情况。
- 所需信息:项目
tsconfig.json路径、目标文件路径、符号位置(行列)、当前符号名称、新符号名称
重命名文件/文件夹(rename_filesystem_entry_by_tsmorph)
- 机能:指定的多个重命名文件和/或文件夹,然后单击
import/export自动更新语句路径。 - 用例:更改文件配置,并随之而来import 如果要修改路径。想一次重命名/移动多个文件/文件夹时。
- 所需信息:项目
tsconfig.json路径,重命名操作数组(renames: { oldPath: string, newPath: string }[])。 - 备考:
- 符号分析主要用于解决参照。 - 路径别名(@/ 将条目添加到文档注册表转换为相对路径来修改标记元素的显示属性。 - 浏览目录索引文件的导入(例如: ../components),则显式文件路径(例如: ../components/index.tsx)更新来修改标记元素的显示属性。 - 重命名操作前,还要检查路径冲突(在现有路径或操作中重复)。
- 注意(実行时间): 一次操作多个文件或文件夹时,或者在非常大的项目中,浏览分析和更新可能需要很长时间。
- 注意(已知限制): 现在、
export default Identifier;格式的默认导出引用可能无法正确更新。
查找引用(find_references_by_tsmorph)
- 机能:查找并列出指定文件中特定位置的符号定义和整个项目中的所有引用。
- 用例:想知道某个函数或变量在哪里使用的情况。要调查重构的影响范围时。
- 所需信息:项目
tsconfig.json路径、目标文件的路径、符号的位置(行列)。
删除路径别名(remove_path_alias_by_tsmorph)
- 机能:在指定的文件或目录中
import/export语句中包含的路径别名(@/components),模板名称将采用不同的格式../../components中所述修改相应参数的值。 - 用例:如果您想提高项目的可移植性,或者希望符合特定的编码约定。
- 所需信息:项目
tsconfig.json路径,要处理的文件或目录的路径。
在文件之间移动符号(move_symbol_to_file_by_tsmorph)
- 机能:指定的符号(函数、变量、类、接口、类型别名、Enum)将文件从当前文件移动到指定的其他文件。随着移动,自动更新整个项目的引用(包括导入/导出路径)。
- 用例:为了变更代码的构成,想将特定的功能切出到其他文件时。
- 所需信息:项目
tsconfig.json路径、源文件路径、目标文件路径和要移动的符号的名称。符号类型(如果需要)declarationKindString中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。 - 备考:同时移动符号的内部依赖关系(仅在符号中使用的其他声明)。从移动源文件中保留的其他符号引用的从属关系保留在移动源中,如有必要
export之后由应用程序进行调用。 - 注意:默认导出(
export default)的符号不能在此工具中移动。
环境构筑
面向用户(作为npm包装使用时)
mcp.json 中所述修改相应参数的值。npx 命令将自动使用已安装的最新版本。
{
"mcpServers": {
"mcp-tsmorph-refactor": { // 任意のサーバー名
"command": "npx",
"args": ["-y", "@sirosuzume/mcp-tsmorph-refactor"],
"env": {} // 必要に応じてロギング設定などを追加
}
}
}面向开发者(在本地开发、执行时)
在本地从源代码启动服务器时,首先需要构建。
# 依存関係のインストール (初回のみ)
pnpm install
# TypeScript コードのビルド
pnpm run build构建后mcp.json 设置为 node 中所述修改相应参数的值。
{
"mcpServers": {
"mcp-tsmorph-refactor-dev": { // 開発用など、別の名前を推奨
"command": "node",
// プロジェクトルートからの相対パスまたは絶対パス
"args": ["/path/to/your/local/repo/dist/index.js"],
"env": {
// 開発時のデバッグログ設定など
"LOG_LEVEL": "debug"
}
}
}
}记录设置(环境变量)
服务器行为日志可以通过以下环境变量控制输出级别和目标:。mcp.json 的,之 env 在块中设置。
LOG_LEVEL:设置日志详细程度。
- 可用级别: fatal, error, warn, info (默认), debug, trace, silent - 例: "LOG_LEVEL": "debug"
LOG_OUTPUT:指定日志的目标。
- console (默认):将日志输出到标准输出。开发环境(NODE_ENV !== 'production'),模板名称将采用不同的格式 pino-pretty 中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长。 - file:将日志输出到指定的文件。MCP 设置为避免影响客户端。 - 例: "LOG_OUTPUT": "file"
LOG_FILE_PATH:LOG_OUTPUT表示file中描述的场景,使用下列步骤创建明细表,以便在概念设计中分析体量的周长。
- 默认值: [プロジェクトルート]/app.log - 例: "LOG_FILE_PATH": "/var/log/mcp-tsmorph.log"
设定例(mcp.json 内):
// ... (mcp.json の他の設定)
"env": {
"LOG_LEVEL": "debug", // デバッグレベルのログを
"LOG_OUTPUT": "file", // ファイルに出力
"LOG_FILE_PATH": "/Users/yourname/logs/mcp-tsmorph.log" // ログファイルのパス指定
}
// ...开发人员信息
前提条件
- Node.js (版本为
.node-version在工作空间的边缘package.json的,之volta字段) - pnpm (版本为
package.json的,之packageManager字段)
安装,安装
克隆存储库并安装依赖关系。
git clone https://github.com/sirosuzume/mcp-tsmorph-refactor.git
cd mcp-tsmorph-refactor
pnpm install构建
TypeScript 编码JavaScript 中所述修改相应参数的值。
pnpm build构建交付件 dist 输出到目录。
测试
运行设备测试。
pnpm test选择和格式
静态分析和格式化代码。
# Lintチェック
pnpm lint
# Lint修正
pnpm lint:fix
# フォーマット
pnpm format使用调试包装器
在开发过程中MCP 要详细确认服务器的启动顺序、标准输入输出、错误输出时,请确认项目的 scripts 位于目录中 mcp_launcher.js 中所述修改相应参数的值。
这个包装脚本是本来的MCP 服务器进程(npx -y @sirosuzume/mcp-tsmorph-refactor)作为子进程启动,将启动信息和输出作为项目根目录的 .logs/mcp_launcher.log 打印文档。
使用方法:
mcp.json在工作空间的边缘mcp-tsmorph-refactor将服务器设置更改为:。
- command 打开 "node" 选项卡页面上创建或编辑条目。 - args 在工作空间的边缘scripts/mcp_launcher.js 的路径(例如: ["path/to/your_project_root/scripts/mcp_launcher.js"]),模板名称将采用不同的格式。项目根目录的相对路径(["scripts/mcp_launcher.js"]),模板名称将采用不同的格式。
设定例(mcp.json):
{
"mcpServers": {
"mcp-tsmorph-refactor": {
"command": "node",
// scripts/mcp_launcher.js へのパス (プロジェクトルートからの相対パス or 絶対パス)
"args": ["path/to/your_project_root/scripts/mcp_launcher.js"],
"env": {
// 元の環境変数設定はそのまま活かせます
// 例:
// "LOG_LEVEL": "trace",
// "LOG_OUTPUT": "file",
// "LOG_FILE_PATH": ".logs/mcp-ts-morph.log"
}
}
// ... 他のサーバー設定 ...
}
}- MCP 客户端(例如:Cursor) 重新启动或重新加载。
- 项目根目录
.logs/mcp_launcher.log中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
此外MCP 如果还设置了服务器本身的日志(例如: .logs/mcp-ts-morph.log)进行确认。
通过使用该包装器MCP 有助于查明服务器未按预期启动的原因。
npm 发布到
此软件包包括:GitHub Actions 工作流(.github/workflows/release.yml)来定义自定义外观npm 中所述修改相应参数的值。
前提条件
- NPM 标记:具有公开权限npm 访问令牌是存储库的Actions secrets (
Settings>Secrets and variables>Actions)NPM_TOKEN中所述修改相应参数的值。 - 版本更新:发布前
package.json的,之version根据“语义版本化”更新字段。
公开方法
单击功能区上的Git 使用推送标记。
方法:Git 推送标签(发布时推荐)
- 预期用途: 常规版本发布(主要版本、次要版本和修补程序)。Git 中描述的场景,使用以下步骤创建明细表,以便在概念设计中分析体量的体积。
- 版本更新:
package.json的,之version(例如:0.3.0)。 - 提交和推送:
package.json提交更改,然后单击main 推到分支。 - 标记创建和推送:匹配版本Git 标记为
v创建并推送前缀)。
git tag v0.3.0
git push origin v0.3.0- 自动化:推送标记时
Release Package工作流被触发,包构建、测试和npm 进行动态观察时的轴心点。 - 确认:Actions 单击功能区上的npmjs.com 查看项目中可用的所有族。
注意事项
- 版本一致性:如果通过标记推送触发,则标记名称(例如:
v0.3.0)表示package.json的,之version(例:0.3.0)和必须完全一致。如果不匹配,工作流将失败。 - 预先检查:CI 工作流包括构建和测试步骤,但为了尽早发现潜在问题,在更新版本之前在本地
pnpm run build打开pnpm run test中所述修改相应参数的值。
许可证
这个项目MIT 在许可证下公开。了解更多信息 许可证 请看文件。
