Pular para o conteúdo

Python Agent para MCP

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

O gerador configura toda a fiaçã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 Python Agent (Strands ou LangChain)
  2. Um projeto com um componente de servidor MCP (seja ts#mcp-server ou py#mcp-server)
  3. Ambos os componentes criados com infra: agentcore
Terminal window
pnpm nx g @aws/nx-plugin:connection
Você também pode realizar uma execução simulada para ver quais arquivos seriam alterados
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

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âmetroTipoPadrãoDescrição
sourceProject Obrigatóriostring-O projeto de origem
targetProject Obrigatóriostring-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.
preferInstallDependencies booleantrueSe deve preferir instalar dependências após a execução do gerador. Defina como false para adiar a instalação ao executar múltiplos geradores em lote (uma instalação ainda é executada se necessário para que os geradores subsequentes possam calcular o grafo de projetos Nx); instale uma vez no final.

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_endpoints.py Resolução de ARN/URL independente de framework
        • agentcore_mcp_transport.py Transporte MCP independente de framework
        • agentcore_mcp_client_<framework>.py Cliente MCP envolvendo o transporte para o framework do seu agente
        • Directoryauth/ httpx.Auth independente de framework para SigV4 / encaminhamento de sessão
      • Directoryapp
        • <mcp_server_name>_client_<framework>.py Cliente por conexão para cada servidor MCP

O sufixo do cliente corresponde ao framework do seu agente (_strands ou _langchain).

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 dev 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 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()],
)

O cliente Strands é um gerenciador de contexto, inserido em um bloco with ao redor do agente.

O ID de sessão do AgentCore é propagado automaticamente para o servidor MCP via o cabeçalho X-Amzn-Bedrock-AgentCore-Runtime-Session-Id para ambos os frameworks, 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 permissions to invoke the MCP server
mcpServer.grantInvokeAccess(myAgent);

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

O gerador configura o target dev do agente para:

  1. Iniciar o(s) servidor(es) MCP conectado(s) automaticamente
  2. Definir LOCAL_DEV=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>-dev <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.