As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Descoberta de ferramentas
Há três abordagens para descobrir e registrar ferramentas em seu agente com servidores MCP: definição estática, descoberta dinâmica e função de pesquisa.
Definição estática
Primeiro, você pode definir estaticamente as ferramentas disponíveis diretamente no código do agente. Nessa abordagem, você define uma ferramenta remota (um objeto de referência do lado do cliente em uma estrutura como o Strands Agent SDK) para cada ferramenta fornecida pelo servidor MCP que é acessada por um cliente MCP. O exemplo a seguir usa transporte HTTP simplificável:
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])
O registro individual de ferramentas ajuda você a ser muito seletivo quanto às ferramentas que você disponibiliza para o LLM, o que minimiza a quantidade de janela de contexto usada. A desvantagem é que isso requer o conhecimento dos nomes das ferramentas disponíveis e pode ser frágil se as ferramentas disponíveis mudarem no servidor MCP.
Descoberta dinâmica
A próxima abordagem é usar a descoberta dinâmica e registrar todas as ferramentas disponíveis com o agente. Essa abordagem consome o contexto linearmente à medida que mais ferramentas são adicionadas ao servidor MCP. Veja a seguir um exemplo dessa abordagem:
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)
Considere um cenário em que uma definição de ferramenta típica consome aproximadamente 250 a 500 tokens (incluindo nome, descrição e esquema). O registro de 20 ferramentas consumiria de 5.000 a 10.000 tokens da sua janela de contexto. Quando você tem um pequeno número de servidores MCP e tem controle sobre o número de ferramentas, essa opção é a mais simples de implementar. No entanto, se se espera que a lista de ferramentas cresça, isso pode criar problemas silenciosos de gerenciamento de contexto em seus agentes. Uma variação alternativa dessa abordagem é usar um parâmetro de filtro de ferramentas ao chamarlist_tools, como o que o SDK do Strands Agents fornece
Função de pesquisa
A terceira opção é usar uma função de pesquisa para encontrar ferramentas relevantes durante o tempo de execução. Você lista todas as ferramentas disponíveis do seu servidor MCP e, em seguida, executa uma pesquisa semântica sobre essas ferramentas com base no prompt do usuário. Em seguida, as ferramentas resultantes são registradas com seu agente. O Amazon Bedrock AgentCore Gateway fornece um recurso de pesquisa semântica nativa que pode facilitar a implementação desse tipo de solução.
Práticas recomendadas para descoberta de ferramentas MCP
-
Preservação da janela de contexto — Escolha uma abordagem de descoberta e registro de ferramentas que conserve o máximo possível da janela de contexto.
-
Use recursos de filtragem de ferramentas ou pesquisa semântica — Forneça dinamicamente ao LLM um conjunto de ferramentas com escopo reduzido para escolher, o que melhora sua precisão e eficácia na escolha da ferramenta certa. A filtragem de ferramentas pode operar em nomes de ferramentas (correspondência ou padrões exatos), descrições de ferramentas (correspondência semântica) ou tags de domínio ou categoria. A pesquisa semântica é particularmente eficaz para comparar a intenção do usuário com as descrições das ferramentas. Ambas as abordagens reduzem o uso da janela de contexto.