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> ビジネス機能用 <some> MCP サブサーバー内 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 サーバーの機能をメイン 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 サーバーは、BASE_URL/mcp で MCP サーバーの機能を提供します。

    これは、メインの結合 MCP サーバーがすべてのケースで実行される場合に当てはまるはずです:

    • mcp_server/app.py をモジュールとして実行

      • FastMCP.run メソッド

    • mcp_server/app.py を uvicorn で実行

      • FastMCP.http_app

        • MCP サーバーの ASGI アプリを FastAPI アプリにマウントし、uvicorn が FastAPI の ASGI アプリにアクセス

        • (uvicorn があなたの ASGI に直接アクセスしても動作します)

単独の MCP サーバー

サブドメインの MCP サーバーを単独で公開します。

mcp_server/app.py で以下の手順を実行してください:

  • FastMCP アプリをインポートします

    from mcp_server.servers.some import some_mcp
  • FastMCP アプリから ASGI アプリを作成します

    (path="/mcp" kwarg を再定義する必要はありません)

    some_mcp_app = some_mcp.http_app()
  • FastMCP アプリのライフスパンを、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
    )
  • MCP サーバーの ASGI アプリを FastAPI アプリの /some パスにマウントします

    fastapi_app.mount("/some", some_mcp_app)
    
  • 単独の MCP サーバーは次の場所にあります: BASE_URL/some/mcp

Related MCP server: Golf

ローカルでの実行

  • .env.template に従って .env に環境変数を定義します (シークレットをコミットしないこと)

  • requirements.txt から必要な Python パッケージをインストールします

  • run メソッドで FastMCP アプリを起動します

    python -m mcp_server.app

    または、gunicorn、uvicorn などを使用して、MCP サーバーをマウントした FastAPI アプリを実行します...

    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