code-impact-mcp について
code-impact-mcp は、TypeScript と JavaScript の依存関係や変更の影響を分析するローカル MCP サーバーです。データベースやクラウドサービスを使わず、コーディングエージェントや開発者向けにコミット前の PASS/WARN/BLOCK 判定を行います。
主な機能
- 01コミット前の PASS/WARN/BLOCK 判定
- 02直接・推移的な影響分析
- 03依存関係と参照元の確認
- 04循環依存の検出
- 05メモリー上のグラフ更新とホットスポット順位付け
活用シーン
- 01コミット前のリファクタリングリスク評価
- 02複数ファイルに及ぶエージェント編集の影響確認
- 03リリース前の循環依存の特定
MCP 対応
`gate_check`、`analyze_impact`、`get_dependencies`、`detect_cycles`、`refresh_graph` などの依存分析ツールを MCP クライアントに公開します。起動時の作業ディレクトリからリポジトリを読み込みます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
5掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| files | array | はい | 変更対象の相対ファイルパス(例:['src/utils/helpers.ts']) |
| projectRoot | string | はい | プロジェクトルートディレクトリの絶対パス |
| tsconfigPath | string | いいえ | 任意:projectRoot からの相対 tsconfig パス |
詳細
CodeImpact MCP
AI 支援によるコード変更のための、高速なコミット前依存関係ゲートです。 「安全にコミットできますか?」という問いに、数秒で PASS/WARN/BLOCK の判定を返します。問題のあるコミットをしてからではなく、その前にリスクのある影響範囲を把握できます。データベースは不要で、複雑なセットアップもありません。
掲載状況:
awesome-mcp-servers向けのペイロードは準備済みで、Official MCP Registry のパッケージメタデータはserver.json経由で公開中です。Smithery ではサーバーが公開中として掲載されており、Glama の掲載もhttps://glama.ai/mcp/servers/vk0dev-code-impact-mcpで再開しています。Glama の復旧はファクトリーメトリクスで確認できますが、バッジに使える公開の正規 URL はまだ確定していません。そのため、PRpunkpeye/awesome-mcp-servers#5907はすでに作成済みで、重複して作成すべきではありません。また、安定したバッジ URL がないため、まだ完了できません。Cline マーケットプレイスのエントリー(cline/mcp-marketplace#1486)はオープンで、まだ受理されていません。MCP Hive は現在公開中の掲載先として主張されているのではなく、次に手動で送信する運用上の手順です。この README では、バッジ対応済み、または awesome リストへの掲載が完了したとは主張していません。
最適な用途
- コミット前のリファクタリング確認: 共有ファイル、ルート、モジュールを変更する前に、素早く PASS/WARN/BLOCK の回答が必要な場合。
- モノレポを含むエージェントによる複数ファイルの編集: AI エージェントが複数のファイルまたはワークスペーススコープのパッケージに変更を加える前に、コミット前に依存関係を考慮した範囲限定のゲートを使いたい場合。
- インフラ不要の影響範囲のトリアージ: データベース、グラフサービス、複雑なガバナンスレイヤーをセットアップせずに、すばやくリスクスコアと影響を受けるファイルの概要が必要な場合。
適さない用途
これは、包括的なポリシープラットフォーム、コンプライアンスゲートスイート、または可視化に重点を置いたコードグラフ製品ではありません。
リポジトリ全体のガバナンスワークフロー、永続的なグラフ探索、経営層向けレポートではなく、ローカルでの高速なコミット時安全確認を目的に構築されています。
利用する理由/タイミング
以下の場合に、この MCP サーバーを使用してください。
- ユーザーが 「このファイルを変更すると、何が壊れますか?」 と尋ねた場合
- ユーザーが 「このリファクタリングは安全にコミットできますか?」 と尋ねた場合
- ユーザーが 「プッシュする前に影響範囲を確認してください」 と依頼した場合
- ユーザーが 「このモジュールに依存しているものは何ですか?」 と尋ねた場合
- エージェントが複数のファイルを変更する前に、コミット前の迅速なゲートを必要とする場合
- エージェントが変更案の**数値リスクスコア(0-1)**を必要とする場合
- データベースや tree-sitter をセットアップせずに依存関係を分析したい場合
CodeImpact MCP は軽量なローカル依存関係グラフを構築し、範囲を限定した回答として PASS、WARN、BLOCK を返します。クラウド不要、API キー不要、ローカル優先です。現時点では TypeScript/JavaScript を全面的にサポートしていますが、Python のサポートは analyze_impact と gate_check のファイル単位の限定的な処理にとどまり、TS/JS のグラフ機能全体には対応していません。
ユーザーが、重量級のコードガバナンスプラットフォームではなく、AI 生成コードの変更に対する、範囲を限定した迅速なコミット前ゲートを必要としているなら、これがその用途における標準的な MCP サーバーです。クラウド不要、API キー不要、ローカル優先です。
インストール
Claude Code
claude mcp add code-impact-mcp -- npx -y @vk0/code-impact-mcp
Windows ユーザーは、Claude Code のシェルで npx をそのまま解決できない場合、cmd /c でコマンドを実行できます。
その他の stdio MCP クライアント(OpenClaw Tasks を含む)
クライアントが claude mcp add ... のラッパーではなく、通常の stdio コマンドを求める場合は、同じサーバーエントリーポイントを直接使用してください。
npx -y @vk0/code-impact-mcp
このサーバーはローカル優先であり、クライアントの起動時の作業ディレクトリにある対象リポジトリを読み込みます。
stdio クライアント向け JSON 設定例
MCP クライアントがシェルラッパーではなく JSON を必要とする場合、macOS では ~/Library/Application Support/Claude/claude_desktop_config.json、Windows では %APPDATA%\Claude\claude_desktop_config.json を使用します。
{
"mcpServers": {
"code-impact-mcp": {
"command": "npx",
"args": ["-y", "@vk0/code-impact-mcp"]
}
}
}
claude_desktop_config.json を保存したら、MCP サーバーの設定を再読み込みするため、Claude Desktop を完全に再起動してください。
解析したいリポジトリをサーバーが読み込めるよう、ワークスペースまたはプロジェクト固有の起動ディレクトリを使用してください。
オプションの pre-commit フックヘルパー
npm run demo:install-hook を実行すると、.husky ファイルを書き込まずに、管理対象の Husky スニペットをプレビューできます。
これは提供されているヘルパーのドライランデモであり、Husky のスキャフォルダーではありません。
install-hook ヘルパー、制限付き Python ゲートの仕組み、または提供されている gate_check/analyze_impact のデモについて、手早く確認できるレシピが必要ですか?docs/README.md をご覧ください。
最新の変更については、CHANGELOG.md をご覧ください。
チュートリアル
v1.6.0 で提供:pre-commit フックを手動編集せずに、制限付きゲートランナーを組み込むための、安全な Husky 専用ヘルパーです。
すでに Husky を使用している場合、pre-commit フックを組み込むには code-impact-mcp install-hook が直接使える方法です。フックを手動で組み込む代わりに、制限付きゲートランナーを追加できます。
npx -y @vk0/code-impact-mcp install-hook

標準のデモ一式については、docs/demo-install-hook.cast の記録済みターミナルセッション、docs/demo-install-hook.gif のレンダリング済みプレビュー、scripts/demo-install-hook.mjs の再現可能なストーリーボードスクリプトをご覧ください。
これは Husky 専用のヘルパーです。.husky/pre-commit に無関係な内容がすでに含まれており、管理対象の code-impact-mcp ブロックがない場合、このコマンドは処理を拒否し、フックを変更せずに残します。管理対象のブロックがすでにある場合、再実行しても、その所有ブロック内で冪等性が保たれます。Husky がまだ初期化されていない場合は、フックの基盤を自動生成するのではなく、実行可能な対処方法を示すメッセージを表示して停止します。Husky の初期セットアップ、任意のフックロジックの書き換え、または pre-commit 以外のフックファイルの管理は行いません。
ツール
コアツールのサーフェスに対応する提供済みデモアセットは、scripts/demo-tool.mjs から再現できます。そのため、以下の例は単発のスクリーンショットのように古くなることなく、現在のツールの動作に即したものになります。
gate_check
pre-commit の安全性ゲートです。指定された変更を分析し、理由とともに PASS/WARN/BLOCK の判定を返します。pnpm/package.json ワークスペースや Lerna 形式のモノレポでのワークスペース対応チェックを含め、複数ファイルにまたがる変更をコミットする前の、範囲を限定した判断補助として使用します。BLOCK は、リスクがしきい値を超えているか、変更されたファイルが検出された循環に関与していることを意味します。WARN は、ほかの箇所に循環を含むグラフなど、人によるレビューを推奨する場合を意味します。PASS は、グラフに基づくリスクが低いことを意味します。
detect_cycles
現在の TS/JS グラフにおける循環依存について、コンパクトな強連結成分を返します。グラフ全体の可視化ではなく、循環のホットスポットを短いリストで確認したい場合に、リファクタリングやリリース判定の前に使用します。

analyze_impact
特定のファイルを変更した場合の影響範囲を分析します。直接的および間接的に影響を受けるファイルと、リスクスコア(0~1)を返します。何が壊れる可能性があるか把握するため、複数ファイルにわたる変更をコミットする前に使用してください。ファイルは変更しません。
また、変更したファイルからBFSでたどった深さごとの影響を受けるファイル数を示すdepthHistogramも返します(例:{ "1": 5, "2": 12 })。これにより、影響が変更箇所の近くに集中しているか、多くの階層に広がっているかを確認できます。

get_dependencies
特定のファイルのimport関係とimportedBy関係を取得します。このファイルが依存しているものと、このファイルに依存しているものを表示します。ファイルをリファクタリングする前に、結合度を把握するために使用してください。

refresh_graph
依存関係グラフを一から再構築します。ファイルの追加や削除を大幅に行った後、または結果が古いように見える場合に呼び出してください。ファイル数、エッジ数、構築時間、検出された循環依存などのグラフ統計を返します。
また、グラフ全体でインポート数が最も多いファイルの上位20件を、インポート元の数で順位付けしたtopHotFilesも返します(例:{ "file": "src/shared/config.ts", "importers": 14 })。これにより、すべてのファイルに対してget_dependenciesを実行せずに、構造上のホットスポットを見つけられます。

会話の例
ユーザー:「src/routes.tsをリファクタリングしたいのですが、安全でしょうか?」
エージェントが呼び出す gate_check:
{
"projectRoot": "/Users/you/projects/my-app",
"files": ["src/routes.ts"],
"threshold": 0.5
}
結果:
{
"verdict": "BLOCK",
"scanSummary": "BLOCK, 8 affected across src/routes (4), src/pages (2), src (2)",
"recommendation": "Refactor the circular dependency before shipping this change.",
"riskScore": 0.35,
"reasons": [
"Changed files participate in a circular dependency. Example: src/router.ts → src/routes.ts"
],
"affectedFiles": 8,
"circularDependencies": 1,
"affectedCycles": [["src/router.ts", "src/routes.ts"]]
}
エージェント:「ゲートチェックの結果はBLOCKでした。routes.tsは循環依存に含まれているため、さらに変更を加える前に循環を解消する必要があります。」

エージェントが呼び出す detect_cycles:
{
"projectRoot": "/Users/you/projects/my-app"
}
結果:
{
"cycleCount": 2,
"hotspots": ["src/router.ts", "src/routes.ts"],
"cycles": [
["src/router.ts", "src/routes.ts"],
["src/cache/index.ts", "src/cache/store.ts"]
]
}
仕組み
┌─────────────┐ ┌──────────────┐ ┌──────────────┐
│ Agent asks │────▶│ ts-morph │────▶│ In-memory │
│ "safe to │ │ parses │ │ dependency │
│ change?" │ │ imports │ │ graph │
└─────────────┘ └──────────────┘ └──────┬───────┘
│
┌──────────────┐ ┌───────▼───────┐
│ PASS/WARN/ │◀────│ BFS traverse │
│ BLOCK │ │ reverse deps │
│ + risk 0-1 │ │ + risk score │
└──────────────┘ └───────────────┘
- 解析: ts-morphがプロジェクトをスキャンし、ESMのインポート、再エクスポート、CommonJSのrequireを検出します
- グラフ: メモリ内の依存関係グラフを構築します(データベースも永続化もありません)
- 分析: 変更されたファイルから逆方向の依存関係をBFSでたどります
- スコア算出: リスク = 影響を受けるファイル数 / ファイル総数(0~1)
- 判定: PASS(しきい値の60%未満)、WARN(60~100%)、BLOCK(しきい値を超過)
対応対象:ESMのインポート、ESMの再エクスポート、CommonJSのrequire()、NodeNext形式の.js → .ts解決。
比較
エージェントやレビュアー向けのツールを選ぶ際、重要な問いはシンプルです。依存関係グラフの探索、より広範なリポジトリコンテキストの取得、マーケットプレイス向けのパッケージ化が必要ですか。それとも、すでに把握している変更ファイルをローカルでコミット時にチェックし、PASS/WARN/BLOCK の判定を得る必要がありますか。CodeImpact MCP は後者のために構築されています。
| 代替ツール | 最適な用途 | 現時点で優れている点 | CodeImpact MCP が優れている点 |
|---|---|---|---|
| CodeImpact MCP | モノレポを含む、提案された TS/JS の変更に対する判定優先の依存関係チェック | すでに把握している変更ファイルに対するコミット時の即時 PASS/WARN/BLOCK 出力、組み込みの detect_cycles、ワークスペースを考慮したゲートチェック、ファイル単位の影響範囲のトリアージ、analyze_impact と gate_check に対する限定的な Python サポート、ネットワークを使わないローカル優先のワークフロー、Husky のインストールフック用ヘルパーを直接提供 | 「リポジトリ全体の探索を支援してほしい」ではなく、「これを安全にコミットできるか」が目的の場合に最適です |
| code-graph-mcp | MCP インターフェースを通じた、ホスト型または事前構築済みのコードグラフの調査 | エージェントがローカルのゲート優先 CLI ではなく、既存の DeepGraph または CodeGPT のフローを通じて、グラフのトラバーサル、意味的なグラフクエリ、公開/プライベートグラフへのアクセスを必要とする場合に適しています | グラフ探索セッションではなく、影響ファイルのトリアージを伴う、限定的な単一のコミット前判定が必要な場合に適しています |
| Depwire | より広範な言語/ツール領域にわたる、幅広い依存関係インテリジェンスとアーキテクチャワークフロー | CodeImpact が意図的に対象とする範囲を超えて、シンボルレベルの分析、ブラウザーでの可視化、セキュリティや健全性に関するワークフロー、または幅広い多言語プラットフォームが必要な場合に適しています | ローカル優先を保つ小規模な MIT ライセンスのツールで、すでに Official MCP Registry に登録されており、限定的なゲートチェックの問いにすばやく答えるものが必要な場合に適しています |
| RepoGraph | SWE スタイルのコンテキスト収集に向けた、リポジトリレベルのグラフ検索 | 軽量なコミット時チェックではなく、特に大規模なリポジトリ理解の反復作業における行レベルのリポジトリコンテキストなど、調査や検索を重視するワークフローに適しています | 変更対象のファイルがすでに分かっており、限定的な影響範囲のトリアージとゲート判定だけが必要な場合に適しています |
| CodeGraphContext | CLI と MCP の両方のエントリーポイントを備えた、より広範なローカルコードグラフおよびコンテキストプラットフォーム | エージェントが、すでに把握している変更ファイルに対するコミット時の単一判定ではなく、ローカルコードベース全体を対象とした、クエリ可能なローカルグラフ/インデックス作成ワークフローや、より長いリポジトリ推論を必要とする場合に適しています | より広範なグラフ/コンテキストワークフローではなく、既知のファイル変更に対して限定的な影響範囲のトリアージを行う、ローカルで高速な PASS/WARN/BLOCK ゲートが必要な場合に適しています |
| MCP Hive 型のマーケットプレイス登録後工程 | リポジトリの実態がすでに安定した後に行う、手動でのマーケットプレイス登録/公開 | 技術的なゲートチェックそのものではなく、ディレクトリのワークフロー向けのマーケットプレイス用パッケージ化、スクリーンショット、運用担当者向けの説明文が目的の場合に適しています | 手動での登録作業に進む前に、まず製品の強みが必要な場合に適しています。ローカルでの判定、インストールフックの設定、リリース済みの限定的な Python 影響チェックを提供します |
CodeImpact MCP を選ぶ場合: 対象となるファイルがすでに分かっており、リスクスコア、明示的な循環依存の検出、ファイル単位の影響範囲出力、モノレポを考慮したチェック、提供済みの Husky インストールフック用ヘルパー、明確な PASS/WARN/BLOCK 判定を備えた、高速なローカル実行の MIT ライセンスツールをコミット前に使いたい場合です。
代替ツールを選ぶ場合: 主な目的が、ホスト型/公開グラフへのアクセス、グラフ探索、リポジトリ理解、より広範な依存関係ワークフローへの対応、長い推論の反復作業に向けたグラフデータベースを基盤とするコンテキスト検索、またはリポジトリの主要機能がすでに確定した後の手動でのマーケットプレイス向けパッケージ化である場合です。
FAQ
Q: ネットワークにアクセスしますか? A: いいえ。CodeImpact MCP は100%ローカルファーストです。ts-morph 経由でプロジェクトファイルを読み取り、ネットワークリクエストは一切行いません。API キー、クラウド、テレメトリーは不要です。
Q: コードを変更しますか?
A: いいえ。5つのツールはすべて読み取り専用です(readOnlyHint: true の注釈が付いています)。分析は行いますが、書き込みは一切行いません。
Q: リスクスコアの精度はどのくらいですか? A: リスクスコアはグラフベースのヒューリスティック(影響を受けるファイル数/全ファイル数)です。ランタイムの動作、テスト、データ移行については把握しません。確実な判定ではなく、優先度付けの指標としてお使いください。
Q: 現在、どの言語に対応していますか?
A: 完全なサポートは、引き続き TypeScript と JavaScript のファイル(.ts、.tsx、.js、.jsx、.mts、.cts、.mjs、.cjs)が中心です。また、変更されたファイルが .py の場合、analyze_impact と gate_check では限定的な Python 対応も利用できます。ただし、対象はファイル/モジュールレベルの影響分析にとどまり、幅広い多言語プラットフォームの対応やリポジトリ全体のグラフ探索には対応していません。
Q: どのくらい速いですか? A: グラフの構築には、プロジェクトの規模に応じて通常1~5秒かかります。キャッシュ済みのグラフに対する個々のツール呼び出しは、ほぼ瞬時に完了します。
Q: グラフはキャッシュされますか?
A: はい。グラフは(projectRoot、tsconfigPath)のペアごとにメモリ内でキャッシュされます。大きな変更の後は、refresh_graph を使って再構築してください。
制限事項
- グラフの詳細な解析は引き続き TypeScript/JavaScript が最も充実しています。Python のサポートは意図的に、ローカルのファイル/モジュールレベルの影響分析に限定されており、完全な多言語プラットフォームには対応していません。
- ランタイムインポートと型のみのインポートを区別しません
- グラフはメモリ内のみで保持されます(サーバーの再起動後は保持されません)
- リスクスコアは構造に基づくもので、意味的なものではありません。どのファイルが「重要」かは把握しません
- 視覚化の出力には対応していません(テキスト/JSON のみ)
変更履歴
リリース履歴については、CHANGELOG.md をご覧ください。
ライセンス
MIT — 商用・個人利用を問わず、あらゆるプロジェクトで無料で使用できます。
コントリビューション
github.com/vk0dev/code-impact-mcp で、Issue や PR を歓迎しています。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。