from fastapi import FastAPI
from fastapi.middleware.cors import CORSMiddleware
from fastapi.staticfiles import StaticFiles
from fastapi.responses import FileResponse
from pathlib import Path
from app.api.routes import router
from app.api.ai_routes import router as ai_router
# Create FastAPI app
app = FastAPI(
title="Simple MCP Data Manager with AI",
description="A simple MCP server with RESTful API operations and local AI model integration",
version="1.0.0",
docs_url="/docs",
redoc_url="/redoc"
)
# Add CORS middleware
app.add_middleware(
CORSMiddleware,
allow_origins=["*"], # In production, specify actual origins
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
# Include API routes
app.include_router(router, prefix="/api")
app.include_router(ai_router, prefix="/api")
# Mount static files
static_dir = Path(__file__).parent.parent / "static"
if static_dir.exists():
app.mount("/static", StaticFiles(directory=str(static_dir)), name="static")
# Serve the main HTML page
@app.get("/")
async def read_root():
html_file = Path(__file__).parent.parent / "static" / "index.html"
if html_file.exists():
return FileResponse(html_file)
else:
return {"message": "Simple MCP Data Manager with AI", "docs": "/docs"}
if __name__ == "__main__":
import uvicorn
uvicorn.run(app, host="0.0.0.0", port=8000)