1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude CodeのTool Searchを調べて/使ってみた

Last updated at Posted at 2026-01-19

本記事の内容は2026/01/19時点のものになります。

この記事について

先日Xにて、「Claude CodeにてTool Searchという機能が使えるようになった」という情報を見つけました。

Tool Searchについて調べて/利用してわかったことを本記事にて共有しようと思います。

本記事の内容に誤りや補足などがあれば、コメント頂けますと幸いです。

Tool Searchとは?

一言で言うと、MCPツールを利用する際にコンテキストトークンの消費を最小限に抑えるためのツールです。

(流行りのグラレコも添えて)
image.png

MCPによるコンテキストトークン浪費問題

MCPを利用する際に、問題点として挙げられていたのがMCPツールを登録することによるコンテキストトークンの消費でした。

Claude Codeはセッション開始時に登録されているすべてのツール定義を事前に読み込みます。つまり、登録されているMCPツールの数によって一定のコンテキストトークンを消費することになります。

MCPサーバーを大量に登録している場合、このコンテキストトークンの消費によるClaude Codeへの影響は顕著になります。具体的な影響として、

  • コンテキストウィンドウ(1回の会話セッションにおいて保持可能なコンテキスト量=メモリ容量)が減る
  • 意図したツールが呼び出されなくなりやすい

手元のClaude Codeにて/contextと打ち込むと、現在のコンテキスト利用状況を確認できます。
私の環境にて、会話セッションを開始した直後に/contextを実行すると以下のように表示されます。

image.png

MCP toolsとしてトークンがすでに16.4k(コンテキストウィンドウの8.2%)も消費されていることがわかります。
ちなみに登録しているMCPもそこまで数は多くない状態でこれです。そのため、登録するMCPの数によってはコンテキストウィンドウの30%以上のトークンを消費してしまうようなケースもあります。

Tool Searchの仕組み

Claude CodeにてTool Searchを有効にすると、会話セッション開始時にClaude Codeは1つMCPツールを除き、ツール定義を読み込まなくなります。その、1つだけ読み込まれるツールがTool Search Toolです。このツールによって必要な時に動的にツール定義を読み込むようになります。

つまりTool Searchを有効にすると、ツール読み込みが静的から動的に変わります。
(特定のツールのみを静的読み込みにするということも可能なようです。詳細は後述するdefer-loadingにて。)

実際に使う

settings.jsonに以下を追加します。

"env" : {
    "ENABLE_TOOL_SEARCH": "true"
}

これで、会話セッションを開き、/contextを確認すると

image.png

真ん中ら辺の「MCP tools」と書かれた右端に「loaded on-demand」と付いています。
このように、Tool Searchが有効になっていると、「loaded on-demand」と表示されます。

また先ほどは16.4kとなっていたMCP Toolsがなくなっています。その分、コンテキストウィンドウの使用済みトークンも20%から11%となっており、ウィンドウの余剰が大きくなっていることがわかります。

私の環境では5つのMCPサーバーを登録しており、50以上のMCPツールが登録されています。
Tool Searchを有効にした状態でも、問題なくMCPツールの呼び出しができておりました。

もうちょい調べる

機能自体はまだベータリリース

Anthropic has released beta features specifically designed to address this: Tool Search Tool and Programmatic Tool Calling.

defer_loadingによる動的呼び出しの無効化 (Claude Codeではまだ使えなさそう)

Allow tools to be marked with defer_loading: true so they remain discoverable without consuming context tokens at session start. Claude would discover relevant tools on-demand via a search mechanism.

defer_loadingをtrueにしたツールはTool Searchによる動的呼び出しの対象外にできるという記載があります。

Claudeのドキュメントにも以下のような記載があります。

curl https://api.anthropic.com/v1/messages \
    --header "x-api-key: $ANTHROPIC_API_KEY" \
    --header "anthropic-version: 2023-06-01" \
    --header "anthropic-beta: advanced-tool-use-2025-11-20" \
    --header "content-type: application/json" \
    --data '{
        "model": "claude-sonnet-4-5-20250929",
        "max_tokens": 2048,
        "messages": [
            {
                "role": "user",
                "content": "What is the weather in San Francisco?"
            }
        ],
        "tools": [
            {
                "type": "tool_search_tool_regex_20251119",
                "name": "tool_search_tool_regex"
            },
            {
                "name": "get_weather",
                "description": "Get the weather at a specific location",
                "input_schema": {
                    "type": "object",
                    "properties": {
                        "location": {"type": "string"},
                        "unit": {
                            "type": "string",
                            "enum": ["celsius", "fahrenheit"]
                        }
                    },
                    "required": ["location"]
                },
                "defer_loading": true
            },
            {
                "name": "search_files",
                "description": "Search through files in the workspace",
                "input_schema": {
                    "type": "object",
                    "properties": {
                        "query": {"type": "string"},
                        "file_types": {
                            "type": "array",
                            "items": {"type": "string"}
                        }
                    },
                    "required": ["query"]
                },
                "defer_loading": true
            }
        ]
    }'

MCPサーバーごとにdefer_loadingを設定できるような記述です。
ただまだこちらのdefer_loadingはAPIしか対応していないように思われます(おそらく)。
なので、Claude CodeではまだMCPサーバーごとに静的/動的呼び出しを制御することは出来なさそうです。(まあ、ベータリリースだし)

トレードオフ

Like any architectural decision, enabling the Tool Search Tool involves trade-offs. The feature adds a search step before tool invocation, so it delivers the best ROI when the context savings and accuracy improvements outweigh additional latency.

一概にTool Searchを有効にすれば良いという訳ではなく、動的呼び出しと静的呼び出しはトレードオフであると言うことを理解せよとのことです。

Claude Codeがツールを利用する際、動的呼び出しは、静的呼び出しに比べて「ツールの検索」と言うステップが余分に必要になります。このステップにより、Claude Codeのレイテンシが増加します。

また、ツールが少数(MCPツールの数が10個以下程度)であれば、Claude Codeのツール選択の精度をかえって悪くする可能性もあります。

そのため、ツールの数によってはTool Searchを有効にしないという選択も視野に入れるべきです。

まとめ

  • Tool SearchはMCPツールを利用する際にコンテキストトークンの消費を最小限に抑えるためのツール
  • 2026/1時点ではベータリリース(defer_loadingはまだ使えなさそう)
  • settings.jsonに"ENABLE_TOOL_SEARCH": "true"だけで有効化可能
  • トレードオフ(コンテキスト消費/レイテンシ/精度)は意識した上で利用すべき

参照

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?