# コードインテリジェンスMCPサーバーの選び方

Canonical source: https://maguyva.ai/ja/guides/choosing-a-code-intelligence-mcp-server

License: text under [CC BY 4.0](https://creativecommons.org/licenses/by/4.0/); code samples under [MIT-0](https://opensource.org/license/mit-0); the Maguyva name, logos, brand assets and other code are not covered. Details: [maguyva.ai/license](https://maguyva.ai/license).

選ぶべきは、自分のコードについてエージェントが実際に抱く疑問に答えられるサーバーです。シンボルはどこで定義されているか、誰が呼び出しているか、変更すると何が壊れるか、そして名前を誰も覚えていない概念がどこにあるか。

そのためには、複数の種類の検索、出荷している言語の本物のパース、コミットに追従するインデックス、そしてクライアントが数分で終えられるセットアップが必要です。下の15分テストを、よく知っているリポジトリで試してください。どんな機能一覧よりも確かです。この一覧も含めて。

## 比較すべき点

どの候補にも同じ質問をし、その答えを自分のコードで確かめてください。機能一覧は主張にすぎません。自分のリポジトリで正しく答えられることが証拠です。

| 基準 | 確認すべき質問 | 確かめ方 |
|---|---|---|
| **検索モード** | セマンティック検索、構造（AST）検索、グラフ検索、完全一致のテキスト検索を組み合わせ、質問ごとに適切なモードへ振り分けますか？ 単一のモードでは、答えられない種類の質問がまるごと残ります。 | 種類ごとに1つずつ質問します。概念、コードの形、呼び出し元の一覧、そして正確なエラーメッセージ。 |
| **言語対応の深さ** | 出荷している各言語について、コードはシンボルと関係を持つASTにパースされますか、それともテキストとしてインデックスされるだけですか？ 長い言語リストが浅い対応を隠していることがあります。 | 自分の言語について公開されている機能フラグを確認し、各言語でシンボルを1つ検索します。 |
| **リポジトリの規模** | 最大のリポジトリでも、複数のリポジトリを同時に扱っても持ちこたえますか？ 結果はランク付けされ件数が抑えられていますか、それとも1つの巨大なファイルが答えを埋め尽くしますか？ | デモ用ではなく実在する最大のリポジトリをインデックスし、最初の役立つ答えまでの時間を計ります。 |
| **鮮度と同期** | インデックスは新しいコミットをどう知り、変更が検索できるまでどれくらいかかりますか？ 古いインデックスは、もう存在しないコードについて自信満々に答えます。 | 名前の変更をコミットし、新しい名前と古い名前の両方で検索します。 |
| **セキュリティとデータの扱い** | ソースコードはどこに保存され、何が第三者に送られ、学習に使われるのか。接続を解除すると何が削除されるのか。 | データの扱いに関するページを読みます。バッジではなく、名指しされた提供元と具体的な削除ルールを探してください。 |
| **クライアントごとのセットアップ** | チームが使うすべてのクライアントに文書化された設定があり、1つのエンドポイントですべてに対応できますか？ | チームがすでに使っているクライアントを2つ接続し、両方の所要時間を計ります。 |
| **料金体系** | 価格は公開されていますか？ 課金はシート単位、エージェント単位、ワークスペース単位のどれで、無料枠は実際の試用に十分ですか？ | 実際の構成で見積もります。実際に動かすエージェント、リポジトリ、インデックス行数で。 |
| **自分のコードでの実証** | 営業との打ち合わせなしに、今日、自分のリポジトリで試せますか？ | 試用の前に打ち合わせが必要なら、それもひとつの答えです。 |

### インデックスの置き場所

インデックスがどこにあるかより、何に答えられるかのほうが重要です。エージェントが必要とするのは、編集を計画するその瞬間に、正しいファイル、シンボル、呼び出し元の一覧です。だからこそ、どの候補も上の質問で、自分のコードを相手に評価してください。

## 15分で自分のリポジトリで試す

よく知っているリポジトリを使えば、どの答えもひと目で採点できます。修正が必要だった答えの数を数えておきましょう。

1. リポジトリを接続し、最初の検索が結果を返すまでにかかった時間を記録します。
2. コードとキーワードが重ならない概念的な質問をします。たとえば「期限切れのセッションはどこで処理している？」。引用されたファイルと行をすべて開きます。
3. シンボルを名前で1つ検索し、次にその呼び出し元を尋ねます。自分の知っている内容と一覧を比べます。
4. 変更予定の関数を選び、何がそれに依存しているかを尋ねます。その一覧が影響範囲です。壊れたときに検知するはずのテストと照らし合わせます。
5. 名前ではなくコードの形で尋ねます。たとえばすべてのルートハンドラー、あるいは特定のインターフェースを実装するすべてのクラス。
6. エラーメッセージのような正確な文字列を検索し、すべてのヒットが本物か確かめます。
7. 小さな名前変更をコミットし、インデックスが追いつくのを待ってから、両方の名前で検索します。
8. 修正の数を数えます。機能一覧に何が書かれていようと、修正が最も少なかったサーバーの勝ちです。

## 用語の定義

- **コードインテリジェンスMCPサーバー**: ソースコードをインデックスし、AIエージェントにツールとして公開するMCPサーバー。ファイル全体をプロンプトに貼り付ける代わりに、エージェントは質問し、ファイルパスと行番号付きのランク付けされた結果を受け取ります。
- **コードグラフ**: シンボル、ファイル、モジュールのつながりを表す地図。定義、参照、呼び出し、インポート、継承を含みます。すべてのファイルを読まなくても「これを使っているのは誰か」に答えられます。
- **影響範囲（ブラスト半径）**: シンボルが変わったときに影響を受けうるコード。その呼び出し元、依存元、それらをカバーするテストです。編集の前にそれを知ることこそ、グラフ検索の目的です。
- **AST検索**: 抽象構文木、つまりパースされたコードの構造を対象にした検索。特定のデコレーターが付いたすべての関数のように、コードを形で見つけます。これは単純なテキスト検索では確実にはできません。
- **セマンティック検索**: 埋め込みを使って意味で探す検索。コードと質問に共通する単語がひとつもなくても、説明に合うコードを見つけます。
- **完全一致のテキスト検索**: リテラルまたは正規表現による照合。エラーメッセージ、設定キー、すでに知っている識別子を探すのに適した道具です。

## Maguyvaの位置づけ

Maguyvaはホスト型のコードインテリジェンスMCPサーバーです。接続したGitHubリポジトリをインデックスし、エージェントに11個のMCPツールを提供します。どの結果にもファイルパスが添えられます。

- **検索**: セマンティック検索、構造検索、グラフ検索、完全一致のテキスト検索に加え、シンボル検索と、質問ごとに適切なモードを選ぶルーターツール。 (`intelligent_search`, `semantic_search`, `structural_search`, `text_pattern_search`, `find_symbol`, `dependency_search`, `analyze_dependencies`)
- **言語**: 285の言語とテキスト形式をインデックス。そのうち247はASTによる構造検索、282はシンボル抽出、151はグラフ関係に対応しています。深さは言語によって異なるので、自分の言語を確認してください。
- **鮮度**: コードが変わると、GitHubの同期ジョブを通じてインデックスが更新されます。
- **セットアップ**: リモートMCPエンドポイントは1つ。23の文書化済みクライアントについて、手順付きの設定があります。
- **料金**: 料金は公開されており、シート単位ではなくワークスペース単位です。Freeプランは3個のリポジトリと50,000行のインデックスに対応し、15分テストには十分です。
- **データの扱い**: 何をどこに保存し、何を埋め込み用に送信し、接続を解除したときに何を削除するかは、セキュリティページに明記されています。

現在、リポジトリはGitHubから接続します。コードが別の場所にある場合は、始める前に互換性ページを確認してください。

- [クイックスタートを始める](https://maguyva.ai/ja/docs/quickstart)
- [料金を見る](https://maguyva.ai/ja/pricing)
- [言語ごとの対応を確認する](https://maguyva.ai/ja/docs/compatibility)
- [データの扱いの詳細を読む](https://maguyva.ai/ja/security)
