import asyncio import contextlib from fastapi import FastAPI from fastapi.staticfiles import StaticFiles from fastapi.middleware.cors import CORSMiddleware from app.routes import api, admin, mcp from app.models import init_db @contextlib.asynccontextmanager async def lifespan(app: FastAPI): await init_db() async with mcp.session_manager.run(): yield app = FastAPI(title="context-hub", version="1.0.0", lifespan=lifespan) app.add_middleware( CORSMiddleware, allow_origins=["*"], allow_credentials=True, allow_methods=["*"], allow_headers=["*"], ) app.mount("/static", StaticFiles(directory="static"), name="static") app.include_router(api.router) app.include_router(admin.router) app.include_router(mcp.router) @app.get("/health") async def health_check(): return {"status": "ok"} from fastapi.responses import RedirectResponse @app.get("/") async def root(): return RedirectResponse(url="/login")