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. |
Capabilities
Features and capabilities supported by this server
| 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
- 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