TypeScript Agent para MCP
O gerador connection pode conectar seu TypeScript Agent a um servidor MCP (seja TypeScript ou Python).
O gerador configura toda a estrutura 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.
Pré-requisitos
Seção intitulada “Pré-requisitos”Antes de usar este gerador, certifique-se de ter:
- Um projeto TypeScript com um componente Strands Agent
- Um projeto com um componente de servidor MCP (seja
ts#mcp-serveroupy#mcp-server) - Ambos os componentes criados com
infra: agentcore
Executar o Gerador
Seção intitulada “Executar o Gerador”Execute este gerador@aws/nx-plugin:connection
pnpm nx g @aws/nx-plugin:connection yarn nx g @aws/nx-plugin:connection npx nx g @aws/nx-plugin:connection bunx nx g @aws/nx-plugin:connection- Instale o Nx Console VSCode Plugin se ainda não o fez
- Abra o console Nx no VSCode
- Clique em
Generate (UI)na seção "Common Nx Commands" - Procure por
@aws/nx-plugin - connection - Preencha os parâmetros obrigatórios
- Clique em
Generate
Monte seu comando5
Obrigatório
Obrigatório
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.
sourceProjectObrigatóriostringO projeto de origem
targetProjectObrigatóriostringO projeto de destino para conectar
sourceComponentstringO componente de origem a partir do qual conectar (nome do componente, caminho relativo à raiz do projeto de origem, ou id do gerador). Use '.' para selecionar explicitamente o projeto como origem.
targetComponentstringO componente de destino ao qual conectar (nome do componente, caminho relativo à raiz do projeto de destino, ou id do gerador). Use '.' para selecionar explicitamente o projeto como destino.
preferInstallDependenciesbooleanPadrão:trueSe 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.
Saída do Gerador
Seção intitulada “Saída do Gerador”O gerador cria um pacote compartilhado agent-connection e modifica o código do seu agente:
Directorypackages/common/agent-connection
Directorysrc
Directoryapp
- <mcp-server-name>-client-strands.ts Cliente Strands de alto nível para o servidor MCP conectado
Directorycore
- agentcore-endpoints.ts Resolução de ARN/URL independente de framework
- agentcore-fetch.ts Fetch com SigV4 / JWT / encaminhamento de sessão independente de framework
- agentcore-transport.ts Estrutura de transporte AgentCore compartilhada
- agentcore-mcp-transport.ts Transporte MCP independente de framework
- agentcore-mcp-client-strands.ts Cliente MCP Strands envolvendo o transporte
- index.ts Exporta todos os clientes
- project.json
- tsconfig.json
Além disso, ele:
- Transforma o
agent.tsdo seu agente para importar e usar as ferramentas do servidor MCP - Atualiza o target
devdo agente para depender do target serve do servidor MCP - Instala as dependências necessárias
Usando o Servidor MCP Conectado
Seção intitulada “Usando o Servidor MCP Conectado”O gerador transforma o agent.ts do seu agente para usar as ferramentas do servidor MCP:
import { Agent, tool } from '@strands-agents/sdk';import { MyMcpServerClientStrands } from '@my-scope/agent-connection';
export const getAgent = async () => { const myMcpServerClient = await MyMcpServerClientStrands.create(); return new Agent({ systemPrompt: '...', tools: [myMcpServerClient], });};O ID de sessão do AgentCore é propagado para o servidor MCP automaticamente via cabeçalho X-Amzn-Bedrock-AgentCore-Runtime-Session-Id, então create() não recebe argumentos: o servidor do agente vincula a sessão da requisição de entrada em um contexto AsyncLocalStorage (enterSessionContext no router.ts gerado, ou runWithSessionId no middleware de sessão A2A/AG-UI), e o fetch do cliente de conexão em agentcore-fetch.ts o carimba em cada chamada de saída — garantindo consistência para Bedrock AgentCore Observability.
Infraestrutura
Seção intitulada “Infraestrutura”Após executar o gerador de conexão, você precisa conceder ao agente permissão para invocar o servidor MCP:
const mcpServer = new MyMcpServer(this, 'MyMcpServer');const myAgent = new MyAgent(this, 'MyAgent');
// Grant the agent permissions to invoke the MCP servermcpServer.grantInvokeAccess(myAgent);grantInvokeAccess conecta as ações de invocação do AgentCore (InvokeAgentRuntime, InvokeAgentRuntimeForUser e InvokeAgentRuntimeWithWebSocketStream) no ARN do runtime do servidor MCP.
O ARN do runtime AgentCore do servidor MCP é automaticamente registrado no namespace agentcore da Runtime Configuration pelo construto CDK gerado, para que o agente possa descobri-lo em tempo de execução.
Após executar o gerador de conexão, você precisa conceder ao agente permissão para invocar o servidor MCP na sua configuração Terraform:
module "inventory_mcp_server" { source = "../../common/terraform/src/app/mcp-servers/inventory-mcp"}
module "story_agent" { source = "../../common/terraform/src/app/agents/story-agent"}
# Grant the agent permissions to invoke the MCP serverresource "aws_iam_policy" "agent_invoke_mcp" { name = "AgentInvokeMcpPolicy" policy = jsonencode({ Version = "2012-10-17" Statement = [{ Effect = "Allow" Action = [ "bedrock-agentcore:InvokeAgentRuntime", "bedrock-agentcore:InvokeAgentRuntimeWithWebSocketStream", ] Resource = [ module.inventory_mcp_server.agent_core_runtime_arn, "${module.inventory_mcp_server.agent_core_runtime_arn}/*", ] }] })}
resource "aws_iam_role_policy_attachment" "agent_invoke_mcp" { role = module.story_agent.agent_core_runtime_role_arn policy_arn = aws_iam_policy.agent_invoke_mcp.arn}O ARN do runtime AgentCore do servidor MCP é automaticamente registrado no namespace agentcore da Runtime Configuration pelo módulo Terraform gerado, para que o agente possa descobri-lo em tempo de execução.
Desenvolvimento Local
Seção intitulada “Desenvolvimento Local”O gerador configura o target dev do agente para:
- Iniciar o(s) servidor(es) MCP conectado(s) automaticamente
- Definir
LOCAL_DEV=truepara que o cliente gerado use transporte HTTP direto em vez de AgentCore
Execute o agente localmente com:
pnpm nx <agent-name>-dev <project-name>yarn nx <agent-name>-dev <project-name>npx nx <agent-name>-dev <project-name>bunx 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 nas suas portas locais atribuídas.