Skip to main content
Glama

Lark Base MCP Server

Official
index.sse.ts2.56 kB
#!/usr/bin/env node import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import { BaseService } from './service/baseService.js'; import { BaseMCPServer } from './service/mcpServer.js'; import express, { Request, Response } from 'express'; import { sessionManager } from './service/sessionManager.js'; const PORT = process.env.PORT || 3001; const KEEP_ALIVE_INTERVAL_MS = 25000; // Send keep-alive every 25 seconds const main = async () => { const baseService = new BaseService(); const server = new BaseMCPServer(baseService); const app = express(); app.get('/sse', async (req: Request, res: Response) => { const { appToken, personalBaseToken } = req.query; console.log(`[SSE Connection] Client connected, id is: `, appToken); if (!appToken || !personalBaseToken) { res.status(400).send('Missing appToken or personalBaseToken'); return; } const transport = new SSEServerTransport('/messages', res); const sessionId = transport.sessionId; // Initialize session with transport sessionManager.createSession(sessionId, appToken as string, personalBaseToken as string, transport); // Start keep-alive ping const intervalId = setInterval(() => { if (!res.writableEnded) { res.write(': keepalive\n\n'); } else { clearInterval(intervalId); } }, KEEP_ALIVE_INTERVAL_MS); console.log(`[SSE Connection] Client connected: ${sessionId}, starting keep-alive.`); res.on('close', () => { console.log(`[SSE Connection] Client disconnected: ${sessionId}, stopping keep-alive.`); clearInterval(intervalId); sessionManager.deleteSession(sessionId); }); try { await server.connect(transport); } catch (error) { console.error(`[SSE Connection] Error connecting server to transport for ${sessionId}:`, error); clearInterval(intervalId); sessionManager.deleteSession(sessionId); if (!res.writableEnded) { res.status(500).end('Failed to connect MCP server to transport'); } } }); app.post('/messages', async (req, res) => { const sessionId = req.query.sessionId as string; const transport = sessionManager.getTransport(sessionId); if (transport instanceof SSEServerTransport) { await transport.handlePostMessage(req, res); } else { res.status(400).send('No transport found for sessionId'); } }); app.listen(PORT, () => { console.log(`Server is running on http://localhost:${PORT}`); }); }; main().catch(console.error);

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/Lark-Base-Team/lark-base-mcp-node-server'

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