いずみこんな悩みを解決できる記事を書きました!
僕は現役フリーランスエンジニア(歴10年)で、資格は13個保有しています。
「Claude APIに登録するツール数が増えすぎて困っている」とお考えではありませんか?
MCPサーバーを複数接続していると、ツール定義だけでコンテキストウィンドウを大量に消費してしまいます。
ツール数が増えるほど、Claudeが適切なツールを選べなくなる問題も起きます。
Tool Search Toolを使えば、ツール定義を最初から全部読み込ませず、必要なタイミングで検索・取得させることが可能です。



設定はシンプルなので、サクッと解説します。
ということで、本記事ではClaude APIのTool Search Toolで大量のツールを扱う方法を解説します。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
Claude APIのTool Search Toolで大量のツールを扱う方法
早速ですが、Claude APIのTool Search Toolで大量のツールを扱う方法を解説します。
Tool Search Toolとは
Tool Search Toolは、数百から数千個のツールをコンテキストに全部載せず、Claudeに検索させてオンデマンドで読み込ませる仕組みです。
GitHub・Slack・Sentry・Grafana・Splunkのような複数のMCPサーバーを繋ぐと、ツール定義だけで数万トークンを消費してしまうケースがあります。
Tool Search Toolを使うと、Claudeが処理中のリクエストで本当に必要な数個のツールだけを検索して読み込むため、消費トークンを大幅に削減できます。
ツール選択の精度が落ちる問題も改善します。
利用可能なツールが30〜50個を超えたあたりから、Claudeが適切なツールを選びにくくなる傾向があります。
Tool Search Toolで絞り込んだ候補だけを提示すれば、ツール数が数千個規模でも選択精度を保てます。



MCPサーバーを何個も繋いでいる人ほど恩恵が大きい機能ですね。
regex方式とBM25方式の違い
Tool Search Toolには2つの方式があります。
tool_search_tool_regex_20251119: Claudeが正規表現パターンを組み立てて検索する方式tool_search_tool_bm25_20251119: Claudeが自然言語のクエリで検索する方式
regex方式はweatherやget_.*_dataのようなパターンで検索する仕組みで、大文字小文字は区別されません。
BM25方式は検索キーワードをそのまま自然文で渡せるため、ツール名の命名規則を意識せずに使えます。
どちらもツール名・説明文・引数名・引数の説明文をまとめて検索対象にします。
実装(コード付き)
Pythonから実装してみます。
まず、初回から読み込ませたくないツールにdefer_loading: trueを追加します。
Tool Search Tool自体にはdefer_loadingを設定しないよう注意してください。
tools = [
{
"type": "tool_search_tool_regex_20251119",
"name": "tool_search_tool_regex",
},
{
"name": "get_weather",
"description": "指定した場所の現在の天気を取得する",
"input_schema": {
"type": "object",
"properties": {
"location": {"type": "string"},
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]},
},
"required": ["location"],
},
"defer_loading": True,
},
{
"name": "search_files",
"description": "ワークスペース内のファイルを検索する",
"input_schema": {
"type": "object",
"properties": {
"query": {"type": "string"},
"file_types": {"type": "array", "items": {"type": "string"}},
},
"required": ["query"],
},
"defer_loading": True,
},
]作成したtools配列をそのままmessages.createに渡します。
import anthropic
client = anthropic.Anthropic()
response = client.messages.create(
model="claude-opus-5",
max_tokens=2048,
messages=[{"role": "user", "content": "サンフランシスコの天気を教えて"}],
tools=tools,
)
print(response)リクエスト送信直後の時点で、Claudeのコンテキストに入っているのはTool Search Toolだけです。
get_weatherとsearch_filesの定義は、検索で見つかるまで読み込まれません。
Claudeがツールを検索すると、レスポンスにserver_tool_useとtool_search_tool_resultのブロックが含まれます。
{
"type": "server_tool_use",
"id": "srvtoolu_01ABC123",
"name": "tool_search_tool_regex",
"input": {"pattern": "weather", "limit": 10}
}検索がヒットすると、続けてtool_referenceを含む結果ブロックが返ります。
APIがtool_referenceを完全なツール定義に自動展開してくれるため、展開処理を自前で書く必要はありません。
srvtoolu_で始まるIDに対しては、tool_resultを返さないよう注意してください。
Claudeは検索で見つけたツールに対して、通常のtool_useブロックで呼び出しを行います。
実行結果は、通常のツール利用と同じ形式でtool_resultとして返します。
tool_result = {
"type": "tool_result",
"tool_use_id": "toolu_01XYZ789",
"content": "San Francisco: 18C, cloudy",
}次のリクエストでは、直前のアシスタントの返答をそのまま含めた上で、同じtools配列を送信します。
会話履歴の中でtool_referenceは毎回展開されるため、一度見つけたツールを後続のターンで再検索する必要はありません。



展開処理を自分で書かなくていいのは地味にありがたいポイントです。
MCPサーバーのツールに適用する
MCPコネクタ経由のツールでは、個別のツール定義にdefer_loadingを設定しません。
代わりに、mcp_toolsetエントリのdefault_configにまとめて設定するか、サーバー内の個別ツールごとにconfigsで設定します。
MCPコネクタ経由の設定方式であれば、接続しているMCPサーバーが増えても、コード側の変更を最小限に抑えられます。
使う際に気をつけたいポイント
Tool Search Toolを使う上で、いくつか注意点があります。
- よく使う3〜5個のツールは
defer_loadingを付けず、常に読み込んだ状態にしておく - 検索でヒットしやすいよう、ツール名と説明文に具体的なキーワードを含める
- サービスやリソースごとに
github_やslack_のような命名規則を統一する - 全ツールを
defer_loading: trueにすると400エラーになるため、Tool Search Tool自体は対象外にする
ツール数が10個未満で、かつ毎回のリクエストで全ツールを使う場合は、Tool Search Toolを導入せず通常のツール呼び出しのままで十分です。



ツールが増えて選択ミスが目立ってきたら、導入を検討するくらいの温度感でいいと思います。
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
【厳選】フリーランスエンジニアにおすすめなエージェント3選


フリーランスエンジニアになるにはエージェントから案件をもらう必要があります。
僕が実際に利用しているおすすめエージェントを紹介しますね。



エージェントは必ず複数登録してください。
担当者によっては「全然案件紹介してくれない…」みたいなこともあるので…
僕は実際に5つのエージェントを使い回していますよ。
フリーランスを始めるなら「レバテックフリーランス


」
- 業界最大級の案件数。
- 業界トップクラスの高単価報酬、低マージン(平均年収862万円)。
- 案件参画中のフォローの充実。
※詳細は「【業界最大手】レバテックフリーランスとは?メリットや利用手順を解説!」を参照。
レバテックフリーランス
![]()
![]()
とにかく案件数が多いので、とりあえず登録しておけば間違いないエージェントです!



僕もはじめてフリーランスの案件を貰ったのはレバテックフリーランス
![]()
![]()
保有している案件数が多いので、業務経験がなくても何かしらの案件は紹介してもらえますよ(僕はJavaの経験3年でも案件を貰えました)。
手厚い保障を重視したいなら「Midworks


」
- 手厚い保障で正社員並みの安心感。
- 還元率60%超え&単価公開でクリアな契約。
- 給与保障制度(審査あり)。
Midworks
![]()
![]()
フリーランスを目指しているけど不安な方や保障を重視したい方におすすめです。



僕も何度か案件を紹介してもらいました。
自分のスキルに合った案件を紹介してもらえましたし、電話のやり取りも非常に丁寧でした。
週2〜3日の案件探しなら「ITプロパートナーズ


」
- IT案件に特化したフリーランスエージェント。
- 週2〜3日の案件が豊富。
- リモート案件が多く、直エンドなので単価も高い。
※詳細は「【週2・3案件】ITプロパートナーズとは?メリットや利用手順を解説!」を参照。
ITプロパートナーズ
![]()
![]()
週2〜3日から参画できる案件が豊富なので、起業したい人にもおすすめです。



週2〜3日の案件はある程度スキルがないと紹介してもらえない印象です。
とはいえ、週5の案件ももちろんありますし、僕が利用した時は迅速・丁寧に対応していただきました!
よくある質問
regex方式とBM25方式はどちらを選べばいいですか?
ツール名や説明文にはっきりしたパターンがある場合はregex方式が向いています。
命名規則が揺れていたり、自然な言葉で探したい場合はBM25方式のほうが扱いやすいです。
どのくらいのツール数からTool Search Toolを検討すべきですか?
公式ドキュメントでは、ツールが10個以上、またはツール定義が1万トークンを超える場合が目安とされています。
複数のMCPサーバーを束ねて200個以上のツールを扱う構成でも効果を発揮します。
Tool Search Toolを使うと料金は増えますか?
Tool Search Tool自体は個別課金されるサーバーツールではありません。
検索によって読み込まれたツール定義は、通常のツール定義と同じく入力トークンとしてカウントされます。
まとめ
今回は、Claude APIのTool Search Toolで大量のツールを扱う方法について解説しました。
以下が本記事のまとめになります。



最後までお読みいただき、ありがとうございました!
| 【当サイト】おすすめフリーランスエージェント3選 | |||
|---|---|---|---|
| エージェント | 評価 | ポイント | 公式サイト |
レバテックフリーランス | 5.0 | 業界最大級のエージェント。 高単価案件が豊富。 | 公式 |
Midworks | 4.8 | 満足度調査で 3年連続3冠を達成。 | 公式 |
ITプロパートナーズ | 4.6 | 週2〜3向けの案件が豊富。 | 公式 |
- クソおすすめ本



海外のエンジニアがどういった思考で働いているかが理解できます。
海外に行く気はないけど海外エンジニアの動向が気になる雑魚エンジニアにおすすめです(本当におすすめな本しか紹介しないのでご安心を)。








