Ir al contenido

AgentCore Gateway a servidor MCP

El generador connection puede registrar un servidor MCP (ya sea TypeScript o Python) como destino de un AgentCore Gateway.

Una vez conectado, el Gateway agrega las herramientas del servidor MCP en su único endpoint MCP, evalúa las llamadas contra su motor de políticas Cedar y firma el tráfico saliente al servidor MCP con IAM SigV4.

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

  1. Un proyecto agentcore-gateway
  2. Un componente de servidor MCP (ts#mcp-server o py#mcp-server) creado con infra: agentcore y auth: iam

El Gateway debe tener protocol: mcp y el servidor MCP debe tener auth: iam — el generador valida ambos. Los servidores MCP sin IAM no se pueden adjuntar porque el Gateway firma el tráfico saliente con SigV4.

Terminal window
pnpm nx g @aws/nx-plugin:connection
También puede realizar una ejecución en seco para ver qué archivos se cambiarían
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

Selecciona el proyecto Gateway como origen y el proyecto del servidor MCP como destino. Si el proyecto del servidor MCP contiene múltiples componentes, especifica targetComponent para desambiguar.

ParámetroTipoPredeterminadoDescripción
sourceProject Requeridostring-El proyecto de origen
targetProject Requeridostring-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 booleantrueSi 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 conecta proyectos existentes en lugar de emitir nuevos archivos fuente. Se modifican los siguientes archivos:

  • Directoriopackages/<gateway>
    • project.json el target dev del Gateway obtiene una dependencia en el <mcp>-dev del servidor MCP
    • local-dev.ts ATTACHED_MCP_SERVERS actualizado para que el gateway local agregue el servidor MCP

El target dev del proyecto Gateway obtiene una dependencia en el target <mcp>-dev del servidor MCP, por lo que ejecutar el Gateway localmente también inicia el servidor MCP. El servidor MCP también se registra en el local-dev.ts del proyecto Gateway para que el gateway local agregue sus herramientas.

Agregar el destino del servidor MCP a tu stack

Sección titulada «Agregar el destino del servidor MCP a tu stack»

El generador no puede conectar automáticamente el destino del servidor MCP en tu infraestructura porque no sabe qué stack o módulo instancia el Gateway. Agrega una única llamada a gateway.addMcpServer(server) tú mismo.

En el stack donde instancias el Gateway, registra el servidor MCP como destino:

packages/infra/src/stacks/application-stack.ts
const myMcpServer = new MyMcpServer(this, 'MyMcpServer');
const myGateway = new MyGateway(this, 'MyGateway');
// Register the MCP server as a target of the Gateway. The target name
// defaults to the MCP server's `mcpServerName` (its class name in
// kebab-case, e.g. `MyMcpServer` -> `my-mcp-server`).
myGateway.addMcpServer(myMcpServer);

El nombre del destino del Gateway (el mcpServerName del servidor MCP por defecto) se usa como prefijo para los nombres de acción de Cedar — el formato de acción es AgentCore::Action::"<targetName>___<toolName>". Consulta la sección Escribir políticas. Mantén el nombre del destino corto y estable; cambiarlo más tarde invalida cualquier política Cedar que haga referencia al nombre antiguo.

Para anular el nombre de destino predeterminado, pasa gatewayTargetName:

myGateway.addMcpServer(myMcpServer, { gatewayTargetName: 'my-mcp' });

El constructo configura el destino con iamCredentialProvider.service = 'bedrock-agentcore' para que el Gateway firme las llamadas salientes usando su propio rol de ejecución.

Ejecutar el Gateway localmente con:

Terminal window
pnpm nx dev <gateway-name>

inicia un gateway local más cada servidor MCP adjunto en su puerto local asignado. El gateway local expone un único endpoint MCP que agrega las herramientas de los servidores adjuntos. Los agentes conectados al Gateway a través de los generadores de conexión de gateway de TypeScript o Python apuntan a él cuando se ejecutan con LOCAL_DEV=true.