Servidor MCP a Base de Datos Relacional
El generador connection conecta un Servidor MCP de TypeScript a un proyecto de Base de Datos Relacional, haciendo que un cliente Prisma esté disponible para todas las herramientas registradas dentro de createServer.
Requisitos Previos
Sección titulada «Requisitos Previos»Antes de usar este generador, asegúrate de tener:
- Un proyecto
ts#mcp-server - Un proyecto
ts#rdb
Ejecutar el Generador
Sección titulada «Ejecutar el Generador»- Instale el Nx Console VSCode Plugin si aún no lo ha hecho
- Abra la consola Nx en VSCode
- Haga clic en
Generate (UI)en la sección "Common Nx Commands" - Busque
@aws/nx-plugin - connection - Complete los parámetros requeridos
- Haga clic en
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:connectionTambién puede realizar una ejecución en seco para ver qué archivos se cambiarían
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-runSelecciona tu proyecto de servidor MCP como origen y tu proyecto de base de datos relacional como destino. Si el proyecto contiene múltiples componentes de servidor MCP, especifica sourceComponent para desambiguar.
Opciones
Sección titulada «Opciones»| Parámetro | Tipo | Predeterminado | Descripción |
|---|---|---|---|
| sourceProject Requerido | string | - | El proyecto de origen |
| targetProject Requerido | string | - | 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. |
Salida del Generador
Sección titulada «Salida del Generador»El generador modifica dos archivos en el directorio de origen de tu servidor MCP:
Directoriopackages/my-service/src/my-mcp
- server.ts Cliente Prisma obtenido y disponible para todas las herramientas registradas dentro de
createServer - Dockerfile Paquete CA de RDS instalado para conexiones SSL a Aurora
- server.ts Cliente Prisma obtenido y disponible para todas las herramientas registradas dentro de
Además, el objetivo <mcp-server-name>-serve-local se actualiza para depender del objetivo serve-local de la base de datos.
Cómo Funciona
Sección titulada «Cómo Funciona»El cliente Prisma se obtiene dentro de createServer y está disponible para todas las herramientas y recursos registrados allí:
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;};Múltiples Bases de Datos
Sección titulada «Múltiples Bases de Datos»Ejecutar el generador nuevamente con un destino diferente agrega la segunda base de datos junto a la primera. Ambas se obtienen dentro de createServer:
export const createServer = async () => { const postgresDb = await getPostgresDb(); const mysqlDb = await getMysqlDb(); const server = new McpServer({ ... }); // register tools using both clients return server;};Infraestructura
Sección titulada «Infraestructura»El constructo del servidor MCP generado implementa IGrantable e IConnectable, por lo que puedes otorgar acceso de red e IAM a la base de datos directamente en el constructo.
import { MyDatabase } from ':my-scope/common-constructs';
const db = new MyDatabase(this, 'Db', { vpc, ... });const myMcpServer = new MyMcpServer(this, 'MyMcpServer', { vpc, ... });
db.allowDefaultPortFrom(myMcpServer);db.grantConnect(myMcpServer);allowDefaultPortFrom abre la regla del grupo de seguridad para que el tiempo de ejecución del servidor MCP pueda alcanzar el puerto de la base de datos. grantConnect otorga el permiso IAM rds-db:connect al rol de ejecución del servidor.
Pasa las salidas del módulo de base de datos a tu módulo de servidor MCP para que pueda alcanzar la base de datos y leer su configuración de tiempo de ejecución:
module "my_database" { source = "../../common/terraform/src/app/dbs/my-database" vpc_id = module.vpc.vpc_id database_subnet_ids = module.vpc.private_isolated_subnet_ids}
module "my_mcp_server" { source = "../../common/terraform/src/app/mcp-servers/my-mcp-server"
appconfig_application_id = module.my_database.appconfig_application_id database_cluster_resource_id = module.my_database.cluster_resource_id database_runtime_user = module.my_database.database_runtime_user database_security_group_id = module.my_database.security_group_id database_port = module.my_database.cluster_port}Asegúrate de que el rol de ejecución del servidor MCP tenga el permiso rds-db:connect y que su grupo de seguridad pueda alcanzar el grupo de seguridad de la base de datos en el puerto de la base de datos.
Requisitos de SSL al Conectar sin RDS Proxy
Sección titulada «Requisitos de SSL al Conectar sin RDS Proxy»El generador de conexión actualiza el Dockerfile para instalar el paquete de CA de Amazon RDS en /usr/local/share/ca-certificates/rds-bundle.crt. Establece NODE_EXTRA_CA_CERTS en esa ruta para que Node.js confíe en el certificado al conectar sin RDS Proxy:
new MyMcpServer(this, 'MyMcpServer', { ... environmentVariables: { NODE_EXTRA_CA_CERTS: '/usr/local/share/ca-certificates/rds-bundle.crt', },});module "my_mcp_server" { ... environment_variables = { NODE_EXTRA_CA_CERTS = "/usr/local/share/ca-certificates/rds-bundle.crt" }}Para más detalles, consulta la documentación de SSL/TLS de Amazon RDS. Cuando uses RDS Proxy, no necesitas configurar NODE_EXTRA_CA_CERTS.
Desarrollo Local
Sección titulada «Desarrollo Local»pnpm nx <mcp-server-name>-serve-local <project-name>yarn nx <mcp-server-name>-serve-local <project-name>npx nx <mcp-server-name>-serve-local <project-name>bunx nx <mcp-server-name>-serve-local <project-name>Esto inicia el servidor MCP y todas las bases de datos conectadas. La variable de entorno SERVE_LOCAL=true hace que cada cliente Prisma se conecte a su base de datos Docker local en lugar de Aurora.