UNPKG

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.

137 lines (115 loc) 3.85 kB
#!/usr/bin/env node /** * Generador de tokens JWT de demostración para Backend MCP * Este script genera tokens de prueba para testing y desarrollo */ const crypto = require('crypto'); const fs = require('fs'); const path = require('path'); // Configuración const JWT_SECRET = process.env.JWT_SECRET || 'backend-mcp-secret-key-2024'; /** * Genera un token JWT * @param {Object} user - Datos del usuario * @returns {string} - Token JWT */ function generateToken(user) { const header = { alg: 'HS256', typ: 'JWT' }; const payload = { iss: 'backend-mcp-auth', sub: user.id, email: user.email, plan: user.plan, permissions: user.permissions, iat: Math.floor(Date.now() / 1000), exp: Math.floor(Date.now() / 1000) + (30 * 24 * 60 * 60) // 30 días }; const encodedHeader = Buffer.from(JSON.stringify(header)).toString('base64url'); const encodedPayload = Buffer.from(JSON.stringify(payload)).toString('base64url'); const signature = crypto .createHmac('sha256', JWT_SECRET) .update(`${encodedHeader}.${encodedPayload}`) .digest('base64url'); return `${encodedHeader}.${encodedPayload}.${signature}`; } /** * Usuarios de demostración */ const demoUsers = [ { id: 'demo_basic_001', email: 'basic@demo.com', plan: 'basic', permissions: ['basic'] }, { id: 'demo_premium_001', email: 'premium@demo.com', plan: 'premium', permissions: ['basic', 'premium'] }, { id: 'demo_enterprise_001', email: 'enterprise@demo.com', plan: 'enterprise', permissions: ['basic', 'premium', 'enterprise'] } ]; /** * Función principal */ function main() { console.log('🔐 Generador de Tokens JWT de Demostración - Backend MCP\n'); const tokens = {}; demoUsers.forEach(user => { const token = generateToken(user); tokens[user.plan] = { user, token, expires: new Date(Date.now() + (30 * 24 * 60 * 60 * 1000)).toISOString() }; console.log(`📋 Plan: ${user.plan.toUpperCase()}`); console.log(`👤 Usuario: ${user.email}`); console.log(`🔑 Token: ${token}`); console.log(`⏰ Expira: ${tokens[user.plan].expires}`); console.log(''); }); // Guardar tokens en archivo const tokensFile = path.join(__dirname, 'demo-tokens.json'); fs.writeFileSync(tokensFile, JSON.stringify(tokens, null, 2)); console.log(`💾 Tokens guardados en: ${tokensFile}\n`); // Mostrar ejemplos de uso console.log('📖 Ejemplos de uso:\n'); console.log('1. Línea de comandos:'); console.log(` npx backend-mcp postgresql://localhost:5432/db --jwt "${tokens.basic.token}"\n`); console.log('2. Variable de entorno:'); console.log(` export BACKEND_MCP_JWT="${tokens.basic.token}"`); console.log(` npx backend-mcp postgresql://localhost:5432/db\n`); console.log('3. Configuración MCP (Claude Desktop):'); console.log(' {'); console.log(' "mcpServers": {'); console.log(' "BackendGenerator": {'); console.log(' "command": "npx",'); console.log(' "args": ['); console.log(' "-y", "backend-mcp",'); console.log(' "postgresql://user:pass@localhost:5432/db",'); console.log(` "--jwt", "${tokens.basic.token}"`); console.log(' ]'); console.log(' }'); console.log(' }'); console.log(' }\n'); console.log('4. Testing de herramientas:'); console.log(` npx backend-mcp --tool configure_project --params '{"projectName":"test"}' --jwt "${tokens.premium.token}"\n`); console.log('💡 Nota: Estos son tokens de DEMOSTRACIÓN. En producción, obtén tokens reales en https://backend-mcp.com/pricing'); } // Ejecutar si es llamado directamente if (require.main === module) { main(); } module.exports = { generateToken, demoUsers };