--- title: Prime Rush — a battle royale as an MCP environment emoji: 🎯 colorFrom: blue colorTo: yellow sdk: docker app_port: 7860 pinned: false license: apache-2.0 short_description: A live battle royale as six MCP tools tags: - agents - mcp - benchmark - games - tool-use --- # Prime Rush Environment > This Space holds the MCP adapter, the task pack and the reference grader, > and runs an interactive demo. The benchmark — methodology, per-episode > results and trajectories — is in the > [dataset](https://huggingface.co/datasets/datagame/prime-rush-results). > The demo drives a stand-in game server so it needs no infrastructure. For > access to the real environment, get in touch. A live battle-royale match from a shipped commercial game, exposed to an LLM agent as six MCP tools. A safe circle shrinks on a timer and moves; the agent is given its own coordinates and the circle's, and has to work out where to go. Built for the [Archipelago](https://github.com/Mercor-Intelligence/archipelago) harness, following the conventions of the MCP servers already in that repo. ## Highlights - **Deterministic stepping**: the match advances only inside a tool call, by the amount that call asks for. The same seed and the same calls reproduce the same match, and a slow model is not penalised. - **No derived guidance**: `get_situation` returns raw coordinates. There is no `move_to(x, z)` and no bearing to the circle, because computing it is the task. - **Snapshot grading**: every call that advances the match rewrites `outcome.json` from game state, so the score is read from a file rather than from the transcript. - **Harness compatibility**: ships as an Archipelago task pack plus a reference eval definition. ## Tools | Tool | Advances the match | |---|---| | `get_situation` | no | | `turn_to_bearing` | yes, by the time the turn takes | | `move` | yes, by the seconds requested | | `hold_position` | yes | | `shoot` | yes | | `finish` | no | ## Results Current scores are on the **Leaderboard** tab, read from the results dataset. The methodology, confidence intervals and per-episode data are in the [dataset card](https://huggingface.co/datasets/datagame/prime-rush-results). ## Running it Neither test suite needs a game build; `tests/fake_game.py` stands in for the server and reproduces its response characteristics. ```bash pip install fastmcp pydantic python tests/test_end_to_end.py # 29 checks python tests/test_grading_eval.py # 9 checks ``` Against a real match: ```bash export INDUS_BRIDGE_HOST=... INDUS_BRIDGE_PORT=... python -m indus_mcp.main # stdio, the transport Archipelago uses ``` Under Archipelago, `POST /apps` with `tasks/zone_survival/mcp_config.json`. | Variable | Meaning | Default | |---|---|---| | `INDUS_BRIDGE_HOST` / `INDUS_BRIDGE_PORT` | the running match to attach to | `127.0.0.1:7850` | | `INDUS_TASK` | task name | `zone_survival` | | `INDUS_BUDGET_SECONDS` | game time the agent is given | `100` | | `INDUS_FF_RADIUS` | hand over once the circle is this small | `350` | | `INDUS_OUTCOME_PATH` | where the grader reads the result | `/filesystem/outcome.json` | | `MCP_TRANSPORT` | `stdio` or `http` | `stdio` | > `INDUS_FF_RADIUS` must match across every row of a comparison. Before the > circle has closed it covers most of the map and any agent is inside it, so > rows that handed over at different radii did not start in comparable > situations. ## Limitations - `shoot` is horizontal only. Aim pitch is not in the observation, so an agent cannot verify the effect of a `pitch` argument. - No line of sight: nearby enemies are reported through walls. - One task, one map. - One agent per match. The game build supports multiple seats; the harness does not use them yet. --- SuperGaming. Apache-2.0.