MCP 서버 처음 만들기
더치페이 금액을 계산하는 작은 서버를 만들어 배포하고, 내 AI에 연결합니다.
준비물: Python 3.10 이상, GensApps Deploy 계정(구글로 가입)
파일 만들기
새 폴더를 만들고 아래 세 파일을 저장합니다.
server.pyimport 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.txtmcp>=2.3,<3
Procfileweb: python server.py
내 컴퓨터에서 확인
터미널에서 서버를 실행합니다. Windows는 두 번째 줄을 .venv\Scripts\activate로 바꿔 입력해 주세요.
python -m venv .venv source .venv/bin/activate pip install -r requirements.txt python server.py
터미널을 하나 더 열어 가상환경을 켜고 check.py를 실행합니다. 아래처럼 나오면 정상입니다.
check.pyimport 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원
Deploy에 배포하기
코딩 AI에 GensApps Deploy를 연결하고 이 폴더에서 아래처럼 요청합니다.
이 폴더를 GensApps Deploy에 서버 앱으로 배포해 줘
배포가 끝나면 받은 주소 끝에 /mcp를 붙입니다. 예: https://이름.gensapps.app/mcp
무료 계정은 서버 앱 1개, 사이트 3개까지 사용할 수 있습니다.
한동안 호출이 없으면 앱이 잠들고, 다음 호출 때 깨어나므로 첫 응답이 몇 초 걸릴 수 있습니다.
스토어에 등록하고 연결하기
주소를 등록하면 서버 상세 화면에서 AI별 연결 방법을 확인할 수 있습니다.
기본은 전체 공개입니다. 자동 점검을 통과하면 서버 목록에 표시되고, 나만 쓰려면 비공개를 선택합니다.