test.ts•2.44 kB
import { spawn } from 'child_process';
async function testServer() {
console.log('Starting Tracxn MCP server test...');
// Start the server process
const serverProcess = spawn('npm', ['run', 'dev'], {
stdio: ['pipe', 'pipe', 'pipe'],
cwd: process.cwd()
});
// Listen for server output
serverProcess.stdout.on('data', (data) => {
console.log('Server stdout:', data.toString());
});
serverProcess.stderr.on('data', (data) => {
console.log('Server stderr:', data.toString());
});
// Wait for server to start
await new Promise(resolve => setTimeout(resolve, 2000));
// Send MCP protocol initialization
const initRequest = {
jsonrpc: "2.0",
id: 1,
method: "initialize",
params: {
protocolVersion: "2024-11-05",
capabilities: {
tools: {},
resources: {}
},
clientInfo: {
name: "test-client",
version: "1.0.0"
}
}
};
console.log('Sending initialization request...');
serverProcess.stdin.write(JSON.stringify(initRequest) + '\n');
// Wait a bit
await new Promise(resolve => setTimeout(resolve, 1000));
// Send tools/list request
const toolsListRequest = {
jsonrpc: "2.0",
id: 2,
method: "tools/list",
params: {}
};
console.log('Sending tools/list request...');
serverProcess.stdin.write(JSON.stringify(toolsListRequest) + '\n');
// Wait a bit
await new Promise(resolve => setTimeout(resolve, 1000));
// Send resources/list request
const resourcesListRequest = {
jsonrpc: "2.0",
id: 3,
method: "resources/list",
params: {}
};
console.log('Sending resources/list request...');
serverProcess.stdin.write(JSON.stringify(resourcesListRequest) + '\n');
// Wait a bit
await new Promise(resolve => setTimeout(resolve, 1000));
// Send a test tool call
const toolCallRequest = {
jsonrpc: "2.0",
id: 4,
method: "tools/call",
params: {
name: "get_company",
arguments: {
companyId: "123"
}
}
};
console.log('Sending tool call request...');
serverProcess.stdin.write(JSON.stringify(toolCallRequest) + '\n');
// Wait for responses
await new Promise(resolve => setTimeout(resolve, 3000));
console.log('Test completed. Shutting down server...');
serverProcess.kill();
process.exit(0);
}
testServer().catch((error) => {
console.error('Test failed:', error);
process.exit(1);
});