Aller au contenu

Serveur MCP vers Base de Données Relationnelle

Le générateur connection relie un serveur MCP TypeScript à un projet de base de données relationnelle, rendant un client Prisma disponible à tous les outils enregistrés à l’intérieur de createServer.

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

  1. Un projet ts#mcp-server
  2. Un projet ts#rdb
  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 de serveur MCP comme source et votre projet de base de données relationnelle comme cible. Si le projet contient plusieurs composants de serveur MCP, spécifiez sourceComponent 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 modifie deux fichiers dans le répertoire source de votre serveur MCP :

    • Répertoirepackages/my-service/src/my-mcp
      • server.ts Client Prisma récupéré et disponible pour tous les outils enregistrés à l’intérieur de createServer
      • Dockerfile Bundle CA RDS installé pour les connexions SSL à Aurora

    De plus, la cible <mcp-server-name>-dev est mise à jour pour dépendre de la cible dev de la base de données.

    Utilisation de la base de données dans les outils MCP

    Section intitulée « Utilisation de la base de données dans les outils MCP »

    Le client Prisma est récupéré à l’intérieur de createServer et disponible pour tous les outils et ressources enregistrés là :

    packages/my-service/src/my-mcp/server.ts
    import { getPrisma as getMyDb } from ':my-scope/my-db';
    export const createServer = async () => {
    const myDb = await getMyDb();
    const server = new McpServer({ name: 'my-service', version: '1.0.0' });
    // register tools/resources that use myDb
    return server;
    };

    Exécuter à nouveau le générateur avec une cible différente ajoute la deuxième base de données à côté de la première. Les deux sont récupérées à l’intérieur de createServer :

    packages/my-service/src/my-mcp/server.ts
    export const createServer = async () => {
    const postgresDb = await getPostgresDb();
    const mysqlDb = await getMysqlDb();
    const server = new McpServer({ ... });
    // register tools using both clients
    return server;
    };

    Le construct de serveur MCP généré implémente IGrantable et IConnectable, vous pouvez donc accorder l’accès réseau et IAM à la base de données directement sur le construct.

    packages/infra/src/stacks/application-stack.ts
    import { RuntimeNetworkConfiguration } from 'aws-cdk-lib/aws-bedrockagentcore';
    import { MyDatabase } from ':my-scope/common-constructs';
    const db = new MyDatabase(this, 'Db', { vpc, ... });
    const myMcpServer = new MyMcpServer(this, 'MyMcpServer', {
    networkConfiguration: RuntimeNetworkConfiguration.usingVpc(this, {
    vpc,
    vpcSubnets: { subnetType: SubnetType.PRIVATE_WITH_EGRESS },
    }),
    });
    db.allowDefaultPortFrom(myMcpServer);
    db.grantConnect(myMcpServer);

    allowDefaultPortFrom ouvre la règle du groupe de sécurité afin que le runtime du serveur MCP puisse atteindre le port de la base de données. grantConnect accorde la permission IAM rds-db:connect au rôle d’exécution du serveur.

    Le générateur de connexion met à jour le Dockerfile pour installer le bundle CA Amazon RDS à l’emplacement /usr/local/share/ca-certificates/rds-bundle.crt. Définissez NODE_EXTRA_CA_CERTS sur ce chemin afin que Node.js fasse confiance au certificat lors de la connexion sans RDS Proxy :

    packages/infra/src/stacks/application-stack.ts
    new MyMcpServer(this, 'MyMcpServer', {
    ...
    environmentVariables: {
    NODE_EXTRA_CA_CERTS: '/usr/local/share/ca-certificates/rds-bundle.crt',
    },
    });

    Pour plus de détails, consultez la documentation Amazon RDS SSL/TLS. Lors de l’utilisation de RDS Proxy, vous n’avez pas besoin de configurer NODE_EXTRA_CA_CERTS.

    Terminal window
    pnpm nx <mcp-server-name>-dev <project-name>

    Cela démarre le serveur MCP et toutes les bases de données connectées. La variable d’environnement LOCAL_DEV=true fait en sorte que chaque client Prisma se connecte à sa base de données Docker locale au lieu d’Aurora.