View a markdown version of this page

Descubrimiento de herramientas - AWS Orientación prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Descubrimiento de herramientas

Existen tres enfoques para detectar y registrar las herramientas de su agente con los servidores MCP: definición estática, descubrimiento dinámico y función de búsqueda.

Definición estática

En primer lugar, puede definir estáticamente las herramientas disponibles directamente en el código del agente. En este enfoque, se define una herramienta remota (un objeto de referencia del lado del cliente en un marco como Strands Agent SDK) para cada herramienta proporcionada por el servidor MCP a la que accede un cliente MCP. En el siguiente ejemplo, se utiliza un transporte HTTP que se puede reproducir en streaming:

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])

El registro individual de las herramientas le ayuda a ser muy selectivo con las herramientas que pone a disposición del LLM, lo que minimiza la cantidad de ventana de contexto utilizada. La desventaja es que requiere conocer los nombres de las herramientas disponibles y puede resultar frágil si las herramientas disponibles cambian en el servidor MCP.

Descubrimiento dinámico

El siguiente enfoque consiste en utilizar el descubrimiento dinámico y registrar todas las herramientas disponibles con el agente. Este enfoque consume el contexto de forma lineal a medida que se agregan más herramientas al servidor MCP. El siguiente es un ejemplo de este enfoque:

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)

Pensemos en un escenario en el que una definición de herramienta típica consume aproximadamente entre 250 y 500 fichas (incluidos el nombre, la descripción y el esquema). El registro de 20 herramientas consumiría entre 5000 y 10 000 fichas de la ventana de contexto. Si tiene un número reducido de servidores MCP y controla el número de herramientas, esta opción es la más sencilla de implementar. Sin embargo, si se espera que la lista de herramientas aumente, esto puede provocar problemas silenciosos de administración del contexto en sus agentes. Una variante alternativa de este enfoque consiste en utilizar un parámetro de filtro de herramientas al llamarlist_tools, como el que proporciona el SDK de Strands Agents, para reducir la cantidad de herramientas que están registradas en el agente.

La tercera opción es utilizar una función de búsqueda para encontrar las herramientas relevantes durante el tiempo de ejecución. Enumera todas las herramientas disponibles en su servidor MCP y, a continuación, realiza una búsqueda semántica sobre esas herramientas en función de la solicitud del usuario. A continuación, las herramientas resultantes se registran en su agente. Amazon Bedrock AgentCore Gateway proporciona una capacidad de búsqueda semántica nativa que puede facilitar la implementación de este tipo de soluciones.

Prácticas recomendadas para el descubrimiento de herramientas MCP

  • Preservación de la ventana de contexto: elija un enfoque de descubrimiento y registro de herramientas que conserve la mayor parte posible de la ventana de contexto.

  • Utilice las funciones de filtrado de herramientas o búsqueda semántica: proporcione al LLM de forma dinámica un conjunto reducido de herramientas entre las que elegir, lo que mejora su precisión y eficacia a la hora de elegir la herramienta adecuada. El filtrado de herramientas puede funcionar con nombres de herramientas (patrones o coincidencias exactas), descripciones de herramientas (coincidencia semántica) o etiquetas de dominio o categoría. La búsqueda semántica es especialmente eficaz para comparar la intención de los usuarios con las descripciones de las herramientas. Ambos enfoques reducen el uso de la ventana de contexto.