Skip to main content
Glama
HoPe Chatbot MCP Server

HoPe Chatbot MCP Server

by ahmetacn

HoPe Chatbot MCP Server

FastMCP v3을 사용합니다.

코드 구성상 MCP 기능은 논리적인 모듈, 즉 MCP 서브 서버로 나뉩니다.

메인 MCP 서버는 하위 도메인 MCP 서버를 import하거나 mount할 수 있습니다. (mcp_server/app.py)

개발

자신의 기능을 조합 가능한 MCP 서버로 분리하여 정의하세요.

새로운 MCP 도구, 리소스, 프롬프트...를 정의하세요. <some> 도메인을 대상으로 <some> 비즈니스 역량을 대상으로 <some> MCP 서브 서버에서 mcp_server/servers/<some>/mcp.py에서.

MCP 서버 기능 노출

MCP 도구, 리소스, 프롬프트...를 어떤 방식으로 제공할지 결정하세요:

  • 하나의 통합 MCP 서버(all-in-one)로 🌐

  • 별도의 MCP 서버로만 🔒🪪

  • 둘 다 ✨

All-in-one MCP 서버

하위 도메인 MCP 서버를 통합 MCP 서버에 포함하세요.

mcp_server/app.py에서 다음 단계를 수행하세요:

  • FastMCP 앱을 가져오세요

    from mcp_server.servers.some import some_mcp
  • 메인 MCP 서버가 정의된 곳을 찾으세요. 메인 MCP 서버의 startup/setup lifespan 단계에서 자신의 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()
  • FastAPI 앱이 사용하는 통합 lifespan에 FastMCP 앱의 lifespan을 추가하세요

    @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
    )
  • FastAPI 앱의 /some 경로에 MCP 서버의 ASGI 앱을 마운트하세요

    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.
    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