Skip to main content
Glama
index.js1.8 kB
import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { randomUUID } from 'crypto'; import { Hono } from 'hono'; import { serve } from '@hono/node-server'; /** * Creates an MCP server with Hono for SSE transport * @param {Object} server - The MCP server instance * @param {number} port - The port to listen on (default: 9921) * @returns {Hono} - The Hono app instance */ export function createSseApp(server, port = 9921) { const app = new Hono(); let transport; app.get('/sse', async (c) => { console.log('Configuring SSE transport'); transport = new SSEServerTransport('/messages', c.res); await server.getMcpServer().connect(transport); return c.body(null); }); app.post('/messages', async (c) => { if (!transport) { console.log('No transport found.'); return c.text('No transport found', 400); } await transport.handlePostMessage(c.req, c.res); return c.body(null); }); return app; } // Check if this file is being run directly if (require.main === module) { // Import server here - assuming it's defined elsewhere const server = require('./server'); // Check if 'sse' is passed as the first argument const useSSE = process.argv.includes('sse'); if (useSSE) { const port = parseInt(process.env.PORT || '9921', 10); const app = createSseApp(server, port); const server_instance = serve({ fetch: app.fetch, port }); process.on('exit', () => { server_instance.close(); }); console.log(`MCP server listening on port ${port}`); } else { const transport = new StdioServerTransport(); server.getMcpServer().connect(transport); } }

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/thomasdavis/blah'

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