Skip to main content
Glama

FastMCP Boilerplate

by rainer85ah
main.py1.89 kB
from contextlib import asynccontextmanager from fastapi import FastAPI from fastmcp import FastMCP from api.v1.chat import router as chat_router from api.v1.code import router as code_router from agents.chat import chat_mcp from agents.code import code_mcp from context.lifespan_context import LifespanContext from tools.chat import * from tools.code import * from prompts.chat import * from resources.chat import * from resources.chat_templates import * from resources.code import * from resources.code_templates import * from prompts.coding import * from fastapi.middleware.cors import CORSMiddleware from utils.logger_config import configure_logger logger = configure_logger("MainAgent") logger.info("Starting Main MCP server ...") @asynccontextmanager async def lifespan_context(app): lifespan = LifespanContext() await lifespan.startup() app.state.lifespan = lifespan try: yield finally: await lifespan.shutdown() mcp = FastMCP( name="MainAgent", instructions="Coordinator for sub-agents.", dependencies=[], ) mcp.lifespan_context = lifespan_context logger.info("Mounting Sub-Agents ...") mcp.mount(prefix='chat', server=chat_mcp) mcp.mount(prefix='code', server=code_mcp) mcp_app = mcp.http_app(path='/mcp') app = FastAPI(title="MCP API", lifespan=mcp_app.router.lifespan_context) app.mount("/service", mcp_app, name="main") app.include_router(chat_router, prefix="/api/v1") app.include_router(code_router, prefix="/api/v1") app.add_middleware( CORSMiddleware, allow_origins=["*"], # Or restrict to specific domains allow_methods=["*"], allow_headers=["*"], ) @app.get("/") async def home(): return {"status": "API up!"} @app.get("/health") async def health_check(): return {"status": "healthy"} if __name__ == "__main__": import uvicorn uvicorn.run("main:app", host="0.0.0.0", port=8000)

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/rainer85ah/mcp-server'

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