Agent TypeScript Strands vers MCP
Le générateur connection peut connecter votre TypeScript Strands Agent à un serveur MCP (soit TypeScript soit Python).
Le générateur configure tout le câblage nécessaire pour que votre agent puisse découvrir et invoquer les outils du serveur MCP, à la fois lorsqu’il est déployé sur AWS (via Bedrock AgentCore) et lorsqu’il s’exécute localement.
Prérequis
Section intitulée « Prérequis »Avant d’utiliser ce générateur, assurez-vous d’avoir :
- Un projet TypeScript avec un composant Strands Agent
- Un projet avec un composant serveur MCP (soit
ts#mcp-serversoitpy#mcp-server) - Les deux composants créés avec
computeType: BedrockAgentCoreRuntime
Utilisation
Section intitulée « Utilisation »Exécuter le générateur
Section intitulée « Exécuter le générateur »- Installez le Nx Console VSCode Plugin si ce n'est pas déjà fait
- Ouvrez la console Nx dans VSCode
- Cliquez sur
Generate (UI)dans la section "Common Nx Commands" - Recherchez
@aws/nx-plugin - connection - Remplissez les paramètres requis
- Cliquez sur
Generate
pnpm nx g @aws/nx-plugin:connectionyarn nx g @aws/nx-plugin:connectionnpx nx g @aws/nx-plugin:connectionbunx nx g @aws/nx-plugin:connectionVous pouvez également effectuer une simulation pour voir quels fichiers seraient modifiés
pnpm nx g @aws/nx-plugin:connection --dry-runyarn nx g @aws/nx-plugin:connection --dry-runnpx nx g @aws/nx-plugin:connection --dry-runbunx nx g @aws/nx-plugin:connection --dry-runSélectionnez votre projet d’agent comme source et votre projet de serveur MCP comme cible. Si vos projets contiennent plusieurs composants, spécifiez les options sourceComponent et targetComponent pour lever l’ambiguïté.
| Paramètre | Type | Par défaut | Description |
|---|---|---|---|
| sourceProject Requis | string | - | The source project |
| targetProject Requis | string | - | The target project to connect to |
| sourceComponent | string | - | The source component to connect from (component name, path relative to source project root, or generator id). Use '.' to explicitly select the project as the source. |
| targetComponent | string | - | The target component to connect to (component name, path relative to target project root, or generator id). Use '.' to explicitly select the project as the target. |
Sortie du générateur
Section intitulée « Sortie du générateur »Le générateur crée un package partagé agent-connection et modifie le code de votre agent :
Répertoirepackages/common/agent-connection
Répertoiresrc
Répertoireapp
- <mcp-server-name>-client.ts Client de haut niveau pour le serveur MCP connecté
Répertoirecore
- agentcore-mcp-client.ts Client MCP AgentCore de bas niveau avec authentification SigV4/JWT
- index.ts Exporte tous les clients
- project.json
- tsconfig.json
De plus, il :
- Transforme le fichier
agent.tsde votre agent pour importer et utiliser les outils du serveur MCP - Met à jour la cible
serve-localde l’agent pour dépendre de la cible serve du serveur MCP - Installe les dépendances requises
Utilisation du serveur MCP connecté
Section intitulée « Utilisation du serveur MCP connecté »Le générateur transforme le fichier agent.ts de votre agent pour utiliser les outils du serveur MCP :
import { Agent, tool } from '@strands-agents/sdk';import { MyMcpServerClient } from ':my-scope/agent-connection';
export const getAgent = async (sessionId: string) => { const myMcpServerClient = await MyMcpServerClient.create(sessionId); return new Agent({ systemPrompt: '...', tools: [myMcpServerClient], });};Le paramètre sessionId est transmis depuis l’appelant, garantissant la cohérence pour Bedrock AgentCore Observability.
Infrastructure
Section intitulée « Infrastructure »Après avoir exécuté le générateur de connexion, vous devez accorder à l’agent la permission d’invoquer le serveur MCP :
const mcpServer = new MyMcpServer(this, 'MyMcpServer');const myAgent = new MyAgent(this, 'MyAgent');
// Grant the agent access to bedrock modelsmyAgent.agentCoreRuntime.addToRolePolicy( new PolicyStatement({ actions: ['bedrock:InvokeModel', 'bedrock:InvokeModelWithResponseStream'], resources: ['arn:aws:bedrock:*:*:foundation-model/*', 'arn:aws:bedrock:*:*:inference-profile/*'], }),);
// Grant the agent permissions to invoke the MCP servermcpServer.agentCoreRuntime.grantInvoke(myAgent.agentCoreRuntime);L’ARN du runtime AgentCore du serveur MCP est automatiquement enregistré dans l’espace de noms connection de la Configuration Runtime par la construction CDK générée, afin que l’agent puisse le découvrir à l’exécution.
Après avoir exécuté le générateur de connexion, vous devez accorder à l’agent la permission d’invoquer le serveur MCP dans votre configuration Terraform :
module "inventory_mcp_server" { source = "../../common/terraform/src/app/mcp-servers/inventory-mcp"}
module "story_agent" { source = "../../common/terraform/src/app/agents/story-agent"}
# Grant the agent permissions to invoke the MCP serverresource "aws_iam_policy" "agent_invoke_mcp" { name = "AgentInvokeMcpPolicy" policy = jsonencode({ Version = "2012-10-17" Statement = [{ Effect = "Allow" Action = "bedrock-agentcore:InvokeAgent" Resource = module.inventory_mcp_server.agent_core_runtime_arn }] })}
resource "aws_iam_role_policy_attachment" "agent_invoke_mcp" { role = module.story_agent.agent_core_runtime_role_arn policy_arn = aws_iam_policy.agent_invoke_mcp.arn}L’ARN du runtime AgentCore du serveur MCP est automatiquement enregistré dans l’espace de noms connection de la Configuration Runtime par le module Terraform généré, afin que l’agent puisse le découvrir à l’exécution.
Développement local
Section intitulée « Développement local »Le générateur configure la cible serve-local de l’agent pour :
- Démarrer automatiquement le(s) serveur(s) MCP connecté(s)
- Définir
SERVE_LOCAL=trueafin que le client généré utilise le transport HTTP direct au lieu d’AgentCore
Exécutez l’agent localement avec :
pnpm nx <agent-name>-serve-local <project-name>yarn nx <agent-name>-serve-local <project-name>npx nx <agent-name>-serve-local <project-name>bunx nx <agent-name>-serve-local <project-name>Cela démarrera à la fois l’agent et tous les serveurs MCP connectés, l’agent se connectant aux serveurs MCP directement via HTTP sur leurs ports locaux assignés.