

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 工具探索
<a name="mcp-tool-strategy-discovery"></a>

有三種方法可讓您透過 MCP 伺服器在代理程式中探索和註冊工具：靜態定義、動態探索和搜尋函數。

## 靜態定義
<a name="mcp-tool-strategy-discovery-static"></a>

首先，您可以直接在客服人員程式碼中靜態定義可用的工具。在此方法中，您會為 MCP 用戶端存取的 MCP 伺服器所提供的每個工具定義遠端工具 (Strands Agent SDK 等架構中的用戶端參考物件）。下列範例使用可串流的 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 伺服器中的可用工具變更，它可能會很脆弱。

## 動態探索
<a name="mcp-tool-strategy-discovery-dynamic"></a>

下一個方法是使用動態探索，並向 代理程式註冊所有可用的工具。隨著將更多工具新增至 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 提供的](https://strandsagents.com/docs/user-guide/concepts/tools/mcp-tools/#client-configuration)參數，以減少向客服人員註冊的工具數量。

## 搜尋函數
<a name="mcp-tool-strategy-discovery-search"></a>

第三個選項是使用搜尋函數在執行時間尋找相關工具。您可以從 MCP 伺服器列出所有可用的工具，然後根據使用者提示對這些工具執行語意搜尋。然後，產生的工具會向 代理程式註冊。[Amazon Bedrock AgentCore Gateway](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway.html) [提供原生語意搜尋功能](https://docs.aws.amazon.com/bedrock-agentcore/latest/devguide/gateway-using-mcp-semantic-search.html)，可讓您更輕鬆地實作這類解決方案。

## MCP 工具探索的最佳實務
<a name="mcp-tool-strategy-discovery-best-practices"></a>
+ **內容時段保留** – 選擇盡可能節省內容時段的工具探索和註冊方法。
+ **使用工具篩選或語意搜尋功能** – 動態提供 LLM 一組縮小範圍的工具供您選擇，從而提高選擇正確工具的準確性和有效性。工具篩選可以操作於工具名稱 （完全相符或模式）、工具描述 （語意相符） 或網域或類別標籤。語意搜尋對於比對使用者意圖與工具描述特別有效。這兩種方法都會減少內容時段的使用。