code-graph について
code-graphは、開発者とAIエージェント向けのローカル依存グラフツールで、CLIとMCPサーバーを提供します。LLMを使わない決定的な解析でルート、呼び出し、テーブル、設定の影響を追跡し、各関係にファイルと行番号の根拠を示します。
主な機能
- 01呼び出し元、ルート、テーブル依存の追跡
- 02関係ごとのファイル・行番号の提示
- 03変更影響と関連テストの分析
- 04リポジトリ間の呼び出しとルートの接続
- 05攻撃対象領域とセキュリティ所見の出力
- 06グラフ表示と計画チェック
活用シーン
- 01変更前に影響を受けるルートや呼び出し元を特定
- 02コード変更が到達するテストを確認
- 03書き込みを行う認証なしルートを確認
- 04リポジトリ間のHTTP呼び出しとサーバールートを調査
MCP 対応
code-graphはcg-mcp MCPサーバーを提供し、エージェントがコード検索ではなく依存グラフを照会できます。1つのサーバーで複数のグラフを扱えます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
13掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| paths | boolean | いいえ | |
| targets | array | はい | |
| group_by | string | いいえ | |
| platform | any | いいえ | |
| connection | any | いいえ | |
| include_gated | boolean | いいえ | |
| max_per_group | integer | いいえ | |
| min_confidence | string | いいえ |
詳細
code-graph
変更を加える前に、その変更が影響するすべてを把握できます。ルート、呼び出し、テーブル、設定を含むローカルかつ決定論的な依存関係グラフで、各経路の根拠となる file:line も確認できます。
あなたと AI エージェント(CLI + MCP)のためのツールです。グラフに LLM は使用しません。
クイックスタート
pipx install cg-code-graph # or: uv tool install cg-code-graph
cg index . --db out/graph.db # prints starter queries for your repo
cg install --host cursor # or claude, codex, vscode, …: registers the MCP server and a "use cg first" agent rule
cg reaches table:orders --db out/graph.db # any table, connection or config key
同梱のサンプルで試す、フロントエンドをバックエンドにリンクする、または MCP 経由でエージェントを接続できます:クイックスタートガイド。その他のインストール方法(install.sh、Windows、exact-mode ツールチェーン)はこちらをご覧ください:インストール。
同梱の Django サンプルで cg reaches table:store_books を実行します:
dependents: 18 nodes (code: 6, entry points: 9, other: 3)
== RUNTIME (reached from http_route / ... / queue_job / listener): 5 functions/methods
catalog.api.create_book depth=1 conf=resolved http_route(1)
path: function:catalog.api.create_book
-WRITES_TABLE[resolved @ catalog/api.py:27]-> table:store_books
catalog.signals.review_saved depth=3 conf=resolved listener(1)
path: function:catalog.signals.review_saved
-DISPATCHES[exact @ catalog/signals.py:12]-> job:catalog.tasks.recompute_rating
-HANDLED_BY[exact @ catalog/tasks.py:13]-> function:catalog.tasks.recompute_rating
-READS_TABLE[resolved @ catalog/tasks.py:14]-> table:store_books
対応言語
| 言語 | フレームワークと情報 | 呼び出し | ドキュメント |
|---|---|---|---|
| Django(+ DRF、django-ninja)、FastAPI / Starlette、Flask、Celery | 正確(標準ライブラリの ast) | Python | |
| Nuxt / Vue、NestJS、Next.js、Astro、Express、Fastify、Koa、Hono、Elysia、React Router / Remix | 正確(TypeScript コンパイラー API) | TS フレームワーク | |
| Laravel(ルート、ルート属性、ミドルウェア、キュー、ブロードキャスト、送信 HTTP) | 正確(nikic/php-parser。PHP 8.2 以降が必要) | PHP | |
| Flutter | 正確(Dart アナライザー。Dart SDK が必要) | プラットフォーム | |
| Android、Kotlin Multiplatform、Spring | ヒューリスティック。scip-java を使うと正確(オプトイン) | Kotlin | |
| Spring(ルート、ガード、Bean、テーブル、クライアント) | ヒューリスティック。scip-java を使うと正確(オプトイン) | Java | |
| iOS / SwiftPM | ヒューリスティック。Swift インデックスストアを使うと正確(オプトイン) | Swift | |
クレート / モジュール、エントリーポイント、FFI、#[cfg] / #if ゲート | ヒューリスティック。rust-analyzer / scip-clang を使うと正確 | Rust、C、C++ |
Go など:cg index --scip FILE で SCIP インデックスをインポートします。cg doctor を実行すると、お使いの環境で言語ごとに正確かヒューリスティックかを確認できます。
得られること
reaches、impact、path:テーブル、設定キー、メソッドに到達するすべての呼び出し元、ルート、ジョブ、ページ。cg affected --base main:変更の影響が及ぶテストとエントリーポイント(--quietはテストランナーに渡せます)。- リポジトリ間:
cg linkはクライアントの HTTP 呼び出し(フロントエンドと Laravel / Guzzle バックエンド)をサーバールートに対応付け、リクエストキー(Laravel FormRequest、Elysia スキーマ、Nuxt / TypeScript のボディ)をチェックします。 - ルートガード:
cg routes --writes --unguardedは、認証ガードなしで書き込みを行うルートを一覧表示します。Laravel では、アクション内のチェックは--strictを指定しない限りインラインガードとして扱われます。 - セキュリティビュー:
cg surfaceは、受信 / 送信の攻撃対象領域と検出事項(ハードコードされた認証情報、平文プロトコル、未検証の Webhook、ガードされていないハンドラー、すべてのインターフェースで待ち受けるリスナー、無効化された TLS / SSH 検証、平文 gRPC、公開された IPC、リクエスト入力から構築された送信 URL)をテキスト、JSON、または SARIF で一覧表示します。CI 用に--fail-onも指定できます。 - MCP サーバー(
cg-mcp)を使うと、エージェントは grep の代わりにグラフをクエリできます。1 つのサーバーで複数のグラフを提供できます(graphsと任意のgraph引数を使用)。単一の--dbは 1 つのグラフのみを対象とします。MCP を参照してください。 - 計画中の変更に対するビジュアルビュー(
cg serve)と計画チェック(cg plan check)。
Docs
Install · Quick start · CLI · MCP · Configuration · Architecture · Limitations
Changelog · Contributing · Security · MIT License
More recordings: docs/media.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。

