Godot MCP Native (Model Context Protocol)
A powerful Godot Engine plugin that integrates AI assistants (Claude, etc.) via the Model Context Protocol (MCP). Enable AI to directly read and modify your Godot projects - scenes, scripts, nodes, and resources - all through natural language.
🚀 Features
- Full Project Access: AI assistants can read and modify scripts, scenes, nodes, and resources
- Native Implementation: No Node.js dependency required - runs entirely within Godot
- Real-time Editing: Apply AI suggestions directly in the editor
- Comprehensive Tool Set (154 tools — 30 core + 124 supplementary):
- Node Tools (9 core + 11 advanced): Create, modify, manage scene nodes, duplicate, move, rename, signal connections, anchor presets, group management, batch operations, scene auditing
- Script Tools (7 core + 8 advanced): Edit, analyze, create, attach, validate GDScript files, execute scripts, search in files, symbol indexing, definition & reference lookup
- Scene Tools (4 core + 4 advanced): Manipulate scene structure, save scenes, list/open/close scene tabs, project scene listing
- Editor Tools (4 core + 12 advanced): Control editor functionality, screenshot, signal inspection, filesystem reload, node/file selection, export management, property inspector
- Debug Tools (3 core + 66 advanced): Logging, debugger sessions, breakpoints, stack/variable inspection, profilers, runtime probe, animation/audio/shader/tilemap runtime control, debug execution control
- Project Tools (3 core + 23 advanced): Access project settings, list resources, create resources, run tests, manage input mappings, inspect autoloads/global classes, resource diagnostics & health audit
📦 Installation
Method 1: Asset Library (Recommended)
- Open your Godot project
- Go to AssetLib tab in the editor
- Search for "Godot MCP Native"
- Click Download and then Install
Method 2: Manual Installation
- Download or clone this repository
- Copy the
addons/godot_mcpfolder to your project'saddons/directory - Open your project in Godot
- Go to Project > Project Settings > Plugins
- Enable "Godot MCP Native" plugin
🔧 Usage
Enabling the Plugin
- Open Project > Project Settings > Plugins
- Locate "Godot MCP Native" in the list
- Set the status to Enable
Configuring MCP Server
The plugin provides two transport modes:
HTTP Mode (for remote access)- Best for: Network-based AI integration
- Configuration: Set
transport_mode = "http"and configurehttp_port(default: 9080) - Optional: Enable
auth_enabledand setauth_tokenfor security
Connecting with Claude Desktop
First, install the mcp-remote package:
npm install mcp-remote
{
"mcpServers": {
"godot-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"http://localhost:19080/mcp"
]
}
}
}
Connecting with Cursor / Trae
HTTP Mode Configuration{
"mcpServers": {
"godot-mcp": {
"url": "http://localhost:9080/mcp"
}
}
}
With authentication:
{
"mcpServers": {
"godot-mcp": {
"url": "http://localhost:9080/mcp",
"headers": {
"Authorization": "Bearer your-secret-token-here"
}
}
}
}
Connecting with Cline
HTTP Mode Configuration{
"mcpServers": {
"godot-mcp": {
"url": "http://localhost:9080/mcp",
"type": "streamableHttp",
"disabled": false,
"autoApprove": []
}
}
}
Connecting with OpenCode
HTTP Mode Configuration{
"mcp": {
"godot-mcp": {
"type": "remote",
"url": "http://localhost:9080/mcp"
}
}
}
Connecting with Codex
HTTP Mode Configuration[mcp_servers]
[mcp_servers.godot-mcp]
type = "streamableHttp"
url = "http://localhost:19080/mcp"
💬 Example Prompts
Once connected, you can interact with your Godot project through Claude:
@mcp godot-mcp read godot://script/current
I need help optimizing my player movement code. Can you suggest improvements?
@mcp godot-mcp get-scene-tree
Add a cube in the middle of the scene and create a camera that looks at it.
Create a main menu with Play, Options, and Quit buttons
Implement a day/night cycle system with dynamic lighting
📚 Available Commands
Node-Write (6)
create-node- Create a new nodedelete-node- Delete a nodeupdate-node-property- Update node propertiesduplicate-node- Duplicate a node and its childrenmove-node- Move a node to a new parentrename-node- Rename a node in the scene
Node-Read (3)
get-scene-tree- Get scene tree structureget-node-properties- Get properties of a specific nodelist-nodes- List nodes under a parent
Node-Write-Advanced (5)
set-anchor-preset- Set anchor preset for Control nodesconnect-signal- Connect a signal between nodesdisconnect-signal- Disconnect a signal connectionset-node-groups- Set group memberships for a nodeadd-resource- Add a resource child node (collision shape, mesh, etc.)
Node-Advanced (6)
get-node-groups- Get groups a node belongs tofind-nodes-in-group- Find all nodes in a specific groupbatch-update-node-properties- Batch update multiple node properties in one UndoRedo actionbatch-scene-node-edits- Apply batch scene node create/delete/move edits in one UndoRedo actionaudit-scene-node-persistence- Audit node owner and persistence state for the sceneaudit-scene-inheritance- Audit inherited/instanced scene structure
Script (7)
list-project-scripts- List all scriptsread-script- Read a specific scriptmodify-script- Update script contentcreate-script- Create a new scriptget-current-script- Get currently editing scriptattach-script- Attach an existing script to a nodeexecute-script- Execute GDScript expression
Script-Advanced (8)
analyze-script- Analyze script structurevalidate-script- Validate GDScript syntaxsearch-in-files- Search project fileslist-project-script-symbols- Index script symbols across GDScript and C# filesfind-script-symbol-definition- Find definition locations for a script symbolfind-script-symbol-references- Find textual references to a script symbolrename-script-symbol- Rename a script symbol across project filesopen-script-at-line- Open a script at a specific line in the editor
Scene (4)
create-scene- Create a new scenesave-scene- Save current sceneopen-scene- Open a sceneget-current-scene- Get current scene info
Scene-Advanced (4)
list-project-scenes- List all scenesget-scene-structure- Get scene structure detailslist-open-scenes- List currently open scene tabsclose-scene-tab- Close a scene tab
Editor (4)
get-editor-state- Get current editor staterun-project- Run the projectstop-project- Stop the running projectexecute-editor-script- Execute GDScript script
Editor-Advanced (12)
get-selected-nodes- Get selected nodesset-editor-setting- Modify editor settingsget-editor-screenshot- Capture an editor viewport screenshotget-signals- Inspect node signals and connectionsreload-project- Rescan the project filesystemselect-node- Select a node in the scene and focus in Inspectorselect-file- Select a file in the FileSystem dockget-inspector-properties- Inspect node/resource properties like the Inspectorlist-export-presets- List export presetsinspect-export-templates- Inspect installed export templatesvalidate-export-preset- Validate an export presetrun-export- Run a Godot CLI export
Debug (3 core + 66 advanced)
get-editor-logs- Get editor/runtime logsdebug-print- Print debug infoclear-output- Clear MCP/editor output buffersget-performance-metrics- Get performance dataget-debugger-sessions- List editor debugger sessions and active/break stateset-debugger-breakpoint- Enable or disable debugger breakpointssend-debugger-message- Send custom messages to the running game debuggertoggle-debugger-profiler- Toggle EngineProfiler channels in active sessionsget-debugger-messages- Read custom runtime messages captured by the bridgeadd-debugger-capture-prefix- Capture additional EngineDebugger message prefixesget-debug-stack-frames- Read captured script stack frames from a breaked sessionget-debug-stack-variables- Read locals, members, and globals for a captured stack frameinstall-runtime-probe- Add the MCP runtime probe node to the current sceneremove-runtime-probe- Remove the MCP runtime probe node from the current scenerequest-debug-break- Ask the runtime probe to enter Godot's debug break loopsend-debug-command- Send step/next/out/continue/stack debugger commands to breaked sessionsget-runtime-info- Query runtime metrics (FPS, node count, etc.) through the probeget-runtime-scene-tree- Read the live runtime scene tree from the running gameinspect-runtime-node- Inspect a live runtime node and its serializable propertiesupdate-runtime-node-property- Modify a property on a live runtime nodecall-runtime-node-method- Call a method on a live runtime nodeevaluate-runtime-expression- Evaluate a GDScript expression in the running gameawait-runtime-condition- Poll a runtime expression until truthy or timeoutassert-runtime-condition- Assert a runtime expression becomes truthy within timeoutget-debug-threads- Return DAP-style debugger threadsget-debug-state-events- Read recorded debugger state transitionsget-debug-output- Read categorized runtime debugger outputget-debug-scopes- Group stack variables into DAP-like scopesget-debug-variables- Resolve DAP-style variable referencesexpand-debug-variable- Expand a debug variable by scope and pathevaluate-debug-expression- Evaluate an expression in debugger contextdebug-step-into/debug-step-over/debug-step-out/debug-continue- Debug execution controldebug-step-into-and-wait/debug-step-over-and-wait/debug-step-out-and-wait/debug-continue-and-wait- Debug execution with state waitawait-debugger-state- Check debugger session execution stateget-runtime-performance-snapshot- Capture runtime performance snapshotget-runtime-memory-trend- Capture runtime memory trendcreate-runtime-node- Create a node in the running gamedelete-runtime-node- Delete a node from the running gamesimulate-runtime-input-event- Inject structured InputEventsimulate-runtime-input-action- Inject InputEventActionlist-runtime-input-actions- List runtime InputMap actionsupsert-runtime-input-action- Create/update a runtime InputMap actionremove-runtime-input-action- Remove a runtime InputMap actionlist-runtime-animations- List animations on a runtime AnimationPlayerplay-runtime-animation- Play a runtime animationstop-runtime-animation- Stop a runtime animationget-runtime-animation-state- Get runtime animation playback stateget-runtime-animation-tree-state- Get runtime AnimationTree stateset-runtime-animation-tree-active- Enable/disable runtime AnimationTreetravel-runtime-animation-tree- Travel runtime animation state machineget-runtime-material-state- Resolve runtime node material bindingget-runtime-theme-item- Resolve runtime Control theme itemset-runtime-theme-override- Apply runtime theme overrideclear-runtime-theme-override- Remove runtime theme overrideget-runtime-shader-parameters- List runtime shader parametersset-runtime-shader-parameter- Update runtime shader uniformlist-runtime-tilemap-layers- List runtime TileMap layersget-runtime-tilemap-cell- Get runtime TileMap cell dataset-runtime-tilemap-cell- Write/erase runtime TileMap celllist-runtime-audio-buses- List runtime audio busesget-runtime-audio-bus- Get runtime audio bus stateupdate-runtime-audio-bus- Update runtime audio busget-runtime-screenshot- Capture runtime viewport screenshot
Project (3 core + 23 advanced)
get-project-info- Get project informationget-project-settings- Get project settingslist-project-resources- List project resourcescreate-resource- Create a new resourceget-project-structure- Get project directory structurelist-project-tests- Discover and list runnable project testsrun-project-test- Run a single project testrun-project-tests- Run multiple project testslist-project-input-actions- List project InputMap actionsupsert-project-input-action- Create or update a project InputMap actionremove-project-input-action- Remove a project InputMap actionlist-project-autoloads- List project autoload entrieslist-project-global-classes- List project global script classesget-class-api-metadata- Get ClassDB or global class API metadatainspect-csharp-project-support- Inspect C# project support filescompare-render-screenshots- Compare two screenshots for pixel differencesinspect-tileset-resource- Inspect a TileSet resourcereimport-resources- Reimport resources through the import pipelineget-import-metadata- Get resource import metadataget-resource-uid-info- Inspect ResourceUID mappingsfix-resource-uid- Ensure a resource has a persisted UIDget-resource-dependencies- List resource dependenciesscan-missing-resource-dependencies- Find broken dependency referencesscan-cyclic-resource-dependencies- Find cyclic dependency chainsdetect-broken-scripts- Scan scripts for syntax errorsaudit-project-health- Run a project health audit
🔒 Security Recommendations
- ✅ Production: Always enable authentication (
auth_enabled = true) - ✅ Token: Use a strong token (≥16 characters with letters, numbers, special characters)
- ✅ Storage: Don't commit tokens to version control
- ⚠️ Remote Access: Use HTTPS (TLS/SSL) for network access
📋 Requirements
- Godot Engine 4.x (recommended 4.5 or higher)
- No additional dependencies (native implementation)
📖 Documentation
For detailed documentation, see the docs/current/ folder:
🤝 Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
📄 License
This project is licensed under the MIT License - see the LICENSE file for details.
👤 Author
yurineko73
🙏 Acknowledgments
- Godot Engine team for the amazing game engine
- Model Context Protocol (MCP) specification
- Claude AI by Anthropic for inspiring this integration
Note: This is a community plugin and is not officially affiliated with Godot Engine or Anthropic.
Changelog for version v1.0.6
No changelog provided for this version.