@servesys-labs/claude-agents
Version:
Production-ready orchestration framework for Claude Desktop with 30+ specialized agents, smart hooks, vector memory, and autonomous workflows
108 lines (86 loc) โข 2.65 kB
text/typescript
/**
* Quick MCP Server Test
* Tests basic operations without full acceptance suite
*/
import { spawn } from 'child_process';
import path from 'path';
import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
async function testMCPServer() {
console.log('๐งช Testing MCP Server\n');
const serverPath = path.join(__dirname, 'dist', 'index.js');
const server = spawn('node', [serverPath], {
stdio: ['pipe', 'pipe', 'inherit'],
env: {
...process.env,
TEMPLATES_DIR: path.join(process.env.HOME!, 'vibe', 'ui-templates'),
},
});
let responseBuffer = '';
let testsPassed = 0;
let testsFailed = 0;
// Helper to send JSON-RPC request
function sendRequest(method: string, params: any) {
const request = {
jsonrpc: '2.0',
id: Date.now(),
method,
params,
};
server.stdin!.write(JSON.stringify(request) + '\n');
}
// Listen for responses
server.stdout!.on('data', (data) => {
responseBuffer += data.toString();
const lines = responseBuffer.split('\n');
responseBuffer = lines.pop() || '';
for (const line of lines) {
if (!line.trim()) continue;
try {
const response = JSON.parse(line);
handleResponse(response);
} catch (error) {
console.error('โ Failed to parse response:', line);
}
}
});
function handleResponse(response: any) {
if (response.error) {
console.error('โ Error:', response.error);
testsFailed++;
return;
}
if (response.result) {
testsPassed++;
console.log('โ
Test passed');
}
}
// Wait for server to start
await new Promise((resolve) => setTimeout(resolve, 2000));
console.log('Test 1: Initialize MCP server\n');
sendRequest('initialize', {
protocolVersion: '2024-11-05',
capabilities: {},
clientInfo: { name: 'test-client', version: '1.0.0' },
});
await new Promise((resolve) => setTimeout(resolve, 1000));
console.log('\nTest 2: List available tools\n');
sendRequest('tools/list', {});
await new Promise((resolve) => setTimeout(resolve, 1000));
console.log('\nTest 3: Get cache stats\n');
sendRequest('tools/call', {
name: 'cache_stats',
arguments: {},
});
await new Promise((resolve) => setTimeout(resolve, 2000));
// Cleanup
server.kill();
console.log(`\n๐ Results: ${testsPassed} passed, ${testsFailed} failed`);
process.exit(testsFailed > 0 ? 1 : 0);
}
testMCPServer().catch((error) => {
console.error('๐ฅ Test failed:', error);
process.exit(1);
});