godot-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@godot-mcprun the project and tell me what errors appear in the output"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
godot-mcp
An MCP server that lets an AI agent work on a Godot 4.x project the way a developer does: read and edit scenes, write scripts, build, test, run, look at the result, and debug what went wrong.
Two things set it apart from guessing at file formats or shelling out blindly:
It asks Godot itself. Scene and resource files are parsed and re-serialized structurally (proven byte-identical on round-trip against a real project corpus), but anything that depends on the engine's own behavior — C# introspection, shader compilation, input bindings, editor state — is answered by actually running Godot headless or querying a live editor, not by reimplementing Godot's semantics from memory.
It fails loudly. Every measurable failure mode in this project — a missing display, an unbuilt C# assembly, a closed editor, a non-.NET binary — is a named, distinct error with a remedy, not a silent empty result. See
docs/capability-matrix.mdfor the measurements this is built on; several of them exist specifically because the obvious signal (exit code, a non-null return value) turned out to lie.
50 tools, organized into four tiers by what they need to work. See docs/tools.md for the full
reference and docs/troubleshooting.md for what to do when a tool refuses.
Requirements
Node.js >= 20
A Godot 4.7+ binary (the capability matrix was measured against 4.7; other 4.x versions are expected to behave similarly but are unverified)
For any C# tool (
build_csharp,run_tests,csharp_script_info,validate_node_property, and C# script paths throughvalidate_script): a .NET/mono build of Godot — the ordinary GDScript-only distribution cannot load or introspect.csscripts, and every C# tool detects this up front and refuses withNOT_MONO_BINARYrather than failing partway through. A mono build's--versionoutput contains.mono.and it ships a siblingGodotSharp/directory.For the C# tools specifically, a
dotnetSDK onPATH(build_csharpandrun_testsinvoke it directly;csharp_script_infoandvalidate_node_propertyneed a Debug build to already exist, which comes frombuild_csharporbuild_godot_artifacts).
Related MCP server: godot-mcp-pilot
Install and build
git clone <this-repo> godot-mcp
cd godot-mcp
npm install
npm run buildThis produces dist/server.js, the entry point an MCP client runs.
Configuring an MCP client
Point your client at dist/server.js with node, and give it a way to find a Godot binary. The
simplest setup sets GODOT_PATH explicitly:
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/path/to/godot-mcp/dist/server.js"],
"env": {
"GODOT_PATH": "/path/to/Godot_v4.7-stable_mono_linux.x86_64"
}
}
}
}How the server finds a Godot binary
In order, the first one found wins:
An explicit
binaryargument passed to a tool call.The
GODOT_PATHenvironment variable.A binary vendored under the project's own
vendor/directory (searched up to 3 levels deep, preferring one whose filename containsmono) — for projects that ship their own Godot build.godot,godot4, orgodot-monoonPATH.
How the server finds a project
In order:
An explicit
projectargument passed to a tool call.The
GODOT_PROJECTenvironment variable.Walking up from the server process's working directory looking for
project.godot.
If none of these resolves to a directory containing project.godot, tools that need a project
fail with PROJECT_NOT_FOUND.
GODOT_MCP_DOCS_CACHE
godot_class_doc and search_classes build a class-reference index by asking the Godot binary
itself, which is slow enough to be worth caching. The index is written under
$TMPDIR/godot-mcp-docs-cache/<godot-version>/ by default; set GODOT_MCP_DOCS_CACHE to put it
somewhere persistent. The cache is keyed by Godot version, so upgrading the binary builds a fresh
index rather than serving a stale one. If your MCP client runs the server with a working directory outside
the target project, set GODOT_PROJECT explicitly:
{
"mcpServers": {
"godot": {
"command": "node",
"args": ["/path/to/godot-mcp/dist/server.js"],
"env": {
"GODOT_PATH": "/path/to/Godot_v4.7-stable_mono_linux.x86_64",
"GODOT_PROJECT": "/path/to/your/godot-project"
}
}
}
}Call godot_status first in any new session — it reports the resolved binary path, version,
whether it's a mono build, display availability, project root, and whether the C# assembly is
built, so an agent (or you) can see what's actually possible before trying anything.
The four tiers
Every tool is served by the lowest tier that can answer it. If a tool fails with TIER_UNAVAILABLE
or DISPLAY_REQUIRED, this is why:
Tier | Mechanism | Requires |
A — file layer | Direct read/write of | Nothing — no Godot process at all |
B — headless CLI |
| A Godot binary, and/or a |
C — editor bridge | A TCP socket to a GDScript editor addon | A running Godot editor, with the addon installed and enabled (below) |
D — display-dependent | A Tier B tool that additionally needs to render a frame | Everything Tier B needs, plus a real display (X11 or Wayland) |
Tier D is not a separate transport — it's a capability constraint on top of Tier B. Only
capture_screenshot is Tier D: there is no headless rendering path in Godot, so screenshots
require an actual display, virtual or physical. run_project with windowed: true has the same
requirement.
Tier A tools (most scene, node, script, and project-config editing) work with no Godot installed
at all — they're pure file operations, tested against a corpus of real .tscn/.tres/
project.godot files re-serialized byte-identically. Tier B needs a Godot binary and/or dotnet
on PATH or resolved as above. Tier C needs the editor addon (next section) — until it's installed
and an editor with it enabled is running, all five editor-bridge tools fail with
TIER_UNAVAILABLE; that's expected, not a bug, and the error message tells you which of two
distinct situations applies (see docs/troubleshooting.md).
See docs/tools.md for every tool's tier.
Installing the editor addon (Tier C)
Five tools — editor_state, get_selected_node, live_scene_tree, open_scene_in_editor, and
execute_editor_script — talk to a live, running Godot editor over a loopback TCP socket instead
of spawning a process. That requires a small GDScript editor addon, installed and enabled in the
target project. There is no install tool: writing into a user's addons/ directory and mutating
their project.godot is exactly what this project's path-jail discipline exists to avoid doing
automatically. This is a one-time manual step:
Copy
addon/godot_mcp/from this repository into the target project'saddons/directory, so it ends up at<project>/addons/godot_mcp/plugin.cfg.Enable the plugin — either in the editor (Project Settings > Plugins > godot_mcp > Enable), or by adding it directly to
project.godot:[editor_plugins] enabled=PackedStringArray("res://addons/godot_mcp/plugin.cfg")Launch (or restart) the Godot editor for that project — headless is fine (
--headless --editor --path <project>), no display is required. The addon writes a handshake file to<project>/.godot/mcp_bridge.jsonon startup; the five tools read it to find the bridge's port and per-session token.
Note that editor selection state is always empty in a headless editor — that's expected
(get_selected_node reports "nothing selected" as a normal result, not an error).
Safety and scope
Path jail. Every write path — scene, script, resource, screenshot output — is resolved and required to be inside the project root. A path that escapes it, directly or through a symlink, is refused with
PATH_OUTSIDE_PROJECTbefore anything is touched.dry_run. Every mutating tool acceptsdry_runand returns a unified diff instead of writing. Use it to preview a change before committing to it.No backup store. Version control is the undo system. This is a deliberate simplification — there is no snapshot or backup mechanism in the server itself. If your project isn't under version control, use
dry_runbefore any mutating call, or start using version control.execute_editor_scriptis not a sandbox. It runs arbitrary GDScript inside your actual running editor process, with the same privileges as the editor itself — it can read and mutate live editor state, the open scene, and anything else reachable from GDScript. Treat it like you would treat handing an agent a shell: appropriate for a trusted agent working on your own project, not for untrusted input.
Testing
npm testRuns tsc --noEmit against both tsconfig.json and tsconfig.test.json, then the full Vitest
suite. Nearly every test is parser-level: it feeds canned Godot/MSBuild output through the parsers
and asserts on the structured result, so the suite runs with no Godot install and no .NET
toolchain, and stays fast and portable (CI, containers, a laptop with neither installed).
GODOT_TEST_BINARY
Two blocks are different: tests/integration/tier-b.test.ts drives a real Godot binary —
building temp projects on disk and invoking validate_script, check_shaders, run_project, and
godot_class_doc against it — because a parser can be tested against canned text forever without
ever proving the tool's own process-spawning, argument-building, and stream-reading code actually
works against the real engine. tests/integration/tier-c.test.ts does the same for the editor
bridge tools, with a materially different requirement: it must launch a real Godot editor as a
long-lived, detached process (editors do not exit on their own) and reliably reap it afterward,
including on test failure.
Unset (the default): both blocks report as
SKIPPED. Nothing else innpm testis affected.Set to the path of a Godot 4.7+ binary: both blocks actually execute end-to-end against it.
GODOT_TEST_BINARY=/path/to/Godot_v4.7-stable_linux.x86_64 npm testA mono/.NET build is not required for this block. If you're also working on the C#-facing tools
(build_csharp, run_tests), you'll separately want a dotnet on PATH; there's currently no
equivalent gate variable for that since none of the GODOT_TEST_BINARY block's tests need it.
Documentation
docs/tools.md— every tool, grouped by area, with tier and key inputs.docs/troubleshooting.md— measured failure modes and their fixes.docs/capability-matrix.md— the empirical measurements this project's behavior is built on.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceA TypeScript MCP server that lets AI assistants interact with the Godot 4.x game engine: not just editing files, but playing the game.3679457MIT
- AlicenseAqualityDmaintenanceAn MCP server that gives AI assistants direct control over Godot 4 game development projects. It enables launching the editor, running projects, creating and editing scenes, writing GDScript, and inspecting assets through natural language commands.44304MIT
- AlicenseAqualityBmaintenanceAn MCP server that enables AI assistants to directly run, inspect, modify, and debug Godot game development projects through 110+ tools covering scenes, scripts, resources, runtime debugging, and asset management.33212MIT
- FlicenseNot gradedqualityAmaintenanceA local MCP server plus a bundled Godot editor addon that lets an AI agent create, inspect, run, debug, and export real Godot 4.6 games through tools.2
Related MCP Connectors
An MCP server that gives your AI access to the source code and docs of all public github repos
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/blentz/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server