Aller au contenu

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.

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

  1. Un projet TypeScript avec un composant Strands Agent
  2. Un projet avec un composant serveur MCP (soit ts#mcp-server soit py#mcp-server)
  3. Les deux composants créés avec computeType: BedrockAgentCoreRuntime
  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 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.

    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.ts de votre agent pour importer et utiliser les outils du serveur MCP
    • Met à jour la cible serve-local de l’agent pour dépendre de la cible serve du serveur MCP
    • Installe les dépendances requises

    Le générateur transforme le fichier agent.ts de votre agent pour utiliser les outils du serveur MCP :

    packages/example/src/my-agent/agent.ts
    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.

    Après avoir exécuté le générateur de connexion, vous devez accorder à l’agent la permission d’invoquer le serveur MCP :

    packages/infra/src/stacks/application-stack.ts
    const mcpServer = new MyMcpServer(this, 'MyMcpServer');
    const myAgent = new MyAgent(this, 'MyAgent');
    // Grant the agent access to bedrock models
    myAgent.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 server
    mcpServer.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.

    Le générateur configure la cible serve-local de l’agent pour :

    1. Démarrer automatiquement le(s) serveur(s) MCP connecté(s)
    2. Définir SERVE_LOCAL=true afin que le client généré utilise le transport HTTP direct au lieu d’AgentCore

    Exécutez l’agent localement avec :

    Terminal window
    pnpm 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.