Give your AI assistant eyes and hands in the Godot editor: scene editing, input injection, deterministic playtesting, and live game state for agents
# Add to your Claude Code skills
git clone https://github.com/satelliteoflove/godot-mcpLast scanned: 6/12/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-06-12T08:26:33.382Z",
"npmAuditRan": true,
"pipAuditRan": true,
"promptInjectionRan": true
}godot-mcp is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by satelliteoflove. Give your AI assistant eyes and hands in the Godot editor: scene editing, input injection, deterministic playtesting, and live game state for agents. It has 122 GitHub stars.
Yes. godot-mcp passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/satelliteoflove/godot-mcp" and add it to your Claude Code skills directory (see the Installation section above).
godot-mcp is primarily written in GDScript. It is open-source under satelliteoflove on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh godot-mcp against similar tools.
No comments yet. Be the first to share your thoughts!
Give your AI assistant eyes and hands in the Godot editor — and a running game it can actually playtest.
There are a few Godot MCP servers out there, and most can open a scene and poke at nodes. This one is built around a harder problem: letting an agent verify its own work. Run the game, drive it like a player, observe what actually happened, and prove the change did what it claimed — without you ferrying screenshots and error logs back and forth.
The pieces that make that possible, and that you won't find elsewhere:
Here's what that looks like when an agent tests a boss fight:
godot_editor_edit run frozen=true # boot with game time frozen at frame 0
godot_exec GameState.wave = 3 # set up the scenario worth testing
godot_game_time step_until "tree.get_nodes_in_group('boss').size() >= 1"
godot_runtime_state digest # exact positions and state — no pixels, no guessing
godot_game_time step 500ms + dodge input # play the moment that matters
godot_editor_read screenshot_game # and a screenshot when it's actually worth the tokens
Less copy-paste, more creating.
Add godot-mcp to your MCP client. See the Installation Guide for config examples (Claude Desktop, Claude Code, VSCode/Copilot, and more). The short version:
{
"mcpServers": {
"godot-mcp": {
"command": "npx",
"args": ["-y", "@satelliteoflove/godot-mcp"]
}
}
}
npx @satelliteoflove/godot-mcp --install-addon /path/to/your/godot/project
Enable it in Godot: Project > Project Settings > Plugins > Godot MCP
Open your Godot project, restart your AI assistant, and start building. If anything refuses to connect, the Troubleshooting Guide has you covered.
21 tools, 86 actions. Full API docs in the Tools Reference.
| Tool | What it does |
|---|---|
godot_scene |
Open and save scenes (create new scenes by writing the .tscn directly, then open) |
godot_node_read / godot_node_edit |
Inspect effective properties, the full scene tree (including instanced sub-scenes), and find nodes; update properties and reparent |
godot_editor_read / godot_editor_edit |
Editor state, selection, screenshots, editor error log; run/stop/restart and 2D viewport control |
godot_project |
Project info, settings, addon version skew, and stale-settings detection |
godot_animation_read / godot_animation_edit |
Query animations down to keyframes; author tracks and keyframes with instant editor preview |
godot_tilemap_read / godot_tilemap_edit |
Read and edit TileMapLayer cells (base64-encoded in .tscn — the bridge is the only way) |
godot_gridmap_read / godot_gridmap_edit |
Read and edit GridMap cells, same story |
godot_resource |
Inspect resources with type-aware output: SpriteFrames, TileSet, Materials, Textures |
godot_scene3d |
Engine-computed 3D transforms, bounding boxes, and visibility for spatial reasoning |
godot_docs |
Fetch Godot documentation as clean markdown, version-matched to your editor |
godot_input |
Inject input into the running game: actions, joypad, raw keys, mouse-look, text |
godot_profiler |
Metric snapshots and per-frame time series with spike detection |
godot_runtime_state |
Live game state as JSON: one-shot digests, watch windows, signal timelines |
godot_game_time |
Freeze, step, and step-until on the game clock — deterministic observation |
godot_exec |
Run GDScript inside the running game for test scenario setup |
godot_validate_meshes |
Detect silently corrupt procedural mesh data that masquerades as lighting bugs |
A note on shape: tools split along the read/write boundary, so every godot_*_read tool (and the other read-only tools) can be safely auto-allowed in your client's permission settings while writes stay gated. Related operations still live as actions inside one tool, so your agent's context isn't flooded with definitions it won't use. Anything an agent can do by editing project files directly — creating scenes and nodes, attaching scripts, connecting signals — is deliberately not duplicated as a tool; the bridge covers what files can't: editor state, verification, binary-encoded cell data, and the running game. A --read-only flag serves the look-but-don't-touch use case.
A feel for what an agent can do with this, in plain prompts:
For richer runtime observation, add key nodes to the mcp_watch group or give them a _mcp_state() method — see the Runtime State Guide.
┌─────────────────┐ stdio ┌─────────────────┐ WebSocket ┌──────────────────┐ debugger ┌──────────────┐
│ MCP client │ ◄────────► │ godot-mcp │ ◄──────────► │ Bridge addon │ ◄─────────► │ Running game │
│ (Claude, etc.) │ │ server (Node) │ :6550 │ (Godot editor) │ wire │ (autoload) │
└─────────────────┘ └─────────────────┘ └──────────────────┘ └──────────────┘
The server talks to an editor addon over a local WebSocket; the addon reaches into the running game over Godot's own debugger protocol, so the game process needs no extra ports or setup. The addon binds to 127.0.0.1 by default. WSL2 is fully supported (auto-detection, host IP discovery, configurable bind modes) — see the Installation Guide.
Curious about connection lifecycles, the single-client policy, or how frozen-time stepping works under the hood? The Architecture Guide goes deep.
minimal-godot-mcp by @ryanmazzolini covers exactly what this server doesn't: LSP diagnostics for fast static GDScript checking, and the running game's console output over DAP. This server covers everything that needs an editor bridge. No overlap, no conflict — run both, and your agent gets static analysis and the game console alongside full editor and runtime control.
One caveat: a Godot editor serves a single godot-mcp client at a time. Extra clients (a subagent inheriting your MCP config, say) wait their turn rather than hijacking your session — details in Troubleshooting.
mcp_watch and _mcp_state()cd server
npm install && npm run build
npm test # unit + schema-snapshot tests
npm run test:protocol #