// Test del server MCP ottimizzato
import { spawn } from 'child_process';
console.log("π TEST SERVER MCP OTTIMIZZATO");
console.log("β".repeat(45));
async function testOptimizedServer(toolName) {
console.log(`\nπ οΈ TESTING: ${toolName}`);
console.log("-".repeat(35));
const request = {
jsonrpc: "2.0",
id: 1,
method: "tools/call",
params: {
name: toolName,
arguments: {}
}
};
console.log("π€ Sending request...");
const server = spawn('node', ['optimized-visum-mcp.mjs'], {
stdio: ['pipe', 'pipe', 'pipe']
});
let response = '';
let serverReady = false;
server.stdout.on('data', (data) => {
const text = data.toString();
response += text;
console.log("π₯ Response:", text.trim());
});
server.stderr.on('data', (data) => {
const text = data.toString();
console.log("π§ Server log:", text.trim());
if (text.includes('ready for Claude')) {
serverReady = true;
}
});
return new Promise((resolve) => {
// Wait for server to be ready, then send request
setTimeout(() => {
if (serverReady) {
console.log("β
Server ready, sending request...");
server.stdin.write(JSON.stringify(request) + '\n');
}
}, 2000);
// Extended timeout for response
const timeout = setTimeout(() => {
console.log("β±οΈ Test timeout - terminating");
server.kill();
resolve({
success: false,
error: 'Test timeout',
response: response
});
}, 35000); // 35 second timeout
server.on('close', (code) => {
clearTimeout(timeout);
console.log(`π Server closed with code: ${code}`);
// Parse JSON response
const jsonMatch = response.match(/\{"jsonrpc"[^}]*\}/);
let parsedResponse = null;
if (jsonMatch) {
try {
parsedResponse = JSON.parse(jsonMatch[0]);
console.log("β
Valid JSON response received");
} catch (e) {
console.log("β JSON parse error:", e.message);
}
}
resolve({
success: parsedResponse && !parsedResponse.error,
response: parsedResponse,
fullOutput: response,
code: code
});
});
});
}
async function runOptimizedTest() {
console.log("π― Starting optimized MCP server test...\n");
// Test 1: Status check (fastest)
console.log("β".repeat(45));
console.log("π TEST 1: Status Check");
const statusResult = await testOptimizedServer('get_visum_status');
console.log("\nπ RISULTATO STATUS:");
if (statusResult.success) {
console.log("β
STATUS OK - Visum status retrieved successfully");
} else {
console.log("β STATUS FAILED:", statusResult.error);
}
// Brief pause between tests
await new Promise(r => setTimeout(r, 3000));
// Test 2: COM check
console.log("\n" + "β".repeat(45));
console.log("π TEST 2: COM Interface Check");
const comResult = await testOptimizedServer('check_visum');
console.log("\nπ RISULTATO COM:");
if (comResult.success) {
console.log("β
COM OK - Visum COM interface accessible");
} else {
console.log("β COM FAILED:", comResult.error);
}
// Final assessment
console.log("\n" + "β".repeat(45));
console.log("π― RISULTATO FINALE");
console.log("β".repeat(45));
if (statusResult.success && comResult.success) {
console.log("π π SUCCESSO COMPLETO!");
console.log(" β
Server MCP ottimizzato funzionante");
console.log(" β
Visum accessibile via MCP");
console.log(" β
Timeout estesi sufficienti");
console.log(" β
Comunicazione stabile");
console.log("\nπ PRONTO PER CLAUDE!");
console.log(" Il server puΓ² essere utilizzato con sicurezza");
} else if (statusResult.success || comResult.success) {
console.log("β οΈ π§ SUCCESSO PARZIALE");
console.log(" - Alcuni test passati, altri no");
console.log(" - Necessari ulteriori aggiustamenti");
} else {
console.log("β π§ NECESSARI ULTERIORI MIGLIORAMENTI");
console.log(" - Timeout ancora insufficienti");
console.log(" - Problemi di comunicazione persistenti");
}
}
runOptimizedTest().catch(console.error);