crg について
crg は Tree-sitter でコードベースを解析し、関数・クラス・インポートの構造グラフを構築する MCP サーバーです。クライアントはタスクに関係するコードだけを読み込めます。既定ではfastretrievalのローカル ONNX モデルで設定不要・APIキー不要の意味検索を行い、クラウドの埋め込みも任意で利用できます。
主な機能
- 01Tree-sitter による構造グラフの構築
- 02既定のローカル ONNX モデルによる意味検索
- 03修飾名に基づく呼び出し関係の解決
- 04大きな結果のページ分割出力
- 05v2.0 の時間的 SHA 列とオプトインのセキュリティスキャン
活用シーン
- 01コードレビューに関連する関数と呼び出し文脈の収集
- 02リポジトリ全体での変更の影響範囲の分析
- 03コマンドラインでのローカルリポジトリのグラフ構築と検索
MCP 対応
crg は MCP サーバーとして動作し、stdio または HTTP 経由でグラフの構築とクエリの機能を MCP クライアントに提供します。主要な利用方法は CLI で、MCP は二次的なプロトコルアダプターです。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx better-code-review-graphEMBEDDING_MODELSEmbedding models in selection order; the current runtime uses the first provider/model entry; empty = local ONNXLOCAL_EMBEDDING_MODELBuilt-in fastretrieval model ID or local directory with fastretrieval-manifest.jsonLOCAL_RERANK_MODELFastretrieval TextCrossEncoder model ID; empty = reranking disabledLOCAL_EMBEDDING_DIMRequired positive output dimension for an external local embedding ID without a manifestLOCAL_EMBEDDING_MODEL_FILEONNX file path inside a manifest-backed local embedding directoryLOCAL_EMBEDDING_POOLINGExplicit pooling for an external local embedding ID without a manifestLOCAL_EMBEDDING_NORMALIZEExplicit L2 normalization for an external local embedding ID without a manifestHULL_EMBED_API_KEYシークレットAPI key for the [models.embed] cell transport (OpenRouter pre-wired default); host-injected, overrides the cell api_keyHULL_CHAT_API_KEYシークレットAPI key for the [models.chat] cell transport (OpenRouter pre-wired default); host-injected, enables LLM summaries when the cell model is setEMBEDDING_BACKENDDEPRECATED (honored one release): embedding backend override 'local' or 'cloud'. Use EMBEDDING_MODELS instead.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
より優れたコードレビューグラフ
名称変更(2026-09-13): リポジトリ名は
crgになり、CLI ファースト(crgコマンド)になりました。PyPI パッケージ名はbetter-code-review-graphのままです。MCP サーバーは副次的なインターフェースです。
mcp-name: io.github.n24q02m/crg
トークン効率に優れたコードレビューのためのナレッジグラフ — コードベース全体のセマンティック検索とコールグラフ解決を実現します。
n24q02m の姉妹プロジェクト(クリックして展開)
| プロジェクト | 概要 | タグ | |---|---|---| | [agent-chat-plugin](https://github.com/n24q02m/agent-chat-plugin) | 共有フォルダーで AI エージェント同士がチャットします。人間による中継もオーケストレーターも不要です。 | Tooling | | [crg](https://github.com/n24q02m/crg) | トークン効率の高いコードレビュー向けナレッジグラフ。セマンティック検索と呼び出し関係… | MCP | | [better-drive](https://github.com/n24q02m/better-drive) | .driveignore フィルターを備えた双方向の Google Drive 同期。rclone エンジン、Windows トレイ | Tooling | | [better-email-mcp](https://github.com/n24q02m/better-email-mcp) | AI エージェント向けの IMAP/SMTP メール機能。メールの閲覧、送信、フォルダーの整理、添付ファイルの管理… | MCP | | [better-godot-mcp](https://github.com/n24q02m/better-godot-mcp) | Godot Engine 向けの複合 MCP サーバー。AI 支援によるゲーム開発のための 17 個の複合ツール… | MCP | | [better-notion-mcp](https://github.com/n24q02m/better-notion-mcp) | AI エージェント向けの Markdown ファーストな Notion。ページ、データベース、ブロック、コメント… | MCP | | [better-semantic-release](https://github.com/n24q02m/better-semantic-release) | リリースの安全性を守る機能を組み込み済みの python-semantic-release フォーク(オープンソース…) | Tooling | | [better-telegram-mcp](https://github.com/n24q02m/better-telegram-mcp) | AI エージェント向けの Telegram 機能。両方のボットでメッセージ、チャット、メディア、連絡先を扱えます… | MCP | | [better-workspace-mcp](https://github.com/n24q02m/better-workspace-mcp) | Google Workspace MCP サーバー(Docs/Drive/Calendar/Gmail/Sheets/Slides/Tasks/Ch…) | MCP | | [claude-plugins](https://github.com/n24q02m/claude-plugins) | n24q02m の MCP サーバー向け Claude Code プラグインマーケットプレイス。ウェブ検索をインストール… | Marketplace | | [imagine-mcp](https://github.com/n24q02m/imagine-mcp) | AI エージェント向けの画像・動画の理解と生成。Gemini、OpenAI などに対応… | MCP | | [jules-task-archiver](https://github.com/n24q02m/jules-task-archiver) | batchexecute API を使って Jules タスクを一括操作する Chrome 拡張機能… | Tooling | | [mcp-core](https://github.com/n24q02m/mcp-core) | MCP サーバー構築のための共有基盤。ストリーミング可能な HTTP トランスポート、OAuth… | MCP | | [mnemo-mcp](https://github.com/n24q02m/mnemo-mcp) | ハイブリッド検索と埋め込み同期を備えた永続的な AI メモリー。オープン、無料、無制限… | MCP | | [fastretrieval](https://github.com/n24q02m/fastretrieval) | ONNX および GGUF の埋め込み、再ランキング、モデルコントラクトに対応した高速なマルチモデル検索ランタイム | Library | | [skret](https://github.com/n24q02m/skret) | サーバー不要のシークレット管理。 | CLI | | [tacet](https://github.com/n24q02m/tacet) | ナレッジ全体にわたる LLM のコストを償却する、自己蒸留型のニューロシンボリック・カスケード… | Tooling | | [web-core](https://github.com/n24q02m/web-core) | 検索、スクレイピング、HTTP セキュリティ、ストリーミング向けの共有ウェブインフラパッケージ… | Library | | [wet-mcp](https://github.com/n24q02m/wet-mcp) | AI エージェント向けオープンソース MCP サーバー。ウェブ検索、コンテンツ抽出、ライブラリ… | MCP |Tree-sitter でコードベースを解析し、関数、クラス、インポートの構造グラフを構築する MCP サーバーです。Claude(または任意の MCP クライアント)に正確なコンテキストを提供することで、コード全体ではなく重要な部分だけを読み取れるようにします。セマンティック検索は、デフォルトで fastretrieval のローカル ONNX モデルレジストリを介して実行されます(設定不要、API キー不要)。オプションでクラウド埋め込みチェーンも利用できます。code-review-graph のフォークであり、複数語検索の修正、修飾付き呼び出しの解決、デュアルモード埋め込み、出力のページネーション、本番環境向け CI/CD を追加しています。
v2.0 への移行(破壊的変更)
v2.0 では、時間列(すべてのノードとエッジに valid_from_sha / valid_to_sha)と、オプトイン方式のセキュリティスキャナーが追加されます。スキーマの移行は、最初に GraphStore を開いたときに自動で適用されます。また、ロールバックできるよう、v2.0 より前の DB のバックアップが <graph_db>.pre-2.0.bak に保存されます。スキーマ変更の全リスト、動作の変更、環境要件、ダウングレード手順(CRG_DOWNGRADE_TO_1_X=1 uv run crg)については、BREAKING_CHANGES.md を参照してください。
目次
インストール
OMP などのローカルコーディングハーネスでは、主なインターフェースはパッケージの CLI と、同梱されている skills/ ワークフローです。スキルは CLI を直接呼び出すため、MCP サーバーのマッピングは必要ありません。
# Run without a persistent install (short `crg` script; PyPI package name stays
# better-code-review-graph, so `uvx` needs the explicit --from form)
uvx --python 3.13 --from better-code-review-graph crg graph build --full-rebuild \
--repo-root /path/to/repo
uvx --python 3.13 --from better-code-review-graph crg graph stats \
--repo-root /path/to/repo
# Or install the console scripts (installs both `crg` and the legacy long name)
pip install better-code-review-graph
crg query search --search-query "authentication" \
--repo-root /path/to/repo
より詳細なセキュリティスキャンに使う Semgrep エンジンは、オプションの別エクストラです。
pip install 'better-code-review-graph[security]'
MCP stdio は、必要とするクライアント向けの副次的なプロトコルアダプターとして引き続き利用できます。
{
"mcpServers": {
"crg": {
"command": "uvx",
"args": ["--python", "3.13", "better-code-review-graph"],
"env": { "MCP_TRANSPORT": "stdio" }
}
}
}
インストール方法一覧(特記がない限り stdio。上記の CLI 優先の使い方が引き続き主なインターフェースです):
| クライアント | インストール |
|---|---|
| Claude Code(プラグイン) | /plugin marketplace add n24q02m/claude-plugins の後に /plugin install better-code-review-graph@n24q02m-plugins を実行 |
| Claude Code(stdio) | claude mcp add crg -- uvx --python 3.13 better-code-review-graph |
| Codex | ~/.codex/config.toml の mcp_servers の下に、stdio コマンド uvx --python 3.13 better-code-review-graph を登録 |
| Gemini CLI | 上記の mcpServers JSON を ~/.gemini/settings.json に追加 |
| Cursor / Windsurf | クライアントの MCP 設定(mcp.json)から上記の mcpServers JSON を追加 |
| 任意のクライアント(HTTP セルフホスト) | クライアントの接続先を https://<your-host>/mcp に設定(MCP_TRANSPORT=http)-- セルフホスト専用。ホスト型エンドポイントはありません |
AI エージェントを使ってインストール -- この手順を AI コーディングエージェントに貼り付けてください:
https://raw.githubusercontent.com/n24q02m/claude-plugins/main/plugins/better-code-review-graph/setup-with-agent.md の手順に従って、MCP サーバー
crgをインストールしてください。
CLI の使い方全般についてはCLIを参照してください。クライアントごとのオプションの MCP 設定については、mcp.n24q02m.com/servers/better-code-review-graph/setup/ を参照してください。
使い方
サーバーの起動方法は 2 通りあり、さらに利用するためのインターフェースがあります。
開発用:uv、認証なし(ループバックのみ)
# instance config lives at $CRG_CONFIG_DIR or ~/.crg (same schema as hull's
# config.toml); a default no-auth template is fine for local dev
uv run better-code-review-graph server start
# -> http://127.0.0.1:8000/mcp (no-auth is refused on any off-loopback bind)
常時稼働:docker(トークン認証)
cp docker-config/config.example.toml docker-config/config.toml
# mint a token + hash (hull CLI ships with crg's dependency tree):
# TOKEN=$(python -c "import secrets; print(secrets.token_urlsafe(32))")
# hull token hash "$TOKEN" # paste output into token_hash in config.toml
docker compose up -d
compose ファイルは Dockerfile の http ターゲットをビルドし(イメージ crg:http)、コンテナをホストのループバックのみに公開します(127.0.0.1:${CRG_PORT:-8772}:8080)。また、./docker-config/config.toml をコンテナの設定ディレクトリ(CRG_CONFIG_DIR=/data/config)に読み取り専用でマウントし、グラフの状態は名前付きボリューム crg-data に保持します。すべての状態はお使いのマシン内に保存されます。
利用方法:CLI または MCP
CLI(ローカルグラフを使用。サーバーは不要):
crg graph build --full-rebuild --repo-root /path/to/repo
crg query search --search-query "authentication" --repo-root /path/to/repo
HTTP 経由の MCP(リモート/常時稼働):任意の MCP クライアントの接続先を http://127.0.0.1:8772/mcp に設定し、Authorization: Bearer <token> を指定します:
{
"mcpServers": {
"better-code-review-graph": {
"url": "http://127.0.0.1:8772/mcp",
"headers": { "Authorization": "Bearer <token>" }
}
}
}
タスクごとのモデル設定
各タスク(embed / rerank / chat / jev_score)は、インスタンス設定の [models.<task>] から、それぞれ独立した OpenAI 仕様のプロバイダー設定を解決します。各設定は独立した base_url、api_key、model で構成されます。クラウドを使うかローカルで使うかは設定だけで決まります。base_url を OpenRouter、ベンダー、または独自のローカルゲートウェイ(例:http://host.docker.internal:11434/v1)に向けてください。API キーはホスト側のみで扱う情報です。config.toml(docker-config/ 配下では gitignore 対象)に保存するか、HULL_<TASK>_API_KEY 環境変数で指定してください。エンドユーザーが API キーを指定することはありません。
ローカルファーストの境界
CRG はコーディングワークフローにおいてローカルファーストです。
- CLI と同梱のスキルが、グラフの構築・クエリ、影響分析、レビューコンテキスト、セキュリティスキャン、リポジトリのオンボーディングを行う主要なインターフェースです。
- MCP stdio は、同じローカルドメインサービスを利用する副次的なプロトコルアダプターです。 独立したグラフ実装は維持しません。
- 明示的なマルチユーザー/セルフホスト設定で別のデータディレクトリを指定しない限り、グラフの状態は
<repo>/.crg/graph.dbに保持されます。 - PyPI、CI、セキュリティスキャン、GitHub リリース、および条件を満たす安定版の MCP Registry への公開は引き続き行われます。過去の公開 OCI タグは維持されますが、新しい公開 Docker Hub/GHCR イメージは公開されなくなりました。
- 目標とするトポロジーには、CRG のホスト型 Cloudflare ランタイムはありません。
Smithery
リポジトリには smithery.yaml が含まれており、Smithery を通じてサーバーをビルドして実行できます。stdio 経由でデプロイされ、起動時の設定は不要です。設定スキーマは空で、オプションのクラウド埋め込み/要約キーは、実行時にサーバー独自の設定フローから指定します(以下の[設定](#configuration)を参照)。起動コマンドはローカルインストールと同じ uvx 呼び出しです。
startCommand:
type: stdio
commandFunction: |-
(config) => ({ command: 'uvx', args: ['--python', '3.13', 'crg'] })
設定
設定不要ですぐに使えます。セマンティック検索では、fastretrieval のローカル ONNX レジストリを使用します(現在の組み込み参照エントリーは Qwen3-Embedding-0.6B で、初回の graph embed 時に約 570 MB がダウンロードされます)。この参照エントリーは Qwen のみに限定されるものではありません。組み込みレジストリ ID も有効な非 Qwen アーティファクトマニフェストも、同じリゾルバーに従います。以下の環境変数はすべてオプションで、クラウド埋め込み、LLM 要約、または明示的な BYO ローカルアーティファクトを使用する場合にのみ必要です。
モデルの選択
埋め込みでは、EMBEDDING_MODELS の最初の provider/model エントリーが選択されます。それ以降のエントリーは設定として保持されますが、実行時のフォールバックには使用されません。要約モデルは [models.chat] セルの model フィールドで指定します(未設定のセルでは要約が無効になります)。通信方式は常にタスクごとの [models.<task>] セルから取得されます(OpenRouter が事前設定されたデフォルトです)。モデル名のプレフィックスで選択されるのは通信設定のみで、キーは選択されません。
| 変数 | 用途 | 空の場合(デフォルト) |
|---|---|---|
EMBEDDING_MODELS | クラウド埋め込みの選択。最初のエントリーが有効になります | ローカルの fastretrieval レジストリ |
[models.chat] セルの model | graph(action="summarize") の補完モデルの選択 | 要約は無効 |
Cohere の embed-v4.0 リクエストでは 1024 次元が使われ、保存されます。それ以外のバックエンドでは 768 次元のストレージが維持されます。CRG はスライス、パディングを行わず、プロバイダーの異なる次元数を黙って受け入れることもありません。再利用するには、埋め込み行のモデルとバイト幅が一致している必要があります。モデルを変更した場合、または古い 768 次元の Cohere インデックスをアップグレードした場合は、graph(action="embed") を実行してください。検索ではプロバイダーを呼び出す前に互換性のない次元数が拒否されます。グラフノードは保持され、再埋め込みでは古くなったベクトルのみが置き換えられます。
プロバイダーの API キー
キーはタスクごとのセルの api_key に格納します(ホストのみ。下の表を参照)。
キーだけでモデルが選択されることはありません。埋め込みチェーンが空の場合はローカルのまま、要約チェーンが空の場合は無効のままです。設定済みのクラウドでエラーが発生しても、ローカルや別のプロバイダーにはフォールバックしません。要約機能にはチャット補完モデルが必要です。
| タスク | 設定セル | 備考 |
|---|---|---|
| 埋め込み | インスタンス設定の [models.embed](base_url + api_key + model)、または HULL_EMBED_API_KEY 環境変数 | hull-core を介した OpenAI 仕様の HTTP 通信です。OpenRouter が事前設定済みのデフォルトです。EMBEDDING_MODELS でモデル名を選択します。キーでモデルが選択されることはありません。モデルのプレフィックス(cohere/…、jina_ai/…、gemini/…)は通信方式の詳細のみを選択します(例:Cohere の input_type)。ベンダーごとの API キーはありません。Cohere embed-4.0 の直接利用は、ドキュメントに記載されたオプトインの例外です(spec 2026-09-26 §9)。 |
| 要約 | [models.chat] セル(または HULL_CHAT_API_KEY) | チャット補完モデルが必要です。OpenRouter がデフォルトです。 |
ベンダー固有のキー環境変数(JINA_AI_API_KEY、GEMINI_API_KEY、
OPENAI_API_KEY、GOOGLE_VERTEX_EXPRESS_API_KEY、…)は crg で読み取られません。削除されたベンダーごとのディスパッチは、ホスト分離前のスタックにありました。
詳細設定
| 変数 | 用途 |
|---|---|
EMBEDDING_MODELS | カンマ区切りの埋め込みモデルチェーンです。最初の項目がクラウドモデルです(ホスト管理。キーでモデルが選択されることはありません)。旧式の EMBEDDING_MODEL は、次のリリースまで非推奨の警告付きで引き続き使用できます。 |
DISABLE_LOCAL_EMBED | ローカル ONNX のダウンロードをスキップします。クラウドチェーンが設定されていない場合、埋め込みは利用できません |
LOCAL_RERANK_MODEL | 絞り込みセマンティック再ランク付けに使用する Fastretrieval TextCrossEncoder モデル ID |
LOCAL_EMBEDDING_DIM | マニフェストのない外部モデル ID に必要な次元数 |
LOCAL_EMBEDDING_MODEL_FILE | マニフェストに対応したアーティファクトディレクトリ内の ONNX ファイルパス |
LOCAL_EMBEDDING_POOLING | マニフェストのない外部 ID に対する明示的なプーリング方式:CLS、MEAN、LAST_TOKEN、または DISABLED |
LOCAL_EMBEDDING_NORMALIZE | マニフェストのない外部 ID に対する明示的な L2 正規化 |
CRG_DATA_DIR | HTTP マルチユーザーモードでユーザーごとのグラフと認証情報に使用する、ユーザーデータディレクトリ(デフォルトは ~/.crg)を上書きします |
EMBEDDING_BACKEND / EMBEDDING_MODEL | 非推奨の単数形変数です。警告付きで1リリースの間は引き続き使用できます。EMBEDDING_MODELS に移行してください。ホスト分離前の要約モデルおよびベース URL の環境変数は読み取られません。モデルと通信方式は [models.*] セルに設定します |
LOCAL_RERANK_MODEL が設定されている場合、セマンティックベクトル検索は
min(max(limit * 4, limit), 100) 件の行からなる候補プールを取得し、
既存の kind、repo、ライブ行フィルターを適用した後、そのプールを再ランク付けして
最大 limit 件の行を返します。応答では search_mode="semantic_reranked" を使用し、
similarity_score を維持したまま rerank_score を追加します。空欄の場合は、
従来どおり limit * 2 件のベクトル検索パスを使用し、
search_mode="semantic" を返します。再ランク付け機能が設定済みの状態で失敗した場合は、
明示的なエラーを返します。CRG はベクトル検索やキーワード検索の結果に暗黙的に
フォールバックしません。as_of スナップショットを含むキーワード検索では、
再ランク付け機能は呼び出されません。
例 -- クラウド埋め込み + 要約
~/.crg/config.toml(手動で記述するか、OpenRouter のデフォルト設定があらかじめ組み込まれた hull config init から開始します):
[models.embed]
base_url = "https://openrouter.ai/api/v1"
api_key = "sk-or-..."
model = "cohere/embed-v4.0"
[models.chat]
base_url = "https://openrouter.ai/api/v1"
api_key = "sk-or-..."
model = "minimax/minimax-m3:free"
MCP サーバーのエントリに設定する同等の環境変数(キーはセルの設定を上書きします。モデル名は引き続き EMBEDDING_MODELS または model フィールドから取得されます):
{
"mcpServers": {
"crg": {
"command": "uvx",
"args": ["--python", "3.13", "better-code-review-graph"],
"env": {
"MCP_TRANSPORT": "stdio",
"EMBEDDING_MODELS": "cohere/embed-v4.0",
"HULL_EMBED_API_KEY": "sk-or-...",
"HULL_CHAT_API_KEY": "sk-or-..."
}
}
}
}
Cohere の埋め込みは有料です。実際のインデックス作成やクエリを行う前に、上限付きの予算を設定してください。Minimax の無料の補完モデルを選んでも、埋め込みが無料になるわけではありません。モデル名のプレフィックス(cohere/…、openrouter/…)はワイヤー上の詳細のみを選択します。トランスポートと認証情報は、ホストが管理する [models.*] セルから取得されます。
CRG には現在、クラウドでの再ランキング呼び出し機能はありません。再ランキングの経路は LOCAL_RERANK_MODEL のみです。RERANK_MODELS または RERANK_API_BASE を設定しても、再ランキング機能は有効になりません。
ツール
関連するアクションをグループ化し、ツールの種類を少なく保つための 6 つのツールです。
graph -- グラフのライフサイクル
アクション:build | update | stats | embed | export | summarize
| アクション | 説明 |
|---|---|
build | グラフを完全または段階的に構築します。すべてのファイルを再解析するには full_rebuild=true を設定します。グラフを統合する追加のリポジトリディレクトリを指定するには、roots を渡します。 |
update | full_rebuild=false(段階的)を指定した build のエイリアスです。 |
stats | グラフのサイズ、言語、ノードとエッジの内訳、埋め込みの数を表示します。 |
embed | セマンティック検索用のベクトル埋め込みを計算します。ローカル ONNX またはクラウドチェーンのデュアルモードです。 |
export | グラフを graphml / json-ld / dot / cypher としてエクスポートします。インライン、または output_path への出力が可能です。 |
summarize | Function ノードの docstring を LLM で 1 段落に要約します([models.chat] セルを使用します。モデルが設定されていない場合は何もしません)。呼び出し数は max_nodes によって制限されます。 |
query -- グラフクエリ
アクション:query | search | impact | large_functions | spot_check | renamed_in_diff | diff
| アクション | 説明 |
|---|---|
query | 定義済みのパターン:callers_of、callees_of、imports_of、importers_of、children_of、tests_for、inheritors_of、file_summary。 |
search | 名前、キーワード、またはセマンティック類似性でコードエンティティを検索します。 |
impact | 変更されたファイルの影響範囲を表示します。git diff から自動検出します。max_results でページ分割されます。 |
large_functions | 行数のしきい値を超える関数やクラスを検索します。 |
spot_check | 直近の callers_of / callees_of / inheritors_of / importers_of の結果から、呼び出し箇所のスニペットをランダムに表示します。 |
renamed_in_diff | 基準となる ref と比較して、呼び出し箇所の行が移動したシンボルを表示します。 |
diff | 2 つのコミット SHA(from_sha、to_sha)間で追加、削除、または変更されたノードを表示します。 |
ほとんどの読み取りアクションでは、特定時点のスナップショットを取得するための as_of=<sha> と、フェデレーションされたマルチリポジトリグラフの範囲を指定するための repo=<repo_id> を指定できます。
review -- コードレビューのコンテキスト
アクション:context(デフォルト)| delta
構造的な概要、影響を受けるノード、ソーススニペット、レビューのガイダンスを含む、トークン使用量を最適化したレビューコンテキストです。context は git diff から変更されたファイルを自動検出します。delta(from_sha / to_sha と、任意の show_line_shifts を指定)は、2 つのコミット間でのリファクタリングによる移動を表示します。
config -- サーバー設定と認証情報のセットアップ
アクション:status | set | cache_clear | setup_status | setup_start | setup_skip | setup_reset | setup_complete
| アクション | 説明 |
|---|---|
status | サーバー情報:バージョン、グラフのパス、ノードとエッジの数、埋め込みバックエンド、埋め込み数。 |
set | 実行時設定を更新します(key=log_level)。 |
cache_clear | 計算済みの埋め込みをすべて削除します。 |
setup_status | 現在の認証情報の状態と、キーが設定されているモデルセルを表示します。 |
setup_start | ホストが API キーを設定する場所(ホスト管理のモデルセル)を説明します。 |
setup_skip | ローカルモード(ローカル ONNX 埋め込み、クラウドセルなし)に設定します。 |
setup_reset | 状態をローカルにリセットします。次回の呼び出し時にホスト設定が再解決されます。 |
setup_complete | ホスト設定から認証情報の状態を再解決します。 |
security -- セキュリティスキャン
アクション:scan | report | suppress | rule_list
| アクション | 説明 |
|---|---|
scan | セキュリティスキャンを実行します(デフォルトのengine='heuristic'は5つの正規表現ルール、または'semgrep')。検出結果はnodes.security_tagsに保存されます。 |
report | キャッシュされた検出結果をJSON(format='json')またはSARIF v2.1.0(format='sarif')として再出力します。 |
suppress | rule_idで検出結果を抑制します(抑制を解除するにはremove=trueを指定します)。 |
rule_list | エンジンで利用可能なルールを一覧表示します。 |
semgrepエンジンを使用するには[security]エクストラが必要です。Semgrepの
p/autoレジストリパックと、厳選した3つのルールからなるオーバーレイを実行します。
help -- ドキュメント全文
トピック:graph | query | review | config | security | recipes
各ツールの完全なドキュメントを返します。上記の簡潔な説明だけでは不十分な場合に使用してください。
CLI
このパッケージは、2つのコンソールスクリプト(プライマリの**crg**と、レガシーの長い名前である
crg)をインストールします。引数なしで実行すると、stdio経由でMCPサーバーが起動します。先頭に位置引数を指定すると、MCPアダプターと同じドメインサービスを呼び出すローカルCLIサブコマンドが実行されます。pip install後に直接実行するか、永続的にインストールせずにuvx --python 3.13 --from better-code-review-graph crg ...で実行できます。
# Start the MCP server over stdio (default -- no subcommand)
crg
# Build, inspect, and embed the local graph
crg graph build
crg graph stats
crg graph embed
# Query relationships and impact
crg query query \
--pattern callers_of --target "path/to/module.py::function"
crg query search --search-query "authentication"
crg query impact --changed-files src/app.py
# Produce review context and run a local security scan
crg review context --base HEAD~1
crg security scan --engine heuristic
| コマンド | 説明 |
|---|---|
graph build | グラフを全件または増分で構築します。--full-rebuildはすべてのファイルを再解析し、--base <ref>は増分差分の参照を設定し、--repo-root <path>は自動検出を上書きします。 |
graph embed | ローカルONNXまたは設定済みのクラウドチェーンを使ってベクトル埋め込みを計算します。 |
graph stats / graph export / graph import / graph summarize | ポータブルなcrgグラフを調査、エクスポート/インポート、または関数を要約します。 |
query query / query search | 関係パターンまたはキーワード/セマンティック検索を実行します。 |
query impact / query large_functions | 変更されたファイルの影響範囲を分析するか、サイズの大きすぎるノードを検索します。 |
query spot_check / query renamed_in_diff / query diff | 呼び出し箇所、行の移動、またはコミット間のグラフの変更を調査します。 |
review context / review delta | コード変更のレビューコンテキストまたは差分バケットを生成します。 |
security scan / security report / security suppress / security rule_list | ヒューリスティック/Semgrepのセキュリティ検出結果を実行・管理します。 |
CLIサブコマンドは構造化JSONを出力し、エラー時には0以外の終了コードを返します。
機能
このフォークがアップストリームのcode-review-graphに対して修正した点:
| 機能 | code-review-graph | crg |
|---|---|---|
| 複数単語の検索 | 機能しない(リテラル部分文字列) | ANDロジックによる単語分割 |
| callers_of/callees_of | 結果なし(単純な名前のターゲット) | 修飾名の解決と単純な名前へのフォールバック |
| 埋め込み | sentence-transformers + torch(1.1 GB) | fastretrieval ONNX + クラウド(200 MB)、デュアルモード |
| 出力サイズ | 上限なし(500K文字以上) | ページネーション対応(max_results、truncatedフラグ) |
| ツール設計 | 個別ツール9個 | グループ化されたツール6個:graph + query + review + config + security + help |
| プラグインフック | 無効なPostEdit/PostGit | 有効なPostToolUse |
比較
各機能領域における、crg と直接の競合製品の比較です。
| 機能 | crg | Greptile | Sourcegraph(Cody / MCP) | CodeGraph(colbymchenry) |
|---|---|---|---|---|
| コードベースのナレッジグラフ | あり(Tree-sitter、14 言語、SQLite) | あり(関数/クラス/依存関係) | あり(高精度なコードインデックス作成) | あり(Tree-sitter、20 以上の言語、SQLite) |
| 永続的な増分更新 | あり(git-diff +ファイルハッシュによる再解析) | ? | あり(継続的なインデックス作成) | あり(OS のファイル監視機能によるデバウンス) |
| 解決済みの呼び出し関係(呼び出し元/呼び出し先) | あり(同一ファイル内の修飾なし呼び出しを解決し、フォールバックにも対応) | ? | あり(定義へ移動/参照の検索) | あり(呼び出し元/呼び出し先/影響範囲) |
| セマンティック検索/埋め込み | あり(fastretrieval のローカルレジストリ、およびクラウドの Jina/Gemini/OpenAI/Cohere) | ? | あり(セマンティック検索+キーワード検索+正規表現) | なし(FTS5 の全文検索のみ) |
| トークン最適化されたレビューコンテキスト | あり(review ツール、git-diff の範囲に限定) | あり(PR レビューコメント) | なし(コードコンテキストアシスタント) | なし(コンテキストレイヤーであり、レビュー機能ではない) |
| セキュリティスキャン | あり(Semgrep p/auto +3 つのルールを重ねて適用、SARIF) | ? | ? | なし |
| セルフホスト可能 | あり(stdio がデフォルト、マシンに紐付け) | あり(Docker / K8s / エアギャップ環境) | あり(セルフホスト型インスタンス) | あり(完全ローカル、API キー不要) |
| 無料/オープンソース | あり(Apache-2.0) | なし(プロプライエタリな SaaS、無料の OSS プランあり) | なし(Enterprise ライセンス、ソースは非公開) | あり(MIT) |
出典:Greptile · Greptile の料金 · Sourcegraph MCP · CodeGraph。? が付いたセルは、競合製品が公開情報で機能を説明していないことを示すものであり、機能がないと確認されたわけではありません。
セキュリティ
- 明示的な選択 -- クラウド埋め込みのエラーは報告されます。ランタイムがモデルを暗黙に切り替えたり、ローカル ONNX にフォールバックしたりすることはありません。
- エラー処理 -- ツールは修正案を含むエラー文字列を返し、クラッシュすることはありません。
- 読み取り専用のマウント -- Docker モードでは、リポジトリを
:ro(読み取り専用)としてマウントします。 - SSRF 対策済みのエンドポイント -- カスタム
[models.*]セルのbase_url値は、外部への呼び出しを行う前に検証されます。
脆弱性を報告するには、SECURITY.md を参照してください。
ソースからビルドする
git clone https://github.com/n24q02m/crg
cd crg
uv sync --group dev
uv run pytest
uv run crg
要件: Python 3.13、uv。
信頼モデル
このプラグインは TC-Local(マシンに紐付き、単一の信頼主体)を実装しています。分類の詳細については、mcp-core の信頼モデルを参照してください。
| モード | グラフ DB | クラウド認証情報 | データを読み取れるユーザー |
|---|---|---|---|
| stdio(デフォルト) | <repo>/.crg/graph.db(git の追跡対象外) | ~/.crg/config.toml(AES-GCM、マシンに紐付いたキー) | OS の自分のユーザーのみ |
| HTTP セルフホスト(複数ユーザー) | ユーザーごとの ~/.crg/subs/<sub>/graph.db | ユーザーごとの ~/.crg/subs/<sub>/config.json | 認証済みのユーザーのみ |
移行と変更履歴
グラフ、セキュリティスキャンのキャッシュ、および抑制状態は、パッケージが管理する
.crg/ ディレクトリを使用するようになりました。アップグレード後に
graph(action="build", full_rebuild=true) を一度実行し、セマンティック検索が
必要な場合は、その後 graph(action="embed") を実行してください。以前の
.better-code-review-graph/ 状態ディレクトリと、曖昧な
.code-review-graph/ および .code-review-graph.db の各パスとその SQLite
サイドカーファイルは、そのまま残され、移行されません。必要な抑制ルールは
確認のうえ、明示的に再適用してください。
v2.0 リリースでは 時間的な列(すべてのノードとエッジの
valid_from_sha / valid_to_sha)と、オプトイン方式のセキュリティスキャナーが
追加されました。スキーマの移行は、最初の GraphStore のオープン時に自動適用され、
v2.0 より前の DB のバックアップが <graph_db>.pre-2.0.bak に
書き込まれます。ダウングレードして復元するには、次を実行してください。
CRG_DOWNGRADE_TO_1_X=1 uvx better-code-review-graph
スキーマ変更、動作変更、ロールバック手順の一覧: BREAKING_CHANGES.md。リリースごとの変更履歴: CHANGELOG.md。
ドキュメント
ドキュメント全文は mcp.n24q02m.com/servers/better-code-review-graph/setup/ にあります。
- セットアップ -- Claude Code、Codex、Gemini CLI、Cursor、Windsurf、mcp.json のインストール方法
- モードの概要 -- stdio / local-relay / remote-relay / remote-oauth
- マルチユーザーのセットアップ -- JWT の sub ごとの認証情報モデル
任意の MCP クライアントから help ツールを使うと、各ツールのリファレンスをインラインで確認できます。
ライセンス
Apache-2.0 -- LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。