Ir al contenido

Agente Python a MCP

El generador connection puede conectar tu Python Agent a un servidor MCP (ya sea TypeScript o Python).

El generador configura todo el cableado necesario para que tu agente pueda descubrir e invocar las herramientas del servidor MCP, tanto cuando se despliega en AWS (a través de Bedrock AgentCore) como cuando se ejecuta localmente.

Antes de usar este generador, asegúrate de tener:

  1. Un proyecto Python con un componente Python Agent (Strands o LangChain)
  2. Un proyecto con un componente de servidor MCP (ya sea ts#mcp-server o py#mcp-server)
  3. Ambos componentes creados con infra: agentcore
  1. Instale el Nx Console VSCode Plugin si aún no lo ha hecho
  2. Abra la consola Nx en VSCode
  3. Haga clic en Generate (UI) en la sección "Common Nx Commands"
  4. Busque @aws/nx-plugin - connection
  5. Complete los parámetros requeridos
    • Haga clic en Generate

    Selecciona tu proyecto de agente como origen y tu proyecto de servidor MCP como destino. Si tus proyectos contienen múltiples componentes, especifica las opciones sourceComponent y targetComponent para desambiguar.

    Parámetro Tipo Predeterminado Descripción
    sourceProject Requerido string - El proyecto de origen
    targetProject Requerido string - El proyecto de destino al que conectar
    sourceComponent string - El componente de origen desde el que conectar (nombre del componente, ruta relativa a la raíz del proyecto de origen, o id del generador). Use '.' para seleccionar explícitamente el proyecto como origen.
    targetComponent string - El componente de destino al que conectar (nombre del componente, ruta relativa a la raíz del proyecto de destino, o id del generador). Use '.' para seleccionar explícitamente el proyecto como destino.
    preferInstallDependencies boolean true Si se prefiere instalar las dependencias después de que se ejecute el generador. Establecer en false para diferir la instalación al ejecutar múltiples generadores en lote (la instalación aún se ejecuta si es necesario para que los generadores subsiguientes puedan calcular el grafo de proyectos de Nx); instalar una vez al final.

    El generador crea un proyecto Python compartido agent_connection en packages/common/agent_connection/ (si aún no existe). Los módulos cliente por conexión se generan en este proyecto compartido:

    • Directoriopackages/common/agent_connection
      • Directorio<scope>_agent_connection
        • __init__.py Re-exporta clientes por conexión
        • Directoriocore
          • agentcore_endpoints.py Resolución de ARN/URL agnóstica del framework
          • agentcore_mcp_transport.py Transporte MCP agnóstico del framework
          • agentcore_mcp_client_<framework>.py Cliente MCP que envuelve el transporte para el framework de tu agente
          • Directorioauth/ httpx.Auth agnóstico del framework para SigV4 / reenvío de sesión
        • Directorioapp
          • <mcp_server_name>_client_<framework>.py Cliente por conexión para cada servidor MCP

    El sufijo del cliente coincide con el framework de tu agente (_strands o _langchain).

    Además, el generador:

    • Transforma el agent.py de tu agente para importar y usar las herramientas del servidor MCP a través de un cliente basado en clases
    • Agrega el proyecto agent_connection como dependencia de workspace de tu proyecto de agente
    • Actualiza el target dev del agente para que dependa del target serve del servidor MCP

    El generador transforma el agent.py de tu agente para usar las herramientas del servidor MCP:

    packages/my-project/my_module/agent/agent.py
    from contextlib import contextmanager
    from strands import Agent
    from my_scope_agent_connection import MyMcpServerClientStrands
    @contextmanager
    def get_agent():
    my_mcp_server = MyMcpServerClientStrands.create()
    with (
    my_mcp_server,
    ):
    yield Agent(
    system_prompt="...",
    tools=[*my_mcp_server.list_tools_sync()],
    )

    El cliente Strands es un administrador de contexto, ingresado en un bloque with alrededor del agente.

    El ID de sesión de AgentCore se propaga automáticamente al servidor MCP a través del encabezado X-Amzn-Bedrock-AgentCore-Runtime-Session-Id para ambos frameworks, asegurando consistencia para Bedrock AgentCore Observability.

    Después de ejecutar el generador de conexión, necesitas otorgar al agente permiso para invocar el servidor MCP:

    packages/infra/src/stacks/application-stack.ts
    const mcpServer = new MyMcpServer(this, 'MyMcpServer');
    const myAgent = new MyAgent(this, 'MyAgent');
    // Grant the agent permissions to invoke the MCP server
    mcpServer.grantInvokeAccess(myAgent);

    El ARN del runtime AgentCore del servidor MCP se registra automáticamente en el namespace agentcore de Runtime Configuration por el constructo CDK generado, para que el agente pueda descubrirlo en tiempo de ejecución.

    El generador configura el target dev del agente para:

    1. Iniciar los servidores MCP conectados automáticamente
    2. Establecer LOCAL_DEV=true para que el cliente generado use transporte HTTP directo en lugar de AgentCore

    Ejecuta el agente localmente con:

    Terminal window
    pnpm nx <agent-name>-dev <project-name>

    Esto iniciará tanto el agente como todos los servidores MCP conectados, con el agente conectándose a los servidores MCP directamente a través de HTTP en sus puertos locales asignados.