MCPツール検索:トークン使用量を134kから5kに削減するLazy Loading
概要
MCP Tool Searchは、MCPツールの遅延読み込み(Lazy Loading)を実現する機能です。従来はセッション開始時にすべてのMCPツール定義を読み込んでいたため、多数のMCPサーバーを設定している環境ではコンテキストウィンドウが大量に消費されていました。この機能により、約134,000トークンから約5,000トークンへ、最大95%のトークン削減を達成します。
使い方
自動有効化
MCPツールの説明がコンテキストウィンドウの10%以上を使用する場合、MCP Tool Searchが自動的に有効化されます。現在のバージョンではデフォルトで有効です。
動作の仕組み
- 従来方式: セッション開始時にすべてのMCPサーバーのツール定義をコンテキストに読み込み
- Lazy Loading方式: 軽量な検索インデックスのみを読み込み、必要な時にツール定義を取得
従来: [全ツール定義を事前読み込み] → 134,000トークン消費
新方式: [検索インデックスのみ] → 5,000トークン消費ユーザーが特定のアクションを要求すると、Claude Codeはインデックスをクエリし、関連するツール定義のみをコンテキストに取り込みます。
設定の確認
bash
# /config コマンドで設定を確認
/configMCP Tool Searchの設定は、Claude Codeの設定画面から確認・変更できます。
活用シーン
- 大量のMCPサーバーを利用する環境: GitHub、Jira、Slack、データベースなど複数のMCPサーバーを同時に設定している場合に、コンテキストウィンドウの圧迫を大幅に軽減
- 長時間のコーディングセッション: トークン消費が抑えられるため、より多くの対話が可能に
- モデル精度の向上: 不要なツール情報がコンテキストから排除されることで、モデルの応答精度が向上
コード例
MCP設定ファイルの例(多数のサーバー設定)
json
{
"mcpServers": {
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"]
},
"filesystem": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/dir"]
},
"database": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-postgres", "postgresql://..."]
},
"slack": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-slack"]
}
}
}上記のように複数のMCPサーバーを設定している場合、Lazy Loadingなしでは各サーバーのすべてのツール定義がセッション開始時に読み込まれていました。
トークン削減の実測値
| 環境 | 従来方式 | Lazy Loading | 削減率 |
|---|---|---|---|
| Anthropic社内テスト | ~134,000トークン | ~5,000トークン | 96% |
| 一般的な環境 | ~51,000トークン | ~8,500トークン | 83% |
| 総エージェントトークン | - | - | 46.9%削減 |
モデル精度の向上
| モデル | Tool Search無効 | Tool Search有効 | 向上幅 |
|---|---|---|---|
| Opus 4 | 49% | 74% | +25pt |
| Opus 4.5 | 79.5% | 88.1% | +8.6pt |
注意点・Tips
- 自動有効化の条件: MCPツールの説明がコンテキストウィンドウの10%以上を占める場合に自動的に有効化されます。少数のMCPサーバーのみを使用している場合は、従来方式のままで十分です。
- 検索精度: ツール定義そのものではなく、軽量なインデックスから検索するため、特殊なツール名やまれに使うツールの場合は明示的にツール名を指定すると確実です。
- 初回検索のオーバーヘッド: 初回のツール検索では、インデックスの構築が行われるため若干の遅延が発生する場合があります。2回目以降はキャッシュが効きます。
- 既存の設定との互換性: 既存のMCPサーバー設定を変更する必要はありません。Lazy Loadingは透過的に動作します。