Skip to main content
Glama

MCP Self-Learning Server

test-client.jsโ€ข4.22 kB
#!/usr/bin/env node /** * Test script for Node.js Client Library */ import SelfLearningClient from './lib/self-learning-client.js'; async function testClient() { console.log('๐Ÿงช Testing Node.js Client Library...\n'); // Initialize client const client = new SelfLearningClient({ port: 8765 }); try { // Test connection console.log('1. Testing connection...'); const connected = await client.connect(); console.log(` โœ… Connected: ${connected}\n`); // Test health check console.log('2. Testing health check...'); const health = await client.getHealth(); console.log(` โœ… Health: ${health.status}`); console.log(` ๐Ÿ“Š Uptime: ${Math.round(health.uptime / 1000)}s\n`); // Test status console.log('3. Testing status...'); const status = await client.getStatus(); console.log(` โœ… Running: ${status.running}`); console.log(` ๐Ÿง  Learning Active: ${status.learning.active}`); console.log(` ๐Ÿ“Š Patterns: ${status.learning.patterns}\n`); // Test pattern analysis console.log('4. Testing pattern analysis...'); const interaction = { type: 'test_interaction', input: 'Test client library usage', output: 'Client library working correctly', success: true, context: { source: 'node-client-test' } }; const result = await client.analyzePattern(interaction); console.log(` โœ… Pattern ID: ${result.patternId.substring(0, 8)}...`); console.log(` ๐Ÿ”ง Tool Sequence: ${result.features.toolSequence.join(', ')}\n`); // Test insights console.log('5. Testing insights...'); const insights = await client.getInsights(); console.log(` โœ… Success Rate: ${(insights.insights.metrics.successRate * 100).toFixed(1)}%`); console.log(` ๐Ÿง  Knowledge Items: ${insights.insights.knowledgeItems}`); console.log(` ๐Ÿ”„ Learning Cycles: ${insights.insights.metrics.learningCycles}\n`); // Test WebSocket connection console.log('6. Testing WebSocket...'); await client.connectWebSocket(); // Set up event listeners client.on('websocket-connected', () => { console.log(' โœ… WebSocket connected'); }); client.on('realtime-update', (data) => { console.log(' ๐Ÿ“ก Received real-time update:', data.type || 'unknown'); }); // Wait a bit for WebSocket to connect await new Promise(resolve => setTimeout(resolve, 1000)); // Test multiple patterns console.log('7. Testing bulk operations...'); const interactions = [ { type: 'bulk_test', input: 'Test 1', output: 'Result 1', success: true }, { type: 'bulk_test', input: 'Test 2', output: 'Result 2', success: true }, { type: 'bulk_test', input: 'Test 3', output: 'Result 3', success: false } ]; const bulkResults = await client.analyzeMultiplePatterns(interactions); const successCount = bulkResults.filter(r => r.success).length; console.log(` โœ… Bulk analysis: ${successCount}/${bulkResults.length} successful\n`); // Test learning session console.log('8. Testing learning session...'); const session = client.createLearningSession('test-session-' + Date.now()); session.addInteraction({ type: 'session_test', input: 'Session test', output: 'Session result', success: true }); const sessionSummary = session.getSummary(); console.log(` โœ… Session ID: ${sessionSummary.sessionId.substring(0, 20)}...`); console.log(` ๐Ÿ”ข Interactions: ${sessionSummary.interactions}\n`); // Clean up client.disconnectWebSocket(); console.log('โœ… All Node.js client tests passed!\n'); } catch (error) { console.error('โŒ Client test failed:', error.message); process.exit(1); } } // Event listeners for demonstration const client = new SelfLearningClient({ port: 8765 }); client.on('connected', () => { console.log('๐Ÿ”— Client connected to server'); }); client.on('error', (error) => { console.log('โš ๏ธ Client error:', error.message); }); client.on('request-retry', (info) => { console.log(`๐Ÿ”„ Retrying request (attempt ${info.attempt}): ${info.method} ${info.endpoint}`); }); // Run the test await testClient();

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/saralegui-solutions/mcp-self-learning-server'

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