Skip to content

Releases: hybridindie/godot-mcp

godot-editor-mcp 2026.09.02 — First Stable

Choose a tag to compare

@hybridindie hybridindie released this 02 Sep 17:37
e7371b1

First stable release 🎉

Beta is over: FastMCP is on 4.0.1 stable (#403/#404) and zero prerelease versions remain in the dependency graph. CONTRACT_VERSION is 1 — the surface has been additive-only since the first beta.

Consumer hardening (by @MuhamadBarzani) — #390#400

Everything in this batch came out of live consumer sessions, where the contract suite's fake-addon assumptions broke against real editors, real games, and real MCP clients:

  • #394 — Argument coercion middleware: some MCP clients (observed: OpenCode) serialize nested objects/arrays/bools as JSON strings at tools/call; every properties/value/events/dry_run-taking tool failed 100% for them. A schema-aware middleware now repairs stringified arguments (conservatively — declared string params are never touched) and qa.evaluate_assertion re-types stringified expectations.
  • #395capture_editor_screenshot no longer hangs ~10s on macOS: the viewport grab is deferred one rendered frame (two-phase ready:false → PNG poll pattern), with a structured timeout error naming the hidden/minimized-editor case.
  • #396force_break now pauses non-cooperating games: the runtime probe self-services the pending break in its own _process, dodging the EngineDebugger.debug() deadlock that #131 documented.
  • #397GODOT_MCP_DEFAULT_TOOLSETS env var seeds the initial enabled toolsets (all or comma-separated) for clients that snapshot schemas at session start.
  • #399/#401 — import/scan race fixed at both levels: bounded e2e polling, plus opt-in wait_for_scan/wait_ms with a scan_complete result field distinguishing "copy landed" from "import artifacts ready".

FastMCP 4.0.1 stable (#403/#404)

The framework moved to GA (MCP SDK v2, 2026-07-28 sessionless protocol). Breaking-change audit clean — the guard pattern (#346), server-global toolset state (#364), and snake_case field access were already 2026-native; 689 tests passed unchanged except the pin-drift test. See the migration plan.

Also since b4

  • #388 — MCP 2026-07-28 migration plan + AST guard against session-keying drift
  • #402 — mypy strict conformance for the merge batch

Install

pip install godot-editor-mcp

No --pre flag needed anymore. See the README for editor setup, and skills/ for the installable AI skills.

godot-editor-mcp 2026.08.31b4 — Beta 4

Choose a tag to compare

@hybridindie hybridindie released this 31 Aug 23:42
2400578

Beta 4

Patch-level CalVer release. 4 commits since b3.

outputSchema + structuredContent on every tool (#385, PR #387)

Every JSON-result tool now declares a standard outputSchema (JSON Schema 2020-12) and emits structuredContent, with the text content kept as the faithful serialized fallback — the MCP 2025-11-25 spec best practice, auto-derived from each tool's Pydantic return annotation by FastMCP 4.0:

  • godot_undo fixed: its @model_serializer (which drops mode-irrelevant None fields) hid the fields from pydantic's serialization-mode schema generation, degenerating the auto-derived schema to {additionalProperties: true} — useless to clients. It now declares the field-derived schema explicitly; both emission shapes (real undo, dry-run preview) validate against it.
  • godot_editor_capture_screenshot is the spec-correct exception: ImageContent is non-JSON, so it declares no schema and emits no structuredContent.
  • Pinned in both directions by tests/contract/test_output_schema.py: the emitted structuredContent validates against the declared schema, the text fallback is json.loads(text) == structuredContent, and a whole-surface guard rejects any degenerate schema across all 180 tools.
  • Unblocks godot-agents#494 (client prefers structuredContent in MCPResult).

Eval harness moved to godot-agents (#383, PR #384)

The LLM eval harness (agents, task suites, variant A/B machinery) is a consumer concern — it now lives in godot-agents as the self-contained godot_agent_harness package (godot-agents#482). evals/ keeps only the instruction-staleness server self-analysis, guarded by test_evals_surface.py. Repo hygiene — the published wheel was never affected (the harness was never packaged).

MCP 2026-07-28 migration plan (#386, PR #388)

docs/mcp-2026-07-28-migration.md — the sessions-removal spec plan. Finding: the server was already sessionless-native (toolset gating is server-global since #364; the approval guard round-trips request_state). A new AST source-shape guard (test_sessionless_invariants.py) fails preflight on any drift back toward session_id keying.

Compatibility

CONTRACT_VERSION remains 1 — the bridge envelope and command surface are unchanged. outputSchema/structuredContent are additive; the text fallback is byte-identical for existing clients.

Install

pip install --pre godot-editor-mcp==2026.08.31b4

Or upgrade:

uv tool install --upgrade godot-editor-mcp

See the README for setup.

godot-editor-mcp 2026.08.31b3 — Beta 3

Choose a tag to compare

@hybridindie hybridindie released this 31 Aug 14:46
38196d7

Beta 3

Patch-level CalVer release. 2 commits since b2.

MLflow decoupling (#378, #379)

The mlflow Python package is not installable alongside the pinned FastMCP 4.x, and eval-observability is a consumer concern. MLflow is now fully removed from godot-mcp:

  • mlflow + boto3 dropped from dev deps — the locked environment shrinks 172 → 100 packages
  • evals/mlflow_tracker.py, evals/dataset_sync.py, evals/representativeness.py deleted; MLflow logging stripped from all eval suites (active + archive)
  • The mlflow MCP entry is disabled in .opencode/opencode.json; eval→MLflow logging (tracker, GenAI dataset sync, mlflow MCP server) is owned by godot-agents
  • The #197 representativeness banner survives as console output (REPRESENTATIVENESS_BANNER prefixes every run_llm_suite run)
  • godot-mcp evals stop at console output

Other

  • #377 — Publish CI: the Godot addon zip is kept out of the PyPI upload; Asset Library icon URL fixed

Compatibility

CONTRACT_VERSION remains 1 — no tool-surface or bridge-envelope changes in this release.

Install

pip install --pre godot-editor-mcp==2026.08.31b3

Or upgrade:

uv tool install --upgrade godot-editor-mcp

See the README for setup.

godot-editor-mcp 2026.08.27b2 — Beta 2

Choose a tag to compare

@hybridindie hybridindie released this 27 Aug 20:29
11493b8

Beta 2

The second beta. 19 commits since b1.

Safety & toolset hardening (graphify-driven)

  • #364 — Replaced per-session toolset isolation with a server-global enabled set. Per-session isolation was dead code on the sessionless 2026-07-28 protocol real clients use (fresh session_id per call), and Middleware.on_initialize violated the async-patterns rule. enable_toolset/disable_toolset now work on every transport; the default surface (core + inspection) is enforced from the first call.
  • #365require_node_exists now uses a lightweight cmd_node_exists probe (returns {exists: true}) instead of the heavy cmd_get_node_properties, halving the round-trip cost of every node-targeted mutation. [Both] addon + server change.
  • #366list_tools_by_safety_class returns a typed SafetyClassListing Pydantic model instead of a raw dict (the typed-I/O rule).
  • #368ApprovalMiddleware uses ErrorCode.APPROVAL_DENIED (enum) instead of the string literal, matching every other call site.
  • #369 — Toolset and approval middlewares now log lookup errors at ERROR. The approval gate fails open (the destructive confirm gate in each tool body is the primary security net and runs regardless); the toolset gate fails open so core recovery tools stay reachable.
  • #367 — Contract test that every destructive-tagged tool calls require_confirmation, accepts dry_run, and accepts confirm (AST-based, no vacuous pass).

Other

  • Addon icon (PNG) + Godot Asset Library publish CI
  • Docs reorganization: consumer-first README, transport security as a first-class safety component, Docker client setup
  • MCP status dock moved from left dock to bottom panel
  • graphify MCP server wired into opencode config

Install

pip install --pre godot-editor-mcp==2026.08.27b2

Or upgrade:

uv tool install --upgrade godot-editor-mcp

See the README for setup.

godot-editor-mcp 2026.08.26b1 — First Beta

Choose a tag to compare

@hybridindie hybridindie released this 26 Aug 19:56
3754f30