Skip to main content
Glama
websocket.ts2.61 kB
#!/usr/bin/env node /** * WebSocket Adapter for Mermaid MCP Connector * Real-time bidirectional communication for AI assistants */ import { WebSocketServer, WebSocket } from 'ws'; import { MermaidMCPConnector } from './index.js'; const PORT = process.env.WS_PORT ? parseInt(process.env.WS_PORT) : 3001; // Initialize MCP Connector const connector = new MermaidMCPConnector(); // Connect to MCP server connector.connect().then(() => { console.log('✅ Connected to Mermaid MCP Server'); }).catch((error) => { console.error('Failed to connect to MCP server:', error); process.exit(1); }); // Create WebSocket server const wss = new WebSocketServer({ port: PORT }); console.log(`🔌 WebSocket server running on ws://localhost:${PORT}`); wss.on('connection', (ws: WebSocket) => { console.log('🔗 New client connected'); ws.on('message', async (data: Buffer) => { try { const message = JSON.parse(data.toString()); console.log('📩 Received:', message); const { action, params } = message; let result; switch (action) { case 'list_tools': result = await connector.listTools(); break; case 'generate_diagram': result = await connector.generateDiagram(params); break; case 'get_diagram_types': result = await connector.getDiagramTypes(); break; case 'get_templates': result = await connector.getTemplates(params?.category); break; case 'validate_syntax': result = await connector.validateSyntax(params.code); break; case 'export_diagram': result = await connector.exportDiagram(params); break; default: throw new Error(`Unknown action: ${action}`); } ws.send(JSON.stringify({ success: true, action, result })); } catch (error: any) { ws.send(JSON.stringify({ success: false, error: error.message })); } }); ws.on('close', () => { console.log('❌ Client disconnected'); }); ws.on('error', (error) => { console.error('WebSocket error:', error); }); // Send welcome message ws.send(JSON.stringify({ type: 'connection', message: 'Connected to Mermaid MCP Connector', version: '1.0.0' })); }); // Graceful shutdown process.on('SIGINT', async () => { console.log('\nShutting down WebSocket server...'); wss.clients.forEach((client) => { client.close(); }); wss.close(); await connector.disconnect(); process.exit(0); });

Latest Blog Posts

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/Narasimhaponnada/mcp-mermiad'

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