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.

Exécuter ce générateur@aws/nx-plugin:connection

pnpm nx g @aws/nx-plugin:connection
Composez votre commande5

Requis

Requis

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é.

Options du générateur5 options
sourceProjectRequisstring

Le projet source

targetProjectRequisstring

Le projet cible auquel se connecter

sourceComponentstring

Le composant source depuis lequel se connecter (nom du composant, chemin relatif à la racine du projet source, ou identifiant de générateur). Utilisez '.' pour sélectionner explicitement le projet comme source.

targetComponentstring

Le composant cible auquel se connecter (nom du composant, chemin relatif à la racine du projet cible, ou identifiant de générateur). Utilisez '.' pour sélectionner explicitement le projet comme cible.

preferInstallDependenciesbooleanPar défaut: 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 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.