godot-mcp
Godot MCP
A safe, standards-compliant Model Context Protocol server for the Godot Engine editor. It lets an AI client (Claude, etc.) read a Godot project, author scenes/nodes/scripts, run the game and read diagnostics — through a transactional, permission-controlled kernel that maps every operation onto real Godot editor APIs (EditorInterface, EditorFileSystem, EditorUndoRedoManager, ProjectSettings, ResourceLoader/Saver).
This project is a Godot reimplementation of the cocos-mcp design: the same layered architecture (contracts → core/execution kernel → adapter → editor), the same safety model (typed I/O schemas, dry-run, optimistic revision, permission tiers, audit), adapted to Godot's object model.
MCP client (Claude …)
│ stdio (JSON-RPC)
@godot-mcp/mcp-server ── ExecutionKernel ── ToolRegistry ── Policy
│ newline-delimited JSON-RPC over TCP (127.0.0.1:6040)
addons/godot_mcp (GDScript EditorPlugin)
└─ EditorInterface / EditorFileSystem / EditorUndoRedoManagerWhy this shape
Faithful to the editor. Every tool resolves to a real Godot API in the addon. No hand-editing of
.tscn/.import/.godotinternals.Godot's addressing, not Cocos's. Nodes are addressed by NodePath (scene-relative, e.g.
/Player/Sprite); resources/scripts/scenes by res:// paths. There are no UUIDs to keep in sync.Safe by default.
read/writeon,destructive/buildoff. Writes are serial, undoable, dry-run-able, revision-checked and audited.Stable, machine-readable results. Tools never return ad-hoc
{ success: false }; failures carry a stableerror.code.
Repository layout
packages/
contracts/ Zod schemas, domain types, the GodotAdapter contract
core/ ToolRegistry, ExecutionKernel, PolicyEngine, operations, audit, tools
godot-adapter/ TCP JSON-RPC bridge + GodotAdapter implementation
testkit/ In-memory Godot adapter for tests
apps/
mcp-server/ Standalone stdio MCP server CLI
godot-editor-addon/ GDScript EditorPlugin (addons/godot_mcp)
docs/ ARCHITECTURE, GODOT_INTEGRATION, TOOL_SPECIFICATIONQuickstart
1. Build the server
pnpm install
pnpm build # -> dist/mcp-server/index.js
pnpm test # unit/integration testsRequires Node.js ≥ 20.19.
2. Install the editor addon
Copy apps/godot-editor-addon/addons/godot_mcp into your Godot 4 project:
<your-project>/addons/godot_mcp/ (plugin.cfg, plugin.gd, bridge.gd, rpc_handler.gd)In Godot: Project → Project Settings → Plugins → enable "Godot MCP". On enable the plugin starts a TCP bridge on 127.0.0.1:6040 (printed to the editor output). Restart it any time via Godot MCP: Restart server in the tool menu.
Targets Godot 4.2+ (tested profile: 4.3). The addon only uses public, stable editor APIs.
3. Connect your AI client
Add the server to your MCP client config. For Claude Code / Claude Desktop:
{
"mcpServers": {
"godot-mcp": {
"command": "node",
"args": ["<repo>/dist/mcp-server/index.js"],
// optional:
// "env": { "GODOT_MCP_ADDON_URL": "tcp://127.0.0.1:6040" } // default
},
},
}CLI flags: --addon-url tcp://host:port, --profile readonly|standard|trusted.
4. Use it
Ask the model: "What's in the current scene?" → it calls system_status, then node_query/node_get. "Add a Player node with a Sprite2D child and a script" → it dry-runs scene_build, then applies it. "Run the game and tell me if there are errors" → run_start (needs the trusted profile), then logs_query.
Tools (25)
Domain | Tools |
System / project |
|
Scene |
|
Node / property |
|
Script |
|
Asset |
|
Selection |
|
Run |
|
Logs |
|
Read tools are read tier. Writes are write tier and support dryRun, expectedRevision and idempotencyKey. node_delete is destructive; run_start/run_stop are build (both off by default).
Full per-tool schemas and semantics: docs/TOOL_SPECIFICATION.md.
Permission profiles
Profile | Grants | Notes |
| read only | Safe to share |
| read + write | Author scenes/scripts |
| read + write + destructive + build | Run game, delete nodes |
deny always wins; confirm returns CONFIRMATION_REQUIRED. Permissions are server-enforced on every call, independent of what the client advertised.
Development
pnpm typecheck # tsc --noEmit across the workspace
pnpm test # vitest
pnpm lint # eslint
pnpm format # prettier
pnpm verify # format:check + lint + typecheck + test + buildStatus & limitations (v1)
Godot 4.2+ only. Godot 3 is not supported.
Loopback only. The bridge binds
127.0.0.1; do not expose it.Logs are the editor-side buffer. v1 does not capture the running game's stdout;
logs_queryreturns the addon's own ring buffer. Use the editor Output panel for full runtime logs.Cross-call undo. Each write RPC records its own
EditorUndoRedoManageraction, so Ctrl+Z works in the editor. A write that fails mid-flight is reportedfailed_dirty— undo it manually rather than retried blindly.No arbitrary code execution. There is no
eval/execute-scripttool.script_writewrites.gdfiles underres://only.
License
MIT.
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/emojiiii/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server