import json import uvicorn from starlette.responses import JSONResponse from starlette.requests import Request from starlette.middleware.cors import CORSMiddleware from mcp.server.transport_security import TransportSecuritySettings from finn_eiendom.cache import init_db from finn_eiendom.mcp_server import mcp # Initialise the database (and create the data/ directory) eagerly at # startup so the first tool call never fails on a missing directory. init_db() mcp.transport_security = TransportSecuritySettings(enable_dns_rebinding_protection=False) app = mcp.sse_app() # Add CORS middleware to allow browser-based clients (e.g., MCP Inspector) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) # Health check endpoint for container orchestration async def health(request: Request) -> JSONResponse: """Return a simple health status for container probes.""" return JSONResponse({"status": "ok"}) app.add_route("/health", health, methods=["GET"]) if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8010, forwarded_allow_ips="*")