MCP 서버 처음 만들기

더치페이 금액을 계산하는 작은 서버를 만들어 배포하고, 내 AI에 연결합니다.

준비물: Python 3.10 이상, GensApps Deploy 계정(구글로 가입)

  1. 파일 만들기

    새 폴더를 만들고 아래 세 파일을 저장합니다.

    server.py
    import os
    
    from mcp.server.mcpserver import MCPServer
    from mcp.types import ToolAnnotations
    
    mcp = MCPServer("split-bill")
    
    
    @mcp.tool(annotations=ToolAnnotations(readOnlyHint=True))
    def split_bill(total: int, people: int) -> str:
        """총금액을 인원수로 나눠 한 사람이 낼 금액을 알려 줍니다."""
        if people < 1:
            return "인원수는 1 이상이어야 합니다."
        share, rest = divmod(total, people)
        return f"한 사람당 {share:,}원, 남는 금액 {rest:,}원"
    
    
    if __name__ == "__main__":
        mcp.run(
            "streamable-http",
            host="0.0.0.0",
            port=int(os.environ.get("PORT", "8000")),
            stateless_http=True,
            json_response=True,
        )
    
    requirements.txt
    mcp>=2.3,<3
    
    Procfile
    web: python server.py
    
  2. 내 컴퓨터에서 확인

    터미널에서 서버를 실행합니다. Windows는 두 번째 줄을 .venv\Scripts\activate로 바꿔 입력해 주세요.

    python -m venv .venv
    source .venv/bin/activate
    pip install -r requirements.txt
    python server.py

    터미널을 하나 더 열어 가상환경을 켜고 check.py를 실행합니다. 아래처럼 나오면 정상입니다.

    check.py
    import asyncio
    
    from mcp import Client
    
    
    async def main():
        async with Client("http://127.0.0.1:8000/mcp") as client:
            tools = await client.list_tools()
            print([tool.name for tool in tools.tools])
            result = await client.call_tool("split_bill", {"total": 85000, "people": 4})
            print(result.content[0].text)
    
    
    asyncio.run(main())
    
    python check.py
    ['split_bill']
    한 사람당 21,250원, 남는 금액 0원
  3. Deploy에 배포하기

    코딩 AI에 GensApps Deploy를 연결하고 이 폴더에서 아래처럼 요청합니다.

    이 폴더를 GensApps Deploy에 서버 앱으로 배포해 줘

    Deploy 연결 방법 보기

    배포가 끝나면 받은 주소 끝에 /mcp를 붙입니다. 예: https://이름.gensapps.app/mcp

    무료 계정은 서버 앱 1개, 사이트 3개까지 사용할 수 있습니다.

    한동안 호출이 없으면 앱이 잠들고, 다음 호출 때 깨어나므로 첫 응답이 몇 초 걸릴 수 있습니다.

  4. 스토어에 등록하고 연결하기

    주소를 등록하면 서버 상세 화면에서 AI별 연결 방법을 확인할 수 있습니다.

    서버 등록하기

    기본은 전체 공개입니다. 자동 점검을 통과하면 서버 목록에 표시되고, 나만 쓰려면 비공개를 선택합니다.