test-mcp.js•1.95 kB
#!/usr/bin/env node
import { spawn } from 'child_process';
import fs from 'fs-extra';
import path from 'path';
import os from 'os';
// Create a test directory
const testDir = path.join(os.tmpdir(), 'tafa-mcp-live-test');
await fs.ensureDir(testDir);
await fs.writeFile(path.join(testDir, 'test.txt'), 'Hello from Tafa MCP!');
console.log('🚀 Testing Tafa MCP Server...');
console.log(`📁 Test directory: ${testDir}`);
// Start the MCP server
const server = spawn('node', ['src/index.js', testDir], {
stdio: ['pipe', 'pipe', 'pipe'],
cwd: process.cwd()
});
let serverReady = false;
let timeout;
server.stdout.on('data', (data) => {
const output = data.toString();
console.log('📤 Server output:', output);
if (output.includes('Tafa MCP Server connected and ready')) {
serverReady = true;
console.log('✅ Server started successfully!');
// Test a simple MCP request
testMcpRequest();
}
});
server.stderr.on('data', (data) => {
console.error('❌ Server error:', data.toString());
});
server.on('close', (code) => {
console.log(`🔚 Server exited with code ${code}`);
clearTimeout(timeout);
cleanup();
});
function testMcpRequest() {
console.log('🧪 Testing MCP request...');
// Send a simple MCP request to get server info
const request = {
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'get_server_info',
arguments: {}
}
};
server.stdin.write(JSON.stringify(request) + '\n');
// Set timeout to close server after test
timeout = setTimeout(() => {
console.log('⏰ Test timeout, closing server...');
server.kill();
}, 5000);
}
async function cleanup() {
console.log('🧹 Cleaning up test files...');
await fs.remove(testDir);
console.log('✅ Test complete!');
}
process.on('SIGINT', () => {
console.log('\n🛑 Received SIGINT, cleaning up...');
server.kill();
cleanup();
process.exit(0);
});