Skip to main content
Glama

HackerNews MCP Server

index.tsโ€ข1.69 kB
#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { config } from "./config.js"; import { setupResources } from "./resources/index.js"; import { setupTools } from "./tools/index.js"; import { setupPrompts } from "./prompts/index.js"; import { HackerNewsClient } from "./api/client.js"; import { logger } from "./utils/logger.js"; async function main() { try { // Initialize the MCP server const server = new McpServer({ name: config.serverName, version: config.serverVersion, }); // Initialize the HackerNews API client const hnClient = new HackerNewsClient({ baseUrl: config.api.baseUrl, timeout: config.api.timeout, }); // Setup MCP components await setupResources(server, hnClient); await setupTools(server, hnClient); await setupPrompts(server, hnClient); // Connect to stdio transport const transport = new StdioServerTransport(); logger.info(`Starting ${config.serverName} v${config.serverVersion}`); await server.connect(transport); logger.info("HackerNews MCP server is running"); } catch (error) { logger.error("Failed to start server:", error); process.exit(1); } } // Handle graceful shutdown process.on("SIGINT", () => { logger.info("Received SIGINT, shutting down gracefully"); process.exit(0); }); process.on("SIGTERM", () => { logger.info("Received SIGTERM, shutting down gracefully"); process.exit(0); }); // Start the server main().catch((error) => { logger.error("Unhandled error:", error); process.exit(1); });

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/Traves-Theberge/Hackernews-MCP-Typescript'

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