backend-mcp
Version:
Generador automático de backends con Node.js, Express, Prisma y módulos configurables. Servidor MCP compatible con npx para agentes IA. Soporta PostgreSQL, MySQL, MongoDB y SQLite.
288 lines (263 loc) • 7.97 kB
YAML
# modules/database/manifest.yaml
module:
name: "database"
version: "1.0.0"
description: "Configuración y gestión de base de datos con Prisma ORM"
category: "infrastructure"
author: "MCP Backend Generator"
license: "MIT"
triggers:
- condition: "needs_database"
value: true
- condition: "uses_prisma"
value: true
- condition: "requires_orm"
value: true
- condition: "mentions_database"
keywords: ["database", "db", "prisma", "postgresql", "mysql", "mongodb", "datos", "almacenamiento"]
value: true
entry_points:
main: "templates/connection.ts.hbs"
config: "templates/database.config.ts.hbs"
schema: "templates/schema.prisma.hbs"
migrations: "templates/migration.sql.hbs"
seeder: "templates/seeder.ts.hbs"
dependencies:
required: []
optional:
- "logging"
- "monitoring"
environment_variables:
required:
- name: "DATABASE_URL"
description: "URL de conexión a la base de datos"
validation: "url"
- name: "DATABASE_PROVIDER"
description: "Proveedor de base de datos (postgresql, mysql, mongodb)"
default: "postgresql"
optional:
- name: "DATABASE_POOL_SIZE"
description: "Tamaño del pool de conexiones"
default: "10"
- name: "DATABASE_TIMEOUT"
description: "Timeout de conexión en milisegundos"
default: "5000"
- name: "DATABASE_SSL"
description: "Habilitar SSL para la conexión"
default: "false"
- name: "DATABASE_LOGGING"
description: "Habilitar logging de consultas"
default: "false"
features:
- "prisma-orm"
- "connection-pooling"
- "query-logging"
- "health-checks"
- "migrations"
- "seeding"
- "soft-deletes"
- "audit-trails"
- "transactions"
- "database-statistics"
api_endpoints:
- method: "GET"
path: "/health/database"
description: "Verificar estado de la base de datos"
permissions: ["admin"]
- method: "GET"
path: "/admin/database/stats"
description: "Obtener estadísticas de la base de datos"
permissions: ["admin"]
generated_files:
- "src/database/connection.ts"
- "src/database/database.config.ts"
- "src/database/health.service.ts"
- "src/database/seeder.ts"
- "prisma/schema.prisma"
- "prisma/migrations/"
integration:
prisma_configuration:
generator: "prisma-client-js"
preview_features: ["fullTextSearch", "metrics"]
supported_databases:
- name: "postgresql"
url_format: "postgresql://user:password@host:port/database"
features: ["full-text-search", "json-support", "arrays"]
- name: "mysql"
url_format: "mysql://user:password@host:port/database"
features: ["json-support", "spatial-data"]
- name: "mongodb"
url_format: "mongodb://user:password@host:port/database"
features: ["document-store", "aggregation"]
- name: "sqlite"
url_format: "file:./database.db"
features: ["embedded", "lightweight"]
schema_templates:
base_models:
- name: "BaseModel"
description: "Modelo base con campos comunes"
fields:
- "id: String @id @default(cuid())"
- "createdAt: DateTime @default(now())"
- "updatedAt: DateTime @updatedAt"
- "deletedAt: DateTime?"
- name: "AuditLog"
description: "Registro de auditoría"
fields:
- "id: String @id @default(cuid())"
- "userId: String?"
- "action: String"
- "entityType: String?"
- "entityId: String?"
- "details: Json?"
- "ipAddress: String?"
- "userAgent: String?"
- "createdAt: DateTime @default(now())"
migration_strategies:
development:
- "prisma db push"
- "prisma generate"
production:
- "prisma migrate deploy"
- "prisma generate"
rollback:
- "prisma migrate reset"
- "prisma db seed"
performance:
connection_pooling:
min_connections: 2
max_connections: 10
idle_timeout: 30000
connection_timeout: 5000
query_optimization:
- "Use indexes for frequent queries"
- "Implement pagination for large datasets"
- "Use select to limit returned fields"
- "Batch operations when possible"
security:
best_practices:
- "Use environment variables for credentials"
- "Enable SSL in production"
- "Implement connection limits"
- "Regular security updates"
- "Audit database access"
encryption:
- "Encrypt sensitive fields"
- "Use SSL/TLS for connections"
- "Implement field-level encryption"
monitoring:
metrics:
- "Connection pool usage"
- "Query execution time"
- "Database size"
- "Active connections"
- "Failed queries"
alerts:
- "High connection usage"
- "Slow queries"
- "Connection failures"
- "Disk space low"
usage_examples:
- title: "Simple API with PostgreSQL"
description: "Configuración básica con PostgreSQL"
config:
provider: "postgresql"
features: ["prisma-orm", "migrations", "health-checks"]
- title: "High-performance application"
description: "Configuración optimizada para alto rendimiento"
config:
provider: "postgresql"
features: ["connection-pooling", "query-logging", "database-statistics"]
- title: "Multi-tenant application"
description: "Base de datos para aplicaciones multi-tenant"
config:
provider: "postgresql"
features: ["soft-deletes", "audit-trails", "row-level-security"]
- title: "Development environment"
description: "Configuración para desarrollo local"
config:
provider: "sqlite"
features: ["seeding", "query-logging"]
ai_instructions: |
Use este módulo cuando:
- El proyecto necesite persistencia de datos
- Se mencione "database", "datos", "almacenamiento", "Prisma"
- Otros módulos requieran almacenamiento (auth, crud, etc.)
- Se necesite configurar un ORM
Configuración automática:
1. Detectar el tipo de base de datos preferido del contexto
2. Configurar Prisma con el proveedor apropiado
3. Crear schema base con modelos comunes
4. Configurar variables de entorno necesarias
5. Establecer conexión y health checks
Consideraciones:
- PostgreSQL para aplicaciones empresariales
- MySQL para compatibilidad amplia
- SQLite para desarrollo y prototipos
- MongoDB para datos no relacionales
Siempre incluir:
- Health checks de base de datos
- Logging de consultas en desarrollo
- Pool de conexiones configurado
- Manejo de errores robusto
- Migraciones automáticas
automation:
init_script: "init.js"
actions:
- "detect_database_provider"
- "setup_prisma_configuration"
- "create_base_schema"
- "configure_connection_pool"
- "setup_health_checks"
- "create_seeder_files"
- "return_database_metadata"
testing:
unit_tests:
- "connection.test.ts"
- "health.service.test.ts"
integration_tests:
- "database.integration.test.ts"
- "migrations.test.ts"
e2e_tests:
- "database.e2e.test.ts"
metrics:
performance:
connection_time: "< 100ms"
query_response_time: "< 50ms"
pool_utilization: "< 80%"
reliability:
uptime: "> 99.9%"
connection_success_rate: "> 99%"
data_consistency: "100%"
compatibility:
node_versions: [">= 18.0.0"]
prisma_versions: [">= 5.0.0"]
databases:
- "PostgreSQL >= 12"
- "MySQL >= 8.0"
- "MongoDB >= 4.4"
- "SQLite >= 3.35"
documentation:
readme: "README.md"
schema_guide: "schema-guide.md"
migration_guide: "migration-guide.md"
performance_guide: "performance-guide.md"
examples: "examples/"
backup_strategies:
automated:
- "Daily full backups"
- "Hourly incremental backups"
- "Point-in-time recovery"
manual:
- "Pre-deployment backups"
- "Migration rollback points"
- "Development snapshots"
scaling:
horizontal:
- "Read replicas"
- "Database sharding"
- "Connection pooling"
vertical:
- "Resource monitoring"
- "Performance tuning"
- "Index optimization"