godot-mcp-server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GODOT_BIN | No | Path to a pre-installed Godot editor binary; skips downloads. | |
| GODOT_MCP_MONO | No | Set to 1 to use the .NET/Mono build. | |
| GODOT_PROJECT_ROOT | No | Default project root (folder with project.godot). | |
| GODOT_MCP_CACHE_DIR | No | Where to cache editors/templates/docs (default ~/.cache/godot-mcp). | |
| GODOT_MCP_LOG_LEVEL | No | debug / info / warn / error. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| godot_project_infoA | Summarise a Godot project: name, target engine version, main scene, autoloads, input actions, enabled features and a resource-type breakdown. |
| godot_get_settingsB | List project.godot settings as section/key/value entries, optionally filtered to one section. |
| godot_set_settingA | Set or add a setting in project.godot. The section is created if missing. Use type="raw" to write a Godot literal verbatim (e.g. a Vector2 or PackedStringArray). |
| godot_list_addonsA | List installed editor addons under addons/, with their plugin.cfg metadata and enabled state. |
| godot_list_resourcesA | List project resources as res:// paths, optionally filtered by extension (e.g. ".tscn", ".gd"). Skips .godot/ and .gdignore-marked folders. |
| godot_parse_resourceA | Parse a resource into structured JSON-ish output. Scenes (.tscn) and resources (.tres) yield their node tree, ext/sub resources and connections; scripts (.gd/.cs) yield an outline of classes, functions, signals, exports and variables. |
| godot_create_resourceB | Create a new resource from a template: a GDScript (gdscript) or C# (csharp) script, a scene (scene) or a generic resource (resource). Fails if the target exists unless overwrite=true. |
| godot_find_referencesA | Find resources that reference a given resource, by scanning scenes, resources and scripts for its res:// path, filename, UID, or preload/load usage. |
| godot_setupA | Provision the Godot toolchain for a project: resolve the target version, download/locate the editor binary, install matching export templates, and (by default) install the godot_mcp live-control bridge addon. Safe to run repeatedly. |
| godot_buildA | Import/reimport the project headlessly, compiling scripts and generating the .godot cache. Surfaces script and scene errors. This is the Godot equivalent of a compile check. |
| godot_exportA | Export a project using a preset from export_presets.cfg. Mode "release"/"debug" produce a runnable bundle; "pack" produces a .pck/.zip data pack. With no preset, lists the available presets. |
| godot_cleanA | Remove generated artifacts: the .godot cache, legacy .import folder, and optionally the export/ output. |
| godot_doctorA | Run diagnostics: confirm a usable editor binary, version alignment with the project, export template availability, and whether the project imports cleanly. |
| godot_runB | Launch the project (or a specific scene) as a child process and return a handle. With live=true the godot_mcp bridge is enabled (auto-installed if needed) so you can inspect the scene tree, eval expressions, hot reload and screenshot the running game. |
| godot_stopA | Terminate a running game by handle (or the only running game). Attempts a clean bridge quit before SIGTERM/SIGKILL. |
| godot_game_logsB | Return recent stdout/stderr from a running or finished game. |
| godot_list_gamesA | List all launched games this session, running and exited, with their handles and status. |
| godot_engine_infoA | Query a running game via its bridge: engine version, FPS, frame count, current scene and node count. |
| godot_scene_treeA | Dump the live scene tree of a running game (node names, types and attached scripts). |
| godot_evalA | Run GDScript in the running game and return the result as a string. The code is compiled as a real script, so autoload singletons (e.g. GameState), method calls and |
| godot_set_node_propertyC | Set a property on a node in the running scene by node path (e.g. "Player", "Player/Sprite2D"). |
| godot_hot_reloadA | Reload GDScript files and/or the current scene in the running game without restarting it. Pass script res:// paths to reload, and/or reload_scene=true to reinstantiate the current scene. |
| godot_engine_commandA | Send a raw JSON command to the godot_mcp bridge (advanced). Supported commands: ping, info, scene_tree, eval, set_property, reload, screenshot, quit. Payload is merged into the request. |
| godot_validate_scriptA | Parse a GDScript file headlessly with --check-only and report any parse/compile errors without running the game. |
| godot_install_bridgeA | Install (or refresh) the godot_mcp live-control bridge addon and its autoload in the project. Normally handled by godot_setup or godot_run, but available explicitly. |
| godot_screenshotB | Capture the current frame of a running game (launched with godot_run live=true, non-headless) and return it as an image. Optionally also saves a PNG to disk. |
| godot_api_searchC | Search the Godot class reference for the target version: matches class names, brief descriptions, and method/member/signal names. Returns ranked hits. |
| godot_api_docA | Return the reference documentation for a Godot class: inheritance, description, methods, properties, signals and constants. |
| launch_editorB | Launch Godot editor for a specific project |
| run_projectB | Run the Godot project and capture output |
| get_debug_outputA | Get the current debug output and errors |
| stop_projectB | Stop the currently running Godot project |
| get_godot_versionA | Get the installed Godot version |
| list_projectsB | List Godot projects in a directory |
| get_project_infoB | Retrieve metadata about a Godot project |
| create_sceneB | Create a new Godot scene file |
| add_nodeC | Add a node to an existing scene |
| load_spriteC | Load a sprite into a Sprite2D node |
| export_mesh_libraryB | Export a scene as a MeshLibrary resource |
| save_sceneB | Save changes to a scene file |
| get_uidB | Get the UID for a specific file in a Godot project (for Godot 4.4+) |
| update_project_uidsB | Update UID references by resaving resources (4.4+) |
| game_screenshotA | Screenshot the running game (returns base64 PNG) |
| game_clickB | Click at a position in the running Godot game window |
| game_key_pressC | Send a key press or input action to the running game |
| game_mouse_moveC | Move the mouse in the running Godot game |
| game_get_uiB | Get visible UI elements from the running game |
| game_get_scene_treeB | Get scene tree structure of the running game |
| game_evalC | Execute GDScript in the running game. Use "return" for values. |
| game_get_propertyA | Get a property value from any node in the running game by its path |
| game_set_propertyB | Set a property on a node in the running game |
| game_call_methodC | Call a method on any node in the running game with optional arguments |
| game_get_node_infoB | Get node info: class, properties, signals, methods, children |
| game_instantiate_sceneA | Load a PackedScene and add it as a child of a node in the running game |
| game_remove_nodeB | Remove and free a node from the running game's scene tree |
| game_change_sceneA | Switch to a different scene file in the running game |
| game_pauseB | Pause or unpause the running game |
| game_performanceB | Get performance metrics (FPS, memory, draw calls) |
| game_waitB | Wait N frames in the running game |
| read_sceneA | Read scene file as JSON node tree (headless) |
| modify_scene_nodeC | Modify node properties in a scene file (headless) |
| remove_scene_nodeC | Remove a node from a scene file (headless) |
| read_project_settingsA | Read project.godot as structured JSON |
| modify_project_settingsC | Modify a project.godot setting |
| list_project_filesB | List project files, optionally filtered by extension |
| game_connect_signalB | Connect a signal from one node to a method on another node in the running game |
| game_disconnect_signalB | Disconnect a signal connection in the running game |
| game_emit_signalA | Emit a signal on a node in the running game, optionally with arguments |
| game_play_animationB | Control an AnimationPlayer node: play, stop, pause, or list animations |
| game_tween_propertyC | Tween a node property in the running game |
| game_get_nodes_in_groupB | Get all nodes belonging to a specific group in the running game |
| game_find_nodes_by_classB | Find all nodes of a specific class type in the running game |
| game_reparent_nodeA | Move a node to a new parent in the running game's scene tree |
| attach_scriptC | Attach a GDScript to a scene node (headless) |
| create_resourceC | Create a .tres resource file (headless) |
| read_fileB | Read a text file from a Godot project |
| write_fileB | Create or overwrite a text file in a Godot project |
| delete_fileB | Delete a file from a Godot project |
| create_directoryB | Create a directory inside a Godot project |
| game_get_errorsA | Get new push_error/push_warning messages since last call |
| game_get_logsA | Get new print output from the running game since last call |
| game_key_holdA | Hold a key down without auto-releasing |
| game_key_releaseC | Release a previously held key |
| game_scrollB | Send mouse scroll wheel event at position |
| game_mouse_dragB | Drag mouse between two points over N frames |
| game_gamepadB | Send gamepad button or axis input event |
| create_projectB | Create a new Godot project from scratch |
| manage_autoloadsA | Add, remove, or list autoloads in a Godot project |
| manage_input_mapB | Add, remove, or list input actions and bindings |
| manage_export_presetsB | Create or modify export preset configuration |
| game_get_cameraA | Get active camera position, rotation, and size |
| game_set_cameraB | Move or rotate the active camera |
| game_raycastB | Cast a ray and return collision results |
| game_get_audioB | Get audio bus layout and playing streams |
| game_spawn_nodeC | Create a new node of any type at runtime |
| game_set_shader_paramB | Set a shader parameter on a node's material |
| game_audio_playB | Play, stop, or pause an AudioStreamPlayer node |
| game_audio_busB | Set volume, mute, or solo on an audio bus |
| game_navigate_pathC | Query a navigation path between two points |
| game_tilemapC | Get or set cells in a TileMapLayer node |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/Fulviuus/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server