Aller au contenu

Passerelle AgentCore vers serveur MCP

Le générateur connection peut enregistrer un serveur MCP (soit TypeScript soit Python) comme cible d’une passerelle AgentCore.

Une fois connectée, la passerelle agrège les outils du serveur MCP dans son point de terminaison MCP unique, évalue les appels par rapport à son moteur de politique Cedar, et signe le trafic sortant vers le serveur MCP avec IAM SigV4.

Avant d’utiliser ce générateur, assurez-vous d’avoir :

  1. Un projet agentcore-gateway
  2. Un composant serveur MCP (ts#mcp-server ou py#mcp-server) créé avec infra: agentcore et auth: iam

La passerelle doit avoir protocol: mcp et le serveur MCP doit avoir auth: iam — le générateur valide les deux. Les serveurs MCP non-IAM ne peuvent pas être attachés car la passerelle signe le trafic sortant avec SigV4.

  1. Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
  2. Ouvrez la console Nx dans VSCode
  3. Cliquez sur Generate (UI) dans la section "Common Nx Commands"
  4. Recherchez @aws/nx-plugin - connection
  5. Remplissez les paramètres requis
    • Cliquez sur Generate

    Sélectionnez le projet de passerelle comme source et le projet de serveur MCP comme cible. Si le projet de serveur MCP contient plusieurs composants, spécifiez targetComponent pour lever l’ambiguïté.

    Paramètre Type Par défaut Description
    sourceProject Requis string - Le projet source
    targetProject Requis string - Le projet cible auquel se connecter
    sourceComponent string - Le composant source depuis lequel se connecter (nom du composant, chemin relatif à la racine du projet source, ou identifiant du générateur). Utilisez '.' pour sélectionner explicitement le projet comme source.
    targetComponent string - Le composant cible auquel se connecter (nom du composant, chemin relatif à la racine du projet cible, ou identifiant du générateur). Utilisez '.' pour sélectionner explicitement le projet comme cible.
    preferInstallDependencies boolean true Indique s'il faut privilégier l'installation des dépendances après l'exécution du générateur. Définir à false pour différer l'installation lors de l'exécution de plusieurs générateurs en lot (une installation s'exécute quand même si nécessaire pour que les générateurs suivants puissent calculer le graphe de projet Nx) ; installer une seule fois à la fin.

    Le générateur relie les projets existants ensemble plutôt que d’émettre de nouveaux fichiers source. Les fichiers suivants sont modifiés :

    • Répertoirepackages/<gateway>
      • project.json <gateway>-dev gagne une dépendance sur le <mcp>-dev du serveur MCP
      • local-dev.ts ATTACHED_MCP_SERVERS mis à jour pour que la passerelle locale agrège le serveur MCP

    La cible dev du projet de passerelle gagne une dépendance sur la cible <mcp>-dev du serveur MCP, donc l’exécution de la passerelle localement démarre également le serveur MCP. Le serveur MCP est également enregistré dans le local-dev.ts du projet de passerelle afin que la passerelle locale agrège ses outils.

    Le générateur ne peut pas câbler automatiquement la cible du serveur MCP dans votre infrastructure car il ne sait pas quelle stack ou quel module instancie la passerelle. Ajoutez vous-même un seul appel à gateway.addMcpServer(server).

    Dans la stack où vous instanciez la passerelle, enregistrez le serveur MCP comme cible :

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

    Le nom de cible de la passerelle (l’id de la construction en kebab-case par défaut) est utilisé comme préfixe pour les noms d’action Cedar — le format d’action est AgentCore::Action::"<targetName>___<toolName>". Voir la section Rédaction de politiques. Gardez le nom de cible court et stable ; le changer ultérieurement invalide toutes les politiques Cedar qui référencent l’ancien nom.

    Pour remplacer le nom de cible par défaut, passez gatewayTargetName :

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

    La construction configure la cible avec iamCredentialProvider.service = 'bedrock-agentcore' afin que la passerelle signe les appels sortants en utilisant son propre rôle d’exécution.

    L’exécution de la passerelle localement avec :

    Terminal window
    pnpm nx dev <gateway-name>

    démarre une passerelle locale plus chaque serveur MCP attaché sur son port local assigné. La passerelle locale expose un point de terminaison MCP unique qui agrège les outils des serveurs attachés. Les agents connectés à la passerelle via les générateurs de connexion de passerelle TypeScript ou Python pointent vers elle lors de l’exécution avec LOCAL_DEV=true.

    les exécutions locales et déployées. :::