Skip to main content
Glama

MCP Bridge Server

server.test.js3.67 kB
import { StateManager } from '../src/stateManager.js'; import { Router } from '../src/router.js'; describe('MCP Bridge Server', () => { let stateManager; let router; beforeEach(() => { stateManager = new StateManager({ cleanupIntervalMs: 1000, taskExpirationMs: 5000 }); router = new Router({ defaultTargetType: 'claude', routingRules: { 'tools/optimize_code': { targetType: 'claude', priority: 1 } } }, stateManager); }); afterEach(() => { stateManager.dispose(); }); describe('StateManager', () => { it('should manage client connections', () => { const client = { id: 'test-client', type: 'claude', transport: 'stdio', connected: true, lastSeen: new Date() }; stateManager.registerClient(client); const clients = stateManager.getConnectedClientsByType('claude'); expect(clients).toHaveLength(1); expect(clients[0].id).toBe('test-client'); }); it('should track task state', () => { const taskId = 'test-task'; const task = stateManager.createTask(taskId, 'test-client', 3); expect(task.id).toBe(taskId); expect(task.status).toBe('pending'); expect(task.attempts).toBe(0); const updatedTask = stateManager.incrementTaskAttempts(taskId); expect(updatedTask?.attempts).toBe(1); }); }); describe('Router', () => { it('should route messages based on rules', async () => { // Register a test client stateManager.registerClient({ id: 'claude-1', type: 'claude', transport: 'stdio', connected: true, lastSeen: new Date() }); // Create a test message const message = { id: 'test-message', type: 'request', method: 'tools/optimize_code', sourceClientId: 'test-client', payload: { code: 'function test() {}' }, timestamp: new Date() }; // Set up message handler let routedMessage = null; router.onMessage((clientId, msg) => { routedMessage = msg; }); // Route the message await router.routeMessage(message); // Verify routing expect(routedMessage).toBeTruthy(); expect(routedMessage?.targetClientId).toBe('claude-1'); }); it('should handle missing target clients', async () => { const message = { id: 'test-message', type: 'request', method: 'tools/optimize_code', sourceClientId: 'test-client', payload: { code: 'function test() {}' }, timestamp: new Date() }; // Set up error handler let routingError = null; router.onError((error) => { routingError = error; }); // Attempt to route message with no available clients const result = await router.routeMessage(message); expect(result).toBe(false); expect(routingError).toBeTruthy(); expect(routingError?.message).toContain('No available clients'); }); }); }); //# sourceMappingURL=server.test.js.map

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/glassBead-tc/SubspaceDomain'

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