Skip to main content
Glama
ahmetacn

HoPe Chatbot MCP Server

by ahmetacn

HoPe Chatbot MCP Server

Usa FastMCP v3.

Por razones de organización del código, la funcionalidad de MCP se divide en módulos lógicos, subservidores MCP.

El servidor MCP principal puede importar/montar subservidores MCP de subdominio. (mcp_server/app.py)

Desarrollo

Define tus capacidades como servidores MCP separados y componibles.

Define nuevas herramientas, recursos y prompts de MCP... para el dominio <some> para la capacidad de negocio <some> en el subservidor MCP <some> en mcp_server/servers/<some>/mcp.py.

Exponer las capacidades del servidor MCP

Decide cómo quieres que tus herramientas, recursos y prompts de MCP estén disponibles:

  • en 1 servidor MCP combinado (todo en uno) 🌐

  • solo como servidor MCP separado 🔒🪪

  • ambos ✨

Servidor MCP todo en uno

Incluye el servidor MCP de subdominio en el servidor MCP combinado.

Sigue estos pasos en mcp_server/app.py:

  • Importa tu aplicación FastMCP

    from mcp_server.servers.some import some_mcp
  • Localiza el servidor MCP principal definido. Añade las capacidades de tu servidor MCP al servidor MCP principal en la fase de inicio/configuración del lifespan del servidor MCP principal

    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
    )
    
  • El servidor MCP combinado principal contiene las capacidades de tu servidor MCP en: BASE_URL/mcp.

    Esto debe ser cierto para el servidor MCP combinado principal ejecutado en todos los casos:

    • mcp_server/app.py ejecutado como módulo

      • método FastMCP.run

    • mcp_server/app.py ejecutado con uvicorn

      • FastMCP.http_app

        • aplicación ASGI de tu servidor MCP montada en la aplicación FastAPI, uvicorn accediendo a la aplicación ASGI de FastAPI

        • (uvicorn accediendo directamente a tu ASGI también funcionará)

Servidor MCP separado

Expón un servidor MCP de subdominio separado.

Sigue estos pasos en mcp_server/app.py:

  • Importa tu aplicación FastMCP

    from mcp_server.servers.some import some_mcp
  • Crea la aplicación ASGI desde tu aplicación FastMCP

    (no hace falta redefinir el kwarg path="/mcp")

    some_mcp_app = some_mcp.http_app()
  • Añade el lifespan de tu aplicación FastMCP al lifespan combinado usado por la aplicación FastAPI

    @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
    )
  • Monta la aplicación ASGI de tu servidor MCP en la aplicación FastAPI bajo la ruta /some

    fastapi_app.mount("/some", some_mcp_app)
    
  • Encontrarás tu servidor MCP separado en: BASE_URL/some/mcp

Related MCP server: Golf

Ejecución local

  • Define las variables de entorno en .env según .env.template (no hagas commit de secretos)

  • Instala los paquetes de Python necesarios desde requirements.txt

  • Inicia la aplicación FastMCP mediante el método run

    python -m mcp_server.app

    o ejecuta la aplicación FastAPI con los servidor(es) MCP montados en ella mediante gunicorn, uvicorn...

    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