Skip to main content
Glama

Smart Code Search MCP Server

test-connection.jsโ€ข7.78 kB
/** * Test Connection Script * Verifies all components are working correctly */ const WebSocket = require('ws'); const { Client } = require('@modelcontextprotocol/sdk/client/index.js'); const { StdioClientTransport } = require('@modelcontextprotocol/sdk/client/stdio.js'); const path = require('path'); const fs = require('fs').promises; console.log('๐Ÿงช Voice Assistant Test Suite\n'); const tests = { fileSystem: false, database: false, scsMcp: false, elevenLabs: false, browserMcp: false, webSocket: false, httpServer: false }; async function testFileSystem() { console.log('๐Ÿ“ Testing file system...'); try { const dirs = ['media', 'data', 'logs']; for (const dir of dirs) { await fs.access(path.join(__dirname, dir)); } tests.fileSystem = true; console.log('โœ… File system ready\n'); } catch (error) { console.log('โŒ File system not initialized. Run: npm run setup\n'); } } async function testDatabase() { console.log('๐Ÿ’พ Testing database...'); try { const { initializeDatabase } = require('./db-init'); const db = await initializeDatabase(); // Test query await new Promise((resolve, reject) => { db.get('SELECT COUNT(*) as count FROM media_items', (err, row) => { if (err) reject(err); else resolve(row); }); }); db.close(); tests.database = true; console.log('โœ… Database connected\n'); } catch (error) { console.log(`โŒ Database error: ${error.message}\n`); } } async function testScsMcp() { console.log('๐Ÿ” Testing SCS-MCP connection...'); try { const transport = new StdioClientTransport({ command: 'node', args: [path.join(__dirname, '../src/index.js')], env: { ...process.env, PROJECT_ROOT: path.dirname(__dirname) } }); const client = new Client({ name: 'test-client', version: '1.0.0' }, { capabilities: {} }); await client.connect(transport); // Test tool listing const tools = await client.listTools(); console.log(` Found ${tools.tools?.length || 0} tools`); await client.close(); tests.scsMcp = true; console.log('โœ… SCS-MCP connected\n'); } catch (error) { console.log(`โŒ SCS-MCP error: ${error.message}\n`); } } async function testElevenLabs() { console.log('๐ŸŽค Testing ElevenLabs MCP...'); if (!process.env.ELEVENLABS_API_KEY) { console.log('โš ๏ธ ElevenLabs API key not configured (optional)\n'); return; } try { const transport = new StdioClientTransport({ command: 'npx', args: ['-y', '@modelcontextprotocol/server-elevenlabs'], env: { ...process.env } }); const client = new Client({ name: 'test-elevenlabs', version: '1.0.0' }, { capabilities: {} }); await client.connect(transport); // Test tool listing const tools = await client.listTools(); console.log(` Found ${tools.tools?.length || 0} voice tools`); await client.close(); tests.elevenLabs = true; console.log('โœ… ElevenLabs connected\n'); } catch (error) { console.log(`โš ๏ธ ElevenLabs not available: ${error.message}\n`); } } async function testBrowserMcp() { console.log('๐ŸŒ Testing Browser MCP...'); try { const { BrowserMCP } = require('./browser-mcp'); const browser = new BrowserMCP(); const connected = await browser.connect(); if (connected) { console.log(` Capabilities: ${browser.capabilities?.tools?.length || 0} tools`); await browser.disconnect(); tests.browserMcp = true; console.log('โœ… Browser MCP connected\n'); } else { console.log('โš ๏ธ Browser MCP not available (optional)\n'); } } catch (error) { console.log(`โš ๏ธ Browser MCP error: ${error.message}\n`); } } async function testWebSocket() { console.log('๐Ÿ”Œ Testing WebSocket server...'); return new Promise((resolve) => { const ws = new WebSocket('ws://localhost:3001'); ws.on('open', () => { tests.webSocket = true; console.log('โœ… WebSocket server running\n'); ws.close(); resolve(); }); ws.on('error', (error) => { console.log('โŒ WebSocket server not running. Start with: npm start\n'); resolve(); }); setTimeout(() => { ws.close(); resolve(); }, 2000); }); } async function testHttpServer() { console.log('๐ŸŒ Testing HTTP server...'); try { const http = require('http'); return new Promise((resolve) => { http.get('http://localhost:3000/health', (res) => { let data = ''; res.on('data', chunk => data += chunk); res.on('end', () => { try { const health = JSON.parse(data); console.log(` Status: ${health.status}`); console.log(` Clients: ${health.wsClients || 0}`); tests.httpServer = true; console.log('โœ… HTTP server running\n'); } catch (error) { console.log('โŒ Invalid response from server\n'); } resolve(); }); }).on('error', (error) => { console.log('โŒ HTTP server not running. Start with: npm start\n'); resolve(); }); }); } catch (error) { console.log(`โŒ HTTP test error: ${error.message}\n`); } } async function runTests() { console.log('Starting tests...\n'); console.log('=' .repeat(50) + '\n'); // Run tests in sequence await testFileSystem(); await testDatabase(); await testScsMcp(); await testElevenLabs(); await testBrowserMcp(); await testWebSocket(); await testHttpServer(); // Summary console.log('=' .repeat(50)); console.log('\n๐Ÿ“Š Test Summary:\n'); const results = Object.entries(tests).map(([name, passed]) => { const icon = passed ? 'โœ…' : 'โŒ'; const status = passed ? 'PASS' : 'FAIL'; return ` ${icon} ${name.padEnd(15)} ${status}`; }); console.log(results.join('\n')); const passed = Object.values(tests).filter(t => t).length; const total = Object.keys(tests).length; const percentage = Math.round(passed / total * 100); console.log(`\n๐ŸŽฏ Score: ${passed}/${total} (${percentage}%)\n`); if (passed === total) { console.log('๐ŸŽ‰ All tests passed! System ready.\n'); } else if (passed >= total - 2) { console.log('โœจ Core systems operational. Optional features may be unavailable.\n'); } else { console.log('โš ๏ธ Some required components are not working. Please check setup.\n'); console.log('Run: npm run setup\n'); } // Exit code based on critical tests const criticalTests = tests.fileSystem && tests.database && tests.scsMcp; process.exit(criticalTests ? 0 : 1); } // Run tests runTests().catch(error => { console.error('Test suite failed:', error); process.exit(1); });

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/stevenjjobson/scs-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server