Aller au contenu

Serveur MCP Python vers DynamoDB

Le générateur connection relie un serveur MCP Python à un projet DynamoDB Python, en configurant le développement local pour que les deux démarrent ensemble automatiquement.

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

  1. Un projet py#mcp-server
  2. Un projet py#dynamodb

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

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

Requis

Requis

Sélectionnez votre projet de serveur MCP comme source et votre projet DynamoDB comme cible. Si le projet contient plusieurs composants de serveur MCP, spécifiez sourceComponent 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 met à jour la cible <mcp-server-name>-dev du serveur MCP dans project.json pour dépendre de la cible dev du projet DynamoDB, et ajoute le package DynamoDB comme dépendance de l’espace de travail. Aucun fichier source n’est modifié.

Importez les classes d’entité du package DynamoDB et utilisez-les dans vos outils de serveur MCP :

packages/my_project/my_project/my_mcp_server/server.py
from my_scope_my_table.entities.example import ExampleModel
@mcp.tool()
def list_examples() -> str:
"""List all example items."""
items = list(ExampleModel.scan())
return str([item.attribute_values for item in items])

Pour permettre à la fonction Lambda du serveur MCP d’accéder à la table DynamoDB, accordez les permissions nécessaires dans votre infrastructure.

packages/infra/src/stacks/application-stack.ts
import { MyTable } from '@my-scope/common-constructs';
const table = new MyTable(this, 'Table');
const myMcpServer = new MyMcpServer(this, 'MyMcpServer');
table.grantReadWriteData(myMcpServer);

grantReadWriteData accorde à la fois les permissions DynamoDB et KMS au rôle d’exécution du serveur MCP.

Le générateur connection configure la cible dev de votre projet pour qu’elle dépende de la cible dev du projet DynamoDB. DynamoDB Local démarrera automatiquement en même temps que votre projet lors de l’exécution de dev.

La variable d’environnement LOCAL_DEV=true est définie automatiquement, de sorte que is_local() renvoie True et vos entités PynamoDB se connectent à l’instance DynamoDB locale au lieu d’AWS.