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
JavaScript
/**
* 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
};