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.
386 lines • 11.8 kB
JSON
{
"name": "ecommerce-complete",
"description": "Configuración completa para API de e-commerce",
"version": "1.0.0",
"steps": [
{
"tool": "configure_project",
"params": {
"projectName": "ecommerce-api",
"description": "API completa para e-commerce con autenticación, productos, órdenes y pagos",
"author": "Mi Empresa",
"version": "1.0.0",
"license": "MIT"
}
},
{
"tool": "configure_database",
"params": {
"provider": "postgresql",
"enableMigrations": true,
"enableSeeding": true,
"poolSize": 15
}
},
{
"tool": "define_table",
"params": {
"tableName": "User",
"fields": [
{"name": "id", "type": "Int", "required": true, "unique": true},
{"name": "email", "type": "String", "required": true, "unique": true},
{"name": "password", "type": "String", "required": true},
{"name": "firstName", "type": "String", "required": true},
{"name": "lastName", "type": "String", "required": true},
{"name": "role", "type": "String", "defaultValue": "customer"},
{"name": "isActive", "type": "Boolean", "defaultValue": "true"},
{"name": "createdAt", "type": "DateTime", "defaultValue": "now()"},
{"name": "updatedAt", "type": "DateTime", "defaultValue": "now()"}
]
}
},
{
"tool": "define_table",
"params": {
"tableName": "Category",
"fields": [
{"name": "id", "type": "Int", "required": true, "unique": true},
{"name": "name", "type": "String", "required": true, "unique": true},
{"name": "description", "type": "String"},
{"name": "slug", "type": "String", "required": true, "unique": true},
{"name": "isActive", "type": "Boolean", "defaultValue": "true"},
{"name": "createdAt", "type": "DateTime", "defaultValue": "now()"}
]
}
},
{
"tool": "define_table",
"params": {
"tableName": "Product",
"fields": [
{"name": "id", "type": "Int", "required": true, "unique": true},
{"name": "name", "type": "String", "required": true},
{"name": "description", "type": "String"},
{"name": "price", "type": "Float", "required": true},
{"name": "stock", "type": "Int", "defaultValue": "0"},
{"name": "sku", "type": "String", "required": true, "unique": true},
{"name": "categoryId", "type": "Int", "required": true},
{"name": "images", "type": "Json"},
{"name": "isActive", "type": "Boolean", "defaultValue": "true"},
{"name": "createdAt", "type": "DateTime", "defaultValue": "now()"},
{"name": "updatedAt", "type": "DateTime", "defaultValue": "now()"}
],
"relations": [
{
"type": "oneToMany",
"relatedTable": "Category",
"foreignKey": "categoryId"
}
]
}
},
{
"tool": "define_table",
"params": {
"tableName": "Order",
"fields": [
{"name": "id", "type": "Int", "required": true, "unique": true},
{"name": "userId", "type": "Int", "required": true},
{"name": "total", "type": "Float", "required": true},
{"name": "status", "type": "String", "defaultValue": "pending"},
{"name": "shippingAddress", "type": "Json", "required": true},
{"name": "billingAddress", "type": "Json", "required": true},
{"name": "paymentMethod", "type": "String", "required": true},
{"name": "paymentStatus", "type": "String", "defaultValue": "pending"},
{"name": "createdAt", "type": "DateTime", "defaultValue": "now()"},
{"name": "updatedAt", "type": "DateTime", "defaultValue": "now()"}
],
"relations": [
{
"type": "oneToMany",
"relatedTable": "User",
"foreignKey": "userId"
}
]
}
},
{
"tool": "define_table",
"params": {
"tableName": "OrderItem",
"fields": [
{"name": "id", "type": "Int", "required": true, "unique": true},
{"name": "orderId", "type": "Int", "required": true},
{"name": "productId", "type": "Int", "required": true},
{"name": "quantity", "type": "Int", "required": true},
{"name": "price", "type": "Float", "required": true},
{"name": "total", "type": "Float", "required": true}
],
"relations": [
{
"type": "oneToMany",
"relatedTable": "Order",
"foreignKey": "orderId"
},
{
"type": "oneToMany",
"relatedTable": "Product",
"foreignKey": "productId"
}
]
}
},
{
"tool": "setup_auth",
"params": {
"strategy": "jwt",
"providers": ["local"],
"jwtConfig": {
"secret": "auto-generate",
"expiresIn": "24h",
"algorithm": "HS256"
},
"roles": ["admin", "customer", "manager"],
"permissions": [
{
"resource": "users",
"actions": ["create", "read", "update", "delete"],
"roles": ["admin"]
},
{
"resource": "users",
"actions": ["read", "update"],
"roles": ["customer"]
},
{
"resource": "products",
"actions": ["create", "read", "update", "delete"],
"roles": ["admin", "manager"]
},
{
"resource": "products",
"actions": ["read"],
"roles": ["customer"]
},
{
"resource": "orders",
"actions": ["create", "read", "update"],
"roles": ["customer"]
},
{
"resource": "orders",
"actions": ["read", "update", "delete"],
"roles": ["admin", "manager"]
}
]
}
},
{
"tool": "add_module",
"params": {
"moduleName": "crud",
"config": {
"entities": ["User", "Product", "Category", "Order", "OrderItem"],
"enableSoftDelete": true,
"enablePagination": true,
"enableFiltering": true,
"enableSorting": true,
"defaultPageSize": 20
}
}
},
{
"tool": "add_module",
"params": {
"moduleName": "email",
"config": {
"provider": "smtp",
"templates": ["welcome", "order-confirmation", "password-reset"],
"enableQueue": true,
"retryAttempts": 3
}
}
},
{
"tool": "add_module",
"params": {
"moduleName": "validation",
"config": {
"enableRequestValidation": true,
"enableResponseValidation": true,
"strictMode": true
}
}
},
{
"tool": "setup_email",
"params": {
"provider": "smtp",
"config": {
"host": "smtp.gmail.com",
"port": 587,
"secure": false,
"auth": {
"user": "${EMAIL_USER}",
"pass": "${EMAIL_PASS}"
}
},
"templates": [
{
"name": "welcome",
"subject": "¡Bienvenido a nuestra tienda!",
"htmlTemplate": "<h1>Bienvenido {{firstName}}</h1><p>Gracias por registrarte en nuestra tienda.</p>",
"textTemplate": "Bienvenido {{firstName}}. Gracias por registrarte en nuestra tienda."
},
{
"name": "order-confirmation",
"subject": "Confirmación de pedido #{{orderNumber}}",
"htmlTemplate": "<h1>Pedido confirmado</h1><p>Tu pedido #{{orderNumber}} por ${{total}} ha sido confirmado.</p>",
"textTemplate": "Pedido confirmado. Tu pedido #{{orderNumber}} por ${{total}} ha sido confirmado."
}
]
}
},
{
"tool": "setup_cache",
"params": {
"provider": "redis",
"config": {
"host": "localhost",
"port": 6379,
"db": 0
},
"defaultTTL": 3600,
"strategies": [
{
"key": "product-*",
"ttl": 1800,
"invalidateOn": ["product-update", "product-delete"]
},
{
"key": "category-*",
"ttl": 3600,
"invalidateOn": ["category-update", "category-delete"]
},
{
"key": "user-profile-*",
"ttl": 900,
"invalidateOn": ["user-update"]
}
]
}
},
{
"tool": "create_endpoint",
"params": {
"path": "/api/products/search",
"method": "POST",
"controller": "searchProducts",
"middleware": ["validation", "rateLimit"],
"validation": {
"body": {
"query": {"type": "string", "required": true},
"category": {"type": "string"},
"minPrice": {"type": "number"},
"maxPrice": {"type": "number"},
"page": {"type": "number", "default": 1},
"limit": {"type": "number", "default": 20}
}
},
"requiresAuth": false
}
},
{
"tool": "create_endpoint",
"params": {
"path": "/api/orders/checkout",
"method": "POST",
"controller": "processCheckout",
"middleware": ["auth", "validation"],
"validation": {
"body": {
"items": {"type": "array", "required": true},
"shippingAddress": {"type": "object", "required": true},
"billingAddress": {"type": "object", "required": true},
"paymentMethod": {"type": "string", "required": true}
}
},
"requiresAuth": true,
"roles": ["customer"]
}
},
{
"tool": "setup_monitoring",
"params": {
"enabled": true,
"metrics": ["requests", "errors", "performance", "database"],
"alerts": [
{
"metric": "error-rate",
"threshold": 5,
"action": "send-email"
},
{
"metric": "response-time",
"threshold": 2000,
"action": "log-warning"
}
],
"dashboards": true
}
},
{
"tool": "setup_docker",
"params": {
"enabled": true,
"baseImage": "node:18-alpine",
"services": [
{
"name": "postgres",
"image": "postgres:15",
"ports": ["5432:5432"],
"environment": {
"POSTGRES_DB": "ecommerce",
"POSTGRES_USER": "ecommerce_user",
"POSTGRES_PASSWORD": "ecommerce_pass"
}
},
{
"name": "redis",
"image": "redis:7-alpine",
"ports": ["6379:6379"]
}
],
"volumes": ["./data/postgres:/var/lib/postgresql/data"],
"networks": ["ecommerce-network"]
}
},
{
"tool": "setup_testing",
"params": {
"framework": "jest",
"coverage": true,
"testTypes": ["unit", "integration", "e2e"],
"mocking": true,
"fixtures": true
}
},
{
"tool": "validate_config",
"params": {
"strict": true,
"checkDependencies": true,
"validateSchemas": true
}
},
{
"tool": "generate_project",
"params": {
"outputPath": "./generated-projects/ecommerce-api",
"installDependencies": true,
"runMigrations": true,
"generateDocs": true
}
}
]
}