Skip to main content
Glama
ahmetacn

HoPe Chatbot MCP Server

by ahmetacn

HoPe Chatbot MCP-Server

Verwendet FastMCP v3.

Aus Gründen der Code-Organisation ist die MCP-Funktionalität in logische Module, MCP-Subserver, aufgeteilt.

Der Haupt-MCP-Server kann Sub-Domain-MCP-Server importieren/mounten. (mcp_server/app.py)

Entwicklung

Definiere deine Fähigkeiten, aufgeteilt in komponierbare MCP-Server.

Definiere neue MCP-Tools, Ressourcen, Prompts, ... für die <some>-Domäne für die <some>-Geschäftsfähigkeit in einem <some>-MCP-Subserver in mcp_server/servers/<some>/mcp.py.

MCP-Server-Fähigkeiten bereitstellen

Entscheide, wie deine MCP-Tools, Ressourcen, Prompts usw. verfügbar sein sollen:

  • in 1 kombinierten MCP-Server (All-in-One) 🌐

  • nur als separater MCP-Server 🔒🪪

  • beides ✨

All-in-One-MCP-Server

Füge den Sub-Domain-MCP-Server in den kombinierten MCP-Server ein.

Folge diesen Schritten in mcp_server/app.py:

  • Importiere deine FastMCP-App

    from mcp_server.servers.some import some_mcp
  • Finde den definierten Haupt-MCP-Server. Füge Fähigkeiten deines MCP-Servers zum Haupt-MCP-Server hinzu in der Start-/Setup-Lebenszyklusphase des Haupt-MCP-Servers

    async def setup(app: FastMCP):
        # Import or mount subservers
    
        app.mount(some_mcp)  # dynamic mount
        # await app.import_server(some_mcp)  # static copy
    
    
    @contextlib.asynccontextmanager
    async def lifespan(app: FastMCP):
        # Setup
        await setup(app)
        yield
        # Cleanup
    
    main_mcp = FastMCP(
        name="home-of-performance-mcp-server",
        lifespan=lifespan
    )
    
  • Der kombinierte Haupt-MCP-Server enthält die Fähigkeiten deines MCP-Servers unter: BASE_URL/mcp.

    Das sollte für den in allen Fällen ausgeführten kombinierten Haupt-MCP-Server gelten:

    • mcp_server/app.py als Modul ausgeführt

      • FastMCP.run-Methode Methode

    • mcp_server/app.py mit uvicorn ausgeführt

      • FastMCP.http_app

        • Die ASGI-App deines MCP-Servers, die in die FastAPI-App eingebunden ist, wobei uvicorn auf die FastAPI-ASGI-App zugreift

        • (uvicorn, das auf deine ASGI direkt zugreift, funktioniert auch)

Separater MCP-Server

Stelle einen separaten Sub-Domain-MCP-Server bereit.

Folge diesen Schritten in mcp_server/app.py:

  • Importiere deine FastMCP-App

    from mcp_server.servers.some import some_mcp
  • Erstelle eine ASGI-App aus deiner FastMCP-App

    (kein Neudefinieren des Kwargs path="/mcp" nötig)

    some_mcp_app = some_mcp.http_app()
  • Füge die Lebenszyklusphase deiner FastMCP-App zur kombinierten Lebenszyklusphase hinzu, die von der FastAPI-App verwendet wird

    @contextlib.asynccontextmanager
    async def combined_lifespan(app: FastAPI):
        """Combine lifespans for FastAPI app"""
        # Run all lifespans
        async with main_mcp_app.lifespan(app):
            async with some_mcp_app.lifespan(app):
                # Setup
                yield
                # Cleanup
    
    fastapi_app = FastAPI(
        title="Home of Performance MCP",
        lifespan=combined_lifespan
    )
  • Binde die ASGI-App deines MCP-Servers unter dem Pfad /some pfad in die FastAPI-App ein

    fastapi_app.mount("/some", some_mcp_app)
    
  • Finde deinen separaten MCP-Server unter: BASE_URL/some/mcp

Related MCP server: Golf

Lokale Ausführung

  • Definiere Umgebungsvariablen in .env gemäß .env.template (tue keine Secrets committen)

  • Installiere die benötigten Python-Pakete aus requirements.txt

  • Starte die FastMCP-App über die run-Methode

    python -m mcp_server.app

    oder führe die FastAPI-App mit integrierten MCP-Server(n) über gunicorn, uvicorn aus ...

    source source .venv/bin/activate && uvicorn src.app:app --host 0.0.0.0 --port 8000 --reload

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables dynamic loading, hot-reloading, and orchestration of MCP servers without restarting Claude Code, allowing programmatic tool calling and workflow automation across multiple servers.
    2
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Easiest framework for building MCP servers with automatic discovery of tools, prompts, and resources, plus enterprise-grade authentication and telemetry.
    164 PyPI
    840
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables building MCP servers with embedded reasoning, allowing complex tasks to be offloaded to an internal LLM for token and cost efficiency.
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Aggregates multiple MCP servers into a single endpoint, enabling LLM clients to access tools, resources, and prompts from various backends through one connection.
    9 npm
    MIT