codeseeker について
CodeSeeker は、AI コーディングアシスタント向けのコードインテリジェンス MCP サーバーです。BM25、ベクトル埋め込み、RAPTOR のディレクトリ要約、グラフ拡張を 1 つの検索ツールにまとめています。単純な文字列一致を超えてコードベースを理解させたい開発者を対象としています。
主な機能
- 01BM25 とベクトル埋め込みを組み合わせたハイブリッド検索
- 02AST 解析したインポートから構築するナレッジグラフ
- 03インポート、呼び出し、継承関係のグラフ探索
- 04未使用エクスポートと重複コードの分析
- 05プロジェクトのコーディング規約の自動検出
活用シーン
- 01不慣れなリポジトリで認証ロジックを意味から検索
- 02特定ファイルの依存元と依存先の確認
- 03未使用エクスポートと孤立ファイルの検出
MCP 対応
本プロジェクトは MCP サーバーであり、単一の codeseeker ツールを MCP クライアントに公開します。action パラメーターで検索、シンボル参照、グラフ探索、分析、インデックス操作を振り分けます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CodeSeeker
AI コーディングアシスタント向けの4層ハイブリッド検索とナレッジグラフです。
BM25 + ベクトル埋め込み + RAPTOR ディレクトリ要約 + グラフ拡張を単一の MCP ツールに統合し、Claude、Copilot、Cursor にコードベースを的確に理解させます。
Claude Code、GitHub Copilot(VS Code 1.99+)、Cursor、Windsurf、Claude Desktopに対応しています。
インデックス作成は1つのコマンドで完了し、その後は Claude Code プラグインが同期を維持します。
PragmaWorks が Generative Specification の一環として開発しました。これは、AI を使ってぶれのないソフトウェアを構築するための 規律です。2つの姉妹 MCP サーバーがこのサーバーと連携し、それぞれ同じ問題の異なる半分を解決します。
| アシスタントに提供するもの | |
|---|---|
| CodeSeeker(本プロジェクト) | どこにあるか — コードのセマンティック検索とナレッジグラフ |
Chronicle npm i -g chronicle-mcp | これまでに何が起きたか — コンテキストのリセット後も保持される階層型メモリ |
Forgecraft npm i -g forgecraft-mcp | どのように構築すべきか — SOLID、テスト、アーキテクチャ、CI/CD の標準 |
これらは独立しているため、1つだけでも、3つすべてでもインストールできます。
これが不要になるとき
CodeSeeker は検索の問題を解決しますが、その問題は小さくなりつつあります。
実際に使えるハーネスを備えた仕様駆動のループ、つまり、ステートレスなモデルが仕様から導出できるほど精密な仕様と、稼働中の システムに対して結果を検証する品質ゲートを使っている場合、あるいは意図駆動のループを使っている場合、アシスタントには、そうでなければ自ら探しに行かなければならない構造があらかじめ渡されています。多数のエンドポイントにまたがって処理を広げるのではなく、アクションを振り分けるセンチネルツールを使えば、検索する必要はさらに減ります。より優れたナビゲーション能力と、より大きな実効コンテキストを備えた最先端モデルによって、その必要性はさらに低下します。ある段階を過ぎると、自分のコードに対するセマンティック検索はボトルネックではなくなり、このサーバーをアンインストールしても気づかないほどになります。
それは欠陥ではなく、意図した結果です。うまく機能する手法は、いずれ自らの足場を不要にします。ただし、ほとんどのチームはそこから始めるわけではありません。プロセスが整うまでは、CodeSeeker がより安価な代替手段となります。規律の代わりに、コマンド1つで済みます。
代替手段ではなくプロセスを選ぶ場合は、フィールドガイドをご覧ください。 Generative Specification — Field Guide(PDF)。
問題
AI アシスタントは強力なエディターですが、コード内を観光客のように探索します。
- Grep が見つけるのはテキストであり、意味ではありません。「authentication logic を探して」と指定すると、「auth」という単語を含むすべてのファイルが返されます
- ファイルの読み込みは個別に行われます。Claude はファイルを見ても、その依存関係、呼び出し元、チームで確立したパターンまでは把握できません
- プロジェクトの記憶がありません。セッションのたびに、すべてが最初から始まります
CodeSeeker はこれを解決します。コードベースを一度インデックス化し、AI アシスタントが毎回のやり取りで利用できる、クエリ可能なナレッジグラフを提供します。
仕組み
すべてのクエリで、4段階のパイプラインが実行されます。
Query: "find JWT refresh token logic"
│
▼ Stage 1 — Hybrid retrieval
┌─────────────────────────────────────────────────────┐
│ BM25 (exact symbols, camelCase tokenized) │
│ + │
│ Vector search (384-dim Xenova embeddings) │
│ ↓ │
│ Reciprocal Rank Fusion: score = Σ 1/(60 + rank_i) │
│ Top-30 results, including RAPTOR directory nodes │
└─────────────────────────────────────────────────────┘
│
▼ Stage 2 — RAPTOR cascade (conditional)
┌─────────────────────────────────────────────────────┐
│ IF best directory-summary score ≥ 0.5: │
│ → narrow results to that directory automatically │
│ ELSE: all 30 results pass through unchanged │
│ Effect: "what does auth/ do?" scopes to auth/ │
│ "jwt.ts decode function" bypasses this │
└─────────────────────────────────────────────────────┘
│
▼ Stage 3 — Scoring and deduplication
┌─────────────────────────────────────────────────────┐
│ Dedup: keep highest-score chunk per file │
│ Source files: +0.10 (definition sites matter) │
│ Test files: −0.15 (prevent test dominance) │
│ Symbol boost: +0.20 (query token in filename) │
│ Multi-chunk: up to +0.30 (file has many hits) │
└─────────────────────────────────────────────────────┘
│
▼ Stage 4 — Graph expansion
┌─────────────────────────────────────────────────────┐
│ Top-10 results → follow IMPORTS/CALLS/EXTENDS edges │
│ Structural neighbors scored at source × 0.7 │
│ Avg graph connectivity: 20.8 edges/node │
└─────────────────────────────────────────────────────┘
│
▼
auth/jwt.ts (0.94), auth/refresh.ts (0.89), ...
ナレッジグラフは、インデックス作成時に AST で解析したインポート情報から構築されます。これにより、graph アクション、未使用コードの検出、すべての検索におけるグラフ拡張が実現します。
他との違い
| アプローチ | 強み | 制限事項 |
|---|---|---|
| Grep / ripgrep | 高速で汎用的 | 意味を理解できない |
| ベクトル検索のみ | 類似するコードを見つける | 構造上の関係を見落とす |
| Serena | 正確な LSP シンボルナビゲーション、30 以上の言語に対応 | セマンティック検索やファイルをまたいだ推論には対応していない |
| Codanna | 高速なシンボル検索、優れた呼び出しグラフ | セマンティック検索には JSDoc が必要です。ドキュメント化されていないコードには埋め込み表現が作られず、BM25、RAPTOR には対応していません。Windows 対応は実験的です |
| CodeSeeker | BM25 と埋め込み表現の融合、RAPTOR、グラフ、コーディング規約、マルチ言語 AST | 初回のインデックス作成が必要です(30 秒〜5 分) |
LSP ツールではできないこと:
- 「このようなエラーを処理するコードを見つけて」 → セマンティックなパターン検索
- 「このプロジェクトではどのような検証方法を使っていますか?」 → コーディング規約を自動検出
- 「認証に関係するものをすべて表示して」 → 間接的な依存関係をまたいだグラフ探索
ベクトル検索のみでは見落とすもの:
- 直接的なインポート/エクスポートの連鎖
- クラスの継承階層
- どのファイルが実際にどのファイルに依存しているか
インストール
推奨:一度インストールして、一度設定する
npm install -g codeseeker
claude mcp add codeseeker --scope user -e CODESEEKER_STORAGE_MODE=embedded -- codeseeker serve --mcp
--scope user を指定すると、現在のプロジェクトだけでなく、開くすべてのプロジェクトで利用できるようになります。
npx -y ではなくグローバルインストールを推奨する理由: このパッケージを一度も使用したことのないマシンでは、サーバーが応答する前に npx がパッケージをダウンロードし、ネイティブ依存関係をビルドします。MCP ハンドシェイクが完了するまでに、実測で13.7 秒かかりました。それより早く処理を打ち切るクライアントでは、接続エラーとして報告されます。グローバルインストールなら759 ミリ秒で応答します。ダウンロードは、時間に余裕があるときに一度だけ行われます。
npx(インストール不要)
ポータブルで、パッケージがキャッシュされていれば問題なく使えます。初回起動には時間がかかります。
{
"mcpServers": {
"codeseeker": {
"command": "npx",
"args": ["-y", "codeseeker", "serve", "--mcp"],
"env": { "CODESEEKER_STORAGE_MODE": "embedded" }
}
}
}
これを MCP 設定ファイルに追加し(クライアントごとの場所はこちらを参照)、エディターを再起動してください。
その他のエディター
npm install -g codeseeker
codeseeker install --vscode # or --cursor, --windsurf, --vs
🔌 Claude Code プラグイン
Claude Code CLI ユーザー向けです。自動同期フックとスラッシュコマンドが追加されます。
/plugin install codeseeker@github:jghiringhelli/codeseeker#plugin
スラッシュコマンド:/codeseeker:init、/codeseeker:reindex
☁️ Devcontainers / GitHub Codespaces
{
"name": "My Project",
"image": "mcr.microsoft.com/devcontainers/javascript-node:18",
"postCreateCommand": "npm install -g codeseeker && codeseeker install --vscode"
}
✅ 確認
AI アシスタントに次のように尋ねてください:「利用できる CodeSeeker ツールは何ですか?」
codeseeker という名前のツールが 1 つ表示されます。これは意図的な設計です。action ルーティングキーを使って 1 つのツールにまとめることで、リクエストごとのトークンオーバーヘッドを低く抑えています(ADR-002)。アクションは search、sym、graph、analyze、index です。
高度なインストールオプション
📋 クライアント別 MCP 設定
MCP 設定 JSON はすべてのクライアントで共通です。異なるのはファイルの場所だけです。
| クライアント | 設定ファイル |
|---|---|
| VS Code(Claude Code / Copilot) | プロジェクト内の .vscode/mcp.json、またはグローバルの ~/.vscode/mcp.json |
| Cursor | プロジェクト内の .cursor/mcp.json |
| Claude Desktop | ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)または %APPDATA%\Claude\claude_desktop_config.json(Windows) |
| Windsurf | プロジェクト内の .windsurf/mcp.json |
{
"mcpServers": {
"codeseeker": {
"command": "npx",
"args": ["-y", "codeseeker", "serve", "--mcp"]
}
}
}
🖥️ CLI の単独使用(AI アシスタントなし)
npm install -g codeseeker
cd your-project
codeseeker init
codeseeker -c "how does authentication work in this project?"
CodeSeeker が公開する MCP ツールは codeseeker 1 つだけです。action で動作を選び、対応するネストされたパラメーターグループのみを指定します。
codeseeker({ action, project, search?|sym?|graph?|analyze?|index? })
必ず project(プロジェクトの絶対パス)を渡してください。MCP サーバーは作業ディレクトリを検出できません。
| action | Parameters | What It Does |
|---|---|---|
search | search:{q} | ハイブリッド検索:BM25 とベクトル埋め込みを RRF で統合し、その後グラフを展開します。抽象的なクエリでは RAPTOR ディレクトリ要約が表示されます |
search | search:{q, type:"vector"} | 埋め込みのコサイン類似度のみを使った検索 |
search | search:{q, type:"fts"} | CamelCase トークン化を使った BM25 テキスト検索のみ |
search | search:{q, full:true} | 各検索結果にコードスニペットを含めます(デフォルト:要約のみ) |
search | search:{q, exists:true} | 簡易的な有無の確認 — {found, count, top_file} を返します |
sym | sym:{name} | 名前でクラス/関数を検索し、グラフ上の隣接要素を表示します |
graph | graph:{seed, depth, rel, dir} | ファイルを起点にナレッジグラフをたどります(インポート、呼び出し、継承) |
graph | graph:{q} | 同じ操作を行いますが、まず意味的に起点ファイルを検索します |
analyze | analyze:{kind:"standards"} | プロジェクトで検出されたパターン(検証、エラー処理)を表示します |
analyze | analyze:{kind:"duplicates"} | 重複または類似するコードブロックを検索します |
analyze | analyze:{kind:"dead_code"} | 未使用のエクスポート、孤立ファイル、結合上の問題を検出します |
index | index:{op:"init", path} | プロジェクトのインデックスを構築します(1 回実行が必要です — 以下を参照) |
index | index:{op:"sync", changes} | 指定したファイルのインデックスを更新します |
index | index:{op:"exclude", paths} | インデックスからパスを除外/追加します |
index | index:{op:"status"} | インデックス済みプロジェクトとファイル/チャンク数を一覧表示します |
index | index:{op:"parsers"} | Tree-sitter パーサーを一覧表示/インストールします |
これらを手動で呼び出す必要はありません。Claude はコードの検索や関連性の分析時に自動で使用します。
インデックス作成の仕組み
事前にインデックスを作成する必要はありません。 CodeSeeker がまだ認識していないプロジェクトを検索すると、自動的にインデックス作成が始まり、そのことが通知されます。インデックス作成はバックグラウンドで実行されるため、アシスタントを待たせずに呼び出しはすぐに戻ります。
User: "Find the authentication logic"
│
▼
┌────────────────────────────────────────────────────────┐
│ Claude calls codeseeker({action:"search"}) │
│ │ │
│ ▼ │
│ Project indexed? ──No──► starts indexing, returns │
│ │ {status:"indexing_started"} │
│ Yes │
│ ▼ │
│ Return ranked results + confidence │
└────────────────────────────────────────────────────────┘
そのため、新しいプロジェクトについて最初に質問したときは、検索結果ではなく「インデックス作成を開始しました。少し待ってから再試行してください」と返されます。小規模なプロジェクトなら数秒、大規模なプロジェクトでは数分かかります。 推測せずに index({op:"status"}) で確認してください。
手動でインデックスを作成することもできます。大規模なリポジトリでは、待ち時間を都合のよいタイミングにできるため、手動での作成がおすすめです。
codeseeker({ action: "index", index: { op: "init", path: "/abs/path", name: "my-project" } })
codeseeker init # or, from the CLI
明示的な初期化で name を指定すると、自動処理では分からないプロジェクト名を登録できます。それ以外の場合、プロジェクトはディレクトリ名で登録されます。
インデックスを最新の状態に保つ
インデックスはスナップショットです。ファイルシステムは監視されないため、ファイルの変更後に最新の状態へ戻す方法は 3 つあります。
| 方法 | |
|---|---|
| Claude Code プラグイン | フックが各 Edit/Write の後に再同期し、git pull/checkout/merge の後には完全に同期します。手作業が不要なのはこの方法だけです。 |
| 手動 | 名前を指定したファイルには index({op:"sync", changes:[…]}) を、大規模な外部変更の後には index({op:"sync", full_reindex:true}) を実行します。 |
| 通知による検出 | 検索結果にすでに存在しないファイルが含まれる場合、stale_index を返し、欠落ファイルと同期方法を示します。これは推測ではなく確かな証拠です。タイムスタンプでは実際に変更があったかどうかは分かりません。 |
プラグインを使わない場合、古くなったインデックスでも検索結果は返され続けます。ただし、その結果は以前のコードに基づくものです。これを知らせるのが stale_index シグナルです。
検索品質の研究
📊 コンポーネントのアブレーション研究(v2.0.0) — 各検索レイヤーの影響を測定
### セットアップ実際の2つのコードベースを対象とした、手作業でラベル付けされた18件のクエリ:
| コーパス | 言語 | ファイル数 | クエリ数 | クエリの種類 |
|---|---|---|---|---|
| Conclave | TypeScript(pnpm モノレポ) | 201 | 10 | シンボル検索、複数ファイルにまたがるチェーン、対象範囲外 |
| ImperialCommander2 | C# / Unity | 199 | 8 | クラス検索、コントローラーの接続、ファイル I/O |
各クエリには、1つ以上の mustFind ターゲット(ファイル名の完全一致)と、省略可能な mustNotFind ターゲット(対象範囲の漏れのチェック)があります。クエリはソースから構築した実際のインデックスに対して実行されました。実際の Xenova エンベディング、実際のグラフ、実際の RAPTOR L2 ノードを使用し、本番環境の条件を反映しています。
指標:MRR(平均逆順位)、P@1(1位の適合率)、R@5(5位までの再現率)、F1@3。
アブレーション結果
| 構成 | MRR | P@1 | P@3 | R@5 | F1@3 | 備考 |
|---|---|---|---|---|---|---|
| ハイブリッドベースライン(BM25 + エンベディング + RAPTOR、グラフなし) | 75.2% | 61.1% | 29.6% | 91.7% | 44.4% | 本番環境のデフォルト |
| + グラフ1ホップ | 74.9% | 61.1% | 29.6% | 91.7% | 44.4% | 順位への影響は±0%、構造上の隣接ノードを追加 |
| + グラフ2ホップ | 74.9% | 61.1% | 29.6% | 91.7% | 44.4% | 無関係なクエリで対象範囲の漏れが発生 |
| RAPTOR なし(グラフ1ホップ) | 74.9% | 61.1% | 29.6% | 91.7% | 44.4% | RAPTOR の寄与は +0.3% |
各レイヤーの実際の役割
BM25 + エンベディングの融合(RRF)
中核となる仕組みです。ランキング品質の約94%を単独で担います。BM25 は完全一致するシンボル名や camelCase のトークンを検出し、ベクトルエンベディングは名前が異なる場合の意味的な類似性を捉えます。手作業で重みを調整することなく、Reciprocal Rank Fusion で両方のシグナルを融合します。
RAPTOR(階層型ディレクトリ要約)
フォルダー内のすべてのファイルのエンベディングを平均プーリングして、ディレクトリごとのエンベディングノードを生成します。後処理フィルターとして機能します。ディレクトリ要約のクエリに対するスコアが 0.5 以上の場合、結果をそのディレクトリ内のファイルに絞り込みます。測定された寄与は、シンボルクエリにおける MRR +0.3% です。控えめに動作し、ディレクトリが明らかに一致する場合にのみ適用されます。本来の価値は、このベンチマークには含まれていない 抽象的なクエリ(「payments モジュールは何をするのか?」など)で発揮されます。そのようなクエリでは、コードベース全体に結果が広く分散するのを防ぎます。
ナレッジグラフ(インポート/依存関係のエッジ)
TS と C# のコードベース全体で、ファイルあたりの平均接続数はファイル間エッジ20.8本です。測定されたランキングへの影響は、1ホップ展開で MRR ±0% です。セマンティックレイヤーがすでに適切なファイルを見つけるため、グラフによって MRR は変わりません。グラフの隣接ノードは、通常すでに上位15件に含まれています。グラフの価値は構造面にあります。analyze dependencies アクションと明示的な graph 検索タイプにより、エンベディングだけでは提供できない、Claude がたどれるインポートチェーン、継承階層、依存関係の経路が得られます。
型に基づくブースト/ペナルティのスコアリング
ソースファイルにはスコアを +0.10 加算し、テストファイルには −0.15、ロックファイルとドキュメントには −0.05 のペナルティを適用します。これがないと、テストファイルはソース内のすべてのシンボルをインポートして使用するため、シンボル完全一致のクエリでは integration.test.ts が dag-engine.ts より上位に表示されます。このペナルティにより、テストファイルを結果から除外することなく、その順位を補正します。
モノレポのディレクトリ除外に関する修正
v1.12.0 で最も影響の大きかった変更です。デフォルトの除外リストから packages/ を削除しました。すべてのソースが packages/ 以下にある pnpm/yarn/lerna モノレポでは、この除外によってすべてのソースファイルが気づかれないまま除外されていました。この変更の効果として、Conclave モノレポのベンチマークで MRR が 10% → 72% に向上しました。
既知の制限事項
| クエリ | 対象 | 問題 | 根本原因 |
|---|---|---|---|
cv-prompts | orchestrator.ts | 2 ホップのグラフでもランク 97 以上 | prompt-builder.test.ts が意味的に prompt-builder.ts より高いスコアになり、ソースファイルがトップ 10 に入らないため、そこから orchestrator.ts までグラフをたどれません。ファイルをまたぐクエリでテストファイルが優先されます。 |
cv-exec-mode | types.ts | ランク 11~12 | types.ts は型をエクスポートするだけのファイルで、キーワード密度が低いです。R@5(ランク ≤ 15)以内で見つかりました。 |
ベンチマークスクリプト
次のコマンドで再現できます:
npm run build
node scripts/real-bench.js
C:\workspace\claude\conclave と C:\workspace\ImperialCommander2 がローカルに存在する必要があります(または、scripts/real-bench.js のパスを更新してください)。
自動検出されるコーディング規約
CodeSeeker はコードベースを分析し、パターンを抽出します:
{
"validation": {
"email": {
"preferred": "z.string().email()",
"usage_count": 12,
"files": ["src/auth.ts", "src/user.ts"]
}
},
"react-patterns": {
"state": {
"preferred": "useState<T>()",
"usage_count": 45
}
}
}
検出されるパターンのカテゴリ:
- validation:Zod、Yup、Joi、validator.js、カスタム正規表現
- error-handling:API エラーレスポンス、try-catch パターン、カスタム Error クラス
- logging:Console、Winston、Bunyan、構造化ログ
- testing:Jest/Vitest の設定、アサーションパターン
- react-patterns:フック(useState、useEffect、useMemo、useCallback、useRef)
- state-management:Redux Toolkit、Zustand、React Context、TanStack Query
- api-patterns:Fetch、Axios、Express ルート、Next.js API ルート
Claude が新しいコードを記述するときは、新しい規約を作り出すのではなく、既存の規約に従います。
インデックス除外の管理
Claude がインデックスに含めるべきでないファイル(Unity の Library フォルダー、ビルド出力、生成ファイルなど)を検出した場合、動的に除外できます:
// Exclude Unity Library folder and generated files
codeseeker({
action: "index",
project: "/abs/path/to/my-unity-game",
index: {
op: "exclude",
exclude_op: "exclude",
paths: ["Library/**", "Temp/**", "*.generated.cs"],
reason: "Unity build artifacts"
}
})
除外設定は .codeseeker/exclusions.json に保存され、再インデックス時に自動的に適用されます。
コードクリーンアップツール
CodeSeeker は、重複コードの検索やデッドコードの検出によって、コードベースをクリーンに保つのに役立ちます。
重複コードの検索
統合できる類似コードブロックを検索するよう Claude に依頼します:
"Find duplicate code in my project"
"Are there any similar functions that could be merged?"
"Show me copy-pasted code that should be refactored"
CodeSeeker はベクトル類似度を使って、完全一致だけでなく、意味的に類似するコードを検索します。次のようなものを検出します:
- わずかな違いがあるコピー&ペーストされた関数
- ファイル間で類似するバリデーションロジック
- ユーティリティに抽出できる繰り返しパターン
デッドコードの検索
安全に削除できる未使用コードを特定するよう Claude に依頼します:
"Find dead code in this project"
"What functions are never called?"
"Show me unused exports"
CodeSeeker はナレッジグラフを分析し、次のものを検索します:
- 一度もインポートされていないエクスポート済み関数/クラス
- 呼び出し元のない内部関数
- 依存関係が参照されていない孤立ファイル
ワークフローの例:
User: "Use CodeSeeker to clean up this project"
Claude: I'll analyze your codebase for cleanup opportunities.
Found 3 duplicate code blocks:
- validateEmail() in auth.ts and user.ts (92% similar)
- formatDate() appears in 4 files with minor variations
- Error handling pattern repeated in api/*.ts
Found 2 dead code files:
- src/utils/legacy-helper.ts (0 imports)
- src/services/unused-service.ts (exported but never imported)
Would you like me to:
1. Consolidate the duplicate validators into a shared utility?
2. Remove the dead code files?
言語サポート
すべての言語がインデックス化され、検索可能です。チャンク分割と埋め込みはパーサーに依存しません。パーサーによって変わるのはナレッジグラフ、つまり CodeSeeker がシンボルを宣言としてどれだけ正確に把握し、何が何に依存しているかをどれだけ正確に把握するかです。
| 言語 | 使用するパーサー | 関係の抽出 |
|---|---|---|
TypeScript, JavaScript (.ts .tsx .js .jsx .mts .cts .mjs .cjs) | Babel AST | 優秀 |
| Python | Tree-sitter AST | 優秀 |
| C# | Tree-sitter AST | 優秀 |
| Java | Tree-sitter AST | 良好 — Python と同じパーサーですが、測定は未実施です(Java のコーパスがありません) |
| Go | Regex | 良好 — パッケージと関数を抽出しますが、呼び出しグラフはありません |
| Rust, C/C++, Ruby, PHP, その他すべて | Regex | 基本 |
Regex による抽出は、同じ機能の簡易版ではなく、実質的な制限があります。 宣言の形状から検出するため、通常とは異なる書き方は見逃し、宣言と呼び出しを区別できません。インポートのエッジは、Babel が解析する TypeScript と JavaScript では引き続き信頼できますが、呼び出しのエッジはすべての言語でヒューリスティックです。
上記の評価は、推測ではなく測定結果です。scripts/corpus-bench.js は実際の 7 つのプロジェクトをインデックス化し、scripts/graph-quality.js は生成された各グラフのうち、実際の宣言である可能性が高いものの割合を報告します。Java はコーパスに Java プロジェクトがないため独自の評価はありません。Python と同じ Tree-sitter のコードパスを共有しており、主張できるのはそのことだけです。
4 つの RealWorld Conduit 実装で測定しました。同じアプリケーションを 4 回実装したものなので、実装間の差はタスクの難易度ではなく言語処理によるものです。30 件のラベル付きクエリに対する平均逆順位は、TypeScript が 83.3%、Python が 81.5%、JavaScript が 77.1%、C# が 70.5% です。
使用言語のパーサーを追加する
プロジェクトの大部分が Go、Rust、C++、または Ruby であれば、その言語の Tree-sitter 文法をインストールできます。
npm install -g tree-sitter-go # or tree-sitter-rust, tree-sitter-cpp, …
次に、アシスタントに依頼するか、以下を実行します。
codeseeker({ action: "index", project: "/abs/path", index: { op: "parsers", list_available: true } })
応答では、各パーサーが wired: true または wired: false と示されます。グラフビルダーが使用するのは wired: true と示されたパーサーだけです。false と示されたパーサーをインストールしても現時点では何も変わりません。改善に気づかずに終わることがないよう、応答でそのことを明示します。
現在対応済み:TypeScript、JavaScript、Python、Java、C#。その他は正直に false と表示されます。対応させるための変更は小規模で完結しています。ILanguageParser を実装するパーサーを extensionToParser に登録します(src/mcp/indexing-service.ts)。コントリビューションを歓迎します。scripts/graph-quality.js を使えば、新しいパーサーによってグラフが実際に改善したかを測定できるため、改善を推測ではなく実証できます。
インデックスを同期した状態に保つ
Claude Code プラグインを使用する場合
プラグインは、インデックスを自動的に更新するフックをインストールします。
| イベント | 動作 |
|---|---|
| Claude がファイルを編集する | インデックスが自動更新されます |
Claude が git pull/checkout/merge を実行する | 全体の再インデックスが開始されます |
/codeseeker:reindex を実行する | 手動で全体を再インデックスします |
何もする必要はありません。プラグインが自動的に同期を処理します。
MCP サーバーのみを使用する場合(Cursor、Claude Desktop)
- Claude が開始する変更:Claude は
codeseeker({action:"index", index:{op:"sync"}})を呼び出せます - 手動での変更:自動検出されません。定期的に再インデックスするよう Claude に依頼してください
同期の概要
| 構成 | Claude による編集 | Git 操作 | 手動編集 |
|---|---|---|---|
| プラグイン(Claude Code) | 自動 | 自動 | 手動 |
| MCP(Cursor、デスクトップ) | Claude に依頼 | Claude に依頼 | Claude に依頼 |
| CLI | 自動 | 自動 | 手動 |
CodeSeeker が最も役立つ場面
適しているケース:
- 1 万を超えるファイルがあり、Claude が関連するコードを見つけるのに苦労する大規模なコードベース
- Claude に従ってほしい既存のパターンが確立されているプロジェクト
- 複数のファイルにまたがる複雑な依存関係
- AI が生成するコードの一貫性を求めるチーム
あまり役立たないケース:
- 既存のコードがほとんどない新規プロジェクト
- 単一ファイルのスクリプト
- アーキテクチャを積極的に変更しているプロジェクト
アーキテクチャ
┌──────────────────────────────────────────────────────────┐
│ Claude Code │
│ │ │
│ MCP Protocol │
│ │ │
│ ┌──────────────────────▼──────────────────────────┐ │
│ │ CodeSeeker MCP Server │ │
│ │ ┌─────────────┬─────────────┬────────────────┐ │ │
│ │ │ Vector │ Knowledge │ Coding │ │ │
│ │ │ Search │ Graph │ Standards │ │ │
│ │ │ (SQLite) │ (SQLite) │ (JSON) │ │ │
│ │ └─────────────┴─────────────┴────────────────┘ │ │
│ └─────────────────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────┘
すべてのデータはローカルの .codeseeker/ に保存されます。外部サービスは必要ありません。
大規模なチーム(10 万ファイル以上、共有インデックス)では、サーバーモードで PostgreSQL と Neo4j をサポートしています。ストレージのドキュメントを参照してください。
技術的な内部構造の完全な説明(正確なスコア計算式、MCP ツールのスキーマ、グラフのエッジタイプ、RAPTOR のしきい値ロジック、パイプラインの各段階、分析の信頼度レベル)については、**技術アーキテクチャマニュアル**を参照してください。
トラブルシューティング
MCP サーバーに接続できない
- npm と npx が動作することを確認します:
npx -y codeseeker --version - MCP 設定ファイルの構文を確認します(有効な JSON であること、末尾にカンマがないこと)
- エディターまたは Claude アプリケーションを完全に再起動します
- Node.js がインストールされていることを確認します:
node --version(v18 以降が必要です)
インデックス作成が遅いように見える
大規模なプロジェクト(5 万ファイル以上)の初回インデックス作成には、5 分以上かかることがあります。2 回目以降はすぐに完了します。
Claude にツールが表示されない
- Claude に「利用できる CodeSeeker ツールを教えてください」と尋ねます
- ツールが表示されない場合は、MCP 設定ファイルが存在し、構文が正しいことを確認します
- IDE を完全に再起動します(ウィンドウを再読み込みするだけでは不十分です)
- IDE で Claude/Copilot の MCP 接続ステータスを確認します
それでも解決しない場合
問題を報告してください:GitHub の問題
ドキュメント
対応プラットフォーム
| クライアント | MCP サポート | 設定 |
|---|---|---|
| Claude Code (VS Code) | ✅ | .vscode/mcp.json またはプラグイン |
| GitHub Copilot (VS Code 1.99+) | ✅ | .vscode/mcp.json |
| Cursor | ✅ | .cursor/mcp.json |
| Windsurf | ✅ | .windsurf/mcp.json |
| Claude Desktop | ✅ | claude_desktop_config.json |
| Visual Studio | ✅ | codeseeker install --vs |
Claude Code と GitHub Copilot は同じ
.vscode/mcp.jsonを共有します。一度設定すれば、両方で動作します。
サポート
CodeSeeker が役に立った場合は、プロジェクトへのスポンサーをご検討ください。
ライセンス
Apache License 2.0。 LICENSE と NOTICE を参照してください。
商用利用を含め、あらゆる用途で無料で利用できます。企業規模や売上に関する制限はありません。Apache-2.0 は MIT よりも明示的な特許許諾を含むため、ここでは Apache-2.0 を採用しています。
チームで CodeSeeker を実行する
上記はすべて、ローカルでの単独開発者向けセットアップです。インデックスはお使いのマシン上の .codeseeker/ に保存され、外部に持ち出されることはありません。
チーム向けには、一元化されたデプロイ方法があります。組織のリポジトリを対象とする共有インデックス(PostgreSQL + pgvector、Neo4j)を使用することで、各エンジニアが同じコードのインデックスを個別に作成する必要がなくなり、グラフが 1 つのリポジトリで途切れることなく、サービス間にまたがるようになります。また、ローカルツールでは構造上把握できない情報、つまりコードベース全体でコードの理解が実際にどのように分散しているか、どこに知識のギャップがあるかも明らかにします。
チームに役立ちそうな場合は、お問い合わせください:https://pragmaworks.dev
CodeSeeker は、grep と埋め込みだけでは提供できないコードの理解を Claude にもたらします。
生成仕様の一部
**Generative Specification(GS)**を支える Apache-2.0 のツールです。GS とは、AI でソフトウェアを構築する際に、仕様から逸脱しないようにする分野です。ステートレスな AI が正しいコードを仕様から導き出せるほど精密な仕様を作成し、ハーネスで稼働中のシステムに対して検証します。
- 📄 ホワイトペーパー(無料公開):https://doi.org/10.5281/zenodo.21726017
- 📕 フィールドガイド — 短く実践的な入門ガイド:https://github.com/jghiringhelli/generative-specification/blob/main/docs/white-paper/GenerativeSpecification_FieldGuide.pdf
- 🧭 まずはこちら — 手法、ツール、利用者の声:https://pragmaworks.dev
- 🔨 The Forge — チーム向けの2日間のGS実践ワークショップ:https://forgeworkshop.dev
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。