#!/usr/bin/env node
/**
* Test MCP Server Protocol
* This script verifies the MCP server can communicate via stdio
*/
const { spawn } = require('child_process');
const path = require('path');
async function testMCPServer() {
console.log("🧪 Testing MCP Server Protocol...\n");
return new Promise((resolve, reject) => {
const serverPath = path.join(__dirname, 'dist', 'index.js');
console.log("Starting MCP server...");
const server = spawn('node', [serverPath], {
stdio: ['pipe', 'pipe', 'pipe']
});
let stdoutData = '';
let stderrData = '';
let messageReceived = false;
// Set timeout
const timeout = setTimeout(() => {
if (!messageReceived) {
console.log("❌ Timeout: Server didn't respond in time");
server.kill();
reject(new Error('Server timeout'));
}
}, 5000);
server.stdout.on('data', (data) => {
stdoutData += data.toString();
// Try to parse JSON-RPC messages
const lines = stdoutData.split('\n');
for (const line of lines) {
if (line.trim()) {
try {
const message = JSON.parse(line);
if (message.result || message.method) {
messageReceived = true;
console.log("✅ MCP server is responding to protocol messages");
clearTimeout(timeout);
server.kill();
resolve();
return;
}
} catch (e) {
// Not a JSON message, might be regular output
}
}
}
});
server.stderr.on('data', (data) => {
stderrData += data.toString();
// Check for successful startup message
if (stderrData.includes('iniciado correctamente')) {
console.log("✅ MCP server started successfully");
// Send initialize request
const initRequest = {
jsonrpc: "2.0",
id: 1,
method: "initialize",
params: {
protocolVersion: "2024-11-05",
capabilities: {},
clientInfo: {
name: "test-client",
version: "1.0.0"
}
}
};
server.stdin.write(JSON.stringify(initRequest) + '\n');
}
});
server.on('error', (error) => {
clearTimeout(timeout);
console.error("❌ Failed to start server:", error.message);
reject(error);
});
server.on('exit', (code) => {
clearTimeout(timeout);
if (messageReceived) {
console.log("\n📋 MCP Server Verification:");
console.log(" ✓ Server executable works");
console.log(" ✓ Server starts correctly");
console.log(" ✓ Server responds to protocol");
console.log("\n✅ All MCP protocol tests passed!");
resolve();
} else if (code !== 0 && code !== null) {
console.error(`❌ Server exited with code ${code}`);
if (stderrData) console.error("stderr:", stderrData);
reject(new Error(`Server exited with code ${code}`));
}
});
});
}
testMCPServer().catch((error) => {
console.error("Test failed:", error);
process.exit(1);
});