本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
工具探索
有三種方法可讓您透過 MCP 伺服器在代理程式中探索和註冊工具:靜態定義、動態探索和搜尋函數。
靜態定義
首先,您可以直接在客服人員程式碼中靜態定義可用的工具。在此方法中,您會為 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 伺服器中的可用工具變更,它可能會很脆弱。
動態探索
下一個方法是使用動態探索,並向 代理程式註冊所有可用的工具。隨著將更多工具新增至 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 提供的
搜尋函數
第三個選項是使用搜尋函數在執行時間尋找相關工具。您可以從 MCP 伺服器列出所有可用的工具,然後根據使用者提示對這些工具執行語意搜尋。然後,產生的工具會向 代理程式註冊。Amazon Bedrock AgentCore Gateway 提供原生語意搜尋功能,可讓您更輕鬆地實作這類解決方案。
MCP 工具探索的最佳實務
-
內容時段保留 – 選擇盡可能節省內容時段的工具探索和註冊方法。
-
使用工具篩選或語意搜尋功能 – 動態提供 LLM 一組縮小範圍的工具供您選擇,從而提高選擇正確工具的準確性和有效性。工具篩選可以操作於工具名稱 (完全相符或模式)、工具描述 (語意相符) 或網域或類別標籤。語意搜尋對於比對使用者意圖與工具描述特別有效。這兩種方法都會減少內容時段的使用。