mcp-injector について
mcp-injectorは、AIコーディングツール向けにリポジトリを索引し、コードコンテキストを圧縮するローカルMCPサーバーです。シンボル検索や依存関係分析、Git情報、機密情報のマスキングを提供し、索引をクラウドへ送信しません。
主な機能
- 01AST折り畳みによるプロジェクトマップ圧縮
- 02シンボル検索と正規表現検索
- 03ソース取得と依存関係の追跡
- 04Git履歴情報と影響分析
- 05ローカル索引と機密情報のマスキング
活用シーン
- 01大規模モノレポをAIエージェントに把握させる
- 02シンボルを検索してソース全体を取得する
- 03リファクタリング前に呼び出し元を確認する
- 04Git情報を使って変更をレビューする
MCP 対応
プロジェクトマップ、検索、ソース取得、図の生成、影響分析、Git情報、ファイル書き込みをMCPクライアント向けのツールとして公開します。ローカル索引にはSQLiteを使い、コンテキスト送信前に機密文字列をマスキングします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
mcp-injector
AI コーディングアシスタントは、誤ったコンテキストを取得するために失敗することがよくあります。大規模なコードベースで、生のファイルをそのままプロンプトに投入すると、ハルシネーションや応答の遅延、API コストの増大につながります。
Foldwork はこの問題を解決します。コードベース全体をローカルの SQLite カタログに事前インデックス化する、決定論的なリポジトリ理解エンジンです。IDE のコンテキストレイヤーとして機能し、AI が必要とする関数だけを過不足なく提供することで、初回試行の成功率を最大化し、トークン使用量を 41~89%削減します。
関数本体を除去しつつシグネチャを保持する AST 本体折りたたみと、Anthropic の KV キャッシュヒットを最大化するためにバイト単位で同一の出力を保証する正規化された決定性を組み合わせることで、Foldwork は大規模なエンタープライズのモノレポを、軽量でキャッシュに適したペイロードに変換します。これにより、トークン消費量を大幅に削減し、API コストを最大 90%削減するとともに、コンテキストウィンドウのオーバーフローを防ぎます。
クラウド不要。テレメトリなし。すべてマシン上で実行されます。--
実際のコードベースにおけるコンテキストのベンチマーク
大規模なオープンソースリポジトリでの AST コード圧縮の効果を推定します(Claude Sonnet 5 の入力トークン 100 万個あたり $2.00 で算出):
| リポジトリ | ファイル総数 | 圧縮前のコンテキストトークン数 | 圧縮後のコンテキストトークン数 | トークン削減率 | 1 回あたりのコスト削減額 |
|---|---|---|---|---|---|
| Django | 2,359 | 5,554,607 | 596,752 | 89.3% | $10.99 |
| Tokio | 789 | 1,597,813 | 444,164 | 72.2% | $3.11 |
| Gin | 99 | 197,300 | 47,718 | 75.8% | $0.39 |
数値は再現可能です。オープンソースのベンチマークツールを任意の公開リポジトリで実行してください:
mcp-benchmark リポジトリ
実行イメージ
mcp-benchmark をご自身のプロジェクトで実行すると、インストール前に正確な削減量を確認できます:
mcp-benchmark ./your-project
════════════════════════════════════════════════════════════════════════════════
mcp-injector Benchmark — context
Tier 3 compression | $2.00/1M tokens | 2026-07-15T12:00:00Z
════════════════════════════════════════════════════════════════════════════════
FILE RAW TOKENS COMPRESSED SAVED COST SAVED*
──────────────────────────────────────────────────────────────────────────────────────────
cmd/license-gen/main.go 3,633 214 94% $0.0072
main.go 17,555 1,917 89% $0.0347
website/api/webhook.go 2,682 295 89% $0.0053
main_test.go 1,576 353 78% $0.0031
──────────────────────────────────────────────────────────────────────────────────────────
TOTAL (4 files) 25,446 2,779 89.1% $0.0503
* Based on $2.00 / 1M input tokens
💡 Running this codebase through Claude 10×/day costs $0.51/day raw.
With mcp-injector: $0.01/day. You save $0.50/day ($15/month).
ツール
get_project_map
ワークスペースの圧縮された構造概要を返します。関数本体は折りたたまれ、トークン使用量を削減するためにプレースホルダーに置き換えられます。
tier(整数、任意):適用する圧縮レベル(デフォルト:2)。unfolded_files(文字列の配列、任意):完全な解像度(非圧縮)で提供する、ワークスペース相対のファイルパスまたは glob パターン。path_prefixes(文字列の配列、任意):特定のマイクロサービスまたはパッケージにプロジェクトマップの範囲を限定し、ペイロードの肥大化を大幅に抑えます。git_context:現在のブランチ、変更されたファイル、最近のコミットを常にレスポンスに含めます。secrets_redacted:Claude に送信する前に自動的に秘匿された認証情報の数。
呼び出し例:
{
"tool": "get_project_map",
"arguments": {
"tier": 3,
"unfolded_files": ["src/auth/handler.go", "**/*_test.go"],
"path_prefixes": ["src/auth/"]
}
}
injector_retrieve
ローカルキャッシュから、ファイルの完全な非圧縮ソースを取得します。
path(文字列、必須):取得するファイルのワークスペース相対パス。retrievalKey(文字列、任意):以前の圧縮ペイロードで返された SHA-256 取得キー。start_line(整数、任意):範囲取得の開始行(1 始まり)。end_line(整数、任意):範囲取得の終了行(1 始まり)。expand_graph(ブール値、任意):ファイル間の依存関係を解決して追加します(1 階層目の依存関係 50 件まで)。
injector_search
ローカルの SQLite カタログを対象とする、BM25 ランキング付きの全文シンボル検索です。FTS5 のブール論理(例:user AND (auth OR login))に対応しています。
query(文字列、必須):FTS5 クエリ文字列(単語、"フレーズ"、prefix*)。limit(整数、任意):最大結果数(デフォルト:20)。search_paths(文字列の配列、任意):検索対象を特定の分離されたディレクトリに限定します。
injector_diagram
指定されたシンボルの外向き依存関係をたどり、Mermaid のシーケンス図を生成します(500 ノードの後に停止します)。
symbol(文字列、必須):正確なシンボル名。max_depth(整数、任意):最大探索深度(デフォルト:3)。include_primitives(ブール値、任意):基本型(String、boolean)とフレームワークの境界を含めます。
injector_regex_search
ファイル内容を対象に、完全一致または正規表現で検索するためのフォールバックです。FTS5 のトークン化をバイパスします。
query(文字列、必須):検索する文字列または正規表現パターンです。is_regex(ブール値、任意):queryを拡張正規表現(-E)として扱います。
injector_write_file
ファイル全体をディスクに書き込みます。重要:圧縮された折りたたみマーカーを含むペイロードを検出して拒否し、データ損失を防ぎます。
injector_blast_radius
依存関係グラフをたどってシンボル変更のアーキテクチャ上の影響を分析します。入力方向と出力方向の走査に対応しています。
injector_git_context
ローカルの Git 履歴と連携し、コミットの背景情報、作成者、コードの変遷を LLM コンテキストに直接取り込みます。
injector_inspect_table
データベースを直接調査する機能を提供します。現在は PostgreSQL と MySQL に対応しています。
重要: このツールを有効にするには、データベース接続文字列(例:postgres://user:pass@localhost:5432/dbname)を FOLDWORK_DB_DSN 環境変数に設定してデーモンを起動する必要があります。
injector_clear_cache
SQLite インデックスのキャッシュを消去し、クリーンなコールドスタートでの全件再インデックスを開始します。
injector_stats
インデックスの状態、現在の圧縮率、インデックス済みのファイル総数、キャッシュヒット率を返します。
injector_sync(非推奨)
読み取りツールは保留中のインデックス作成が完了するまで自動的に待機します。このツールを手動で呼び出す必要はありません。
クイックインストール
デーモンをローカルにインストールし、IDE を設定します。
curl -fsSL https://foldwork.dev/install | sh
Claude Desktop、Cursor IDE、VS Code、Devin Desktop、Antigravityを自動的に設定します。
はじめに
ステップ 1:プロジェクトが無料プランの対象か確認する
プロジェクトでベンチマーク CLI を実行し、トークンの節約量と行数を確認します。
mcp-benchmark ./your-project
プロジェクトが 50,000 行未満の場合、mcp-injector は完全無料です。ベンチマークの出力に正確な行数が表示されます。
ステップ 2:デーモンをインストールする
curl -fsSL https://foldwork.dev/install | sh
インストーラーは Claude Desktop、Cursor、VS Code、Devin Desktop、Antigravity を自動検出し、MCP の設定を自動的に書き込みます。次のような出力が表示されます。
* mcp-injector v0.2.0 installed to /usr/local/bin/mcp-injector
* Claude Desktop configured
* Cursor configured
Restart your IDE and mcp-injector will be active.
ステップ 3:IDE を再起動する
MCP サーバーは IDE の起動時に自動的に起動します。別途管理するデーモンプロセスはありません。
ステップ 4:動作を確認する
Claude Code または Cursor で、Claude に次のように尋ねます。
"Use get_project_map to show me the structure of this project"
Claude は mcp-injector ツールを呼び出し、コードベース全体を圧縮したマップを返します。モジュール名、エントリーポイント、依存関係の情報が表示されれば、正常に動作しています。
ステップ 5:必要に応じてソース全体を取得する
Claude が圧縮された関数の完全な実装を確認する必要がある場合、自動的に injector_retrieve を呼び出します。次のように明示的に依頼することもできます。
"Show me the full implementation of UserService.java"
Claude はローカルキャッシュから圧縮されていないソースを取得します。
コードの編集: コードの編集には必ず injector_write_file ツールを使用してください。Claude が折りたたまれたプレースホルダーをソースコードに書き戻そうとした場合、デーモンはデータ損失を防ぐため、そのペイロードを確実に拒否します。
ステップ 6:節約量を確認する
injector_stats
または、Claude に直接「injector_stats を呼び出して、現在のトークン節約量を教えて」と尋ねてください。
エージェントのユースケースと高度な使い方
AI がコードの検索、走査、取得を行う決定論的なツールを利用できるようになったので、これまでは生のコードベースではうまく答えられなかった、アーキテクチャに関する高度な質問を尋ねられます。
- 認証フローを追跡する — エージェントにログインシーケンスを図示するよう頼みます。
expand_graph=trueを指定したinjector_retrieveを使い、ミドルウェア、検証、データベースの各レイヤーをたどります。 - デッドコードを見つける — エージェントは
injector_blast_radius(逆方向の走査)を活用して、使われていない関数や孤立した構造体を特定できます。 - アーキテクチャ図を生成する — AI に「このワークフローの Mermaid 図を生成して」と指示します。
injector_diagramを使って、実行シーケンス全体をすぐに図示します。 - 依存関係グラフを把握する —
injector_blast_radiusを使って、特定のコアモジュールに依存しているサービスやパッケージを正確に確認します。 - 実装箇所を探す — エージェントは
injector_search(BM25 全文インデックス)を使って、数百万行のコードから正確な関数定義を見つけます。 - 安全にリファクタリングする — 互換性を損なう変更を行う前に、エージェントは
injector_blast_radiusを確認して、影響を受ける呼び出し元をすべて把握します。 - プルリクエストをレビューする — 未コミットの変更やブランチ間の差分を分析するようエージェントに指示します。コードだけでなく、最近のコミットと作成者の意図を把握するために
injector_git_contextを使います。 - 大規模なモノレポをナビゲートする —
get_project_mapはアーキテクチャ全体を圧縮した俯瞰図を AI に提供し、path_prefixesを使って特定のマイクロサービスを詳しく調べられるようにします。
特定のファイルを圧縮せずに確認する
ほかの部分は圧縮したまま、特定ファイルの正確な実装を Claude に確認させたいことがあります。その場合は unfolded_files パラメーターを使います。
MCP の呼び出しで、または Claude に次のように尋ねます。
「プロジェクトマップを取得して、src/auth/handler.go を完全な解像度で表示して」
これにより "unfolded_files": ["src/auth/handler.go"] が get_project_map に渡されます。そのファイルは生の状態で提供され、ほかの部分は圧縮されたままです。
Glob パターンも使えます。
"**/*_test.go"- すべてのテストファイルを圧縮せずに表示"src/auth/*.go"- ディレクトリ内のすべてのファイルを圧縮せずに表示
ブランチの切り替え
mcp-injector は初回実行時に post-checkout git フックをインストールします。ブランチを切り替えると、自動的に全体の再インデックスが実行されます。デーモンのログには次のように表示されます。
[mcp-injector] Branch switched to feature/auth-refactor, re-indexing...
[mcp-injector] Re-index complete in 4.2s (47,293 lines indexed)
セキュリティ最優先:情報漏えいゼロの保証
エンタープライズのセキュリティチームは、開発者がコンテキストウィンドウに機密性の高い認証情報を誤って漏えいすることを懸念し、AI コーディングツールをブロックすることがよくあります。
mcp-injector はこの問題をローカルで解決します。デーモンには Shannon エントロピーフィルターが組み込まれており、すべての AST 文字列とコメントをリアルタイムで分析します。AWS アクセスキー、SSH 秘密鍵、データベースパスワードなどの高エントロピー文字列を検出すると、マシンの外に出る前に動的に [REDACTED: high entropy] に置き換えます。API 認証情報が Anthropic に送信されることはありません。
コードベースにハードコードされた API キーや AWS 認証情報がある場合、get_project_map の応答には次のように含まれます。
"secrets_redacted": 2,
"files_with_redactions": ["config/db.go", "scripts/deploy.sh"]
実際の値は [REDACTED: high entropy] に置き換えられます。変数名は保持されるため、Claude は引き続きコードの構造を理解できます。
MCP の手動設定
自動インストーラーが IDE を検出しない場合は、MCP 設定に次の内容を手動で追加します。
{
"mcpServers": {
"mcp-injector": {
"command": "/usr/local/bin/mcp-injector",
"env": {
"MCP_WORKSPACE": "/absolute/path/to/your/project",
"FOLDWORK_DB_DSN": "postgres://user:pass@localhost:5432/dbname"
}
}
}
}
注: VS Code は
"${workspaceFolder}"をサポートしていますが、Claude Desktop、Cursor、Devin Desktop では、プロジェクトへの絶対パスをハードコードする必要があります。
設定ファイルの場所:
- Claude Desktop(Mac):
~/Library/Application Support/Claude/claude_desktop_config.json - Claude Desktop(Windows):
%APPDATA%\Claude\claude_desktop_config.json - Claude Desktop(Linux):
~/.config/Claude/claude_desktop_config.json - Cursor:
~/.cursor/mcp.json - VS Code:
.vscode/mcp.json - Devin Desktop:
~/.codeium/windsurf/mcp_config.json - Antigravity:
~/.gemini/antigravity/mcp_config.json
仕組み
- インクリメンタル解析: Foldwork はシングルパスの AST パーサーを使用してリポジトリを瞬時にスキャンし、ブロックすることなく、すべてのインターフェース、クラス、関数シグネチャを特定します。
- グラフ生成: 2 つの構造を決定論的に構築します。正確な定義を示すシンボルグラフと、呼び出し元/呼び出し先の外部関係を追跡する依存関係グラフです。
- ローカルカタログ: グラフはローカルの SQLite FTS5 カタログに永続的に保存されます。インデックス作成はファイルの変更ごとに正確に 1 回行われるため、AI のプロンプト中にオーバーヘッドは発生しません。
- MCP サーバー: AI エージェントは Model Context Protocol を介して Foldwork と安全に通信し、コードがマシンの外部に出ることなく、ミリ秒単位でサブグラフを取得します。
- ブランチ対応と決定論的な動作: ブランチの切り替え時に、git フックを通じてインクリメンタルなインデックス再作成が自動的に実行されます。実行ごとにバイト単位で同一の出力が得られるため、Foldwork は Claude の KV プロンプトキャッシュ のヒット率を最大化します。
対応言語: Go、Python、TypeScript、JavaScript、Java、C++、C、C#、Rust。
料金プラン
- 無料プラン: ワークスペースのソースコードが合計 50,000 行未満の場合(すべてのツールと機能を完全に利用できます)。
- Pro プラン($12/月または$99/年): ワークスペースのサイズ制限がなくなり、高速な差分インデックス作成を利用できます。
foldwork.dev で Pro を有効にする
ROI を確認(節約額ダッシュボード)
ターミナルでいつでも mcp-injector status を実行できます。この CLI ダッシュボードでは、未加工のコードベースのトークン数と AST 圧縮後のトークン数をリアルタイムで比較し、正確なトークン削減数と推定節約額を視覚的に確認できます。
セキュリティ
mcp-injector は、Claude のコンテキストウィンドウに情報が渡る前に、シークレットや認証情報を自動的にマスキングします。
- AWS アクセスキー、GitHub PAT、Stripe シークレットキー
- JWT トークンとベアラートークン
- シャノンエントロピー分析で検出される高エントロピー文字列
- 秘密鍵ヘッダー(
-----BEGIN RSA PRIVATE KEY-----) - エアギャップ環境に対応: Pro ライセンスの検証には、厳密にオフラインで動作する Ed25519 暗号方式を使用します。サブスクリプションの検証時も含め、デーモンが外部ネットワークにリクエストを送信することはありません。
マスキングされた内容は [REDACTED BY MCP-INJECTOR] に置き換えられます。get_project_map の応答にはマスキング件数が含まれるため、保護された情報を常に把握できます。
コードがマシンの外部に出ることはありません。マスキングは圧縮前にローカルで実行され、常に有効です。無効にすることはできません。
アンインストール
mcp-injector を完全に削除するには:
# Remove binary
sudo rm /usr/local/bin/mcp-injector
# Remove index cache and logs
rm -rf ~/.mcp-injector/
# Remove from IDE MCP config (edit manually):
# Claude Desktop (Linux): ~/.config/Claude/claude_desktop_config.json
# Claude Desktop (macOS): ~/Library/Application Support/Claude/claude_desktop_config.json
# Cursor: ~/.cursor/mcp.json
# VS Code: .vscode/mcp.json
# Devin Desktop: ~/.codeium/windsurf/mcp_config.json
# Antigravity: ~/.gemini/antigravity/mcp_config.json
# (Remove the "mcp-injector" entry from mcpServers)
マスキング対象
mcp-injector は、コードが Claude に渡る前に、以下を自動的にマスキングします。
| パターン | 一致例 |
|---|---|
| AWS アクセスキー ID | AKIAIOSFODNN7EXAMPLE |
| GitHub PAT(ghp_、ghs_) | ghp_aBcDeFg... |
| Stripe シークレットキー | sk_live_abc... / sk_test_abc... |
| JWT トークン | eyJ... |
| PEM 秘密鍵ヘッダー | -----BEGIN RSA PRIVATE KEY----- |
| 20 文字を超える一般的な高エントロピー文字列 | シャノンエントロピーで検出 |
| パスワード/シークレット/トークンの代入 | password = "abc123" |
マスキングされた値は [REDACTED BY MCP-INJECTOR] に置き換えられます。ファイルパスと変数の名前はマスキングされず、値のみが対象となります。
ライセンス
商用。無料プランを利用できます。ソースコードは非公開です。
サポート窓口:[email protected]
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。