test-final.jsโข6.79 kB
#!/usr/bin/env node
const { spawn } = require('child_process');
console.log('๐งช Running Final MCP Server Tests...\n');
// Test 1: Server initialization and tools list
function testToolsList() {
return new Promise((resolve, reject) => {
console.log('๐ Test 1: Tools List');
const server = spawn('worksona-mcp-server', [], {
stdio: ['pipe', 'pipe', 'pipe']
});
let stdout = '';
let stderr = '';
server.stdout.on('data', (data) => {
stdout += data.toString();
});
server.stderr.on('data', (data) => {
stderr += data.toString();
});
// Send tools/list request
const request = JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "tools/list",
params: {}
}) + '\n';
server.stdin.write(request);
server.stdin.end();
server.on('close', (code) => {
try {
// Verify JSON response
const response = JSON.parse(stdout.trim());
if (response.jsonrpc === "2.0" && response.id === 1 && response.result && response.result.tools) {
const toolCount = response.result.tools.length;
console.log(` โ
Server responded with ${toolCount} tools`);
console.log(` โ
Clean JSON output (no console interference)`);
resolve(true);
} else {
console.log(` โ Invalid response structure`);
reject(new Error('Invalid response structure'));
}
} catch (error) {
console.log(` โ JSON parsing failed: ${error.message}`);
console.log(` ๐ Raw stdout: ${stdout}`);
console.log(` ๐ Raw stderr: ${stderr}`);
reject(error);
}
});
// Timeout after 10 seconds
setTimeout(() => {
server.kill();
reject(new Error('Test timeout'));
}, 10000);
});
}
// Test 2: Agent activation
function testAgentActivation() {
return new Promise((resolve, reject) => {
console.log('\n๐ฏ Test 2: Agent Activation');
const server = spawn('worksona-mcp-server', [], {
stdio: ['pipe', 'pipe', 'pipe']
});
let stdout = '';
let stderr = '';
server.stdout.on('data', (data) => {
stdout += data.toString();
});
server.stderr.on('data', (data) => {
stderr += data.toString();
});
// Send agent activation request
const request = JSON.stringify({
jsonrpc: "2.0",
id: 2,
method: "tools/call",
params: {
name: "activate_agent",
arguments: {
agent_name: "frontend-developer",
request: "Create a simple React component"
}
}
}) + '\n';
server.stdin.write(request);
server.stdin.end();
server.on('close', (code) => {
try {
// Verify JSON response
const response = JSON.parse(stdout.trim());
if (response.jsonrpc === "2.0" && response.id === 2 && response.result && response.result.content) {
console.log(` โ
Agent activated successfully`);
console.log(` โ
Response contains content`);
console.log(` โ
Clean JSON output (no console interference)`);
resolve(true);
} else {
console.log(` โ Invalid agent response structure`);
reject(new Error('Invalid agent response structure'));
}
} catch (error) {
console.log(` โ JSON parsing failed: ${error.message}`);
console.log(` ๐ Raw stdout: ${stdout}`);
console.log(` ๐ Raw stderr: ${stderr}`);
reject(error);
}
});
// Timeout after 10 seconds
setTimeout(() => {
server.kill();
reject(new Error('Test timeout'));
}, 10000);
});
}
// Test 3: List agents
function testListAgents() {
return new Promise((resolve, reject) => {
console.log('\n๐ Test 3: List Agents');
const server = spawn('worksona-mcp-server', [], {
stdio: ['pipe', 'pipe', 'pipe']
});
let stdout = '';
let stderr = '';
server.stdout.on('data', (data) => {
stdout += data.toString();
});
server.stderr.on('data', (data) => {
stderr += data.toString();
});
// Send list agents request
const request = JSON.stringify({
jsonrpc: "2.0",
id: 3,
method: "tools/call",
params: {
name: "list_agents",
arguments: {}
}
}) + '\n';
server.stdin.write(request);
server.stdin.end();
server.on('close', (code) => {
try {
// Verify JSON response
const response = JSON.parse(stdout.trim());
if (response.jsonrpc === "2.0" && response.id === 3 && response.result && response.result.content) {
const content = response.result.content[0].text;
const agentCount = (content.match(/- \*\*/g) || []).length;
console.log(` โ
Listed ${agentCount} agents successfully`);
console.log(` โ
Response contains formatted agent list`);
console.log(` โ
Clean JSON output (no console interference)`);
resolve(true);
} else {
console.log(` โ Invalid list agents response structure`);
reject(new Error('Invalid list agents response structure'));
}
} catch (error) {
console.log(` โ JSON parsing failed: ${error.message}`);
console.log(` ๐ Raw stdout: ${stdout}`);
console.log(` ๐ Raw stderr: ${stderr}`);
reject(error);
}
});
// Timeout after 10 seconds
setTimeout(() => {
server.kill();
reject(new Error('Test timeout'));
}, 10000);
});
}
// Run all tests
async function runTests() {
try {
await testToolsList();
await testAgentActivation();
await testListAgents();
console.log('\n๐ All tests passed! MCP Server is working correctly.');
console.log('\n๐ฆ Package Details:');
console.log(' โข Package: worksona-mcp-server@1.1.2');
console.log(' โข 86 bundled agents across 18+ categories');
console.log(' โข Clean JSON-RPC protocol (no stdout interference)');
console.log(' โข Ready for Claude Desktop integration');
console.log('\n๐ Installation Instructions:');
console.log(' 1. npm install -g worksona-mcp-server');
console.log(' 2. Add to Claude Desktop config:');
console.log(' {');
console.log(' "mcpServers": {');
console.log(' "worksona-agents": {');
console.log(' "command": "worksona-mcp-server"');
console.log(' }');
console.log(' }');
console.log(' }');
console.log(' 3. Restart Claude Desktop');
} catch (error) {
console.log(`\nโ Test failed: ${error.message}`);
process.exit(1);
}
}
runTests();