// Test integrazione MCP con Visum visibile
import { spawn } from 'child_process';
console.log("π TEST MCP β VISUM VISIBILE");
console.log("β".repeat(40));
// Simula una richiesta MCP al server
async function testMCPTool(toolName, args = {}) {
console.log(`\nπ οΈ TEST TOOL: ${toolName}`);
console.log("-".repeat(30));
const request = {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: toolName,
arguments: args
}
};
console.log("π€ Invio richiesta MCP:", JSON.stringify(request, null, 2));
// Avvia il server MCP
const server = spawn('node', ['enhanced-visum-mcp.mjs'], {
stdio: ['pipe', 'pipe', 'pipe']
});
let output = '';
let errors = '';
server.stdout.on('data', (data) => {
const text = data.toString();
output += text;
console.log("π₯ MCP Output:", text.trim());
});
server.stderr.on('data', (data) => {
const text = data.toString();
errors += text;
console.log("β οΈ MCP Error:", text.trim());
});
// Invia la richiesta
server.stdin.write(JSON.stringify(request) + '\n');
return new Promise((resolve) => {
const timeout = setTimeout(() => {
console.log("β±οΈ TIMEOUT - terminando server");
server.kill();
resolve({
success: false,
error: 'Timeout dopo 12 secondi',
output: output,
errors: errors
});
}, 12000);
server.on('close', (code) => {
clearTimeout(timeout);
console.log(`π Server MCP chiuso con codice: ${code}`);
// Cerca JSON response nell'output
const jsonMatch = output.match(/\{"jsonrpc".*?\}/);
let response = null;
if (jsonMatch) {
try {
response = JSON.parse(jsonMatch[0]);
console.log("β
Risposta MCP ricevuta:", response);
} catch (e) {
console.log("β Errore parsing JSON:", e.message);
}
}
resolve({
success: response ? !response.error : false,
response: response,
output: output,
errors: errors,
code: code
});
});
});
}
async function runFullTest() {
console.log("π Inizio test completo MCP con Visum visibile...\n");
// Test 1: Check status
console.log("π TEST 1: Verifica status Visum");
const statusTest = await testMCPTool('get_visum_status');
console.log("\n" + "β".repeat(40));
console.log("π RISULTATO TEST STATUS");
console.log("β".repeat(40));
if (statusTest.success) {
console.log("β
Status check RIUSCITO!");
console.log(" Visum Γ¨ accessibile via MCP");
} else {
console.log("β Status check FALLITO");
console.log(` Errore: ${statusTest.error || 'Comunicazione MCP interrotta'}`);
}
// Breve pausa
await new Promise(r => setTimeout(r, 2000));
// Test 2: Check Visum details
console.log("\nπ TEST 2: Verifica dettagli Visum");
const checkTest = await testMCPTool('check_visum');
console.log("\n" + "β".repeat(40));
console.log("π RISULTATO TEST CHECK");
console.log("β".repeat(40));
if (checkTest.success) {
console.log("β
Check Visum RIUSCITO!");
console.log(" Dati Visum recuperati correttamente");
} else {
console.log("β Check Visum FALLITO");
console.log(` Errore: ${checkTest.error || 'Comunicazione MCP interrotta'}`);
}
console.log("\n" + "β".repeat(40));
console.log("π― CONCLUSIONI FINALI");
console.log("β".repeat(40));
if (statusTest.success && checkTest.success) {
console.log("π π INTEGRAZIONE COMPLETA RIUSCITA!");
console.log(" β
Visum visibile in esecuzione");
console.log(" β
MCP server funzionante");
console.log(" β
Comunicazione MCP β Visum operativa");
console.log("\nπ Claude puΓ² ora utilizzare Visum tramite MCP!");
} else if (statusTest.success || checkTest.success) {
console.log("β οΈ π§ INTEGRAZIONE PARZIALE");
console.log(" - Visum Γ¨ attivo e visibile");
console.log(" - Problemi di comunicazione MCP intermittenti");
console.log(" - Necessario fine-tuning dei timeout");
} else {
console.log("β π§ INTEGRAZIONE NON RIUSCITA");
console.log(" - Visum Γ¨ visibile ma inaccessibile via MCP");
console.log(" - Verificare configurazione COM");
console.log(" - Timeout MCP troppo stringenti");
}
}
runFullTest().catch(console.error);