mcpField
R
repograph

repograph

ローカル
github.com/Karry1123開発ツール15 日前に更新

repograph について

RepoGraphは、開発者やClaude向けのローカルコード構造分析ツールです。ディレクトリのクラスタリングやレイヤー推定、ユーティリティの折りたたみを備えた依存関係マップを生成し、CLIとMCPツールから変更影響を追跡できます。

主な機能

  1. 01インタラクティブな構造マップ生成
  2. 02ローカルなインポート関係の分析
  3. 03ディレクトリとレイヤー別の分類
  4. 04ユーティリティの折りたたみ
  5. 05直接・推移的な呼び出し元の追跡
  6. 06SVG、JSON、Mermaidへの出力

活用シーン

  1. 01リファクタリング前の構造確認
  2. 02ファイル変更・削除前の影響評価
  3. 03チーム向け構造マップの作成
  4. 04Claudeによる依存関係の調査

MCP 対応

コードグラフのスキャン、インタラクティブなHTML構造マップの生成、ファイル変更の影響調査を行う3つのMCPツールを提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"karry1123-repograph": {
"command": "npx",
"args": [
"-y",
"repograph-cli"
]
}
}
}
起動コマンドnpx -y repograph-cli

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmrepograph-cli0.1.1

ツール

3

掲載時のツール一覧 · 5 日前に更新

パラメーター型必須説明
pathstringはい
maxDepthintegerいいえ
collapseUtilsbooleanいいえ

詳細

RepoGraph

2 秒で、あらゆるコードベースをインタラクティブなアーキテクチャマップに変換します。サーバー不要でプライバシーを完全に保護し、Claude と Claude Code 向けに設計されています。

RepoGraph のデモ:ファイルをクリックすると影響範囲が表示され、ディレクトリをダブルクリックすると折りたたまれます

npm version MIT license Node >=18 Languages

👉 インタラクティブなライブデモを試す(zustand のアーキテクチャを、1 つのコマンドで生成)

コードを変更する前に、重要なファイルを見つけましょう。RepoGraph はローカルのインポートをスキャンし、ソースファイルをディレクトリと推定されるアーキテクチャレイヤーごとにまとめ、インタラクティブな HTML マップを生成します。ディレクトリのクラスタリングとユーティリティの折りたたみにより、共有ヘルパーによってビューがスパイダーウェブのようになるのを防ぎます。3 つの MCP ツールを使って、Claude にアーキテクチャを調べさせ、変更案の影響を追跡させることができます。

「2 秒」はクイックスタートでの体験を示すもので、測定済みのパフォーマンスを保証するものではありません。スキャン時間と HTML のサイズはリポジトリによって異なります。小規模なマップなら約 40 KB です。アカウント、サーバー、設定ファイルは必要ありません。

クイックスタート

npx repograph-cli .

表示された file:///.../repograph.html のリンクを開きます。ファイルをクリックすると、呼び出し元がシアン色で、依存先が赤色で表示されます。ディレクトリのボックスをダブルクリックすると、折りたたみまたは展開できます。f を押すと、グラフがビューポートに収まるように調整されます。検索ではファイルパス全体の部分文字列に一致し、ミニマップを使うと大きなグラフ内を移動できます。

Node.js 18 以降が必要です。スキャンはお使いのマシン上で行われます。HTML にはファイルパスとグラフデータが埋め込まれるため、共有する際はリポジトリ情報として取り扱ってください。インタラクティブマップを開くと、固定された Cytoscape/レイアウト用スクリプトが公開 CDN からダウンロードされます。RepoGraph がソースコードやグラフデータを送信することはありません。初回に開く際は CDN スクリプトにアクセスできる必要があります。SVG、JSON、Mermaid のエクスポートにはブラウザーの CDN スクリプトは必要ありません。

CLI リファレンス

repograph [path] [options]
repograph mcp

Options:
  -o, --output <file>       Write to a file
  --theme <theme>           dark | light | matrix (default: dark)
  --max-depth <n>           Maximum directory nesting (default: 6)
  --no-collapse-utils      Show utility candidates immediately
  --format <format>        html | json | mermaid | svg (default: html)
  -V, --version            Show version
  -h, --help               Show help

パスの既定値は . です。HTML の既定の出力先は現在の作業ディレクトリにある ./repograph.html で、書き込み後に絶対ファイル URL が表示されます。--output を指定しない場合、その他の形式は標準出力に出力されます。出力先ディレクトリは自動的に作成されます。--max-depth 0 を指定すると、ルート直下のファイルのみをスキャンします。

npx repograph-cli ./my-app --output ./architecture.html --theme matrix
npx repograph-cli . --format json > graph.json
npx repograph-cli . --format mermaid --output architecture.mmd
npx repograph-cli . --format svg --output architecture.svg
npx repograph-cli . --max-depth 10 --no-collapse-utils

静的 SVG では、ファイルを entry → business → unknown → data → util の列に配置します。Mermaid のエクスポートでは、ネストされたディレクトリのサブグラフが保持されます。どちらにもユーティリティ候補が含まれます。HTML では、折りたたまれたユーティリティとそのエッジは最初は非表示です。

Claude での利用

MCP Registry からインストールする

RepoGraph は公式 MCP Registry に io.github.Karry1123/repograph として登録されています。Registry に対応したクライアントは、この名前を指定してインストールできます。以下の Claude の手動セットアップも利用できます。

Claude Desktop

既存のサーバー設定と統合し、claude_desktop_config.json に次のエントリーを追加します。

{
  "mcpServers": {
    "repograph": {
      "command": "npx",
      "args": ["-y", "repograph-cli", "mcp"]
    }
  }
}

Claude Desktop を再起動してから、「/absolute/path/to/project のリポジトリをスキャンして、src/core/graph.ts を変更した場合の影響を表示して」と尋ねます。絶対パスでリポジトリを指定してください。MCP サーバーは別の作業ディレクトリで起動する場合があります。Windows のパスも使用できます。たとえば、JSON では F:\\RepoGraph のように指定します。

Claude Code
claude mcp add repograph -- npx -y repograph-cli mcp

リファクタリングの前にアーキテクチャマップを生成させたり、編集前にモジュールを直接または間接的に呼び出すすべての箇所を見つけさせたりできます。MCP モードでは、プロトコルに stdio を使用し、エラーは標準エラー出力にのみ書き込みます。

ツール
ツール引数結果
scan_repository_graphpath(リポジトリのルートの絶対パス)、maxDepth(整数、デフォルトは 6)、collapseUtils(ブール値、デフォルトは true)完全な ArchitectureGraph JSON:ノード、エッジ、ネストされたクラスター、メトリクス。構造やハブとなるファイルを調べる際に使用します。
generate_architecture_htmlpath、outputPath(デフォルトは ./repograph.html、path からの相対パス)、theme(dark / light / matrix)自己完結型のインタラクティブなマップを書き込み、{ success, filePath, nodeCount } を返します。視覚的な表示が必要な場合に使用します。
query_impact_pathpath、changedFile(リポジトリ相対パス。例:src/core/graph.ts)BFS の深さ、影響を受けるクラスター、影響範囲とともに、直接および間接の呼び出し元を返します。ファイルを編集または削除する前に使用します。

各ツールは呼び出されるたびに path を新たに静的スキャンするため、事前のスキャンは不要です。generate_architecture_html を除くすべてのツールには readOnlyHint: true が注釈として付けられています。generate_architecture_html はファイルを1つ書き込みます。

HTML の生成では、相対パスの outputPath はリポジトリのパスを基準に解決されます。絶対パスの出力先はそのまま使用されます。ツールでは、ユーティリティのファンインしきい値に 15 を使用します。変更対象のファイルが見つからない場合は、最も近い ID とともにエラーが返されます。transitiveDependents には深さ1の直接の呼び出し元が含まれます。blastRadius は影響を受けるファイルの一意の数を数え、変更対象のファイル自体は除外します。

マップの仕組み

インポートをエッジに変換

各ソースファイルは、スラッシュ区切りの相対 ID を持つノードになります。ローカルインポートは、インポート元から依存先への有向エッジになります。JavaScript と TypeScript では Babel を使用し、対応していない構文には正規表現によるフォールバックを使用します。同じ種類の参照が繰り返される場合は、エッジの重みとしてまとめられます。外部パッケージは除外されます。インポートされたバインディングを介したクラス継承には inheritance エッジが、import() には dynamic エッジが設定されます。

RepoGraph は、ソース拡張子、ディレクトリのインデックスファイル、NodeNext の .js → .ts 相当ファイル、および @/ → src/ のヒューリスティックなエイリアスを試します。コードを実行したり、プロジェクト固有のコンパイラプラグインを読み込んだりはしません。計算によるインポートやカスタムエイリアスは検出されない場合があります。

レイヤーでグラフの意味を示す
レイヤーファイルまたはディレクトリの手がかり色
エントリーcontroller、route、router、handler、api、endpoint、cli、app、server、main、ルートの indexシアン
ビジネスservice、usecase、core、domain、logic、managerマゼンタ
データrepo、repository、model、schema、entity、store、db、dao、migrationアンバー
ユーティリティutil、utils、helpers、common、shared、lib、constants、types、config、ファンインが多いものスレート
不明その他すべてインディゴ

分類では、エントリー、ビジネス、データ、ユーティリティの順に手がかりを確認します。これは説明可能なファイル名に基づくヒューリスティックであり、設計に対する意味的な判断ではありません。クラスターは最初の2階層のディレクトリを反映し、ネストされた親ディレクトリも保持します。

ユーティリティを折りたたんでノイズを軽減

着信する呼び出し元が12を超え、発信する依存先が2以下のファイル、またはユーティリティらしい名前のファイルは、折りたたみ候補になります。CLI/API のデフォルトは12、MCP のデフォルトは15です。折りたたまれたノードとそのエッジはグラフデータと影響分析には残りますが、HTML の初期表示からは除外されます。「Show utilities」を選択すると表示されます。次数のカウントでは、インポートの重複ではなく、隣接するファイルの一意の数を使用します。

影響範囲は呼び出し元に沿って広がります

影響分析では、逆方向のエッジをたどる幅優先探索を行います。循環を処理し、各ファイルを一度だけ訪問して、呼び出し元までの最短距離を記録します。インスペクターには直接の呼び出し元と依存関係が表示され、ハイライトでは完全な推移的チェーンの両方をたどります。循環が両方のチェーンに含まれる場合は、依存関係のハイライトが優先されます。

デッドコードの警告では、ローカルの入力エッジがなく、エントリーポイントらしくないファイルがカウントされます。これらはレビューのヒントとして扱ってください。フレームワーク、リフレクション、外部の利用者、動的ロードなどによって、静的な呼び出し元がなくても有効なファイルが存在する場合があります。結合係数は一意な出次数の平均です。密度はエッジ数を n * (n - 1) で割った値で、ファイル数が2未満の場合は0です。LOC は、コメントを含む空白でないソース行の数です。

対応言語とスキャン規則

言語解決方法
JavaScript / TypeScriptESM のインポート/再エクスポート、require()、動的インポート、インポートされたスーパークラスのバインディング。JS/JSX/MJS/CJS/TS/TSX/MTS/CTS
Pythonimport a.b、絶対および相対の from インポート、.py モジュールと __init__.py パッケージ
Go単一インポートとインポートブロック。ルートの go.mod モジュール配下のパスは、対象ディレクトリ内でスキャンされたすべての .go ファイルに解決されます
Rustmod x; は x.rs または x/mod.rs に解決されます。use crate::... は src/ 配下のモジュールに解決されます

ルートとネストされた .gitignore の規則が適用されます。RepoGraph は、node_modules、.git、dist、build、out、coverage、__pycache__、.venv、venv、.next、.nuxt、target、vendor、.idea、.vscode、.cache などの依存関係、ビルド、キャッシュ、エディターのディレクトリをスキップします。循環を防ぐため、シンボリックリンクはスキップされます。1.5 MB を超えるファイルと *.min.js は除外されます。テスト/spec ファイルはメイングラフから除外されますが、その件数は metrics.excludedTestFiles に保持されます。

Python、Go、Rust の解決は、意図的に静的なヒューリスティック方式です。ワークスペースマニフェスト、ビルドタグ、Python のインポートフック、Rust マクロ、ルート以外の Go モジュールは評価されません。スキャンに含まれるファイルのみが、ノードまたはターゲットになります。

適した用途

この表では、機能の網羅性やパフォーマンスのベンチマークではなく、各ツールの主な用途を説明します。機能の全容については、各プロジェクトの最新ドキュメントを確認してください。

RepoGraphMadgeCodeSeeGitingest
主な出力ローカルで操作できるインタラクティブな HTML アーキテクチャマップモジュールの依存関係グラフコード探索およびマッピングプラットフォームリポジトリのテキストコンテキスト
ワークフローCLI + 3 つの MCP ツール依存関係分析 CLI/APIプラットフォームのワークフローLLM のコンテキスト用にコードを取り込む
主な重点レイヤー、ユーティリティの折りたたみ、呼び出し元への影響モジュール間の関係と循環共同でのコード理解共有可能なコードコンテキスト
RepoGraph のアプローチサーバーなし。グラフスナップショットを埋め込み補完的な依存関係ツール異なるプラットフォームモデルテキストを中心とする補完的なツール

プログラムからの利用

import { analyzeRepository } from 'repograph-cli/dist/src/api.js';
import { impactPath } from 'repograph-cli/dist/src/core/graph.js';
import { renderToHtml } from 'repograph-cli/dist/src/renderer/htmlTemplate.js';

const graph = await analyzeRepository('.', {
  maxDepth: 6,
  collapseUtils: true,
  utilThreshold: 12,
});
const impact = impactPath(graph, 'src/api.ts');
const html = renderToHtml(graph, { theme: 'dark' });

createServer() と startMcpServer() は dist/src/index.js からエクスポートされます。このモジュールをインポートしても、トランスポートは起動しません。グラフのデータモデルは src/types.ts にあり、生成済みの TypeScript 宣言とともに提供されます。

コントリビューション

npm install
npm run build
node dist/bin/cli.js . --output demo/self.html
node dist/bin/cli.js . --format json
node dist/bin/cli.js . --format mermaid

開発中は npm run dev -- . を使用してください。npm.ps1 の実行がブロックされる Windows PowerShell 環境では、npm.cmd を使用してください。パス ID の移植性を保ち、スキャン対象のコードを実行しないようにし、関連するインポートを含む小規模なリポジトリで解決方法の変更をテストしてください。バグ報告やコントリビューションには、再現手順と期待されるエッジを記載してください。

ライセンス

MIT © 2026 Karry。LICENSE を参照してください。

ロードマップ · スターを付けて投票

  • TypeScript/JavaScript
  • Python
  • Go
  • Rust
  • Java/Kotlin(200 ⭐で着手)
  • C#(300 ⭐)
  • PHP/Ruby(500 ⭐)
  • モノレポのワークスペースとtsconfigのパスエイリアス解決(200 ⭐)
  • VS Code 拡張機能(1000 ⭐)

スターを付けて投票し、言語サポートのリクエストを登録する Issueを作成して、サポートが必要なインポートやプロジェクト構成を共有してください。これらの基準は優先順位を決めるためのものであり、提供時期を約束するものではありません。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。