/ Directory / Playground / Godot MCP
● Community Coding-Solo ⚡ Instant

Godot MCP

by Coding-Solo · Coding-Solo/godot-mcp

Run Godot 4 from Claude — launch projects, run scenes headlessly, capture stdout/stderr, so you can iterate on GDScript without flipping windows.

Godot MCP wraps the Godot 4 binary and exposes editor + runtime tools. Claude can launch the editor, run a project headlessly, run a single scene, and pull stdout/stderr back as text. Combined with filesystem MCP, the loop becomes: Claude edits a .gd file → runs the scene → reads errors → fixes — entirely from chat.

Why use it

Key features

Live Demo

What it looks like in practice

godot-mcp-coding-solo.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "godot-mcp-coding-solo": {
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp"
      ],
      "env": {
        "GODOT_PATH": "/Applications/Godot.app/Contents/MacOS/Godot"
      }
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "godot-mcp-coding-solo": {
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp"
      ],
      "env": {
        "GODOT_PATH": "/Applications/Godot.app/Contents/MacOS/Godot"
      }
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "godot-mcp-coding-solo": {
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp"
      ],
      "env": {
        "GODOT_PATH": "/Applications/Godot.app/Contents/MacOS/Godot"
      }
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "godot-mcp-coding-solo": {
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp"
      ],
      "env": {
        "GODOT_PATH": "/Applications/Godot.app/Contents/MacOS/Godot"
      }
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "godot-mcp-coding-solo",
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "godot-mcp-coding-solo": {
      "command": {
        "path": "npx",
        "args": [
          "-y",
          "godot-mcp"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add godot-mcp-coding-solo -- npx -y godot-mcp

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use Godot MCP

Tight iterate loop on a GDScript bug

👤 Solo / indie devs ⏱ ~20 min intermediate

When to use: Player movement broke after refactor; you want Claude to fix without flipping back to Godot every minute.

Prerequisites
  • Godot 4 installed — Download from godotengine.org
  • GODOT_PATH env var — Point at the Godot binary (not the .app on macOS)
Flow
  1. Project context
    Godot: get project info for /Users/me/games/Platformer. List autoloads + main scene.✓ Copied
    → Project name, version, autoload list returned
  2. Run the failing scene
    Run scene scenes/Level1.tscn headlessly with a 10-second timeout. Show stderr.✓ Copied
    → stderr captured; error line + traceback visible
  3. Fix and re-run
    The error is 'Invalid call to method move_and_slide on null'. Read scripts/Player.gd, find the cause, fix it, then re-run the scene.✓ Copied
    → File edited, scene re-runs, no more null error

Outcome: Bug found and fixed in 5 minutes without leaving chat.

Pitfalls
  • Headless run hangs on a modal dialog — Use timeout; check stderr for the dialog title
  • GODOT_PATH points at the wrong arch (Intel vs ARM mac) — Verify with file $GODOT_PATH
Combine with: filesystem · github

Scaffold a player state machine from scratch

👤 Devs starting a new project ⏱ ~25 min intermediate

When to use: You want a state-machine boilerplate (Idle/Run/Jump/Attack) without copy-pasting.

Prerequisites
  • Empty Godot project — Create from Project Manager
Flow
  1. Generate files
    Create scripts/State.gd (base class) plus IdleState/RunState/JumpState/AttackState that extend it. Use signals for transitions. Save under res://scripts/states/.✓ Copied
    → 5 new .gd files in the right place
  2. Wire up Player.gd
    Update scripts/Player.gd to instance the state machine and delegate _physics_process to current_state. Keep input handling minimal.✓ Copied
    → Player.gd has state_machine, current_state, transitions
  3. Smoke test
    Run scenes/Player.tscn for 3 seconds. Look for runtime errors.✓ Copied
    → Clean run; ready to add gameplay

Outcome: Working state machine boilerplate — ready to add real states.

Pitfalls
  • Forgetting class_name decl on State.gd — Add it so child classes can use the type
Combine with: filesystem

Run gut tests headlessly from CI

👤 Devs setting up CI ⏱ ~30 min advanced

When to use: You want unit tests to run in GitHub Actions for every push.

Prerequisites
  • Gut testing addon — Install via Asset Library or git submodule
Flow
  1. Run locally first
    Godot: run scene addons/gut/gui/GutRunner.tscn headlessly. Capture exit code.✓ Copied
    → Tests run; exit code 0 on green
  2. Generate workflow
    Now write a .github/workflows/test.yml that does the same on Ubuntu using godot-headless 4.x.✓ Copied
    → Workflow file with proper Godot setup action

Outcome: Repeatable CI for Godot tests.

Pitfalls
  • Headless mode crashes on display calls — Use --headless and avoid OS.window_* in tests
Combine with: github

Combinations

Pair with other MCPs for X10 leverage

godot-mcp-coding-solo + filesystem

Edit GDScript and rerun scene in a tight loop

Filesystem: edit scripts/Player.gd to add jump cooldown. Godot: run scenes/Player.tscn for 3 seconds. Show stderr.✓ Copied
godot-mcp-coding-solo + github

Open a PR after Claude fixes a gameplay bug

Godot: confirm the bug is fixed by re-running the scene. GitHub: open a PR with the fix and the relevant log snippet.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
get_project_info project_path: str First call, sanity check free
launch_editor project_path: str Open Godot UI free
run_project project_path, headless?: bool, timeout?: int Smoke test full project free
run_scene project_path, scene_path, headless?, timeout? Iterate on a single scene free
stop_process pid: int Kill stuck run free

Cost & Limits

What this costs to run

API quota
None — local
Tokens per call
200–8000 (stdout/stderr can be large)
Monetary
Free OSS; Godot is free
Tip
Use timeout aggressively on run_scene; don't let infinite loops eat tokens

Security

Permissions, secrets, blast radius

Minimum scopes: execute Godot binary
Credential storage: None
Data egress: Local only
Never grant: arbitrary shell

Troubleshooting

Common errors and fixes

GODOT_PATH not found

Set absolute path to the Godot binary; on mac use the binary inside .app

Verify: $GODOT_PATH --version
Headless run hangs

Always pass timeout; check stderr for modal dialog or shader compile

Wrong Godot version

MCP is Godot 4.x only; 3.x scenes won't load

Verify: godot --version

Alternatives

Godot MCP vs others

AlternativeWhen to use it insteadTradeoff
godot.unitynoid (mcp-godot)You want a different forkLess battle-tested
Bevy / Rapier MCPsYou're on Rust/BevyDifferent engine entirely

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills