Skip to main content

MCP bridge — connects AI coding agents to Godot 4.x via TCP

Project description

Golem — AI Assistant for Godot 4.x

v0.13.0

Build Godot games with AI. Chat dock in the editor + MCP bridge for Claude Code. BYOK — your model, your key, no subscription.

Features

  • Chat Dock — Agent loop with streaming, tool calling, conversation persistence, right inside the Godot editor
  • 26 Tools — Scenes, scripts, screenshots, input simulation, project settings, node manipulation…
  • MCP Bridge — Works with Claude Code, Cursor, Windsurf, Continue.dev, Cline via TCP
  • BYOK Multi-Provider — OpenAI, OpenRouter, Ollama, Gemini, or any OpenAI-compatible endpoint
  • 25 Expert Skills — Slash commands for Claude Code (plan, build, debug, test, audit…)
  • 7 Hooks — Auto-lint, connection check, .tscn protection, context restore after compaction
  • Auto-Updates — GitHub Releases check every 24h, one-click update in the editor

Quick Start

Chat Dock (recommended)

  1. Install: uvx golem-mcp install /path/to/your/godot-project
  2. Enable plugin: Godot > Project Settings > Plugins > Golem MCP
  3. Open the Golem dock → enter your API key in Settings → chat

MCP Bridge (Claude Code / Cursor / Windsurf)

  1. Install: uvx golem-mcp install /path/to/your/godot-project
  2. Enable plugin: Godot > Project Settings > Plugins > Golem MCP
  3. Open your project in Claude Code → type /godot

Installation

Option 1 — CLI (recommended)

uvx golem-mcp install /path/to/your/godot-project

This copies the plugin, skills, hooks, and generates configs automatically.

Then enable the plugin in Godot > Project Settings > Plugins > Golem MCP.

Option 2 — ZIP Installer

  1. Download the latest .zip from releases
  2. Extract and run install.bat (Windows) or ./install.sh (macOS/Linux)
  3. Enter your Godot project path
  4. Enable the plugin in Godot

CLI Options

# Choose your AI assistant
uvx golem-mcp install /path/to/project --agent cursor
uvx golem-mcp install /path/to/project --agent windsurf

# Force overwrite existing install
uvx golem-mcp install /path/to/project --force

# Use a local clone instead of uvx (for development)
uvx golem-mcp install /path/to/project --local /path/to/golem-mcp

# Skip skills installation
uvx golem-mcp install /path/to/project --skip-skills

Manual installation

If you prefer to install manually

1. Plugin Godot

Copier le dossier godot-plugin/ dans ton projet Godot :

ton-projet/addons/golem-mcp/ ← contenu de godot-plugin/

Activer le plugin : Project > Project Settings > Plugins > Golem MCP

2. Serveur MCP Python

cd golem-mcp
uv sync

3. Configuration Claude Code

Créer un .mcp.json à la racine de ton projet Godot :

{
  "mcpServers": {
    "godot": {
      "type": "stdio",
      "command": "uvx",
      "args": ["golem-mcp"]
    }
  }
}

Auto-updates

The plugin checks for updates every 24h via GitHub Releases. When a new version is available, you'll get a dialog in the Godot editor to update in one click.

Tools (26)

Available in both the Chat Dock (tool calling) and MCP Bridge (Claude Code tools).

Tool Description
godot_get_scene_tree Scene tree hierarchy (detail_level: full/summary)
godot_inspect_node Node properties, signals, groups (detail_level: full/summary)
godot_get_editor_screenshot Editor viewport capture
godot_get_game_screenshot Running game capture
godot_play_scene Run a scene
godot_stop_scene Stop the running scene
godot_get_errors Retrieve errors
godot_clear_logs Clear logs
godot_execute_script Run GDScript in the editor
godot_view_script Read a script
godot_add_node Create a node
godot_delete_node Delete a node
godot_update_property Modify a node property
godot_move_node Move a node in the tree
godot_duplicate_node Duplicate a node
godot_get_input_map Read input actions
godot_project_settings Read/write project settings
godot_project_context Full project dump (settings, autoloads, input map, files)
godot_save_scene Save the current scene
godot_write_script Write a .gd file
godot_attach_script Attach a script to a node
godot_get_logs Game + engine logs (incremental)
godot_create_scene Create a new scene
godot_open_scene Open an existing scene
godot_add_nodes Batch: create a full node hierarchy
godot_find_nodes Search nodes by type, group, name, script
godot_simulate_input Simulate input sequences in the running game

Skills (25, MCP Bridge only)

Slash commands for Claude Code / Cursor / Windsurf. The Chat Dock uses tools directly with dynamic system prompts.

Workflow Commands

Skill Role
/init Bootstrap a new project (vision → deliverables → structure)
/golem-dev Switch context to work on Golem MCP itself
/deliverable <name> Focus on a specific deliverable until completion
/checkpoint Snapshot project state into CHECKPOINT.md
/references Extract reusable patterns from the project

Planning & Simulation

Skill Role
/godot Router — dispatches to the right skill based on intent
/godot-plan Plan a feature — interrogate, structure, produce a mini-PRD
/godot-sequence Define game flow as YAML (loops, states, emotional arc)
/godot-simulate Paper-prototype a sequence (friction, balance, edge cases)
/godot-gate Validate readiness before construction (auto-checks + questions)

Construction

Skill Role
/godot-architecture Design modular architecture (EventBus, components, scripts)
/godot-scene Build a Godot scene via MCP tools
/godot-composition Structure UI (tokens, containers, layout, torture tests)
/godot-theme Create a design token system via Theme resource
/godot-behavior Add states, transitions, tweens and feedback loops to UI

Game Feel, VFX & Audio

Skill Role
/godot-juice Add game feel (screenshake, freeze, squash, hit effects)
/godot-vfx Create visual effects (particles, shaders, lighting)
/godot-audio Set up audio (bus, music manager, SFX pool, spatial)
/godot-save Implement save/load (settings, game state, slots, migration)
/godot-camera Configure 2D camera (follow, zoom, limits, cinematic)

Debug & Audit

Skill Role
/godot-debug Diagnose and fix issues step by step
/godot-test Automated tests (input simulation + logs + verification)
/godot-design-audit Audit UX via screenshots and produce a report
/godot-status Scan project state, generate DEVLOG, track progress

Hooks

7 Claude Code hooks in hooks/ (Python, cross-platform):

Hook Event Role
check_connection.py PreToolUse (godot_*) Checks TCP connection before each MCP call
block_tscn_edit.py PreToolUse (Edit/Write) Blocks direct .tscn file editing
pre_compact.py PreCompact Saves project state before context compaction
gdscript_lint.py PostToolUse (godot_write_script) Lints GDScript after writing (+ := Variant detection)
copy_skills.py PostToolUse (Edit/Write) Auto-copies modified skills to test project (dev)
check_project_sync.py PostToolUse (Edit/Write) Syncs deliverables, checkpoint, references
compact_context.py SessionStart (compact) Restores project context after compaction

Installation in your Godot project

Copy the template and adjust paths:

cp hooks/settings.example.json your-project/.claude/settings.json
# Edit paths in the file

Or add manually in .claude/settings.json:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "mcp__godot__.*",
        "hooks": [{"type": "command", "command": "python3 .claude/hooks/check_connection.py", "timeout": 3}]
      },
      {
        "matcher": "Edit|Write",
        "hooks": [{"type": "command", "command": "python3 .claude/hooks/block_tscn_edit.py", "timeout": 3}]
      }
    ],
    "SessionStart": [
      {
        "matcher": "compact",
        "hooks": [{"type": "command", "command": "python3 .claude/hooks/compact_context.py", "timeout": 5}]
      }
    ],
    "PreCompact": [
      {
        "matcher": "",
        "hooks": [{"type": "command", "command": "python3 .claude/hooks/pre_compact.py", "timeout": 5}]
      }
    ],
    "PostToolUse": [
      {
        "matcher": "mcp__godot__godot_write_script",
        "hooks": [{"type": "command", "command": "python3 .claude/hooks/gdscript_lint.py", "timeout": 5}]
      },
      {
        "matcher": "Edit|Write",
        "hooks": [{"type": "command", "command": "python3 .claude/hooks/check_project_sync.py", "timeout": 3}]
      }
    ]
  }
}

Workflow

New project (full)

/init → /deliverable <first> → /checkpoint → /deliverable <next> → ...
  1. /init — Full bootstrap: vision, gameplay loop, vertical slice, deliverables, structure
  2. /deliverable <name> — Implement ONE deliverable until completion
  3. /checkpoint — Snapshot state, validate progress
  4. Repeat until vertical slice is complete

Resuming a project

/init (detects state) → /checkpoint → /deliverable <in_progress>

/init auto-detects existing files and offers to resume.

Working on Golem MCP itself

/golem-dev

Switches context to modify the MCP itself. Return with /init or any Godot skill.

Classic workflow (no deliverables)

/godot-plan → /godot-sequence → /godot-simulate → /godot-gate → /godot-architecture → /godot-scene
  1. /godot-plan — Define the vision, mechanics, target feeling. Produces GAME_PLAN.md
  2. /godot-sequence — Formalize game flow as YAML (loops, states, data)
  3. /godot-simulate — Test the game on paper (3 modes: narrative, balance, exhaustive)
  4. /godot-gate — Validate everything is ready before coding
  5. /godot-architecture — Scaffold Core (EventBus, GameState), folder structure
  6. /godot-scene — Build scenes one by one following the plan

Building UI

/godot-composition  →  /godot-theme  →  /godot-behavior

Structure (containers, tokens, roles) BEFORE theme BEFORE behavior (animations, states).

Debug

/godot-debug  →  fix  →  /godot-status

Direct route — no prerequisites.

Quick prototyping

/godot-scene  (QUICK mode, no plan or architecture)

For testing an idea fast. Transition to full flow if the prototype works.

Troubleshooting

"Connection refused" / Port unavailable

Symptom: The check_connection.py hook blocks with "Godot is not connected"

Possible causes:

  1. Godot is not open
  2. The Golem MCP plugin is not enabled
  3. Another process is using port 3571

Solutions:

# Check if port is in use
lsof -i :3571        # macOS/Linux
netstat -ano | findstr :3571  # Windows

# Change port (if conflict)
export GOLEM_PORT=3572  # Before launching Claude Code

In Godot: Project > Project Settings > Plugins > Golem MCP must be enabled (checkbox checked).

"No scene is currently running" (screenshot)

Symptom: godot_get_game_screenshot returns an error

Cause: The game is not running, or the scene crashed

Solution: Run the game with godot_play_scene before capturing

Empty screenshot / base64 error

Symptom: "Screenshot file was empty or corrupted" or API error "image cannot be empty"

Possible causes:

  1. GolemCapture autoload not injected in the game
  2. The game crashed before capture
  3. Race condition (capture too fast)

Solutions:

  1. Check that golem_capture.gd is copied in addons/golem-mcp/
  2. The system retries automatically 3 times — if it still fails, check Godot logs
  3. Use godot_get_errors to see if the game crashed

Lint warnings after godot_write_script

Symptom: The gdscript_lint.py hook reports warnings

This is normal — lint is a safety net. Common warnings:

  • Missing 'extends' — add extends Node (or the correct type)
  • print() found — replace with GolemCapture.game_log() to see logs via MCP
  • await inside _process — forbidden in @tool, use a deferred pattern
  • Camera2D position modified — use offset instead of position for screenshake
  • ':=' with Variant source — replace := with : Type = when source is Array, Dict, ternary, .duplicate()

Ghost connections in Godot logs

Symptom: "Condition '!is_open()' is true" repeated in logs

Cause: Ghost TCP connections (port probes)

Solution: Fixed in v0.5.1 — the server silently ignores these connections. Update the plugin.

TCP Protocol

JSON lines on port 3571 (configurable via GOLEM_PORT).

Request: {"id": "uuid", "tool": "get_scene_tree", "args": {}}\n

Response: {"id": "uuid", "ok": true, "result": "...", "type": "text"}\n

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

golem_mcp-2.0.0.tar.gz (162.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

golem_mcp-2.0.0-py3-none-any.whl (189.9 kB view details)

Uploaded Python 3

File details

Details for the file golem_mcp-2.0.0.tar.gz.

File metadata

  • Download URL: golem_mcp-2.0.0.tar.gz
  • Upload date:
  • Size: 162.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for golem_mcp-2.0.0.tar.gz
Algorithm Hash digest
SHA256 72f322f84468ef70f604fed4ec04fd319f002f074d14f6c89b4c70f9bdd71e4e
MD5 f8c532950dfb08fe2eb632f1c79728b5
BLAKE2b-256 71d171b57e9acc9d1fcb33dc7c8d7a96a5b09101a65484bb3365d4792caa6538

See more details on using hashes here.

File details

Details for the file golem_mcp-2.0.0-py3-none-any.whl.

File metadata

  • Download URL: golem_mcp-2.0.0-py3-none-any.whl
  • Upload date:
  • Size: 189.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.27 {"installer":{"name":"uv","version":"0.9.27","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for golem_mcp-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4a2e054824f0c680e537470850baffd6f475cdd34387d79e9ae2698f416e2faa
MD5 415f0b66068c58f0e8f831b9f1b3a18a
BLAKE2b-256 495d548cf4a830a70b20e9825d3e9810ea10227b42c5fecd7da18548ef13233e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page