Theatre gives AI agents spatial awareness of running Godot games and the ability to build scenes, resources, and animations — all through the Model Context Protocol.
AI coding agents can read your source files, set breakpoints, inspect variables — but they cannot see your game. When an enemy clips through a wall, when a patrol path overshoots, when physics bodies tunnel through geometry — your agent has no way to observe these problems.
It's like debugging a web app without being able to open the browser.
Observe the running game. Spatial snapshots, real-time deltas, watches, recordings. Your AI sees what the player sees — as structured data.
Build and modify scenes, resources, tilemaps, and animations through Godot's own API. No hand-editing .tscn files.
┌─────────────────────────────────────────────────────┐
│ AI Agent │
│ (Claude Code, Cursor, etc.) │
└──────┬──────────────────────┬───────────────────────┘
│ │
Spectator (MCP) Director (MCP)
observe the game build the game
│ │
┌────▼────────┐ ┌──────▼──────┐
│ spectator │ │ director │
│ -server │ │ server │
└────┬────────┘ └──────┬──────┘
│ TCP :9077 │ TCP :6550/:6551
┌────▼────────┐ ┌──────▼──────┐
│ Godot │ │ Godot │
│ GDExtension │ │ GDScript │
│ (running) │ │ (editor) │
└─────────────┘ └─────────────┘Theatre connects your AI agent to your Godot game through the Model Context Protocol (MCP). Spectator observes the running game via a GDExtension addon. Director modifies scenes through the editor or headless Godot. Both communicate over TCP, exposing structured tools your agent already knows how to use.
The killer workflow: human plays, AI analyzes.
You press F9 to mark the bug moment (use the dock's Record button to start), and the agent scrubs through the spatial timeline to find exactly what went wrong — no screenshots, no narration, no guessing from code.
Fast-moving objects pass through walls. The code looks right but the collision just... doesn't happen.
See how to debug this →NPCs get stuck, take bizarre routes, or refuse to move. The navmesh looks fine in the editor.
See how to debug this →Two objects should collide but don't. Or they collide when they shouldn't. Layer/mask bits are a maze.
See how to debug this →The attack animation plays but the hitbox doesn't activate at the right frame. Timing is off.
See how to debug this →# Clone and build
git clone https://github.com/nklisch/theatre
cd theatre
cargo build --workspace --release
# Deploy Spectator to your Godot project
theatre-deploy --release ~/your-godot-projectIn Godot: Project → Project Settings → Plugins → Spectator → Enable
For Director, copy addons/director/ into your project and enable similarly.
Add to your project's .mcp.json:
{
"mcpServers": {
"spectator": {
"type": "stdio",
"command": "/path/to/theatre/target/release/spectator-server"
},
"director": {
"type": "stdio",
"command": "/path/to/theatre/target/release/director",
"args": ["serve"]
}
}
}"Take a spatial snapshot of my scene"Your AI agent now sees your game world.