翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
ツール検出
エージェント内のツールを検出して MCP サーバーに登録するには、静的定義、動的検出、検索関数の 3 つのアプローチがあります。
静的定義
まず、エージェントコードで使用可能なツールを静的に直接定義できます。このアプローチでは、リモートツール (Strands Agent SDK などのフレームワーク内のクライアント側の参照オブジェクト) を、MCP クライアントによってアクセスされる MCP サーバーによって提供される各ツールに定義します。次の例では、ストリーミング可能な HTTP トランスポートを使用しています。
from mcp.client.streamable_http import streamablehttp_client from strands import Agent from strands.tools.mcp import MCPClient streamable_http_mcp_client = MCPClient( lambda: streamablehttp_client("https://mcp1:8000/mcp") ) reverse_text = RemoteTool( name="reverseText", client=streamable_http_mcp_client ) agent = Agent(tools=[reverse_text])
個々のツール登録により、LLM で使用できるツールを非常に選択的に選択できるため、使用するコンテキストウィンドウの量を最小限に抑えることができます。トレードオフは、使用可能なツールの名前を知る必要があり、使用可能なツールが MCP サーバーで変更されると脆弱になる可能性があることです。
動的検出
次のアプローチは、動的検出を使用し、使用可能なすべてのツールをエージェントに登録することです。このアプローチでは、より多くのツールが MCP サーバーに追加されるにつれて、コンテキストを直線的に消費します。このアプローチの例を次に示します。
from mcp.client.streamable_http import streamablehttp_client from strands import Agent from strands.tools.mcp import MCPClient streamable_http_mcp_client = MCPClient( lambda: streamablehttp_client("https://mcp1:8000/mcp") ) with streamable_http_mcp_client: tools = streamable_http_mcp_client.list_tools_sync() agent = Agent(tools=tools)
一般的なツール定義が約 250~500 トークン (名前、説明、スキーマを含む) を消費するシナリオを考えてみましょう。20 個の ツールを登録すると、コンテキストウィンドウの トークンが 5,000~10,000 個消費されます。少数の MCP サーバーがあり、ツールの数を制御できる場合、このオプションは実装が最も簡単です。ただし、ツールのリストが増加することが予想される場合、エージェントにサイレントコンテキスト管理の問題が発生する可能性があります。このアプローチの代替バリエーションはlist_tools、Strands Agents SDK が提供する
検索関数
3 番目のオプションは、検索関数を使用して、ランタイム中に関連するツールを見つけることです。MCP サーバーから使用可能なすべてのツールを一覧表示し、ユーザープロンプトに基づいてそれらのツールに対してセマンティック検索を実行します。次に、結果のツールがエージェントに登録されます。Amazon Bedrock AgentCore Gateway は、この種のソリューションを実装しやすくするネイティブセマンティック検索機能を提供します。
MCP ツール検出のベストプラクティス
-
コンテキストウィンドウの保存 – コンテキストウィンドウをできるだけ節約できるツール検出および登録アプローチを選択します。
-
ツールフィルタリングまたはセマンティック検索機能を使用する – LLM にスコープダウンされたツールセットを動的に提供し、適切なツールを選択する際の精度と有効性を向上させます。ツールフィルタリングは、ツール名 (完全一致またはパターン)、ツールの説明 (セマンティック一致)、またはドメインタグまたはカテゴリタグで動作できます。セマンティック検索は、ユーザーのインテントをツールの説明と照合する場合に特に効果的です。どちらのアプローチもコンテキストウィンドウの使用を減らします。