Enables AI agents to manage a robot battle platform by designing robot scripts, validating tactics, and uploading assets to Firebase Storage and Firestore.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-arenaDesign an aggressive robot script and run a preview duel before uploading."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-arena (prototype)
Firebase Hosting + Functions + Firestore + Storage 기반의 MCP 연동 로봇 배틀 프로토타입입니다.
핵심 아이디어
사람은 에이전트에게 이렇게 말합니다.
"mcp arena에 ai 로봇 만들어서 업로드해줘"
그러면 에이전트가 MCP 툴 체인을 사용해 다음 순서로 진행합니다.
상담 플로우 확인 (
get_build_flow)전략/스크립트 초안 생성 (
coach_robot_design)사용자에게 부족한 정보 질문 (playStyle/risk/objective)
스크립트 검증 (
validate_robot_script)프리뷰 대전 (
preview_robot_duel)사용자 승인 후 최종 업로드 (
upload_robot_script)
즉, 단순 업로드가 아니라 전술 상담 -> 검증 -> 시뮬레이션 -> 업로드를 MCP 안에서 지원합니다.
구성
모노레포(
yarn workspaces)apps/web: Next.js 프론트엔드(로봇 업로드, 배틀 실행, 캔버스 리플레이)apps/functions: Firebase Functions API + MCP(JSON-RPC)apps/mcp-bridge: stdio MCP 브리지(에이전트 연결용)Firestore: 로봇/배틀 메타데이터 저장
Storage: 로봇 원본 스크립트 저장
디렉터리
parser.js DSL
한 줄에 한 명령:
MOVE <1-3>: 전진ROTATE LEFT|RIGHT|NONE(또는ROTATE 0)SHOOT: 전방 5칸 시야 + 직선 사선이 맞으면 타격(원샷킬)WAITIF_SEEN <MOVE|ROTATE|SHOOT|WAIT ...>: 적이 보일 때만 실행IF_NOT_SEEN <MOVE|ROTATE|SHOOT|WAIT ...>: 적이 안 보일 때만 실행#주석
예시:
자동 시야 규칙
매 턴 자동으로 시야 정보가 갱신됩니다 (별도
SCAN불필요)시야 범위: 전방 반원, 반경 5칸
시야 데이터:
enemyVisible,enemy.dx,enemy.dy,enemy.distance,enemy.bearing배틀 로그(
timeline)에도 각 액션의perceptionBefore/perceptionAfter가 포함됩니다.
API
기본 경로: /api
GET /api/healthGET /api/robotsPOST /api/robotsPOST /api/battlesGET /api/battles/:battleIdPOST /api/mcp(JSON-RPC)
배틀 결과에는 리플레이용 데이터가 포함됩니다.
initialStatetimeline(액션별before/after, 탄환 궤적)turnsfinalState
MCP 툴 목록 (상담형)
get_build_flow에이전트가 사람과 어떤 순서로 상담할지 안내
coach_robot_design사람의 의도/성향을 받아 로봇 초안(규칙+스크립트) 생성
부족 정보가 있으면
followUpQuestions반환
validate_robot_scriptDSL 문법 + 전술 품질 체크(경고/추천)
preview_robot_duel후보 스크립트를 프리뷰 배틀로 점검
upload_robot_script최종 로봇 업로드
userApprovalConfirmed=true가 아니면 업로드가 차단됨(최종 사용자 승인 강제)
로컬 실행 (Emulator)
현재 기본 로컬 ID:
.firebaserc->mcp-arena-local
웹 API:
apps/web/.env.localNEXT_PUBLIC_API_BASE_URL=http://127.0.0.1:5001/mcp-arena-local/us-central1/api
실행:
별도 터미널:
브라우저 http://localhost:3000:
로봇 2개 이상 업로드
배틀 실행
Replay 재생/프레임 이동
Agent 연결용 MCP 브리지 (stdio)
에이전트는 stdio MCP 서버를 사용하므로 브리지를 연결합니다.
기본 포워딩 대상:
http://127.0.0.1:5001/mcp-arena-local/us-central1/api/mcp
원격 배포 API로 전환:
Claude / Codex 등록 예시
Claude Code
Codex CLI
에이전트에게 줄 사용자 프롬프트 예시
이렇게 요청하면 에이전트는 보통 아래 방식으로 진행합니다.
get_build_flow확인coach_robot_design으로 초안 생성사용자에게 follow-up 질문
validate_robot_scriptpreview_robot_duel사용자 승인 후
upload_robot_script
배포 가이드
1) 실제 Firebase 프로젝트로 전환
.firebaserc의default를 실제 프로젝트 ID로 변경apps/web/.env.local의 API URL을 배포 URL로 변경
예시:
2) 웹 빌드 + 배포
배포 후 MCP 브리지도 같은 URL로 연결해 사용합니다.
라이선스
이 프로젝트는 PolyForm Noncommercial 1.0.0 라이선스를 따릅니다.
코드 다운로드/실행/수정/비상업적 배포: 허용
상업적 이용: 금지
자세한 내용은 루트 LICENSE 파일을 확인하세요.
현재 규칙
정사각형 아레나
로봇 2대
시작 위치
(0,0)vs(N-1,N-1)명령 루프 실행
전방 5칸 자동 시야 갱신
조건 분기(
IF_SEEN,IF_NOT_SEEN) 지원SHOOT적중 시 즉시 사망승자 없으면
draw
주의
현재 firestore.rules, storage.rules는 프로토타입용 전체 허용입니다. 실제 서비스 전에는 인증/권한 규칙을 반드시 강화해야 합니다.