Pular para o conteúdo

Python Strands Agent para MCP

O gerador connection pode conectar seu Python Strands Agent a um servidor MCP (seja TypeScript ou Python).

O gerador configura toda a conexão necessária para que seu agente possa descobrir e invocar as ferramentas do servidor MCP, tanto quando implantado na AWS (via Bedrock AgentCore) quanto quando executado localmente.

Antes de usar este gerador, certifique-se de ter:

  1. Um projeto Python com um componente Strands Agent
  2. Um projeto com um componente de servidor MCP (seja ts#mcp-server ou py#mcp-server)
  3. Ambos os componentes criados com computeType: BedrockAgentCoreRuntime
  1. Instale o Nx Console VSCode Plugin se ainda não o fez
  2. Abra o console Nx no VSCode
  3. Clique em Generate (UI) na seção "Common Nx Commands"
  4. Procure por @aws/nx-plugin - connection
  5. Preencha os parâmetros obrigatórios
    • Clique em Generate

    Selecione seu projeto de agente como origem e seu projeto de servidor MCP como destino. Se seus projetos contiverem múltiplos componentes, especifique as opções sourceComponent e targetComponent para desambiguar.

    Parâmetro Tipo Padrão Descrição
    sourceProject Obrigatório string - O projeto de origem
    targetProject Obrigatório string - O projeto de destino para conectar
    sourceComponent string - O componente de origem para conectar (nome do componente, caminho relativo à raiz do projeto de origem, ou id do gerador). Use '.' para selecionar explicitamente o projeto como origem.
    targetComponent string - O componente de destino para conectar (nome do componente, caminho relativo à raiz do projeto de destino, ou id do gerador). Use '.' para selecionar explicitamente o projeto como destino.

    O gerador cria um projeto Python compartilhado agent_connection em packages/common/agent_connection/ (se ainda não existir). Módulos de cliente por conexão são gerados neste projeto compartilhado:

    • Directorypackages/common/agent_connection
      • Directory<scope>_agent_connection
        • __init__.py Re-exporta clientes por conexão
        • Directorycore
          • agentcore_mcp_client.py Cliente MCP AgentCore principal
        • Directoryapp
          • <mcp_server_name>_client.py Cliente por conexão para cada servidor MCP

    Além disso, o gerador:

    • Transforma o agent.py do seu agente para importar e usar as ferramentas do servidor MCP via um cliente baseado em classe
    • Adiciona o projeto agent_connection como uma dependência de workspace do seu projeto de agente
    • Atualiza o target serve-local do agente para depender do target serve do servidor MCP

    O gerador transforma o agent.py do seu agente para usar as ferramentas do servidor MCP:

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

    O parâmetro session_id é propagado a partir do chamador, garantindo consistência para Bedrock AgentCore Observability.

    Após executar o gerador de conexão, você precisa conceder ao agente permissão para invocar o servidor MCP:

    packages/infra/src/stacks/application-stack.ts
    const mcpServer = new MyMcpServer(this, 'MyMcpServer');
    const myAgent = new MyAgent(this, 'MyAgent');
    // Grant the agent access to bedrock models
    myAgent.agentCoreRuntime.addToRolePolicy(
    new PolicyStatement({
    actions: ['bedrock:InvokeModel', 'bedrock:InvokeModelWithResponseStream'],
    resources: ['arn:aws:bedrock:*:*:foundation-model/*', 'arn:aws:bedrock:*:*:inference-profile/*'],
    }),
    );
    // Grant the agent permissions to invoke the MCP server
    mcpServer.grantInvokeAccess(myAgent.agentCoreRuntime);

    O ARN do runtime AgentCore do servidor MCP é automaticamente registrado no namespace connection da Configuração de Runtime pelo construtor CDK gerado, para que o agente possa descobri-lo em tempo de execução.

    O gerador configura o target serve-local do agente para:

    1. Iniciar o(s) servidor(es) MCP conectado(s) automaticamente
    2. Definir SERVE_LOCAL=true para que o cliente gerado use transporte HTTP direto em vez de AgentCore

    Execute o agente localmente com:

    Terminal window
    pnpm nx <agent-name>-serve-local <project-name>

    Isso iniciará tanto o agente quanto todos os servidores MCP conectados, com o agente se conectando aos servidores MCP diretamente via HTTP em suas portas locais atribuídas.