Salta ai contenuti

AgentCore Gateway a MCP Server

Il generatore connection può registrare un server MCP (sia TypeScript che Python) come target di un AgentCore Gateway.

Una volta connesso, il Gateway aggrega gli strumenti del server MCP nel suo singolo endpoint MCP, valuta le chiamate rispetto al suo motore di policy Cedar e firma il traffico in uscita verso il server MCP con IAM SigV4.

Prima di utilizzare questo generatore, assicurati di avere:

  1. Un progetto agentcore-gateway
  2. Un componente server MCP (ts#mcp-server o py#mcp-server) creato con infra: agentcore e auth: iam

Il Gateway deve avere protocol: mcp e il server MCP deve avere auth: iam — il generatore valida entrambi. I server MCP non-IAM non possono essere collegati perché il Gateway firma il traffico in uscita con SigV4.

  1. Installa il Nx Console VSCode Plugin se non l'hai già fatto
  2. Apri la console Nx in VSCode
  3. Clicca su Generate (UI) nella sezione "Common Nx Commands"
  4. Cerca @aws/nx-plugin - connection
  5. Compila i parametri richiesti
    • Clicca su Generate

    Seleziona il progetto Gateway come sorgente e il progetto server MCP come target. Se il progetto server MCP contiene più componenti, specifica targetComponent per disambiguare.

    Parametro Tipo Predefinito Descrizione
    sourceProject Obbligatorio string - Il progetto sorgente
    targetProject Obbligatorio string - Il progetto di destinazione a cui connettersi
    sourceComponent string - Il componente sorgente da cui connettersi (nome del componente, percorso relativo alla radice del progetto sorgente, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come sorgente.
    targetComponent string - Il componente di destinazione a cui connettersi (nome del componente, percorso relativo alla radice del progetto di destinazione, o id del generatore). Usare '.' per selezionare esplicitamente il progetto come destinazione.
    preferInstallDependencies boolean true Se preferire l'installazione delle dipendenze dopo l'esecuzione del generatore. Impostare su false per rimandare l'installazione quando si eseguono più generatori in batch (l'installazione viene comunque eseguita se necessaria affinché i generatori successivi possano calcolare il grafo dei progetti Nx); installare una volta alla fine.

    Il generatore collega i progetti esistenti insieme piuttosto che emettere nuovi file sorgente. I seguenti file vengono modificati:

    • Directorypackages/<gateway>
      • project.json il target dev del Gateway acquisisce una dipendenza dal <mcp>-dev del server MCP
      • local-dev.ts ATTACHED_MCP_SERVERS aggiornato in modo che il gateway locale aggreghi il server MCP

    Il target <gateway>-dev del progetto Gateway acquisisce una dipendenza dal target <mcp>-dev del server MCP, quindi eseguire il Gateway localmente avvia anche il server MCP. Il server MCP viene anche registrato nel file local-dev.ts del progetto Gateway in modo che il gateway locale aggreghi i suoi strumenti.

    Il generatore non può collegare automaticamente il target del server MCP nella tua infrastruttura perché non sa quale stack o modulo istanzia il Gateway. Aggiungi tu stesso una singola chiamata a gateway.addMcpServer(server).

    Nello stack in cui istanzi il Gateway, registra il server MCP come target:

    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);

    Il nome del target del Gateway (il mcpServerName del server MCP per impostazione predefinita) viene utilizzato come prefisso per i nomi delle azioni Cedar — il formato dell’azione è AgentCore::Action::"<targetName>___<toolName>". Vedi la sezione Scrittura delle Policy. Mantieni il nome del target breve e stabile; modificarlo successivamente invalida qualsiasi policy Cedar che faccia riferimento al vecchio nome.

    Per sovrascrivere il nome del target predefinito, passa gatewayTargetName:

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

    Il costrutto configura il target con iamCredentialProvider.service = 'bedrock-agentcore' in modo che il Gateway firmi le chiamate in uscita utilizzando il proprio ruolo di esecuzione.

    Eseguire il Gateway localmente con:

    Terminal window
    pnpm nx dev <gateway-name>

    avvia un gateway locale più ogni server MCP collegato sulla sua porta locale assegnata. Il gateway locale espone un singolo endpoint MCP che aggrega gli strumenti dei server collegati. Gli agenti connessi al Gateway tramite i generatori di connessione gateway TypeScript o Python puntano ad esso quando vengono eseguiti con LOCAL_DEV=true.