flutter3d_sim_mcp

An MCP server, part of flutter3d: a shooter level an agent can play blind (ai-00 in doc/tooling-plan.md). The agent can open a level, step it forward with input, read positions and health back in words, capture a headless frame with no GPU, and hand over the run it made as a .f3drun that any other tool in this repository can open.

A claim about the run comes with its proof. expect steps until a predicate over the reading holds (near a point, inside a box, alive, health) and writes the .f3drun that got there. verify replays such a file in a world of its own and names the first checkpoint where it stops matching, if there is one. Claims about what touched what are not possible, because game events are not saved in a run.

Unlike flutter3d_editor_mcp/flutter3d_model_mcp, this server is genre-aware on purpose. It knows what a monster and a weapon are, because the question it answers ("what does the room look like from here, and is the player still alive") has no genre-agnostic version.

It speaks MCP over a socket rather than literal stdio. flutter test itself rewrites everything a test writes to stdout with its own prefix, and a protocol tied to an exact line format does not survive that.

Libraries

flutter3d_sim_mcp
Two servers over one level and one renderer.