Skip to main content
Glama

Hacker News Companion MCP

by georgeck
sse-transport.js2.19 kB
import {Server} from "@modelcontextprotocol/sdk/server/index.js"; import express from "express"; import {SSEServerTransport} from "@modelcontextprotocol/sdk/server/sse.js"; /** * Initialize and run an MCP server using SSE transport * @param {object} options - Server configuration options * @param {number} options.port - Port to run the server on (default: 3000) * @param {boolean} options.debug - Whether to enable debug logging * @param {function} serverSetupFn - Function to configure the server */ export async function runSseServer(options, serverSetupFn) { const port = options.port || 3000; const DEBUG = options.debug === true; function log(message, data) { if (DEBUG) { console.error(`[${new Date().toISOString()}] ${message}`, data || ''); } } // Create Express app const app = express(); // Create the MCP server const server = new Server({ name: "HackerNews companion MCP server", version: "0.1.0", }, { capabilities: { tools: {} } }); // Let the main setup function configure the server if (typeof serverSetupFn === 'function') { serverSetupFn(server, log); } // Set up SSE transport let transport = null; app.get("/sse", (req, res) => { log("SSE connection established"); transport = new SSEServerTransport("/messages", res); server.connect(transport); }); app.post("/messages", (req, res) => { if (transport) { log("Received POST message"); transport.handlePostMessage(req, res); } else { res.status(400).json({error: "No active SSE connection"}); } }); // Start the HTTP server return new Promise((resolve) => { const httpServer = app.listen(port, () => { log(`SSE server running on http://localhost:${port}`); resolve({ server, close: () => { httpServer.close(); if (transport) { transport.close(); } } }); }); }); }

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/georgeck/hn-companion-mcp'

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