Ir al contenido

Servidor MCP de Python a DynamoDB

El generador connection conecta un servidor MCP de Python a un proyecto de DynamoDB de Python, configurando el desarrollo local para que ambos se inicien juntos automáticamente.

Antes de usar este generador, asegúrate de tener:

  1. Un proyecto py#mcp-server
  2. Un proyecto py#dynamodb
Terminal window
pnpm nx g @aws/nx-plugin:connection
También puede realizar una ejecución en seco para ver qué archivos se cambiarían
Terminal window
pnpm nx g @aws/nx-plugin:connection --dry-run

Selecciona tu proyecto de servidor MCP como origen y tu proyecto de DynamoDB como destino. Si el proyecto contiene múltiples componentes de servidor MCP, especifica sourceComponent para desambiguar.

ParámetroTipoPredeterminadoDescripción
sourceProject Requeridostring-El proyecto de origen
targetProject Requeridostring-El proyecto de destino al que conectar
sourceComponent string-El componente de origen desde el que conectar (nombre del componente, ruta relativa a la raíz del proyecto de origen, o id del generador). Use '.' para seleccionar explícitamente el proyecto como origen.
targetComponent string-El componente de destino al que conectar (nombre del componente, ruta relativa a la raíz del proyecto de destino, o id del generador). Use '.' para seleccionar explícitamente el proyecto como destino.
preferInstallDependencies booleantrueSi se prefiere instalar las dependencias después de que se ejecute el generador. Establecer en false para diferir la instalación al ejecutar múltiples generadores en lote (la instalación aún se ejecuta si es necesario para que los generadores subsiguientes puedan calcular el grafo de proyectos de Nx); instalar una vez al final.

El generador actualiza el target <mcp-server-name>-dev del servidor MCP en project.json para que dependa del target dev del proyecto de DynamoDB, y agrega el paquete de DynamoDB como una dependencia del workspace. No se modifican archivos de código fuente.

Importa las clases de entidad del paquete de DynamoDB y úsalas dentro de las herramientas de tu servidor 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])

Para permitir que la función Lambda del servidor MCP acceda a la tabla de DynamoDB, otorga los permisos necesarios en tu infraestructura.

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 otorga tanto los permisos de DynamoDB como de KMS al rol de ejecución del servidor MCP.

El generador connection configura el target dev de tu proyecto para que dependa del target dev del proyecto DynamoDB. DynamoDB Local se iniciará automáticamente junto con tu proyecto al ejecutar dev.

La variable de entorno LOCAL_DEV=true se establece automáticamente, por lo que is_local() devuelve True y tus entidades PynamoDB se conectan a la instancia local de DynamoDB en lugar de AWS.