Skip to main content
Glama
http_server.py2.1 kB
"""HTTP server entry point for containerised deployment. This module provides an HTTP transport wrapper around the main MCP server for use with Smithery's container deployment and streamable HTTP transport. """ import os import uvicorn from starlette.middleware.cors import CORSMiddleware from .server import mcp, __version__ def main(): """Start the HTTP server with CORS support for containerised deployment. This function: 1. Wraps the MCP server with Starlette HTTP app 2. Configures CORS for cross-origin requests (required for browser clients) 3. Listens on PORT environment variable (Smithery sets to 8081) 4. Exposes MCP endpoints at /mcp for streamable HTTP transport """ print(f"Diagrams MCP Server v{__version__} starting...") print("Mode: HTTP (Streamable HTTP Transport)") # Create Starlette app from MCP server with HTTP transport app = mcp.http_app() # CRITICAL: Add CORS middleware for browser-based clients # This is required for Smithery and other web-based MCP clients app.add_middleware( CORSMiddleware, allow_origins=["*"], # Allow all origins for public server allow_credentials=True, allow_methods=["GET", "POST", "OPTIONS"], # Required HTTP methods allow_headers=["*"], # Allow all headers including custom ones expose_headers=[ "mcp-session-id", # Expose MCP protocol headers "mcp-protocol-version", ], max_age=86400, # Cache preflight requests for 24 hours ) # Get port from environment variable # Smithery sets PORT=8081 in production # Use 8080 as default for local development port = int(os.environ.get("PORT", 8080)) print(f"Listening on http://0.0.0.0:{port}") print(f"MCP endpoint: http://0.0.0.0:{port}/mcp") print("Ready for connections...") # Start the server uvicorn.run( app, host="0.0.0.0", # Listen on all interfaces port=port, log_level="info", # Use info level for production ) if __name__ == "__main__": main()

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/apetta/diagrams-mcp'

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