Skip to content

youichi-uda/godot-mcp-pro

v1.14.0 Breaking

This release includes 2 breaking changes for platform teams planning a safe upgrade.

Published 16d MCP Developer Tools
✓ No known CVEs patched
Read the diff → Tool health → What is this tool? →

✓ No known CVEs patched in this version

Topics

ai ai-tools claude cursor game-development gamedev
+7 more
gdscript godot godot-engine godot-plugin godot4 mcp model-context-protocol

Affected surfaces

auth breaking_upgrade rce_ssrf

Summary

AI summary

Cross‑scene property writes now default to dry‑run, requiring explicit dry_run=false force=true to commit changes.

Full changelog

Feature / Safety — Open-resource conflict prevention

Major safety overhaul for how MCP commands interact with editor-owned resources. Prevents the "external change" dialog and silent in-memory/disk divergence when commands wrote to files that Godot still had open.

Contributor

This release lands a community contribution from @aallnneess (PR #31). The design, patch, and validation were authored by him with GitHub Copilot using GPT-5.5 xhigh. Reviewed and integrated by @youichi-uda. Two clean bug reports + a full design + a working PR in one week — much appreciated.

What's fixed

  • Open scenes are no longer overwritten via offline ResourceSaver.save. Active-scene saves now route through EditorInterface.save_scene() / save_scene_as() so the editor's in-memory state stays coherent. Inactive open scene tabs return a structured -32009 conflict instead of being silently rewritten.
  • cross_scene_set_property defaults to dry_run=true (breaking change). Real writes require dry_run=false force=true. Per-scene response now includes a mode field (dry_run / offline_saved / live_open_scene) so callers can see what actually happened.
  • Live scene mutations participate in UndoRedo. Node creation, property edits, animation tracks, keyframes, animation tree, tilemap edits, theme overrides, etc. all go through EditorUndoRedoManager so they appear in the editor's undo history and dirty-state tracking. Animation keyframe edits get round-trip undo via time-matched key replacement.
  • Open script/shader writes are refused unless force=true is explicitly passed. _refresh_loaded_shader uses take_over_path() + emit_changed() to refresh cached/live Shader resources reliably (replaces the unreliable Shader.reload_from_file() call). edit_script finally implements the 1-based inclusive start_line / end_line range replacement the CLI had been advertising. script_commands restricted to .gd / .cs paths with a clear error otherwise.
  • execute_editor_script escape hatch closed. Submitted code is scanned for direct file/resource write APIs and refused unless allow_unsafe_editor_io=true is explicitly set. AI clients can no longer route around the per-command guards by submitting raw editor script.

Server schema additions

  • create_script / edit_script / create_shader / edit_shader: new optional force parameter
  • edit_script: new start_line / end_line parameters
  • cross_scene_set_property: new dry_run / force parameters
  • execute_editor_script: new allow_unsafe_editor_io parameter
  • CLI: script create and script edit accept --force

Migration notes

Breaking: scripts/agents that called cross_scene_set_property and expected an immediate write now get a dry-run preview by default. Add dry_run=false force=true to actually write. This is intentional — silent project-wide writes were a footgun.

Soft-breaking: calls that targeted open scenes / scripts / shaders without checking now return a -32009 conflict. Either close the file in the editor, save through the editor (for scenes), or pass force=true (for scripts/shaders, when you've verified no buffer holds unsaved changes).

Existing wire-compatible calls that did not target open resources continue to work unchanged.

Tests

62/62 server tests passing on clean build. Contributor ran the addon through Godot 4.6.2-stable headless parse checks and a 30-task compatibility suite before submitting.

Full changelog

See CHANGELOG.md for the complete list of changed files and design rules.

Breaking Changes

  • `cross_scene_set_property` defaults to `dry_run=true`; real writes need `dry_run=false force=true`.
  • Writes to open scene files are blocked unless `force=true` is supplied; inactive tabs return `-32009` conflict error.

Weekly OSS security release digest.

The CVE patches and breaking changes that affected production tools this week. One email, every Sunday.

No spam, unsubscribe anytime.

Share this release

Track youichi-uda/godot-mcp-pro

Get notified when new releases ship.

Sign up free

About youichi-uda/godot-mcp-pro

Premium MCP server for Godot game engine with 84 tools for scene editing, scripting, animation, tilemap, shader, input simulation, and runtime debugging.

All releases →

Beta — feedback welcome: [email protected]