ig-trading-mcp
Version:
IG Trading API with MCP (Model Context Protocol) server for AI integration
78 lines (66 loc) • 1.85 kB
JavaScript
/**
* Test MCP Server
*/
import { spawn } from 'child_process';
console.log('Testing MCP Server...\n');
const mcp = spawn('node', ['src/services/mcp-service.js'], {
stdio: ['pipe', 'pipe', 'pipe'],
env: {
...process.env,
IG_API_KEY: process.env.IG_API_KEY,
IG_IDENTIFIER: process.env.IG_IDENTIFIER,
IG_PASSWORD: process.env.IG_PASSWORD,
IG_DEMO: process.env.IG_DEMO || 'true'
}
});
// Send initialization
const initMessage = {
jsonrpc: '2.0',
method: 'initialize',
params: {
protocolVersion: '0.1.0',
capabilities: {}
},
id: 1
};
mcp.stdin.write(JSON.stringify(initMessage) + '\n');
// Send list tools request
setTimeout(() => {
const listTools = {
jsonrpc: '2.0',
method: 'tools/list',
params: {},
id: 2
};
mcp.stdin.write(JSON.stringify(listTools) + '\n');
}, 100);
// Handle responses
mcp.stdout.on('data', (data) => {
try {
const lines = data.toString().split('\n').filter(line => line.trim());
lines.forEach(line => {
const response = JSON.parse(line);
console.log('Response:', JSON.stringify(response, null, 2));
if (response.id === 2 && response.result?.tools) {
console.log(`\n✅ MCP Server is working! Found ${response.result.tools.length} tools`);
console.log('\nTools available:');
response.result.tools.slice(0, 5).forEach(tool => {
console.log(` - ${tool.name}: ${tool.description}`);
});
console.log(' ... and more\n');
process.exit(0);
}
});
} catch (e) {
// Ignore parsing errors for partial data
}
});
mcp.stderr.on('data', (data) => {
console.error('Error:', data.toString());
});
// Timeout after 5 seconds
setTimeout(() => {
console.log('❌ MCP Server did not respond properly');
process.exit(1);
}, 5000);