Ir al contenido

Agente TypeScript a Gateway

El generador connection puede conectar tu Agente TypeScript a un Gateway AgentCore.

El generador configura el agente para que se autentique en el Gateway con IAM SigV4 cuando se despliega, y se conecte al gateway local iniciado por el proyecto Gateway cuando se ejecuta localmente.

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

  1. Un proyecto TypeScript con un componente Agent (infra: agentcore)
  2. Un proyecto agentcore-gateway con protocol: mcp y auth: iam

El Gateway debe servir el protocolo mcp — el agente lo alcanza como un cliente MCP, por lo que sus targets se exponen como herramientas. El Gateway también debe usar autenticación IAM: el agente firma sus solicitudes con SigV4 usando su propio rol de ejecución. El generador rechaza gateways autenticados con Cognito.

Ejecute este generador@aws/nx-plugin:connection

pnpm nx g @aws/nx-plugin:connection
Construya su comando5

Requerido

Requerido

Selecciona el proyecto del agente como origen y el proyecto Gateway como destino.

Opciones del generador5 opciones
sourceProjectRequeridostring

El proyecto de origen

targetProjectRequeridostring

El proyecto de destino al que conectar

sourceComponentstring

El componente de origen desde el cual conectar (nombre del componente, ruta relativa a la raíz del proyecto de origen, o id del generador). Usa '.' para seleccionar explícitamente el proyecto como origen.

targetComponentstring

El componente de destino al cual conectar (nombre del componente, ruta relativa a la raíz del proyecto de destino, o id del generador). Usa '.' para seleccionar explícitamente el proyecto como destino.

preferInstallDependenciesbooleanPredeterminado: 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 emite archivos de cliente central compartidos en tu paquete agent-connection, además de un wrapper por Gateway, y modifica tu agente:

  • Directoriopackages/common/agent-connection
    • Directoriosrc
      • Directoriocore/
        • agentcore-endpoints.ts Framework-agnostic ARN/URL resolution
        • agentcore-fetch.ts Framework-agnostic SigV4 / JWT / session-forwarding fetch
        • agentcore-transport.ts Shared AgentCore transport plumbing
        • agentcore-gateway-mcp-transport.ts Framework-agnostic Gateway MCP transport
        • agentcore-gateway-mcp-client-strands.ts Strands MCP client for the deployed Gateway
      • Directorioapp/
        • <gateway-kebab>-client-strands.ts Per-Gateway Strands client wrapper
      • index.ts Re-exports the Gateway client

Además, el generador:

  • Modifica el agent.ts de tu agente para importar la clase de cliente Gateway, llamar a <Gateway>ClientStrands.create(), y registrar el cliente devuelto en el array tools
  • Configura el target <agent>-dev del agente para que dependa del target dev del Gateway
  • Instala las dependencias requeridas de SigV4 / MCP

El generador transforma el agent.ts de tu agente para usar el cliente Gateway:

packages/example/src/my-agent/agent.ts
import { Agent } from '@strands-agents/sdk';
import { MyGatewayClientStrands } from '@my-scope/agent-connection';
export const getAgent = async () => {
const myGateway = await MyGatewayClientStrands.create();
return new Agent({
systemPrompt: '...',
tools: [myGateway],
});
};

Cuando se despliega (LOCAL_DEV no establecido), el cliente apunta al endpoint MCP del Gateway y se autentica con SigV4. Cuando LOCAL_DEV=true, apunta al gateway local iniciado por el target dev del proyecto Gateway, por lo que el mismo agent.ts funciona uniformemente en ambos modos.

El ID de sesión se propaga automáticamente a los servidores MCP descendentes a través del encabezado X-Amzn-Bedrock-AgentCore-Runtime-Session-Id.

Después de ejecutar el generador, debes otorgar al agente permiso para invocar el Gateway.

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

La URL del Gateway se registra automáticamente en el namespace agentcore.gateways.<ClassName> de Runtime Configuration por el constructo CDK generado, para que el agente pueda descubrirla en tiempo de ejecución.

El generador configura el target dev del agente para:

  1. Iniciar el gateway local del Gateway conectado y cada servidor MCP adjunto
  2. Establecer LOCAL_DEV=true para que el cliente generado apunte al gateway local en lugar del Gateway desplegado

Ejecuta el agente localmente con:

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

Para ejecutar el agente localmente contra el Gateway desplegado en su lugar (por ejemplo, para ejercitar políticas Cedar), usa el target serve del agente. Sin LOCAL_DEV establecido, el cliente resuelve la URL del Gateway desplegado desde la configuración de tiempo de ejecución y firma las solicitudes con SigV4 usando tus credenciales locales de AWS:

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

El gateway local sustituye al Gateway desplegado, por lo que:

  • Sin evaluación de políticas Cedar. Cada herramienta es visible para el agente independientemente de las políticas. Usa el target serve para ejercitar políticas contra el Gateway desplegado.
  • Se preserva el prefijo de nombres de herramientas. Las herramientas de cada servidor MCP local se envuelven para exponer nombres de la forma <target-name>___<tool-name>, coincidiendo con lo que emite el Gateway desplegado. Esto mantiene el system prompt del agente y los nombres de acción Cedar que referencias consistentes entre ejecuciones locales y desplegadas.