mcpField
C
code-context

code-context

ローカル
github.com/infino-ai検索322 週間前に更新

code-context について

code-contextは、コーディングエージェント向けにコードやログなどのインデックス済みファイルを検索するMCPサーバーです。キーワード検索、セマンティック検索、SQL、リポジトリ横断の質問に対応し、ローカルとInfinoクラウドで処理します。

主な機能

  1. 01一致箇所と件数の高速検索
  2. 02キーワードと意味による複合検索
  3. 03インデックスへの読み取り専用SQL
  4. 04パス参照付きのリポジトリ横断質問
  5. 05コードやログなどのインデックス化

活用シーン

  1. 01コードレビューで呼び出し元を特定
  2. 02大規模コードベースの動作を調査
  3. 03コードとログ、テスト出力を横断検索
  4. 04複数リポジトリにまたがる質問

MCP 対応

MCPサーバーは`find`、`search`、`sql`、`ask`の4つのツールを公開します。`find`と通常の`sql`はローカルで動作し、セマンティック検索と`ask`はInfinoクラウドを利用します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"infino-ai-code-context": {
"command": "npx",
"args": [
"-y",
"@infino-ai/code-context"
],
"env": {
"CX_ROOT": "<CX_ROOT>",
"CX_INDEX_DIR": "<CX_INDEX_DIR>",
"CX_AUTO_SYNC": "<CX_AUTO_SYNC>",
"CX_NO_EMBED": "<CX_NO_EMBED>",
"CX_NO_RECEIPT": "<CX_NO_RECEIPT>"
}
}
}
}
起動コマンドnpx -y @infino-ai/code-context
設定が必要な環境変数
CX_ROOTRepository root to serve. Optional - defaults to the working directory the server is launched in.
CX_INDEX_DIRWhere the index lives. Optional - defaults to .infino/ inside the repository root.
CX_AUTO_SYNCSet to 0 to disable the background staleness sync that runs as queries arrive.
CX_NO_EMBEDSet (1/true/yes) for keyword-only mode - skip the vector stage entirely.
CX_NO_RECEIPTSet (1/true/yes) to turn off local usage accounting: the per-call receipt on results and the cx usage ledger. Optional - on by default, computed locally, nothing leaves the machine.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@infino-ai/code-context0.5.1

ツール

3

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
kintegerいいえ最大ヒット数。
pathstringいいえ検索するリポジトリルートの絶対パス。デフォルトではサーバーに設定されたルートを使用します。1つのセッションで複数のリポジトリを扱う場合は、対象のリポジトリを指定してください。
querystringはい検索対象の用語、フレーズ、または説明。

詳細

CI npm License: Apache-2.0

SuperGrep

AI コーディングエージェントのための検索 + 推論のオフロード。 同じ回答品質を保ちながら、エージェントがより速く、より低コストで答えを見つけられるようにします。特に安価なモデルで有用です。

infino.ai/supergrep で実際にお試しください - 実際のコードベースに質問を投げ、同じモデルが SuperGrep ありとなしでどう答えるかを、それぞれのコストと並べて確認できます。Supergrep は検索に Infino を使用しており、小規模言語モデルとインデックスを密接に統合し、オブジェクトストレージ上でスケーラブルなエージェント検索を実現します。

SuperGrep: お使いのマシンで find とプレーンな sql、Infino クラウドで search、セマンティック sql、ask、1 つのインデックスを両方の場所で

SuperGrep は、2 か所に保持された Infino インデックスに対して、エージェントに 4 つのツールを提供します。find とプレーンな sql は、キーワードインデックス上でお使いのマシンで実行されます。反対に、意味を持つもの - search、内部にランク付き検索を含む sql ステートメント、そして ask - は Infino クラウドで実行されるため、重い計算と埋め込みはノート PC 上に残りません。Infino は推論モデルもそのサービスに組み込んでいるため、複数の小規模モデルが同時にインデックスを処理し、見つけた行をエージェントに渡します。エージェントは推論を担い、回答を書き、いつ SuperGrep を使うかを判断します。設定は不要です。

4 つのツールを 1 行ずつ - これを読んでいるエージェント向け
ツール動作
findgrep -n のように、完全一致する文字列を含むすべての行を返します。網羅的でランク付けなし、リポジトリ全体の合計とファイルごとの件数付き。インデックスから数十ミリ秒で返ります。
search完全一致のキーワードマッチングとセマンティック類似度を融合した 1 回のランク付きパスなので、言葉を知っていても知らなくても機能します。ヒットにはコードが付属し、path:line で引用されます。
sqlインデックスに対する読み取り専用 SQL。ランク付き検索はテーブル値関数なので、「X に関するコードが最も多いファイルはどれか」を 1 つのクエリでランク付けして集計できます。
askリポジトリ全体にまたがる質問を、Infino サービス上の小規模モデルに渡します。これらのモデルはインデックスに対して調査を実行し、散文ではなく、見つけた行を path:line で引用して返します。複数の ask を同時に実行できます。

検索関数は SQL の内部に存在するため、1 つのステートメントで質問全体を尋ねられます

どのような用途で使われているか

  • コードレビュー。 レビュアーの質問は「これを呼び出しているのは他に何か、変更したら何が壊れるか」です。find は 1 回の呼び出しで、すべての呼び出し元と件数を返し、ask は重要なパスを読み取るので、レビューは変更そのものについての作業になり、変更を探す作業ではなくなります。
  • 大規模な調査。 「X はエンドツーエンドでどう動くのか」は 50 件の検索を生みます。SuperGrep があれば、それらはインデックスに対する 50 件の ask として並列に実行され、50 件のサブエージェントがツリーを読み込んでコストに計上されることはありません。
  • 複数のコードベースを同時に。 すべてのローカルツールはリポジトリのパスを受け取るので、1 つのセッションで、触れるすべてのリポジトリ - サービス、クライアント、共有ライブラリ - を横断できます。質問ごとにチェックアウトする必要はありません。
  • コード、ログ、イシューをまとめて。 ソースのそばにログ、テスト出力、イシューのエクスポートをインデックスしておけば、「このインテグレーションテストはなぜ失敗し始めたのか?」はそれらすべてに対する 1 つの質問になります。

あなたのエージェントは自らそれを手に取ります

両方を提示されたモデルは SuperGrep を手に取ります

モデル自身のファイルツールは終始利用可能なままでした。SuperGrep から得たのはサーバーの指示であり、それはどの種類の質問にどのツールが適しているかを示しています。各呼び出しでの選択はモデル自身によるものでした。SuperGrep ではない呼び出しは主に Read です。モデルはインデックスがどのファイルかを教えた 後に そのファイルを開くのであり、尋ねる代わりに開くのではありません。これこそ望ましい形です - インデックスが見つけ出し、モデルは引用するために必要なものを開くのです。

コードを超えて - ノートパソコン全体や任意のコーパスをインデックス化する

SuperGrep は、ソースだけでなく、質問が必要とするすべてのファイルを横断して調べます。ログ、テスト出力、スタックトレース、CI 出力、設定、ドキュメントはコードの隣に置かれます - .log、.out、.err、.jsonl、.ndjson はレコード境界でチャンク化されるため、スタックトレースはそれを説明するメッセージと一緒に保たれます - そして同じ 4 つのツールがそのすべてに対して実行されます: 正確なスタックフレームには find、説明することしかできない障害には search、ある実行をまたいでカウントして順位付けするには sql、そのうち複数にまたがる質問には ask です。

これが最も重要になるのは、フロンティアモデルが最も弱いところです。ログはコンテキストウィンドウにとって病的なケースです - 大きく、反復的で、ほとんどが無関係であり、トランスクリプトに残る限り毎ターン支払いが発生します。インデックスは、モデルが何かを見る前に、それを重要なスパンへと圧縮します。CI 障害診断の公開ベンチマークでは、ベンチマーク自身のジャッジによる採点で、SuperGrep はスコアで 2 位、コンテキストのトークンあたりのスコアでは大差で 1 位になります:

LogDx-CI: 手法別の診断スコア、モデルに渡されたコンテキスト、1k トークンあたりのスコア

ノートパソコンに収まらないファイルについては - オブジェクトストレージ内の Parquet ファイルに書き出し、ノートパソコンに読み込むことなく SuperGrep をそれらに向けてください (方法)。同じツールを使って、コードやノートパソコンのファイルと一緒にそれらを検索できます。

節約できるもの

同じモデル、256,000 行のコードベースに関する同じ 36 個の質問を、SuperGrep ありとなしで比較します。すべての回答はコードと照合して検証しました。完全に正しいとは、すべての主張が裏付けられ、質問全体に回答できたことを意味します。コストとは、あなたが支払うすべてです。つまり、あなたのモデル、そのサブエージェント、そして SuperGrep です。

実行の設定方法

Claude Agent SDK を通した実際のエージェント実行で、すべての条件で同じ最小限のプロンプトを使用し、infino エンジンのリポジトリ上で、2026-09-24 に測定しました。質問は 5 つのカテゴリで 36 個です。集計(10)、理解(6)、意味による検索(6)、特定(8)、既知のファイル(6)。ファイルツールの条件は標準の Claude Code です。Glob、Grep、Read、LS、Bash、および組み込みの Explore サブエージェントを備えた Agent ツールです。SuperGrep の条件は、これに上記の 4 つのツールを加えたものです。判定者は Opus 5.5 です。

ファイルツールを使用した場合と SuperGrep を使用した場合の同じモデル、4 つの Claude モデルにおけるコスト、完全に正しい回答数、時間

結果はモデルによって異なります。

  • どのモデルでも安価になります。 Haiku は総コストが 41% 削減、Sonnet は 58%、Opus は 26%、Fable は 14% です。
  • 安価なモデルでは品質が向上します。 Haiku は SuperGrep ありの場合、なしの場合より完全に正しい回答が 8 個増えます。Sonnet、Opus、Fable では回答は同等です。判定者自体もモデルであり、同じ回答を 4 回採点したところ、検証できなかった主張が 19、20、17、23 個返ってきたため、36 個中約 6 個未満の差はノイズであり、これら 3 つはその範囲内です。
  • 予期しないコストは発生しません。 質問の約 3 分の 1 で、ファイルツールを使用した Sonnet はサブエージェントをリポジトリの読み込みに送り出します。すると、その 1 つの質問のコストが 4~5 倍になり、所要時間も 4 倍になります。SuperGrep では代わりにインデックスに問い合わせます。36 個の質問全体では、$3.66 対 $8.73、20 分 対 41 分で、完全に正しい回答は 20 対 18 です。
  • あなた自身のコードでは差がより大きくなります。 これらの実行は公開のオープンソースリポジトリで行われています。これは誰でも再現できるテストだからです。また、大規模モデルはトレーニングでこれを見ているため、ファイルを読むうえで有利なスタートとなります。モデルが一度も見たことのないプライベートなコードベースでは、インデックスがより多くの作業を担い、SuperGrep の効果はより大きくなります。
どこで優れ、どこで劣るか

質問の種類ごとの完全に正しい回答数、4 つのモデルすべてを合計

コードベース全体に関する質問で優れています。件数、ランキング、すべての出現箇所などです。Grep は最初の 40 件の一致を返しますが、インデックスは総数を返します。大きなモデルで名前の付いた 1 つのものを探す場合は劣ります。そのようなモデルはファイル全体をうまく読めるからです。

SuperGrep を使った最も安価なモデルと、使わない最も高価なモデル

SuperGrep を使った Haiku と、ファイルツールを使った Opus および Fable の比較: コスト、完全に正しい回答数、時間

相手が 25 個のところを 23 個の正しい回答で、$6.32(Opus)や $19.36(Fable)ではなく $1.09 です。

インストール

マシンごとに一度、2つのコマンドを実行します。macOS または Linux で、Claude Code と node 22 以降が必要です。

claude plugin marketplace add infino-ai/supergrep
claude plugin install supergrep@infino-ai

(以前はプラグイン名が code-context でした。以前のインストールは、claude plugin uninstall code-context@infino-ai と上記の2つのコマンドで置き換えられます。内部の MCP サーバー名は変わらないため、エージェントが学習した内容に影響はありません。)

これでセットアップは完了です。リポジトリ、ログのフォルダー、メモなど、どのディレクトリでも Claude Code を開いて質問してください。最初の質問でディレクトリのインデックスが作成され、以降は find、sql、read が回答します。ディレクトリごとの設定は不要で、アカウントはまだ作成されておらず、何もマシンの外に送信されません。

search と ask はクラウド側の機能です。埋め込みと検索ループは、そこに保存されたインデックスのコピーを使って Infino プラットフォーム上で実行され、アカウントが必要です。これらの機能が必要な質問を初めてすると、Claude は実行すべきコマンドを1つ示しますが、実行はしません。実行するのはあなた自身だからです。ターミナルで一度だけ実行します。

npx -y @infino-ai/code-context login --platform https://api.supergrep.infino.ai

無料アカウントで、クレジットカードは不要です。 フォームも、メールアドレスも、パスワードも、カードも不要です。また、あなたの同意なしに何かが作成されることもありません。このコマンドは、search と ask を使うディレクトリの内容が Infino にアップロードされることを伝えて確認を求め、あなたが同意した場合にのみアカウントを作成し、キーを ~/.infino/key にモード 600 で保存します。このキーはあなたのみが読み取れます。設定ファイルにキーやキーへのパスが保存されることはありません。Infino は SOC 2 Type 2 認証を取得しています。

このキーは大切に保管してください。 無料アカウントの作成時にメールアドレスもカードも不要なため、あなたを識別するものはこのキーだけです。再びアカウントにアクセスするための唯一の方法であり、ほかに方法はありません。安全な場所にバックアップしてください。Infino コンソールで詳細を追加すると、同じアカウントでサインインできるようになり、キーもそこで管理できます。

セッションを再起動すると、開いたディレクトリごとに4つすべてのツールが使えるようになります。各ディレクトリにはアカウント上に専用のデータベースが作成され、ディレクトリ名が付けられます。データベースが読み込まれるのは、そのディレクトリで初めて search または ask を使ったときです。find だけを使うディレクトリがアップロードされることはありません。セッションが扱うすべてのディレクトリに対して、1つのサーバーが応答します。ツールは path を受け取るため、複数のプロジェクトにまたがるセッションでは、対象のディレクトリを指定します。無料クレジットを使い切ると、ask はその旨を伝え、同じアカウントに請求情報とカードを追加する方法を案内します。find と通常の sql は引き続き使えます。

すでに Infino アカウントをお持ちの場合

代わりに、マシンごとに一度サインインしてください。キーはファイルまたは標準入力から渡し、引数からは渡しません。argv はマシン上のすべてのプロセスから読み取れるためです。また、パイプで渡されたキーでは確認用のターミナルが使えないため、--yes はサインアップ時に求められるものと同じ同意を意味します。

npx -y @infino-ai/code-context login --db https://api.supergrep.infino.ai --yes < keyfile
その他の MCP クライアント、およびリポジトリごとのエントリー

Cursor、Codex CLI、Gemini CLI、Windsurf、Cline は、いずれも同じサーバーを stdio 経由で使用します。リポジトリ内で cx install を実行すると、そのリポジトリの .mcp.json にエントリーが書き込まれます(別のクライアントのファイルを使う場合は --config を指定します)。アカウント情報が保存されていれば、リポジトリのデータベース名だけが指定されます。--local-only を指定すると、キーワードのみを使うエントリーが書き込まれます。また、アカウントを持たないマシンでは、install --platform https://api.supergrep.infino.ai を実行すると、サインアップとエントリーの追加を一度に行えます。リファレンスにはすべてのフラグが、CONTRIBUTINGにはソースからのビルド方法が記載されています。

インデックスを自分で作成する

ディレクトリに対する最初の質問でインデックスが作成され、MCP サーバーが最新の状態を保つため、ほとんどの場合、手動でインデックスを作成する必要はありません。巨大なツリーを最初に処理するとき、CI のステップとして実行するとき、Git リポジトリではないコーパスを扱うときは、index コマンドを使います。(以下の cx は npx -y @infino-ai/code-context、または npm install -g @infino-ai/code-context の実行後に使える cx です。)

cx index                      # bring the index up to date; incremental, full on first run
cx index ~/notes              # index some other directory
cx index --full               # force a full rebuild
cx index --watch              # keep watching the tree and sync on every change
cx index --no-embed           # keyword index only, skip the vector stage
cx index --max-files 1000000  # raise the cap past the 500,000 default; over it, the index is
                              # partial and says so, with the value to pass to get all of it

インデックスは、インデックスを作成したディレクトリ内の .infino/ に保存される通常のファイルです。最初の cx index の実行から数秒以内にキーワード検索が使えるようになり、ベクトルのバックフィルが完了するにつれて、セマンティック検索とハイブリッド検索も使えるようになります。cx status では、インデックスの内容と最新度を確認できます。

サインインした状態で cx index を実行すると、同じ処理の中でプラットフォーム上のコピーも読み込みます。これはアカウント上にある、そのディレクトリ専用のデータベースであり、ask は find と同じコンテンツを参照できます。名前を指定したデータベースを読み込むには、次のようにします。

cx index --db https://api.supergrep.infino.ai/<database>

--embed-provider platform(デフォルト)では、プラットフォームがサーバー側で独自のモデルを使って、そのテーブルのベクトルを作成します。local では、このマシン上で埋め込みを作成し、ベクトルを送信します。

同じツールで自分のデータを扱う

同じプラグインから、インデックスを作成したディレクトリだけでなく、Infino アカウント内のすべてのテーブルにアクセスできます。サインインすると、エージェントにはさらに 3 つのツールが追加され、既存の 4 つのツールでは database 引数を使えるようになります。

ツール説明
tablesアカウントに含まれるものを確認できます。各データベースとそのテーブル、各テーブルの列(検索用にインデックス化されている列、プラットフォームが埋め込みを作成する列)、行の名前となる列、そしてテーブルのカード(統計情報、サンプル行、各列の意味)が表示されます。
hydrate場所を問わず、データセットをアカウント内のデータベースに読み込みます。プラットフォームが直接読み取るバケットのプレフィックス、ラップトップ上のファイル、ssh でアクセスできるマシン上のファイル、またはデータベースのストレージ内にあるプレフィックスを指定できます。Parquet、CSV、NDJSON、Iceberg、および解析済みドキュメントに対応しています。新しいデータベースは必要に応じて作成されます。読み込みはプラットフォーム上で実行され、hydrate_status で進捗を確認できます。
hydrate_status、hydrate_cancel読み込みの進捗を確認したり、停止したりできます。

sql、search、find、ask には database(および table)を指定でき、リポジトリではなくアカウント内のテーブルを対象に実行できます。SQL 文、順位付けされた検索、完全一致検索、検索結果を取得するループに加えて、文の結果行に対するプラットフォームの判定や、結合に使うキーも、コードに対する場合とまったく同じように利用できます。そのため、1 つの MCP を通じて、同じセッションでチェックアウト済みのリポジトリに「これを呼び出しているファイルはどれですか」と尋ね、データに「前四半期に最も多く資金を移動したアカウントはどれですか」と尋ねられます。また、1 つの質問で両方にまたがることもできます。

テーブルやデータベースごとの設定は不要です。CSV のフォルダー、Parquet のエクスポート、バケット、または開発用マシン上のディレクトリをエージェントに指定して読み込ませ、その後で質問するだけです。ラップトップ上やリモートマシン上のファイルは、プラットフォームのアップロードセッションを通じてデータベースのストレージに直接送られます(ssh はお客様の環境で実行されます。プラグインはその接続経由でファイルごとに find と cat を 1 回ずつ実行するだけで、接続先には何もインストールしません)。バケットはその場で読み取られ、コピーは作成されません。

サインインしてコネクターとして使う

同じサーバーを Streamable HTTP 経由で実行できます。1 つの URL を claude.ai、Claude Desktop、Claude Code、その他の MCP クライアントにリモートコネクターとして追加します。

cx mcp --http 9121 --db https://<platform> --sign-in https://<host>/.well-known/oauth-protected-resource/mcp

--sign-in を指定すると、すべての呼び出しに Infino アカウントのキーが含まれます。キーのない呼び出しには、その URL の OAuth リソースメタデータでサインイン先が通知されます。これにより、Claude はユーザーにサインインを促せます。その後、すべての呼び出しは、そのアカウント固有のデータベース上で実行されます。これを指定しない場合、各セッションはプロセスの起動時に指定された 1 つのアカウントで実行されます(サインインなしで共有する URL には --read-only を追加してください)。

オブジェクトストレージからのインデックス作成

ノートパソコンに収まりきらないほど大きなコーパス、たとえば何年分ものログやドキュメントのダンプなど、Parquet や JSON 形式でバケットに保管しているデータがある場合は、そのまま置いておき、プラットフォームにバケットを指定してください。そこからインデックスが作成されます。データがコピーされたり、お使いのマシンにダウンロードされたりすることはなく、行データがお使いのノートパソコンや API を通過することもありません。上記の hydrate ツールを使うと、セッション内から同じ処理を実行できます。以下は、そのツールが呼び出す API です。

1. バケットへの読み取り権限を付与します。 インデックスを作成するプレフィックスに対して、Infino のサービスアカウント(アドレスはお知らせします)に権限を付与してください。GCS では roles/storage.objectViewer、S3 では s3:GetObject と s3:ListBucket を付与します。読み取り専用なので、プラットフォームがバケットに書き込むことはありません。

2. ジョブを送信します。 バケットとプレフィックスを指定して POST すると、すぐに応答が返ります。ビルドはリクエスト内ではなく、プラットフォーム上で実行されます。

curl -sS -X POST https://api.supergrep.infino.ai/v1/hydrate/<database> \
  -H "authorization: Bearer $(cat ~/.infino/key)" \
  -H 'content-type: application/json' \
  -d '{
        "table": "logs",
        "source": { "kind": "bucket", "bucket": "<your-bucket>", "prefix": "exports/logs/" },
        "fts":    [ { "column": "message" } ],
        "embed":  { "column": "embedding", "source": ["message"] }
      }'

(独自のバケットにあるデータベースでは、そのバケット内の _source/ プレフィックスにステージングされたシャードも読み込めます。"source": { "kind": "prefix", "prefix": "_source/logs/" })

{ "job": "hydrate/<customer>/<database>/logs", "state": "pending" }

fts と embed を省略すると、ジョブはサンプルを読み取り、各列の役割を自動で選択します。columns を指定すると、引き継ぐソース列を絞り込めます。no_embed: true を指定すると、ベクトル列は作成されません。

3. ジョブの進行状況を確認します。 応答には状態、進捗状況、確定したスキーマ、これまでの費用が含まれます。

curl -sS "https://api.supergrep.infino.ai/v1/hydrate/<database>?table=logs" \
  -H "authorization: Bearer $(cat ~/.infino/key)"

状態は pending、running、cancelling、stopped、succeeded、failed です。停止したジョブは、キャンセルした場合も、予算を超える長さの障害が発生した場合も、最初からやり直さず、専用のチェックポイントから再開します。

# resume where it left off
curl -sS -X POST https://api.supergrep.infino.ai/v1/hydrate/<database> -H "authorization: Bearer $(cat ~/.infino/key)" \
  -H 'content-type: application/json' \
  -d '{"table":"logs","source":{"kind":"bucket","bucket":"<your-bucket>","prefix":"exports/logs/"},"resume":true}'

# stop a running job at its next commit boundary
curl -sS -X DELETE "https://api.supergrep.infino.ai/v1/hydrate/<database>?table=logs" \
  -H "authorization: Bearer $(cat ~/.infino/key)"

デフォルトでは、最終的に失敗したジョブは作成途中のテーブルを削除するため、部分的なテーブルが提供されることはありません。"on_failure": "keep" を指定すると、コミット済みのデータが保持されます。

作成されたテーブルは、ほかのテーブルと同じように検索できます。ask で検索でき、1 つの質問でテーブルとお使いのコードを同時に対象にできます。

注:Hydrate API はアカウントごとに有効化が必要です。有効化するには [email protected] にお問い合わせください。

詳細情報

ライセンス

Apache-2.0

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。