방탈출 MCP
카카오 Play MCP를 재미로 따라 만들어 본 텍스트 기반 방탈출 MCP입니다. Render 무료 플랜에 배포해 실험했습니다.
사실 재밌는 생각이 나서 맨땅에 해딩으로 만들어 본 프로젝트입니다! json 연동도 잘 되고 다 되는데! 무료 버전이라 그런 건지, render로 하면 안 되는 건지 play mcp에서 MCP endpoint 인식을 잘 못 하더라구요...
아쉬운 마음에 그냥 정리!
MCP 개요
- MCP 이름: 퇴마 방탈출 MCP
- MCP 설명: 한국형 퇴마 세계관의 간단한 텍스트 기반 방탈출 시나리오 엔진
- 주요 액션 예시: '주위를 살펴본다', '부적을 조사한다', '발자국을 옮긴다'
엔드포인트 (배포 예시: Render)
- 베이스 URL:
https://mcp-server-cokt.onrender.com GET/POST /tools/getCurrentStatus현재 장면과 가능 액션 조회POST /tools/processAction액션/선택지 처리GET/POST /tools/getPlayerStatus플레이어 상태 조회
로컬 실행
python -m venv .venv
. .venv/Scripts/activate # Windows
pip install -r requirements.txt
python mcp_server.py # http://localhost:5000
Render 배포 메모
- Build:
pip install -r requirements.txt - Start:
python mcp_server.py - PORT: Render가
PORT환경변수를 전달하므로 코드에서os.environ.get("PORT", 5000)을 사용 - 무료 플랜 특성: 15분 유휴 시 슬립 → 첫 호출 5~10초 지연 가능
Play MCP 연동 시 주의사항
- MCP Endpoint에는 베이스 도메인만 입력:
https://mcp-server-cokt.onrender.com - Play MCP가 상태 조회를 POST로 호출하기도 해서
getCurrentStatus/getPlayerStatus모두 GET/POST 허용 - 초기 호출이 타임아웃되면 몇 초 기다렸다가 재시도 (슬립 해제 시간)
간단한 동작 확인 (curl)
# 상태 조회
curl -i https://mcp-server-cokt.onrender.com/tools/getCurrentStatus
# 액션 처리 예시
curl -i -X POST -H "Content-Type: application/json" \
-d "{\"action\":\"주위를 살펴본다\",\"choice\":\"연다\"}" \
https://mcp-server-cokt.onrender.com/tools/processAction
# 플레이어 상태
curl -i https://mcp-server-cokt.onrender.com/tools/getPlayerStatus
파일 설명
mcp_server.pyFlask 기반 MCP 서버mcp.jsonPlay MCP용 매니페스트 및 시나리오 정의ProcfileRender 실행 명령requirements.txt의존성 목록MCP 게임 만들기.txt기본적인 스토리 정리, 행동 정리 (프로토)
남은 이슈
- Play MCP에서 간헐적으로 엔드포인트 인식 실패 → 무료 플랜 슬립 또는 호출 메서드 차이로 추정. 재시도 시 대부분 성공.
