Инструменты рефакторинга MCP ts-morph
обзор
Этот сервер MCP использует ts-morph для выполнения операций рефакторинга для кодовых баз TypeScript и JavaScript. Он работает с расширениями редактора, такими как Cursor, позволяя переименовывать символы на основе AST, переименовывать файлы/папки и находить ссылки.
Предоставленные функции
Этот сервер MCP предоставляет следующие функции рефакторинга: каждая функция использует ts-morph
для анализа AST и внесения изменений, сохраняя при этом согласованность во всем проекте.
Переименование символов ( rename_symbol_by_tsmorph
)
- Что он делает : глобально переименовывает символ (функцию, переменную, класс, интерфейс и т. д.) в определенной позиции указанного файла во всем проекте.
- Вариант использования : Вы хотите изменить имя функции или переменной, но на нее существует много ссылок, и изменить ее вручную будет сложно.
- Требуемая информация : путь к проекту
tsconfig.json
, путь к целевому файлу, положение символа (строка и столбец), текущее имя символа, новое имя символа
Переименование файла/папки ( rename_filesystem_entry_by_tsmorph
)
- Функция : переименовывает несколько указанных файлов и/или папок и автоматически обновляет пути во всех операторах
import
/export
в проекте. - Вариант использования : вы меняете структуру файла и хотите соответствующим образом изменить пути импорта. Если вы хотите переименовать/переместить несколько файлов/папок одновременно.
- Требуемая информация : путь к
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
)
- Функция : Заменяет псевдонимы путей (например,
@/components
) в операторахimport
/export
в указанном файле или каталоге на относительные пути (например,../../components
). - Вариант использования : Вы хотите сделать свой проект более портативным или соответствовать определенным стандартам кодирования.
- Требуемая информация :
tsconfig.json
путь к проекту, путь к файлу или каталогу для обработки.
Перемещение символов между файлами ( move_symbol_to_file_by_tsmorph
)
- Функция : Перемещает указанный символ (функцию, переменную, класс, интерфейс, псевдоним типа, перечисление) из текущего файла в другой указанный файл. Автоматически обновляйте ссылки по всему проекту (включая пути импорта/экспорта) по мере продвижения.
- Вариант использования : вы хотите извлечь определенную функциональность в отдельный файл, чтобы реорганизовать свой код.
- Требуемая информация : путь к
tsconfig.json
проекта, путь к исходному файлу, путь к целевому файлу, имя перемещаемого символа. При желании можно указать тип символа (declarationKindString
), чтобы устранить неоднозначность символов с одинаковыми именами. - Примечание : внутренние зависимости символа (другие объявления, используемые только внутри этого символа) перемещаются вместе с ним. Зависимости, на которые также ссылаются другие символы, оставшиеся в исходном файле, останутся в исходном файле, а
export
будут добавлены по мере необходимости и импортированы в целевой файл. - Примечание : символы, экспортированные
export default
нельзя перемещать с помощью этого инструмента.
окружающая среда строительство
Для пользователей (при использовании как пакета npm)
Добавьте следующие настройки в mcp.json
. При использовании команды npx
будет автоматически использоваться последняя установленная вами версия.
Для разработчиков (для локальной разработки и исполнения)
Если вы хотите запустить сервер локально из исходного кода, вам необходимо сначала его собрать.
После сборки вы можете запустить его непосредственно в node
, установив следующее в mcp.json
:
Настройки ведения журнала (переменные среды)
Уровень выходных данных и место назначения журнала операций сервера можно контролировать с помощью следующих переменных среды. Установите его в блоке env
mcp.json
.
LOG_LEVEL
: Устанавливает уровень детализации журнала.- Доступные уровни:
fatal
,error
,warn
,info
(по умолчанию),debug
,trace
,silent
- Пример:
"LOG_LEVEL": "debug"
- Доступные уровни:
LOG_OUTPUT
: указывает место назначения вывода журнала.console
(по умолчанию): выводит журнал на стандартный вывод. Если вы находитесь в среде разработки (NODE_ENV !== 'production'
) и у вас установленpino-pretty
, вывод будет в формате pretty.file
: Выводит журнал в указанный файл. Установите этот параметр, чтобы избежать влияния на клиентов MCP.- Пример:
"LOG_OUTPUT": "file"
LOG_FILE_PATH
: если дляLOG_OUTPUT
задано значениеfile
, это указывает абсолютный путь к файлу журнала.- По умолчанию:
[プロジェクトルート]/app.log
- Пример:
"LOG_FILE_PATH": "/var/log/mcp-tsmorph.log"
- По умолчанию:
Пример конфигурации (в mcp.json
):
Информация для разработчиков
Предпосылки
- Node.js (версию см. в
.node-version
илиvolta
вpackage.json
) - pnpm (версию см. в поле
packageManager
вpackage.json
)
настраивать
Клонируйте репозиторий и установите зависимости:
Строить
Компилирует код TypeScript в JavaScript.
Артефакты сборки выводятся в каталог dist
.
тест
Запустите модульные тесты.
Линтинг и форматирование
Он статически анализирует и форматирует ваш код.
Использование отладочной оболочки
Если вы хотите подробно проверить последовательность запуска, стандартный ввод/вывод и вывод ошибок сервера MCP во время разработки, вы можете использовать mcp_launcher.js
, который находится в каталоге scripts
проекта.
Этот скрипт-оболочка запускает исходный процесс сервера 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
): - Установите
- Перезапустите или перезагрузите клиент MCP (например, Cursor).
- Убедитесь, что журнал выводится в
.logs/mcp_launcher.log
в корне проекта. Вы также можете проверить журнал самого сервера MCP, если он настроен (например,.logs/mcp-ts-morph.log
).
Использование этой оболочки может помочь вам диагностировать, почему ваш сервер MCP не запускается должным образом.
Публикация в npm
Этот пакет будет автоматически опубликован в npm через рабочий процесс GitHub Actions ( .github/workflows/release.yml
).
Предпосылки
- Токен NPM: убедитесь, что у вас есть токен доступа npm с публичными разрешениями, установленными в секретах действий вашего репозитория (
Settings
>Secrets and variables
>Actions
) с именемNPM_TOKEN
. - Обновите версию: перед публикацией обновите поле
version
вpackage.json
в соответствии с семантическим версионированием (SemVer).
Как опубликовать
Чтобы запустить рабочий процесс релиза, используйте отправку тега Git.
Как: отправить тег Git (рекомендуется для релизов)
- Предполагаемое использование: Регулярные выпуски версий (основные, второстепенные, исправленные). Git — рекомендуемый стандартный процесс выпуска, поскольку он обеспечивает четкое соответствие между историей и версиями.
- Обновить версию: Измените
version
вpackage.json
(например,0.3.0
). - Зафиксировать и отправить: зафиксировать изменения в
package.json
и отправить их в основную ветку. - Создать тег и отправить: создает тег Git (с префиксом
v
), соответствующий версии, и отправляет его. - Автоматизация: отправка тега запускает рабочий процесс
Release Package
, который собирает, тестирует и публикует пакет в npm. - Проверка: проверьте вкладку «Действия» для определения статуса рабочего процесса и проверьте пакет на npmjs.com.
Меры предосторожности
- Согласованность версий: при запуске push-уведомления тега имя тега (например,
v0.3.0
) должно точно соответствоватьversion
вpackage.json
(например,0.3.0
). Если совпадений нет, рабочий процесс завершится неудачей. - Предварительная проверка: хотя ваш рабочий процесс CI включает этапы сборки и тестирования, мы рекомендуем запускать
pnpm run build
иpnpm run test
локально перед обновлением версии, чтобы выявить потенциальные проблемы на ранней стадии.
лицензия
Данный проект выпущен под лицензией MIT. Подробную информацию смотрите в файле ЛИЦЕНЗИЯ .
local-only server
The server can only run on the client's local machine because it depends on local resources.
Tools
Обеспечивает операции рефакторинга кода TypeScript и JavaScript с использованием ts-morph, позволяя переименовывать символы на основе AST, переименовывать файлы/папки, искать ссылки и удалять псевдонимы путей при интеграции с расширениями редактора, такими как Cursor.
- обзор
- Предоставленные функции
- окружающая среда строительство
- Информация для разработчиков
- Публикация в npm
- лицензия
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityTypeScript-based MCP server designed to enhance code editing experiences by providing features such as hover information, code completion, and diagnostics.Last updated -313MIT License
- AsecurityAlicenseAqualityA TypeScript MCP server port of Anthropic's filesystem editing tools, allowing file manipulation via client-approved operations without automated writes to prevent system harm.Last updated -55TypeScriptMIT License
- -securityAlicense-qualityA TypeScript-based MCP server that provides tools for making precise line-based edits to text files within allowed directories.Last updated -18TypeScriptMIT License
- AsecurityFlicenseAqualityA TypeScript-based server that visualizes project directory structures in Markdown format, automatically documenting file contents with syntax highlighting and supporting customizable exclusion patterns.Last updated -132TypeScript