MCP Firebird

by PuroDelphi
Verified
MIT License
4,796
3
  • Apple
  • Linux
// Cliente de prueba para MCP Firebird usando CommonJS const { spawn } = require('child_process'); const path = require('path'); const readline = require('readline'); // Crear un proceso hijo para el servidor MCP const serverProcess = spawn('node', ['dist/index.js'], { cwd: __dirname, stdio: ['pipe', 'pipe', 'pipe'] }); // Configurar readline para leer la salida del servidor const rl = readline.createInterface({ input: serverProcess.stdout, crlfDelay: Infinity }); // Función para generar un ID aleatorio para las solicitudes function generateId() { return Math.floor(Math.random() * 10000); } // Función para enviar una solicitud MCP al servidor function sendRequest(method, params = {}) { const request = { id: generateId(), method, params }; console.log(`\nEnviando solicitud: ${JSON.stringify(request)}`); serverProcess.stdin.write(JSON.stringify(request) + '\n'); } // Manejar respuestas del servidor rl.on('line', (line) => { if (line.startsWith('[LOG]') || line.startsWith('[INIT]')) { console.log(`Log del servidor: ${line}`); return; } try { const response = JSON.parse(line); console.log('\nRespuesta recibida:'); console.log(JSON.stringify(response, null, 2)); } catch (error) { console.log(`Salida no JSON: ${line}`); } }); // Capturar errores del servidor serverProcess.stderr.on('data', (data) => { console.error(`Error del servidor: ${data.toString()}`); }); // Esperar a que el servidor se inicie setTimeout(() => { console.log('\n===== INICIANDO PRUEBAS DEL SERVIDOR MCP FIREBIRD =====\n'); // 1. Obtener información del servidor sendRequest('getServerInfo'); // 2. Obtener recursos disponibles después de un breve retraso setTimeout(() => { sendRequest('getResources'); }, 1000); // 3. Usar la herramienta list-tables para obtener la lista de tablas setTimeout(() => { sendRequest('executeTool', { name: 'list-tables', args: {} }); }, 2000); // 4. Usar la herramienta execute-query para ejecutar una consulta SQL setTimeout(() => { sendRequest('executeTool', { name: 'execute-query', args: { sql: 'SELECT FIRST 5 * FROM RDB$RELATIONS' } }); }, 3000); // 5. Usar el prompt generate-sql para generar una consulta SQL setTimeout(() => { sendRequest('executePrompt', { name: 'generate-sql', args: { description: 'Obtener los primeros 10 registros de la tabla de usuarios' } }); }, 4000); // Finalizar después de todas las pruebas setTimeout(() => { console.log('\n===== PRUEBAS COMPLETADAS ====='); serverProcess.kill(); process.exit(0); }, 10000); }, 2000); // Manejar cierre del proceso serverProcess.on('close', (code) => { console.log(`\nEl servidor ha finalizado con código: ${code}`); });