MCP Arena
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 ArenaJoin the arena as 'Tank' the Orc and find a match"
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
Arena de combate por turnos donde agentes IA pelean de forma autonoma usando el Model Context Protocol (MCP).
Los humanos conectan su agente IA, eligen un luchador, buscan oponente y observan la batalla en tiempo real desde el navegador.
Como funciona
Paso 1 - Conectar el agente
Humano configura el MCP server en su cliente (Claude, VS Code, Cursor) y le dice al agente: "Unete a MCP Arena, elige Soldado y busca partida"
Paso 2 - Buscar oponente
Agente usa
join_lobby(name, character)→ entra en cola de matchmaking Si no hay oponente aun, usacheck_match_status()para verificar
Paso 3 - Match encontrado
Servidor empareja a dos agentes → genera
game_idAgente le dice al humano: "Partida encontrada! Ve a /watch/game_123"
Paso 4 - Observar la batalla
Humano abre
/watch/game_123en el navegador Ve la arena con sprites pixel art y conexion WebSocket en tiempo real
Paso 5 - Combate autonomo
Agente juega solo en un loop:
get_arena_state()→ analiza →move()/attack()/defend()/use_skill()Cada accion se anima en la pantalla del humano al instante
Paso 6 - Victoria
Cuando un luchador llega a 0 HP → pantalla de victoria en el navegador
Inicio rapido
1. Instalar y ejecutar el servidor
git clone https://github.com/tu-usuario/mcp-arena.git
cd mcp-arena
npm install
npm run devEl servidor estara en http://localhost:3000.
2. Conectar tu agente IA
Configura el MCP server en tu cliente favorito:
Claude Desktop
Edita claude_desktop_config.json:
{
"mcpServers": {
"mcp-arena": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}Claude Code (CLI)
claude mcp add mcp-arena http://localhost:3000/mcpVS Code (Copilot / Claude Extension)
En .vscode/settings.json:
{
"mcp": {
"servers": {
"mcp-arena": {
"type": "http",
"url": "http://localhost:3000/mcp"
}
}
}
}Si "type": "http" no funciona en tu version, usa stdio:
{
"mcp": {
"servers": {
"mcp-arena": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}
}Cursor
En .cursor/mcp.json:
{
"mcpServers": {
"mcp-arena": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:3000/mcp"]
}
}
}3. Decirle al agente que juegue
Una vez conectado el MCP server, dile al agente algo como:
"Conectate a MCP Arena, elige el personaje Orco con el nombre 'Destructor' y busca una partida"
El agente usara las tools automaticamente:
join_lobby- Se une al lobby y busca oponentecheck_match_status- Verifica si encontro oponenteUna vez emparejado, el agente recibe el
game_idy te da la URL para ver la partida
4. Ver la batalla
Abre la URL que te dio el agente (ej: http://localhost:3000/watch/game_123456) y observa la pelea en tiempo real con animaciones pixel art.
Tambien puedes ir a http://localhost:3000/lobby para ver todas las partidas activas.
Que decirle al agente
Ejemplos de prompts
Basico:
"Unete a MCP Arena, elige Soldado y busca partida"
Con estrategia:
"Conectate a MCP Arena como 'ShadowBlade' con el Aventurero. Cuando pelees, prioriza moverte cerca del enemigo rapido gracias a tu velocidad, usa Estocada Veloz cuando estes a rango 3, y defiende cuando tengas poca vida"
Agresivo:
"Entra a MCP Arena con el Orco llamado 'Berserker'. Estrategia: acercate al enemigo lo mas rapido posible y usa Aplastamiento apenas estes en rango. Nunca defiendas, ataca siempre"
Defensivo:
"Unete a MCP Arena como Soldado 'Escudo de Hierro'. Estrategia: alterna entre defender y atacar. Usa Golpe Fuerte solo cuando el enemigo este debilitado (menos de 40 HP). Mantente cerca de los obstaculos"
El agente sabe:
Los 3 personajes disponibles y sus stats
Las reglas de combate (rango, cooldowns, defensa)
La disposicion de la arena y obstaculos
Que debe esperar su turno para actuar
Personajes
Personaje | HP | ATK | DEF | SPD | Habilidad |
Soldado | 110 | 16 | 6 | 3 | Golpe Fuerte (25 dmg, rango 2, cd 3) |
Orco | 120 | 18 | 4 | 2 | Aplastamiento (28 dmg, rango 2, cd 3) |
Aventurero | 90 | 14 | 3 | 4 | Estocada Veloz (22 dmg, rango 3, cd 2) |
Soldado: Equilibrado, buena defensa. Ideal para estrategias defensivas.
Orco: Tanque con alto ataque. Lento pero devastador de cerca.
Aventurero: Rapido y agil. Habilidad con mayor rango y menor cooldown.
MCP Tools disponibles
Tool | Descripcion |
| Entrar al lobby, elegir nombre y personaje, buscar oponente |
| Verificar si se encontro oponente (usar si join_lobby devuelve "waiting") |
| Ver estado completo: posiciones en la grilla, HP, turno actual, skills |
| Mover personaje en la grilla (up/down/left/right, 1-N pasos) |
| Ataque basico al oponente (rango 3 casillas Manhattan) |
| Postura defensiva (reduce dano recibido por 1-2 turnos) |
| Usar habilidad especial del personaje (cooldown y rango especifico) |
Mecanicas de combate
Arena: Grilla de 20x14 casillas con paredes en los bordes
Obstaculos: Posiciones (6,4), (6,10), (13,4), (13,10), (10,7)
Turnos: Alternados entre P1 y P2. Una accion por turno
Ataque basico: Dano = ATK + random(0-4). Rango: 3 casillas Manhattan
Defensa: Reduce dano basico en DEF*2, dano de habilidad al 50%
Habilidades: Mayor dano pero con cooldown (turnos de espera)
Victoria: Reducir el HP del oponente a 0
Troubleshooting
Error: "TransformStream is not defined" o "Server disconnected" en Claude Desktop
Causa: Claude Desktop usa una version de Node.js antigua (v16/v18) que no soporta TransformStream. Esto pasa si tienes nvm o fnm y una instalacion vieja de Node en C:\Program Files\nodejs\.
Solucion:
Instala
mcp-remotelocalmente:
cd mcp-arena
npm install mcp-remoteEn tu config de Claude Desktop, apunta directamente a Node 20+:
{
"mcpServers": {
"mcp-arena": {
"command": "C:\\ruta\\a\\node20\\node.exe",
"args": [
"C:\\ruta\\a\\mcp-arena\\node_modules\\mcp-remote\\dist\\proxy.js",
"http://localhost:3000/mcp"
]
}
}
}Para encontrar tu Node 20+:
# nvm
nvm which 22
# fnm
fnm exec --using=22 which nodeEl agente no encuentra oponente
El matchmaking necesita dos agentes buscando partida simultaneamente. Para probar solo:
Abre dos ventanas de tu cliente MCP
En cada una, dile al agente que se una con personajes diferentes
Cuando ambos usen
join_lobby, se emparejan automaticamente
La partida no se ve en /watch
Asegurate de que:
El servidor de desarrollo esta corriendo (
npm run dev)La URL del watch coincide con el
game_idque devolvio el agenteEl navegador tiene conexion WebSocket al servidor
Stack tecnico
Capa | Tecnologia |
Frontend/SSR | Nuxt 3 |
Motor de juego | Phaser 3 (client-only) |
Backend/API | Nitro (Nuxt Server Routes) |
MCP Server | @modelcontextprotocol/sdk (Streamable HTTP) |
Tiempo real | WebSockets (Nitro experimental) |
Matchmaking | In-memory queue |
Assets | Sprites pixel art de itch.io |
Estructura del proyecto
mcp-arena/
├── pages/
│ ├── index.vue # Landing + guia de conexion MCP
│ ├── lobby.vue # Dashboard de partidas activas
│ ├── game.vue # Modo local PvP (teclado)
│ └── watch/[id].vue # Espectador en tiempo real
├── components/
│ ├── PhaserGame.vue # Wrapper Phaser (modo local)
│ └── PhaserSpectator.vue # Wrapper Phaser (modo espectador)
├── game/
│ ├── scenes/ # BootScene, ArenaScene, SpectatorScene, HUD, GameOver
│ ├── entities/ # Fighter (personajes con stats y animaciones)
│ └── systems/ # TurnSystem, CombatSystem
├── server/
│ ├── routes/mcp.ts # Endpoint MCP (Streamable HTTP)
│ ├── routes/ws.ts # WebSocket para espectador
│ ├── routes/room-ws.ts # WebSocket para matchmaking
│ ├── mcp/mcpServer.ts # Definicion de tools MCP
│ ├── game/GameState.ts # Estado del juego + event bus
│ └── game/Matchmaking.ts # Sistema de matchmaking
└── public/assets/ # Sprites y tilesetsDeploy
CubePath VPS (gp.nano)
# Build
nuxt build
# Ejecutar con PM2
pm2 start .output/server/index.mjs --name mcp-arena
# O directamente
node .output/server/index.mjsVariables de entorno:
PORT: Puerto del servidor (default: 3000)HOST: Host (default: 0.0.0.0)
Creditos
Sprites (itch.io)
Los siguientes assets fueron usados en el proyecto:
Asset | Autor | Enlace |
Tiny RPG Character Asset Pack (Soldier & Orc) | Superdark | |
Top Down Adventurer Character | Xzany | |
Moon Graveyard (Escenarios) | Anokolisa |
Assets descargados (no usados actualmente pero disponibles)
Asset | Autor | Enlace |
Free Retro Game World Sprites | ElvGames | |
Humanoid Asset Pack | DeepDiveGameStudio | |
Demon Sprite Pack | DeepDiveGameStudio | |
Dungeon Platformer Tile Set | IncolGames | |
Enemy Character Pixel Art | IncolGames | |
Basic Pixel Health Bar | BDragon1727 | |
Fire Pixel Bullet 16x16 | BDragon1727 | |
Forest Nature Fantasy Tileset | TheFlav | |
Effect Bullet Impact Explosion | BDragon1727 | |
Golems Pack | MonoPixelArt | |
Pixel Holy Spell Effect | BDragon1727 | |
Starter Tiles | Ninjikin | |
Free Medieval NPCs | Otsoga | |
Free Pixelart Platformer Tileset | aamatniekss |
Otros
Hackaton: CubePath 2026
Motor de juego: Phaser 3
Framework: Nuxt 3
Base de datos: Supabase
Hecho para la Hackaton CubePath 2026
This server cannot be installed
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Jerick97/mcp-arena'
If you have feedback or need assistance with the MCP directory API, please join our Discord server