Release history
Erodenn/godot-mcp-runtime releases
MCP server for Godot 4.x with runtime control via injected UDP bridge: input simulation, screenshots, UI discovery, and live GDScript execution while the game is running.
All releases
19 shown
- `take_screenshot` now requires `responseMode` (default `preview`).
- `set_node_property` / `*_batch` merged into `set_node_properties`; input must be an array.
- `delete_node` renamed to `delete_nodes`; always expects an array.
Full changelog
Main v3 work: #12 @Erodenn.
Breaking changes
- Compact screenshots (#11, thanks @johanravn).
take_screenshotgetsresponseMode:preview(new default, 960×540 inline + full PNG saved),full,path_only. - Property tools batched.
set_node_property/*_batchcollapse intoset_node_properties; same forget_node_properties. Always-array input — one-element for one-off, many for batched. delete_node→delete_nodes. Always-array, batched delete.manage_uidsremoved.validatecovers it.
Changes
- Persistent TCP bridge replaces per-call UDP. Removes the silent ~65 KB payload ceiling on
run_script/get_ui_elements, sidesteps AV/EDR interference, and turns crashes into ms-level rejects instead of 10 s timeouts. stop_project/detach_projectsend ashutdownfirst so the port releases cleanly.- Vector/Color coercion.
{x,y}/{x,y,z}/{r,g,b,a}dicts now write as typed literals, not dictionaries. connect_signalserializes withCONNECT_PERSIST— connections survive save/reload.validatetreats stderr noise as failure; the GDScript flag alone was unreliable.load_spriteerrors explicitly on non-Texture2Dor unimported assets instead of silently no-op'ing.- Path resolution accepts
"",".","root", the scene root's name, androot/...prefixes. simulate_inputauto-derivesunicodefor ASCII soLineEdit/TextEditreceive typed text; pass explicitly for symbols/non-ASCII.- Bridge inject always overwrites the script — fixes stale-script issues across upgrades.
- Internal:
BridgeManager,autoload-ini,executeSceneOpextracted;project-tools.tssplit. 704 unit tests.
Full Changelog: https://github.com/Erodenn/godot-mcp-runtime/compare/v2.3.0...v3.0.0
- Update any hardcoded references from old umbrella tools to their new individual tool names (e.g., replace `manage_scene(operation: "create")` with `create_scene`).
- No manual migration required for clients that discover tools dynamically; only scripts or prompts using explicit tool names need adjustment.
- Removed `manage_scene`, `manage_node`, and `manage_project` umbrella tools; all operations are now individual tools with dedicated names.
- Added guidance block in MCP server handshake describing tool purposes, runtime bridge workflow, and autoload caveat.
- Promoted spatial parameters (`position`, `rotation`, `scale`) to top-level arguments on the `add_node` tool.
- Enhanced `simulate_input` documentation with concrete action‑sequence examples.
Full changelog
Breaking: every tool gets its own name
The manage_scene, manage_node, and manage_project umbrella tools are gone. Each operation is now its own tool with only its relevant parameters. No more operation discriminators, no more conditional schemas.
This is the change recommended in the MCP design review (Jeremiah Lowin, "Your MCP Server is Bad"): name tools for the agent's intent, not the developer's implementation. set_node_property instead of manage_node(operation: "update_property"). list_autoloads instead of manage_project(operation: "list_autoloads").
Migration
If your agent workflows reference the old tool names, update them:
| Old | New |
|-----|-----|
| manage_scene(operation: "create") | create_scene |
| manage_scene(operation: "add_node") | add_node |
| manage_scene(operation: "load_sprite") | load_sprite |
| manage_scene(operation: "save") | save_scene |
| manage_scene(operation: "export_mesh_library") | export_mesh_library |
| manage_scene(operation: "batch") | batch_scene_operations |
| manage_node(operation: "delete") | delete_node |
| manage_node(operation: "update_property") | set_node_property |
| manage_node(operation: "batch_update_property") | batch_set_node_properties |
| manage_node(operation: "get_properties") | get_node_properties |
| manage_node(operation: "batch_get_properties") | batch_get_node_properties |
| manage_node(operation: "attach_script") | attach_script |
| manage_node(operation: "get_tree") | get_scene_tree |
| manage_node(operation: "duplicate") | duplicate_node |
| manage_node(operation: "get_signals") | get_node_signals |
| manage_node(operation: "connect_signal") | connect_signal |
| manage_node(operation: "disconnect_signal") | disconnect_signal |
| manage_project(operation: "launch_editor") | launch_editor |
| manage_project(operation: "run_project") | run_project |
| manage_project(operation: "get_debug_output") | get_debug_output |
| manage_project(operation: "stop_project") | stop_project |
| manage_project(operation: "list_projects") | list_projects |
| manage_project(operation: "get_project_info") | get_project_info |
| manage_project(operation: "list_autoloads") | list_autoloads |
| manage_project(operation: "add_autoload") | add_autoload |
| manage_project(operation: "remove_autoload") | remove_autoload |
| manage_project(operation: "update_autoload") | update_autoload |
| manage_project(operation: "get_filesystem_tree") | get_project_files |
| manage_project(operation: "search_in_files") | search_project |
| manage_project(operation: "get_scene_dependencies") | get_scene_dependencies |
| manage_project(operation: "get_project_settings") | get_project_settings |
In practice, most MCP clients discover tools dynamically, so no manual migration is needed. But if you have hardcoded tool names in prompts or scripts, this is the mapping.
Other changes
- MCP server instructions — the server now sends a guidance block on handshake: what the tools do, the runtime bridge workflow, and the autoload caveat. Any MCP client gets this context automatically.
- Promoted spatial params on
add_node—position,rotation, andscaleare top-level parameters instead of buried in a properties dict. Agents no longer need to know Godot's Vector2/Vector3 property format to place a node. simulate_inputexamples — the tool description now includes concrete action sequence examples so agents can generalize from real patterns.- Tool count: 15 → 37 (same operations, just properly decomposed)