🚀 CodeGraph CLI MCP Server
🚀 高性能のCLIツールで、MCPサーバーの管理と高度なアーキテクチャ分析機能を備えたコードベースのインデックス作成を行います。

📋 目次
- 概要
- 機能
- アーキテクチャ
- 前提条件
- インストール
- クイックスタート
- CLIコマンド
- 設定
- ユーザーワークフロー
- 統合ガイド
- トラブルシューティング
- コントリビュート
- ライセンス
🎯 概要
CodeGraphは、MCP(Model Context Protocol)サーバー管理と高度なコード分析機能を組み合わせた強力なCLIツールです。プロジェクトのインデックス作成、埋め込みの管理、複数のトランスポートオプションでのMCPサーバーの実行を統一的なインターフェースで提供します。これで、Agentを用意するだけで、独自の深層コードとプロジェクト知識の合成システムを作成できます!
主要機能
- 🔍 高度なコード分析:Tree-sitterを使用して複数の言語のコードを解析および分析します。
- 🚄 デュアルトランスポートサポート:STDIO、HTTP、または両方を同時に使用してMCPサーバーを実行します。
- 🎯 ベクトル検索:FAISSによるベクトル埋め込みを使用した意味的なコード検索を行います。
- 📊 グラフベースのアーキテクチャ:RocksDBベースのグラフストレージを使用してコードの関係をナビゲートします。
- ⚡ 高性能:並列処理とバッチ埋め込みにより、大規模なコードベースに最適化されています。
- 🔧 柔軟な設定:埋め込みモデルとパフォーマンスチューニングのための幅広い設定オプションがあります。
生のパフォーマンス ✨✨✨
0.49秒で17万行のRustコード!3分24秒で21,024個の埋め込み!M3 Pro 32GB、Qdrant/all-MiniLM-L6-v2-onnx、CPUで実行(Metalアクセラレーション未使用)!
Parsing completed: 353/353 files, 169397 lines in 0.49s (714.5 files/s, 342852 lines/s)
[00:03:24] [########################################] 21024/21024 Embeddings complete
✨ 機能
コア機能
-
プロジェクトインデックス作成
- 多言語サポート(Rust、Python、JavaScript、TypeScript、Go、Java、C++)
- ファイル監視によるインクリメンタルインデックス作成
- 設定可能なワーカーによる並列処理
- パフォーマンス向上のためのスマートキャッシュ
-
MCPサーバー管理
- 直接通信のためのSTDIOトランスポート
- SSEサポート付きのHTTPストリーミング
- 最大の柔軟性を提供するデュアルトランスポートモード
- PID管理付きのバックグラウンドデーモンモード
-
コード検索
- 埋め込みを使用した意味的な検索
- 完全一致およびファジー検索
- 正規表現とASTベースのクエリ
- 設定可能な類似度閾値
-
アーキテクチャ分析
- コンポーネント関係のマッピング
- 依存関係分析
- コードパターン検出
- アーキテクチャの可視化サポート
🏗️ アーキテクチャ
CodeGraph System Architecture
┌─────────────────────────────────────────────────────┐
│ CLI Interface │
│ (codegraph CLI) │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ Core Engine │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ Parser │ │ Graph Store │ │ Vector │ │
│ │ (Tree-sittr)│ │ (RocksDB) │ │ Search │ │
│ └─────────────┘ └──────────────┘ │ (FAISS) │ │
│ └────────────┘ │
└─────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────┐
│ MCP Server Layer │
│ ┌─────────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ STDIO │ │ HTTP │ │ Dual │ │
│ │ Transport │ │ Transport │ │ Mode │ │
│ └─────────────┘ └──────────────┘ └────────────┘ │
└─────────────────────────────────────────────────────┘
🧠 ONNX Runtimeを使用した埋め込み (macOS)
- デフォルトのプロバイダー:CPU EP。Homebrewの
onnxruntimeですぐに動作します。
- オプションのCoreML EP:CoreMLを含むONNX Runtimeビルドを使用する場合、
CODEGRAPH_ONNX_EP=coremlを設定してCoreMLを優先させます。
- フォールバック:CoreML EPの初期化に失敗した場合、CodeGraphは警告をログに記録し、CPUにフォールバックします。
ONNX埋め込みの使用方法
export CODEGRAPH_EMBEDDING_PROVIDER=onnx
export CODEGRAPH_ONNX_EP=cpu
export CODEGRAPH_LOCAL_MODEL=/path/to/onnx-file
export CODEGRAPH_EMBEDDING_PROVIDER=onnx
export CODEGRAPH_ONNX_EP=coreml
export CODEGRAPH_LOCAL_MODEL=/path/to/onnx-file
cargo install --path crates/codegraph-mcp --features "embeddings,codegraph-vector/onnx,faiss"
注意事項
- AppleプラットフォームでのONNX Runtimeは、MetalではなくCoreMLを介して加速されます。Apple SiliconでGPUアクセラレーションが必要な場合は、サポートされている場合にCoreMLを使用してください。
- CoreMLがサポートしていない場合、一部のモデル/演算子は依然としてCPUで実行されることがあります。
ビルド時にCoreML機能を有効にする
- CoreMLの登録パスは、
codegraph-vectorのCargo機能onnx-coremlによって制限されています。
- 次のコマンドでビルドします:
cargo build -p codegraph-vector --features "onnx,onnx-coreml"
- フルワークスペースビルドでは、使用するクレートの機能を介して、または
--features codegraph-vector/onnx,codegraph-vector/onnx-coremlを追加して有効にします。
- 依然としてCoreMLサポートでコンパイルされたONNX Runtimeライブラリが必要です。この機能は、コード内の登録呼び出しを有効にするだけです。
📦 前提条件
システム要件
- オペレーティングシステム:Linux、macOS、またはWindows
- Rust:1.75以上
- メモリ:最小4GB RAM(大規模なコードベースの場合は8GB推奨)
- ディスク容量:インストールに1GB + インデックス化されたデータのためのスペース
必要な依存関係
brew install cmake clang
sudo apt-get update
sudo apt-get install cmake clang libssl-dev pkg-config
sudo dnf install cmake clang openssl-devel
オプションの依存関係
- FAISS (ベクトル検索の高速化用)
- ローカル埋め込み (HuggingFace + Candle + ONNX/ORT(coreML) osx-metal/cuda/cpu)
- デバイス上での埋め込み生成を可能にします(外部API呼び出し不要)
- 初回実行時にHuggingFace Hubからモデルをダウンロードし、ローカルにキャッシュします
- 初回のモデルダウンロードにはインターネットアクセスが必要です(またはキャッシュを事前に設定)
- デフォルトではCPUで実行されます。高度なGPUバックエンド(CUDA/Metal)には適切なハードウェアとドライバーが必要です
- CUDA (GPU加速された埋め込み用)
- Git (リポジトリ統合用)
🚀 パフォーマンスベンチマーク
インデックス作成速度(ローカル埋め込み + FAISSを使用)、ベクトル検索のレイテンシ、グラフトラバーサルのスループットを測定する再現可能なエンドツーエンドのベンチマークを実行します。
パフォーマンス機能を持つビルド
ローカル埋め込みバックエンドの1つを選択し、FAISSを有効にします:
cargo install --path crates/codegraph-mcp --features "embeddings,codegraph-vector/onnx,faiss"
cargo install --path crates/codegraph-mcp --features "embeddings-local,faiss"
ローカル埋め込みバックエンドの設定
ONNX (CoreML/CPU):
export CODEGRAPH_EMBEDDING_PROVIDER=onnx
export CODEGRAPH_ONNX_EP=coreml
export CODEGRAPH_LOCAL_MODEL=/path/to/model.onnx
ローカルHF + Candle (CPU/Metal/CUDA):
export CODEGRAPH_EMBEDDING_PROVIDER=local
export CODEGRAPH_LOCAL_MODEL=sentence-transformers/all-MiniLM-L6-v2
ベンチマークの実行
codegraph perf . \
--langs rust,ts,go \
--warmup 3 --trials 20 \
--batch-size 128 --device metal \
--clean --format json
測定項目
- インデックス作成:解析 -> 埋め込み -> FAISSの構築(グローバル + シャード)までの総時間
- 埋め込みスループット:1秒あたりの埋め込み数
- ベクトル検索:繰り返しクエリにおけるレイテンシ(平均/p50/p95)
- グラフトラバーサル:BFS深度=2のマイクロベンチマーク
サンプル出力(数値はマシンとコードベースによって異なります)
{
"env": {
"embedding_provider": "local",
"device": "metal",
"features": { "faiss": true, "embeddings": true }
},
"dataset": {
"path": "/repo/large-project",
"languages": ["rust","ts","go"],
"files": 18234,
"lines": 2583190
},
"indexing": {
"total_seconds": 186.4,
"embeddings": 53421,
"throughput_embeddings_per_sec": 286.6
},
"vector_search": {
"queries": 100,
"latency_ms": { "avg": 18.7, "p50": 12.3, "p95": 32.9 }
},
"graph": {
"bfs_depth": 2,
"visited_nodes": 1000,
"elapsed_ms": 41.8
}
}
再現性のためのヒント
--cleanを使用してコールドスタートの数値を取得し、2回目の実行でウォームキャッシュの数値を取得します。
- CPU/GPUを競合する可能性のあるバックグラウンドプロセスを閉じます。
- バージョンを固定します:
rustc --version、FAISSビルド、および埋め込みモデル。
- ホスト情報を記録します:CPU/GPU、RAM、ストレージ、OSバージョン。
🚀 インストール
方法1: ソースからインストール
git clone https://github.com/jakedismo/codegraph-cli-mcp.git
cd codegraph-cli-mcp
cargo build --release
cargo install --path crates/codegraph-mcp
codegraph --version
リモートプロバイダーの代わりにローカル埋め込みモデル (Hugging Face) を使用する場合:
1) ベクトル検索を使用するクレート(APIおよび/またはCLIサーバー)にローカル埋め込み機能を持つビルドを行います:
```bash
cargo build -p codegraph-api --features codegraph-vector/local-embeddings
cargo build -p core-rag-mcp-server --features codegraph-vector/local-embeddings
- 実行時にプロバイダーを切り替えるために環境変数を設定します:
export CODEGRAPH_EMBEDDING_PROVIDER=local
export CODEGRAPH_LOCAL_MODEL=sentence-transformers/all-MiniLM-L6-v2
- 通常通り実行します(初回実行時にHugging Faceからモデルファイルをダウンロードし、ローカルにキャッシュします):
cargo run -p codegraph-api --features codegraph-vector/local-embeddings
モデルキャッシュの場所:
- デフォルトのHugging Faceキャッシュ:
~/.cache/huggingface (または$HF_HOME)、hf-hubを介して
- 初回ダウンロード後にオフラインで実行するために、このキャッシュを事前に設定することができます
### 方法2: 事前ビルド済みのバイナリをインストール
```bash
# 最新のリリースをダウンロード
curl -L https://github.com/jakedismo/codegraph-cli-mcp/releases/latest/download/codegraph-$(uname -s)-$(uname -m).tar.gz | tar xz
# PATHに移動
sudo mv codegraph /usr/local/bin/
# インストールを確認
codegraph --version
方法3: Cargoを使用する
cargo install codegraph-mcp
codegraph --version
🎯 クイックスタート
1. 新しいプロジェクトを初期化
codegraph init
codegraph init --name my-project
2. コードベースをインデックス化
codegraph index .
codegraph index . --languages rust,python,typescript
RUST_LOG=info,codegraph_vector=debug codegraph index . --workers 10 --batch-size 256 --max-seq-len 512 --force
codegraph index . --watch
3. MCPサーバーを起動
codegraph start stdio
codegraph start http --port 3000
codegraph start dual --port 3000
```bash
export CODEGRAPH_EMBEDDING_PROVIDER=local
export CODEGRAPH_LOCAL_MODEL=sentence-transformers/all-MiniLM-L6-v2
cargo run -p codegraph-api --features codegraph-vector/local-embeddings
4. コードを検索
codegraph search "authentication handler"
codegraph search "fn authenticate" --search-type exact
codegraph search "function with async keyword" --search-type ast
📖 CLIコマンド
グローバルオプション
codegraph [OPTIONS] <COMMAND>
Options:
-v, --verbose 詳細なログを有効にする
--config <PATH> 設定ファイルのパス
-h, --help ヘルプを表示
-V, --version バージョンを表示
コマンドリファレンス
init - CodeGraphプロジェクトを初期化
codegraph init [OPTIONS] [PATH]
Arguments:
[PATH] プロジェクトディレクトリ (デフォルト: 現在のディレクトリ)
Options:
--name <NAME> プロジェクト名
--non-interactive 対話型セットアップをスキップする
start - MCPサーバーを起動
codegraph start <TRANSPORT> [OPTIONS]
Transports:
stdio STDIOトランスポート (デフォルト)
http HTTPストリーミングトランスポート
dual STDIOとHTTPの両方
Options:
--config <PATH> サーバーの設定ファイル
--daemon バックグラウンドで実行
--pid-file <PATH> PIDファイルの場所
HTTP Options:
-h, --host <HOST> バインドするホスト (デフォルト: 127.0.0.1)
-p, --port <PORT> バインドするポート (デフォルト: 3000)
--tls TLS/HTTPSを有効にする
--cert <PATH> TLS証明書ファイル
--key <PATH> TLSキーファイル
--cors CORSを有効にする
stop - MCPサーバーを停止
codegraph stop [OPTIONS]
Options:
--pid-file <PATH> PIDファイルの場所
-f, --force グレースフルシャットダウンせずに強制停止する
status - サーバーの状態を確認
codegraph status [OPTIONS]
Options:
--pid-file <PATH> PIDファイルの場所
-d, --detailed 詳細な状態情報を表示する
index - プロジェクトをインデックス化
codegraph index <PATH> [OPTIONS]
Arguments:
<PATH> プロジェクトディレクトリのパス
Options:
-l, --languages <LANGS> インデックス化する言語 (カンマ区切り)
--exclude <PATTERNS> 除外するパターン (gitignore形式)
--include <PATTERNS> これらのパターンのみを含める
-r, --recursive サブディレクトリを再帰的にインデックス化する
--force 再インデックス化を強制する
--watch 変更を監視する
--workers <N> 並列ワーカーの数 (デフォルト: 4)
search - インデックス化されたコードを検索
codegraph search <QUERY> [OPTIONS]
Arguments:
<QUERY> 検索クエリ
Options:
-t, --search-type <TYPE> 検索タイプ (semantic|exact|fuzzy|regex|ast)
-l, --limit <N> 最大結果数 (デフォルト: 10)
--threshold <FLOAT> 類似度閾値 0.0-1.0 (デフォルト: 0.7)
-f, --format <FORMAT> 出力形式 (human|json|yaml|table)
config - 設定を管理
codegraph config <ACTION> [OPTIONS]
Actions:
show 現在の設定を表示する
set <KEY> <VALUE> 設定値を設定する
get <KEY> 設定値を取得する
reset デフォルトにリセットする
validate 設定を検証する
Options:
--json JSON形式で出力する (showの場合)
-y, --yes 確認をスキップする (resetの場合)
stats - 統計情報を表示
codegraph stats [OPTIONS]
Options:
--index インデックスの統計情報を表示する
--server サーバーの統計情報を表示する
--performance パフォーマンスメトリクスを表示する
-f, --format <FMT> 出力形式 (table|json|yaml|human)
clean - リソースをクリーンアップ
codegraph clean [OPTIONS]
Options:
--index インデックスデータベースをクリーンアップする
--vectors ベクトル埋め込みをクリーンアップする
--cache キャッシュファイルをクリーンアップする
--all すべてのリソースをクリーンアップする
-y, --yes 確認プロンプトをスキップする
⚙️ 設定
設定ファイルの構造
.codegraph/config.tomlファイルを作成します:
[general]
project_name = "my-project"
version = "1.0.0"
log_level = "info"
[indexing]
languages = ["rust", "python", "typescript"]
exclude_patterns = ["**/node_modules/**", "**/target/**", "**/.git/**"]
include_patterns = ["src/**", "lib/**"]
recursive = true
workers = 4
watch_enabled = false
incremental = true
[embedding]
model = "openai"
dimension = 1536
batch_size = 100
cache_enabled = true
cache_size_mb = 500
[vector]
index_type = "flat"
nprobe = 10
similarity_metric = "cosine"
[database]
path = "~/.codegraph/db"
cache_size_mb = 128
compression = true
write_buffer_size_mb = 64
[server]
default_transport = "stdio"
http_host = "127.0.0.1"
http_port = 3000
enable_tls = false
cors_enabled = true
max_connections = 100
[performance]
max_file_size_kb = 1024
parallel_threads = 8
memory_limit_mb = 2048
optimization_level = "balanced"
環境変数
export CODEGRAPH_LOG_LEVEL=debug
export CODEGRAPH_DB_PATH=/custom/path/db
export CODEGRAPH_EMBEDDING_MODEL=local
export CODEGRAPH_HTTP_PORT=8080
埋め込みモデルの設定
OpenAI埋め込み
[embedding.openai]
api_key = "${OPENAI_API_KEY}"
model = "text-embedding-3-large"
dimension = 3072
ローカル埋め込み
[embedding.local]
model_path = "~/.codegraph/models/codestral.gguf"
device = "cpu"
context_length = 8192
📚 ユーザーワークフロー
ワークフロー1: 完全なプロジェクトのセットアップと分析
codegraph init --name my-awesome-project
codegraph config set embedding.model local
codegraph config set performance.optimization_level speed
codegraph index . --languages rust,python --recursive
codegraph start http --port 3000 --daemon
codegraph search "database connection" --limit 20
codegraph stats --index --performance
ワークフロー2: ウォッチモードでの継続的な開発
codegraph index . --watch --workers 8 &
codegraph start dual --daemon
codegraph status --detailed
codegraph search "TODO" --search-type exact
ワークフロー3: AIツールとの統合
codegraph start stdio
cat > ~/.codegraph/mcp-config.json << EOF
{
"name": "codegraph-server",
"version": "1.0.0",
"tools": [
{
"name": "analyze_architecture",
"description": "Analyze codebase architecture"
},
{
"name": "find_patterns",
"description": "Find code patterns and anti-patterns"
}
]
}
EOF
ワークフロー4: 大規模コードベースの最適化
codegraph config set performance.memory_limit_mb 8192
codegraph config set vector.index_type ivf
codegraph config set database.compression true
codegraph index /path/to/large/project \
--workers 16 \
--exclude "**/test/**,**/vendor/**"
codegraph search "class.*Controller" --search-type regex --limit 100
🔌 統合ガイド
Claude Desktopとの統合
- Claude Desktopの設定に追加します:
{
"mcpServers": {
"codegraph": {
"command": "codegraph",
"args": ["start", "stdio"],
"env": {
"CODEGRAPH_CONFIG": "~/.codegraph/config.toml"
}
}
}
}
- Claude Desktopを再起動してMCPサーバーを読み込みます。
VS Codeとの統合
- VS Code用のMCP拡張機能をインストールします。
- VS Codeの設定に追加します:
{
"mcp.servers": {
"codegraph": {
"command": "codegraph",
"args": ["start", "stdio"],
"rootPath": "${workspaceFolder}"
}
}
}
API統合
import requests
import json
base_url = "http://localhost:3000"
response = requests.post(f"{base_url}/index", json={
"path": "/path/to/project",
"languages": ["python", "javascript"]
})
response = requests.post(f"{base_url}/search", json={
"query": "async function",
"limit": 10
})
results = response.json()
CI/CDでの使用
name: CodeGraph Analysis
on: [push, pull_request]
jobs:
analyze:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- name: Install CodeGraph
run: |
cargo install codegraph-mcp
- name: Index Codebase
run: |
codegraph init --non-interactive
codegraph index . --languages rust,python
- name: Run Analysis
run: |
codegraph stats --index --format json > analysis.json
- name: Upload Results
uses: actions/upload-artifact@v2
with:
name: codegraph-analysis
path: analysis.json
🔧 トラブルシューティング
一般的な問題と解決策
問題: サーバーが起動しない
解決策:
lsof -i :3000
codegraph stop --force
codegraph start http --port 3001
問題: インデックス化が遅い
解決策:
codegraph index . --workers 16
codegraph index . --exclude "**/node_modules/**,**/dist/**"
codegraph config set indexing.incremental true
問題: インデックス化中にメモリ不足
解決策:
codegraph config set embedding.batch_size 50
codegraph config set performance.memory_limit_mb 1024
codegraph index . --streaming
問題: ベクトル検索の結果が不十分
解決策:
codegraph search "query" --threshold 0.5
codegraph config set embedding.model openai
codegraph index . --force
codegraph search "query" --search-type fuzzy
**解決策:**
```bash
export CODEGRAPH_LOCAL_MODEL=sentence-transformers/all-MiniLM-L6-v2
export HF_TOKEN=your_hf_access_token
ls -lah ~/.cache/huggingface
問題: ローカル埋め込みが遅い
解決策:
### デバッグモード
トラブルシューティングのためにデバッグログを有効にします:
```bash
# デバッグログレベルを設定
export RUST_LOG=debug
codegraph --verbose index .
# ログを確認
tail -f ~/.codegraph/logs/codegraph.log
ヘルスチェック
codegraph status --detailed
codegraph config validate
codegraph test db
codegraph test embeddings
🤝 コントリビュート
コントリビューションを歓迎します!詳細については、コントリビュートガイドを参照してください。
開発環境のセットアップ
git clone https://github.com/jakedismo/codegraph-cli-mcp.git
cd codegraph-cli-mcp
cargo install cargo-watch cargo-nextest
cargo nextest run
cargo watch -x check -x test
📄 ライセンス
このプロジェクトはMITおよびApache 2.0ライセンスのデュアルライセンスです。詳細については、LICENSE-MITおよびLICENSE-APACHEを参照してください。
🙏 謝辞
CodeGraphチームによる愛で作られました ❤️