MCP Firebird

by PuroDelphi
Verified
MIT License
4,796
3
  • Apple
  • Linux
// Cliente de prueba oficial para MCP Firebird usando la SDK de MCP import { McpClient, StdioTransport } from '@modelcontextprotocol/sdk'; import { spawn } from 'child_process'; import path from 'path'; import { fileURLToPath } from 'url'; // Obtener el directorio actual en ES modules const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); async function runTests() { console.log('Iniciando pruebas del servidor MCP Firebird...'); // Iniciar el servidor MCP como un proceso hijo const serverProcess = spawn('node', [path.join(__dirname, 'dist', 'index.js')]); // Crear un transporte STDIO para comunicarse con el servidor const transport = new StdioTransport(serverProcess.stdin, serverProcess.stdout); // Crear el cliente MCP const client = new McpClient(transport); try { // Esperar a que el servidor se inicie await new Promise(resolve => setTimeout(resolve, 2000)); console.log('\n1. Probando obtención de información del servidor:'); const serverInfo = await client.getServerInfo(); console.log(JSON.stringify(serverInfo, null, 2)); console.log('\n2. Probando listado de recursos:'); const resources = await client.getResources(); console.log(JSON.stringify(resources, null, 2)); console.log('\n3. Probando herramienta para listar tablas:'); const tables = await client.executeTool('list-tables', {}); console.log(JSON.stringify(tables, null, 2)); console.log('\n4. Probando herramienta para ejecutar consulta SQL:'); const queryResult = await client.executeTool('execute-query', { sql: 'SELECT FIRST 5 * FROM RDB$RELATIONS' }); console.log(JSON.stringify(queryResult, null, 2)); console.log('\n5. Probando prompt para generar SQL:'); const sqlGeneration = await client.executePrompt('generate-sql', { description: 'Obtener los primeros 10 registros de la tabla de usuarios' }); console.log(JSON.stringify(sqlGeneration, null, 2)); } catch (error) { console.error('Error durante las pruebas:', error); } finally { console.log('\nFinalizando pruebas y cerrando el servidor...'); serverProcess.kill(); } } // Capturar la salida de error del servidor process.on('uncaughtException', (error) => { console.error('Error no capturado:', error); }); // Ejecutar las pruebas runTests().catch(error => { console.error('Error en runTests:', error); });