#!/usr/bin/env node
/**
* Simple MCP Communication Test
*/
import { spawn } from 'child_process';
async function testMCPCommunication() {
console.log('๐งช Testing MCP Server Communication...\n');
const serverProcess = spawn('node', ['server.mjs'], {
env: {
...process.env,
RUNBOOK_ROOT: 'F:/mcpTest/OnCallRunbookMCPServer/runbooks'
},
stdio: ['pipe', 'pipe', 'pipe']
});
let responses = [];
serverProcess.stdout.on('data', (data) => {
const lines = data.toString().trim().split('\n');
for (const line of lines) {
if (line.trim() && line.startsWith('{')) {
try {
const parsed = JSON.parse(line);
responses.push(parsed);
} catch (e) {
// Skip non-JSON lines
}
}
}
});
serverProcess.stderr.on('data', (data) => {
console.log('Server log:', data.toString().trim());
});
// Wait for server to initialize
console.log('โณ Waiting for server initialization...');
await new Promise(resolve => setTimeout(resolve, 2000));
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');
await new Promise(resolve => setTimeout(resolve, 500));
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');
await new Promise(resolve => setTimeout(resolve, 500));
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 runbook",
topK: 2
}
}
};
serverProcess.stdin.write(JSON.stringify(searchRequest) + '\n');
await new Promise(resolve => setTimeout(resolve, 1000));
// Clean up
serverProcess.kill();
console.log('\n๐ค Server Responses:');
console.log('=' .repeat(50));
// Filter and display MCP responses (not log messages)
const mcpResponses = responses.filter(r => r.jsonrpc === "2.0");
if (mcpResponses.length > 0) {
mcpResponses.forEach((response, index) => {
console.log(`Response ${index + 1}:`);
console.log(JSON.stringify(response, null, 2));
console.log('-'.repeat(30));
});
} else {
console.log('No valid MCP responses received. Server logs:');
responses.slice(0, 10).forEach(log => {
if (log.event) {
console.log(`${log.event}: ${JSON.stringify(log).substring(0, 100)}...`);
}
});
}
console.log(`\nโ
Test completed! Server processed ${responses.length} messages.`);
if (mcpResponses.length > 0) {
console.log('๐ MCP Server is working correctly!');
} else {
console.log('โ ๏ธ MCP Server is starting but may need configuration adjustments.');
}
}
testMCPCommunication().catch(console.error);