84 lines
1.9 KiB
JavaScript
84 lines
1.9 KiB
JavaScript
|
|
#!/usr/bin/env node
|
||
|
|
|
||
|
|
/**
|
||
|
|
* Simple test script to verify the MCP server is working
|
||
|
|
* This simulates basic MCP protocol interactions
|
||
|
|
*/
|
||
|
|
|
||
|
|
import { spawn } from 'child_process';
|
||
|
|
import { randomUUID } from 'crypto';
|
||
|
|
|
||
|
|
// Start the MCP server
|
||
|
|
const server = spawn('node', ['index.js']);
|
||
|
|
|
||
|
|
let responseBuffer = '';
|
||
|
|
|
||
|
|
server.stdout.on('data', (data) => {
|
||
|
|
responseBuffer += data.toString();
|
||
|
|
|
||
|
|
// Try to parse complete JSON-RPC messages
|
||
|
|
const lines = responseBuffer.split('\n');
|
||
|
|
responseBuffer = lines.pop(); // Keep incomplete line in buffer
|
||
|
|
|
||
|
|
for (const line of lines) {
|
||
|
|
if (line.trim()) {
|
||
|
|
try {
|
||
|
|
const message = JSON.parse(line);
|
||
|
|
console.log('Received:', JSON.stringify(message, null, 2));
|
||
|
|
} catch (e) {
|
||
|
|
console.error('Failed to parse:', line);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
server.stderr.on('data', (data) => {
|
||
|
|
console.error('Server:', data.toString());
|
||
|
|
});
|
||
|
|
|
||
|
|
server.on('close', (code) => {
|
||
|
|
console.log(`Server exited with code ${code}`);
|
||
|
|
});
|
||
|
|
|
||
|
|
// Send initialization message
|
||
|
|
function sendMessage(method, params = {}) {
|
||
|
|
const message = {
|
||
|
|
jsonrpc: '2.0',
|
||
|
|
id: randomUUID(),
|
||
|
|
method,
|
||
|
|
params,
|
||
|
|
};
|
||
|
|
|
||
|
|
server.stdin.write(JSON.stringify(message) + '\n');
|
||
|
|
console.log('Sent:', JSON.stringify(message, null, 2));
|
||
|
|
}
|
||
|
|
|
||
|
|
// Wait a bit for server to start, then send test messages
|
||
|
|
setTimeout(() => {
|
||
|
|
console.log('\n=== Testing Initialization ===');
|
||
|
|
sendMessage('initialize', {
|
||
|
|
protocolVersion: '2024-11-05',
|
||
|
|
capabilities: {},
|
||
|
|
clientInfo: {
|
||
|
|
name: 'test-client',
|
||
|
|
version: '1.0.0',
|
||
|
|
},
|
||
|
|
});
|
||
|
|
}, 1000);
|
||
|
|
|
||
|
|
setTimeout(() => {
|
||
|
|
console.log('\n=== Testing List Resources ===');
|
||
|
|
sendMessage('resources/list');
|
||
|
|
}, 2000);
|
||
|
|
|
||
|
|
setTimeout(() => {
|
||
|
|
console.log('\n=== Testing List Tools ===');
|
||
|
|
sendMessage('tools/list');
|
||
|
|
}, 3000);
|
||
|
|
|
||
|
|
setTimeout(() => {
|
||
|
|
console.log('\n=== Test complete, shutting down ===');
|
||
|
|
server.kill();
|
||
|
|
process.exit(0);
|
||
|
|
}, 5000);
|