Skip to main content
Glama

@pulumi/mcp-server

Official
by pulumi
httpServer.ts2.02 kB
import express from 'express'; import { logger } from '../../logging/logging.js'; import { AddressInfo } from 'net'; import { createCORSMiddleware } from './cors.js'; import { HttpRequestRouter } from './router.js'; import { HTTP_SERVER_CONFIG, SESSION_CONFIG } from './config.js'; /** * Starts the MCP HTTP server on the specified port. * Sets up Express with CORS, session management, and request handling. */ export const startMcpHttpServer = (port: number) => { // Initialize components with configs const requestRouter = new HttpRequestRouter(SESSION_CONFIG); // Create Express application with JSON parsing const app = express(); app.use(express.json()); // Apply CORS validation to MCP endpoint app.use(HTTP_SERVER_CONFIG.mcpEndpoint, createCORSMiddleware()); // Route all MCP requests through the dedicated endpoint app.all(HTTP_SERVER_CONFIG.mcpEndpoint, requestRouter.createHandler()); // Determine host and start the HTTP server const host = process.env.MCP_HTTP_HOST || HTTP_SERVER_CONFIG.defaultHost; const server = app.listen(port, host, () => { const addr = server.address() as AddressInfo; logger.info(`MCP server listening on ${host}:${addr.port}${HTTP_SERVER_CONFIG.mcpEndpoint}`); }); // Configure server timeouts for stability server.timeout = HTTP_SERVER_CONFIG.timeout; server.keepAliveTimeout = HTTP_SERVER_CONFIG.keepAliveTimeout; server.headersTimeout = HTTP_SERVER_CONFIG.headersTimeout; // Handle server errors server.on('error', (error: Error) => { logger.error('Server error:', error); }); // Set up graceful shutdown handlers const gracefulShutdown = (signal: string) => { logger.info(`Received ${signal}, shutting down...`); server.close(() => { requestRouter.destroy(); logger.info('HTTP server closed'); process.exit(0); }); }; // Listen for termination signals process.on('SIGTERM', () => gracefulShutdown('SIGTERM')); process.on('SIGINT', () => gracefulShutdown('SIGINT')); };

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/pulumi/mcp-server'

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