server.py•1.05 kB
from contextlib import asynccontextmanager
from typing import AsyncIterator
from mcp.server.fastmcp import FastMCP
from db.tasks_sqlite import Database
from models.server_context import AppContext
from prompts.tasks import create_tasks_prompts
from resources.tasks import create_tasks_resources
from tools.tasks import create_tasks_tools
from .config import Settings
def create_mcp_server(settings: Settings = Settings()) -> FastMCP:
@asynccontextmanager
async def app_lifespan(server: FastMCP) -> AsyncIterator[AppContext]:
"""Manage application lifecycle with type-safe context."""
# Initialize on startup
db = Database(path=settings.DATABASE_PATH)
try:
yield AppContext(db=db)
finally:
# Cleanup on shutdown
db.close()
mcp = FastMCP(
"Task list",
lifespan=app_lifespan,
host=settings.HOST,
port=settings.PORT,
)
create_tasks_tools(mcp)
create_tasks_resources(mcp)
create_tasks_prompts(mcp)
return mcp