Skip to main content
Glama
ahmetacn

HoPe Chatbot MCP Server

by ahmetacn

HoPe Chatbot MCP Server

Использует FastMCP v3.

Из соображений организации кода функциональность MCP разбита на логические модули — MCP-субсерверы.

Основной MCP-сервер может импортировать/монтировать MCP-серверы поддоменов. (mcp_server/app.py)

Разработка

Определяйте свои возможности, разбивая их на компонуемые MCP-серверы.

Определяйте новые MCP-инструменты, ресурсы, промпты... для домена <some> для бизнес-возможности <some> в MCP-субсервере <some> в mcp_server/servers/<some>/mcp.py.

Предоставление возможностей MCP-сервера

Решите, какие возможности вашего MCP-сервера должны быть доступны:

  • в 1 комбинированном MCP-сервере (всё в одном) 🌐

  • только в виде отдельного MCP-сервера 🔒🪪

  • оба варианта ✨

MCP-сервер «всё в одном»

Включите MCP-сервер поддомена в комбинированный MCP-сервер.

Выполните следующие шаги в mcp_server/app.py:

  • Импортируйте ваше FastMCP-приложение

    from mcp_server.servers.some import some_mcp
  • Найдите определённый основной MCP-сервер. Добавьте возможности вашего MCP-сервера в основной MCP-сервер в фазе запуска/настройки lifespan основного MCP-сервера

    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
    )
    
  • Основной комбинированный MCP-сервер содержит возможности вашего MCP-сервера по адресу: BASE_URL/mcp.

    Это должно выполняться для основного комбинированного MCP-сервера во всех случаях запуска:

    • mcp_server/app.py запускается как модуль

      • метод FastMCP.run

    • mcp_server/app.py запускается с помощью uvicorn

      • FastMCP.http_app

        • ASGI-приложение вашего MCP-сервера монтируется в FastAPI-приложение, uvicorn обращается к ASGI-приложению FastAPI

        • (uvicorn, обращающийся напрямую к вашему ASGI-приложению, тоже будет работать)

Отдельный MCP-сервер

Предоставьте отдельный MCP-сервер поддомена.

Выполните следующие шаги в mcp_server/app.py:

  • Импортируйте ваше FastMCP-приложение

    from mcp_server.servers.some import some_mcp
  • Создайте ASGI-приложение из вашего FastMCP-приложения

    (заново определять аргумент path="/mcp" не нужно)

    some_mcp_app = some_mcp.http_app()
  • Добавьте lifespan вашего FastMCP-приложения в единый lifespan, используемый 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
    )
  • Подмонтируйте ASGI-приложение вашего MCP-сервера к FastAPI-приложению по пути /some

    fastapi_app.mount("/some", some_mcp_app)
    
  • Найдите ваш отдельный MCP-сервер по адресу: BASE_URL/some/mcp

Related MCP server: Golf

Локальный запуск

  • Задайте переменные окружения в .env в соответствии с .env.template (не коммитьте секреты)

  • Установите необходимые python-пакеты из requirements.txt

  • Запустите FastMCP-приложение через метод run

    python -m mcp_server.app

    или запустите FastAPI-приложение с MCP-серверами, смонтированными в него, через 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