Skip to main content
Glama
test-mcp-protocol.js3.18 kB
#!/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); });

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/crexative/colombia-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server