#!/usr/bin/env node
/**
* Test MCP Server Communication
*/
import { spawn } from 'child_process';
async function testMCPServer() {
console.log('๐งช Testing MCP Server Communication...\n');
const serverProcess = spawn('node', ['server-simple.mjs'], {
env: {
...process.env,
RUNBOOK_ROOT: process.cwd()
},
stdio: ['pipe', 'pipe', 'pipe']
});
let responseBuffer = '';
serverProcess.stdout.on('data', (data) => {
responseBuffer += data.toString();
});
serverProcess.stderr.on('data', (data) => {
console.log('Server log:', data.toString().trim());
});
// Wait for server to initialize
await new Promise(resolve => setTimeout(resolve, 3000));
console.log('๐ก Sending initialize request...');
// 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" }
}
};
serverProcess.stdin.write(JSON.stringify(initRequest) + '\n');
// Wait for response
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('๐ Requesting tools list...');
// Request tools list
const toolsRequest = {
jsonrpc: "2.0",
id: 2,
method: "tools/list",
params: {}
};
serverProcess.stdin.write(JSON.stringify(toolsRequest) + '\n');
// Wait for response
await new Promise(resolve => setTimeout(resolve, 1000));
console.log('๐ Testing search tool...');
// Test search tool
const searchRequest = {
jsonrpc: "2.0",
id: 3,
method: "tools/call",
params: {
name: "rb.search",
arguments: {
q: "test",
topK: 3
}
}
};
serverProcess.stdin.write(JSON.stringify(searchRequest) + '\n');
// Wait for response
await new Promise(resolve => setTimeout(resolve, 2000));
console.log('\n๐ค Server Responses:');
console.log('=' .repeat(50));
// Parse and display responses
const responses = responseBuffer.trim().split('\n').filter(line => {
try {
JSON.parse(line);
return true;
} catch {
return false;
}
});
responses.forEach((response, index) => {
try {
const parsed = JSON.parse(response);
console.log(`Response ${index + 1}:`, JSON.stringify(parsed, null, 2));
console.log('-'.repeat(30));
} catch (error) {
console.log(`Invalid JSON response: ${response}`);
}
});
// Clean up
serverProcess.kill();
console.log(`\nโ
Test completed! Found ${responses.length} valid responses.`);
}
testMCPServer().catch(console.error);