Skip to main content
Glama

MCP ts-morph Refactoring Tools

by SiroSuzume
CLAUDE.md4.32 kB
# CLAUDE.md This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. ## 概要 MCP ts-morph Refactoring Tools - ts-morphを利用したTypeScript/JavaScriptのリファクタリングツールを提供するMCPサーバー。 ## 開発コマンド ### ビルド ```bash pnpm build # TypeScriptをコンパイル(dist/に出力) pnpm clean # distディレクトリをクリーン ``` ### テスト ```bash pnpm test # テスト実行(単一スレッドで実行) pnpm test:watch # ウォッチモードでテスト実行 pnpm test -- path/to/test.ts # 特定のテストファイルを実行 ``` ### 型チェック・リント・フォーマット ```bash pnpm check-types # TypeScriptの型チェック(コンパイルなし) pnpm lint # Biomeでリントチェック pnpm lint:fix # Biomeでリント修正 pnpm format # Biomeでコードフォーマット ``` ### デバッグ ```bash pnpm inspector # MCP Inspectorでデバッグ実行 ``` ## プロジェクト構造 ### コアアーキテクチャ 1. **エントリーポイント**: `src/index.ts` - MCPサーバーのエントリーポイント - STDIOサーバーを起動 2. **MCPレイヤー** (`src/mcp/`) - `stdio.ts`: STDIOサーバーの実装 - `config.ts`: サーバー設定 - `tools/`: MCPツールの登録と実装 - 各ツールは`register-*.ts`として実装 - `ts-morph-tools.ts`で全ツールを統合 3. **ts-morphレイヤー** (`src/ts-morph/`) - 実際のリファクタリング処理を実装 - 各機能は独立したモジュールとして実装: - `rename-file-system/`: ファイル/フォルダのリネーム - `remove-path-alias/`: パスエイリアスの削除 - `find-references.ts`: 参照検索 - `move-symbol-to-file/`: シンボルのファイル間移動 - `rename-symbol/`: シンボル名の変更 - `_utils/`: 共通ユーティリティ - `ts-morph-project.ts`: プロジェクト作成の共通処理 4. **ユーティリティ** (`src/utils/`) - `logger.ts`: Pinoベースのロガー実装 - その他の共通ユーティリティ 5. **エラー処理** (`src/errors/`) - カスタムエラークラスの定義 ### テスト構造 - 各機能モジュールには対応する`.test.ts`ファイルが存在 - テストフレームワーク: Vitest - テストサンドボックス: `packages/sandbox/`にテスト用のTypeScriptコード ## 重要な実装パターン ### ts-morphプロジェクトの作成 ```typescript // src/ts-morph/_utils/ts-morph-project.ts を使用 import { createTsMorphProject } from "../_utils/ts-morph-project"; const project = createTsMorphProject(tsconfigPath); ``` ### MCPツールの登録 各ツールは以下のパターンで実装: 1. Zodスキーマでパラメータ定義 2. ツール実装関数(ts-morphレイヤーを呼び出し) 3. `server.setRequestHandler`で登録 ### エラーハンドリング - カスタムエラークラスを使用 - ロガーでエラー内容を記録 - MCPエラーレスポンスとして返却 ## 開発時の注意事項 ### 依存関係 - Node.js v20.19.0(Voltaで管理) - pnpm v10.10.0(packageManagerで指定) ### Git Hooks(lefthook) - pre-commit: Biomeでフォーマット自動実行 - pre-push: フォーマットチェックとテスト実行 ### ロギング 環境変数で制御可能: - `LOG_LEVEL`: ログレベル(debug, info, warn, error等) - `LOG_OUTPUT`: 出力先(console, file) - `LOG_FILE_PATH`: ファイル出力時のパス ### テスト実行の詳細 - 単一スレッドで実行(`--pool threads --poolOptions.threads.singleThread`) - モックは各テスト後に自動リセット - 環境変数`API_ADDRESS`がテスト時に設定される ## 主要な機能と実装ファイル - **シンボル名変更**: `src/ts-morph/rename-symbol/` - **ファイル/フォルダ名変更**: `src/ts-morph/rename-file-system/` - **参照検索**: `src/ts-morph/find-references.ts` - **パスエイリアス削除**: `src/ts-morph/remove-path-alias/` - **シンボル移動**: `src/ts-morph/move-symbol-to-file/` 各機能の詳細な仕様はREADME.mdを参照。

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/SiroSuzume/mcp-ts-morph'

If you have feedback or need assistance with the MCP directory API, please join our Discord server