Aller au contenu

AgentCore Gateway vers serveur MCP

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

Une fois connectée, la Gateway 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 Gateway 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 Gateway signe le trafic sortant avec SigV4.

Terminal window
pnpm nx g @aws/nx-plugin:connection
Vous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

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

ParamètreTypePar défautDescription
sourceProject Requisstring-Le projet source
targetProject Requisstring-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 booleantrueIndique 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 la cible dev de la Gateway gagne une dépendance sur le <mcp>-dev du serveur MCP
    • local-dev.ts ATTACHED_MCP_SERVERS mis à jour pour que la gateway locale agrège le serveur MCP

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

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

Dans la stack où vous instanciez la Gateway, 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 Gateway (le mcpServerName du serveur MCP 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' });

Le construct configure la cible avec iamCredentialProvider.service = 'bedrock-agentcore' pour que la Gateway signe les appels sortants en utilisant son propre rôle d’exécution.

L’exécution de la Gateway localement avec :

Terminal window
pnpm nx dev <gateway-name>

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