test-mcp.js•1.73 kB
#!/usr/bin/env node
import { spawn } from 'child_process';
console.log('Testing MCP server...\n');
const server = spawn('node', ['./dist/index.js'], {
  stdio: ['pipe', 'pipe', 'inherit']
});
// Send initialization request
const initRequest = {
  jsonrpc: '2.0',
  id: 1,
  method: 'initialize',
  params: {
    protocolVersion: '2024-11-05',
    capabilities: {},
    clientInfo: {
      name: 'test-client',
      version: '1.0.0'
    }
  }
};
// Send list tools request
const listToolsRequest = {
  jsonrpc: '2.0',
  id: 2,
  method: 'tools/list',
  params: {}
};
let buffer = '';
server.stdout.on('data', (data) => {
  buffer += data.toString();
  const lines = buffer.split('\n');
  
  // Process complete JSON-RPC messages
  for (let i = 0; i < lines.length - 1; i++) {
    const line = lines[i].trim();
    if (line) {
      try {
        const response = JSON.parse(line);
        console.log('Response:', JSON.stringify(response, null, 2));
      } catch (e) {
        console.log('Raw output:', line);
      }
    }
  }
  
  buffer = lines[lines.length - 1];
});
server.on('error', (err) => {
  console.error('Server error:', err);
  process.exit(1);
});
server.on('close', (code) => {
  console.log(`Server exited with code ${code}`);
  process.exit(code);
});
// Send initialization
setTimeout(() => {
  console.log('Sending initialize request...');
  server.stdin.write(JSON.stringify(initRequest) + '\n');
}, 100);
// Send list tools after init
setTimeout(() => {
  console.log('\nSending list tools request...');
  server.stdin.write(JSON.stringify(listToolsRequest) + '\n');
}, 1000);
// Close after getting response
setTimeout(() => {
  console.log('\nClosing server...');
  server.kill();
}, 3000);