CodeWeave Mcp について
CodeWeave Mcpは、コーディングエージェント向けにローカル索引から構造化されたコード検索を提供するMCPサーバーです。AST、呼び出しグラフ、型グラフ、ハイブリッドセマンティック検索を組み合わせ、7言語に対応します。
主な機能
- 01意味とキーワードによるコード検索
- 02AST・呼び出し・型グラフの構築
- 03ファイル監視と差分再インデックス
- 04索引の状態と言語別情報の確認
活用シーン
- 01大規模コードベースで関連関数を発見
- 02モノレポの複数ワークスペースを検索
- 03コード変更後にローカル索引を更新
MCP 対応
stdio経由で、セマンティック検索、再インデックス、索引状態のツールをMCPクライアントに公開します。Claude Code、VS Code、Cursorなどのクライアントに対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
@codeweave/mcp
ファイルをただダンプするのではなく、AI エージェントに構造化されたコード理解を提供します。
CodeWeave は、AI エージェントに低コストで精度の高いコードインテリジェンスを提供する MCP サーバーです。ファイル全体をコンテキストに流し込む代わりに、エージェントはローカルインデックス(AST、呼び出しグラフ、型グラフ、ハイブリッドセマンティック検索)を照会し、必要な情報だけを取得します。
トークンを減らし、関連性の高いコンテキストを増やし、より良い判断を実現します。
セマンティック検索パイプラインは、このシステムの中核です。ベクトル埋め込み、全文検索、構造密度スコアリングを組み合わせた6段階のハイブリッドエンジンです。Java モノリス、TypeScript モノレポ、Python ML パイプライン、Go マイクロサービスなど、大規模な本番コードベースで広範にテストされ、一貫して高い検索精度を実現しています。
現在も活発に開発中です。 新しいツールや改善を定期的にリリースしています。コントリビューションやフィードバックを歓迎します。
クイックスタート
cd your-project
npx @codeweave/mcp
以上です。セットアップウィザードがすべて処理します。
@codeweave/mcpをグローバルにインストールします- 必要に応じて Ollama をインストールします
- 埋め込みモデルをダウンロードします
- MCP クライアント(Claude Code、VS Code)を設定します
- プロジェクトをインデックス化します
注: 初回実行時には、Ollama と埋め込みモデルを一度ダウンロードする必要があります。数分かかりますが、必要なのは一度だけです。
Claude Code または VS Code でプロジェクトを開き、質問を始めましょう。
ツール
コード理解ワークフローに沿って整理された3つのツールです。
| ツール | 目的 |
|---|---|
semantic_search | 意味で検索します。正確な名前がわからなくても関数を見つけられます。密度ベースの再ランキングを備えた、ベクトルとキーワードのハイブリッド検索です。 |
reindex | インデックスの更新を手動で開始します。通常は不要です。ファイルウォッチャーが変更を検出すると自動で再インデックスします。 |
get_index_status | インデックスの健全性ダッシュボードです。ファイル数/関数数、埋め込みの状態、呼び出しグラフの統計、言語の内訳を確認できます。 |
仕組み
Source Code
│
▼
tree-sitter AST ───> Function Index (in-memory)
│
┌──────────┼──────────┐
▼ ▼ ▼
Call Graph Type Graph Embeddings
(JSON) (JSON) (LanceDB)
│ │ │
└──────────┼──────────┘
▼
3 MCP Tools ───> AI Agent
- 解析 — tree-sitter が7つの言語にわたるすべての関数、クラス、メソッド、インターフェースを抽出します
- 埋め込み — Qwen3-Embedding-0.6B がセマンティック検索用のベクトル埋め込みを生成します
- インデックス化 — LanceDB がベクトルを保存し、BM25 全文検索インデックスも併せて保持します
- グラフ化 — 呼び出しグラフは型を考慮した解決によって呼び出し元と呼び出し先を追跡します。型グラフは継承と実装を追跡します(ランキングとインデックス状態のレポートに活用されます)
- 監視 — ファイルウォッチャーが変更を検出し、影響を受けるファイルを段階的に再インデックスします
- 提供 — 3つのツールを MCP プロトコル(stdio)経由で公開し、インデックス化の完了前から利用できます
セマンティック検索
検索パイプラインこそが、CodeWeave の真価を発揮する部分です。単なるベクトル類似度ではなく、最も関連性が高く、重要なコードを見つけ出すよう設計された、多段階のシステムです。
6 段階のパイプライン:
- 名前の完全一致 — 関数名がわかっている場合の高速検索(スコア 0.95 以上)
- ベクトル検索 — クエリを埋め込み表現に変換し、意味的に類似した関数を検索します(再ランク付けの余裕を持たせるため、取得件数を 3 倍にします)
- 全文検索 — BM25 によるキーワードマッチングで、埋め込み表現では見つからない結果を検出します
- RRF による統合 — Reciprocal Rank Fusion により、スコアの調整を必要とせず、両方の結果リストを統合します
- 完全一致の加点 — 名前がクエリと一致する関数を優先します
- 密度による再ランク付け — 構造的なシグナルで情報密度を判定し、単純なコードの順位を下げます
密度スコアリングでは、言語に依存しない 7 つの構造的シグナルを使用します。
| シグナル | 測定内容 |
|---|---|
| 本体のサイズ | 大きな関数ほど多くの動作を担います(対数スケーリング) |
| Docstring の有無 | ドキュメントがあるコードは重要である可能性が高くなります |
| Docstring の充実度 | タグ、依存関係、副作用は、適切に保守されたコードであることを示します |
| パラメーター数 | パラメーターが多いほど、動作が複雑になります |
| 呼び出しグラフの中心性 | 多くの関数から呼び出される関数は、アーキテクチャの要となります |
| 可視性 | public > protected > private |
| 種類 | クラス > メソッド/関数 > インターフェース |
ペナルティを適用して、ノイズが検索結果を支配しないようにします。
- アクセサー(ゲッター/セッター) — 純粋なデータアクセスであり、動作を伴いません
- コンストラクター — パラメーターが多いとスコアが高くなりますが、実際には代入処理にすぎません
- テストファイル — 本体が大きくても、重要な動作を意味するとは限りません(テストを検索している場合を除く)
適切なフォールバック: Ollama が利用できない場合、検索は全文検索のみで実行されます。
これらのテクノロジーを選んだ理由
すべてのテクノロジーの選択は、ローカルで高速、設定不要なコード理解という中核的な目標に沿ったものです。
| テクノロジー | 理由 |
|---|---|
| tree-sitter | 7 つすべての言語に対応する単一の構文解析フレームワークです。成熟しており、高速で、実績も十分です。7 種類のパーサーを一から作成することなく、完全な AST にアクセスできます。 |
| LanceDB | 組み込み型ベクトルデータベースです。外部サーバーも Docker も設定も不要で、ディスク上のディレクトリだけで利用できます。単一のエンジンでベクトル検索と BM25 全文検索の両方をサポートします。 |
| Qwen3-Embedding-0.6B | 隠れた強みです。パラメーター数はわずか 0.6B ですが、コード理解では 10 倍のサイズのモデルに匹敵する埋め込み品質を実現します。Java のエンタープライズ向けモノリス、TypeScript のモノレポ、Python のデータパイプラインなど、大規模な本番コードベースでテストされており、一貫して優れた検索精度を発揮しています。Ollama 経由でローカルに実行でき、リアルタイムの再インデックス作成に十分な速度を備え、あらゆる開発者のマシンで使える軽量さです。 |
| RRF(Reciprocal Rank Fusion) | 情報検索の研究で実証された手法です。スコアの調整を必要とせず、異なるスコアリング方式(ベクトル類似度と BM25 の関連性)による順位付きリストを統合します。シンプルで、堅牢かつ効果的です。 |
| MCP Protocol | AI ツール連携の標準インターフェースです。1 つのサーバーで Claude Code、VS Code、Cursor、および MCP 互換のあらゆるクライアントに対応します。 |
対応言語
| 言語 | 関数 | 呼び出し | インポート | 型 | テスト検出 |
|---|---|---|---|---|---|
| Python | 関数、メソッド、クラス | 呼び出し箇所 | import/from-import | クラスの継承、型ヒント | pytest、unittest |
| TypeScript | 関数、アロー関数、メソッド、クラス、インターフェース | 呼び出し箇所 | 名前付き/デフォルト/名前空間インポート | implements、extends、メンバー型 | jest、vitest、playwright |
| JavaScript | (TypeScript と同じ) | (TypeScript と同じ) | (TypeScript と同じ) | (TypeScript と同じ) | jest、vitest、mocha |
| Go | 関数、メソッド(レシーバー)、構造体 | 呼び出し箇所 | import 宣言 | 暗黙のインターフェース、構造体 | testing、testify |
| Rust | 関数、メソッド(impl)、構造体、列挙型 | 呼び出し箇所 | use 宣言 | 型に対する impl Trait | #[test]、#[cfg(test)] |
| Java | メソッド、コンストラクター、クラス、インターフェース | メソッド呼び出し | import 宣言 | extends、implements | JUnit、Mockito、AssertJ |
| C# | メソッド、コンストラクター、クラス、構造体、インターフェース、レコード | 呼び出し | using ディレクティブ | 基底型、インターフェース実装 | NUnit、xUnit、Moq |
各言語パーサーは、次の機能も提供します。
- ノイズフィルタリング — 依存関係の分析から除外される標準ライブラリ呼び出し(例:
console.log、fmt.Println、System.out.println)の組み込みリスト - 構造ヒント — 密度スコアリングに利用される、AST で確認された分類(コンストラクター、抽象、ゲッター/セッター、テスト)
設定
CodeWeave は設定不要ですぐに使用できます。カスタマイズするには、.code-context/config.yaml を作成します。
workspaces:
- . # Root workspace
- clients/web # Web client
- clients/mobile # Mobile client
embedding:
model: "qwen3-embedding:0.6b" # Embedding model name
ollamaUrl: "http://localhost:11434" # Ollama API endpoint
dimensions: 1024 # Vector dimensions
batchSize: 50 # Embedding batch size
parser:
sourceRoot: "src" # Strip this prefix from module paths
ignore:
- "**/*.generated.*" # Additional ignore patterns
- "**/vendor/**"
search:
rrfK: 60 # RRF smoothing constant
expandCamelCase: true # Expand camelCase in search chunks
density:
enabled: true # Density-based reranking
accessorPenalty: 0.6 # Penalty for getters/setters
constructorPenalty: 0.7 # Penalty for constructors
testFilePenalty: 0.5 # Penalty for test files
watcher:
debounceMs: 500 # File change debounce
minIntervalMs: 2000 # Minimum reindex interval
indexing:
maxFileSizeKb: 500 # Skip files larger than this
CLI ツール
# Full project initialization (AST + embeddings + graphs)
codeweave-init [path] [--force] [--no-embed]
# Incremental reindex (only changed files)
codeweave-reindex [--all] [--files=path1,path2] [--stdin]
手動セットアップ
npx @codeweave/mcp を使わず、手順に沿ってセットアップする場合:
# 1. Install globally
npm install -g @codeweave/mcp
# 2. Install Ollama and pull the embedding model
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
ollama pull qwen3-embedding:0.6b
# 3. Index your project
cd your-project
codeweave-init
4. MCP クライアントを設定する
Claude Code — プロジェクトのルートに .mcp.json を追加します。
{
"mcpServers": {
"codeweave": {
"command": "codeweave-server"
}
}
}
VS Code — .vscode/mcp.json を追加します。
{
"servers": {
"codeweave": {
"command": "codeweave-server"
}
}
}
モノレポのサポート
CodeWeave は、マニフェストファイル(package.json、build.gradle、pom.xml、go.mod、Cargo.toml、pyproject.toml など)を検索し、モノレポ内のワークスペースを自動検出します。
my-project/
├── backend/build.gradle → workspace "backend"
├── mobile/package.json → workspace "mobile"
└── shared/package.json → workspace "shared"
各ワークスペースには、独立したインデックス、呼び出しグラフ、型グラフ、ベクトルストアが用意されます。ツールでは任意の workspace パラメーターを指定できます。省略すると、すべてのワークスペースが検索対象になります。
Git Worktree のサポート
CodeWeave は、Git worktree(Claude Code の /worktree を含む)を自動検出します。worktree で初めて起動すると、メインリポジトリのキャッシュをコピーして高速にウォームスタートします(30 秒以上ではなく約 2 秒)。その後、各 worktree は完全に独立したインデックスを保持します。
- 自動 — 設定は不要です
- 独立 — worktree の変更はメインリポジトリのキャッシュに影響しません
- 差分更新 — メインブランチと異なるファイルのみが再解析および再埋め込みされます
要件
- Node.js 20 以降
- Ollama — セマンティック検索の埋め込みに使用します。セットアップウィザードからインストールするか、ollama.com から手動でインストールしてください。Ollama がない場合、セマンティック検索は全文検索のみで動作します。
ステータス
CodeWeave は活発に開発中です。コアのインデックス作成パイプラインと 3 つすべてのツールは安定しており、対応する 7 言語すべての本番コードベースでテスト済みです。
フィードバック、バグ報告、貢献を歓迎します。github.com/semihkayan/codeweave-mcp で issue を作成してください。
ライセンス
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。