Godot MCP Extended
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Set to "true" to enable detailed server-side debug logging | |
| GODOT_PATH | No | Path to the Godot executable (overrides automatic detection) |
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 | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| launch_editorC | Launch Godot editor for a specific project |
| run_projectC | Run the Godot project and capture output |
| get_debug_outputB | Get the current debug output and errors |
| stop_projectA | Stop the currently running Godot project |
| get_godot_versionB | Get the installed Godot version |
| list_projectsB | List Godot projects in a directory |
| get_project_infoC | Retrieve metadata about a Godot project |
| create_sceneB | Create a new Godot scene file |
| add_nodeB | Add a node to an existing scene |
| load_spriteB | Load a sprite into a Sprite2D node |
| export_mesh_libraryB | Export a scene as a MeshLibrary resource |
| save_sceneC | Save changes to a scene file |
| get_uidC | Get the UID for a specific file in a Godot project (for Godot 4.4+) |
| update_project_uidsA | Update UID references in a Godot project by resaving resources (for Godot 4.4+) |
| get_scene_treeA | Inspect a scene: returns its full node tree (names, types, paths, scripts, groups) as JSON |
| get_node_propertiesA | Read the properties of a single node in a scene. mode "overrides" returns only non-default values, "effective" returns all stored values. |
| get_scene_dependenciesA | List the external resources (scripts, textures, instanced scenes) a scene references, and whether each exists |
| describe_classA | Introspect a Godot built-in class via ClassDB: its parent, properties, methods, and signals. Use to discover valid property/signal names before editing. |
| list_scriptsA | List all GDScript (.gd) files in the project (or a subdirectory) |
| read_scriptB | Read the source of a script file in the project |
| check_scriptA | Parse/compile-check a GDScript file using Godot --check-only. Returns parse errors/warnings without running the game. |
| validate_sceneB | Validate a scene headless: reports whether it loads/instantiates and lists any missing dependencies |
| run_and_capture_errorsA | Run the project (optionally a single scene) for a bounded time and return captured stdout plus structured script errors/warnings |
| set_node_propertyA | Set a property on an existing node in a scene. Values are coerced to the property type (e.g. [x,y] -> Vector2, "res://..." -> resource). |
| delete_nodeB | Delete a node (and its descendants) from a scene |
| rename_nodeB | Rename a node in a scene |
| reparent_nodeB | Move a node to a new parent within the same scene |
| duplicate_nodeB | Duplicate a node subtree within a scene |
| add_to_groupB | Add a node to a group (persistent, saved in the scene) |
| remove_from_groupB | Remove a node from a group |
| create_scriptA | Create a new GDScript file. Optionally specify extends, class_name, and body. |
| attach_scriptC | Attach an existing script to a node in a scene |
| connect_signalB | Persist a signal connection from one node to a method on another node in the same scene |
| disconnect_signalB | Remove a stored signal connection from a scene |
| list_connectionsB | List all signal connections stored within a scene |
| instance_sceneB | Add another scene as an instanced child inside a scene (composition / prefabs) |
| get_project_settingB | Read a project setting from project.godot |
| set_project_settingC | Set a project setting in project.godot |
| set_main_sceneB | Set the project main scene (application/run/main_scene) |
| list_autoloadsA | List the autoload singletons configured in the project |
| add_autoloadB | Add (or update) an autoload singleton |
| remove_autoloadB | Remove an autoload singleton |
| add_input_actionA | Add or extend an input map action with events. Each event: {type:"key", key:"Space"} | {type:"mouse_button", button_index:1} | {type:"joypad_button", button_index:0} | {type:"joypad_motion", axis:0, axis_value:1.0}. |
| remove_input_actionC | Remove an input map action |
| create_resourceB | Create a new .tres/.res resource of a given class with optional properties (e.g. StandardMaterial3D, custom Resource) |
| edit_resourceB | Edit properties of an existing resource file |
| get_resource_propertiesA | Read the stored properties of a resource file as JSON |
| run_scene_testA | Automated end-to-end / UAT test of a scene. Boots the scene headless (real game loop, no rendering), runs a sequence of steps, and evaluates assertions against live game state. Returns per-assertion pass/fail. Each step is an object with an "action". Driver actions: {action:"wait_frames",frames:N} | {action:"wait_seconds",seconds:S} | {action:"press_action",name:"jump",strength:1.0} | {action:"release_action",name:"jump"} | {action:"tap_action",name:"jump",frames:2} | {action:"key",key:"Space",pressed:true} | {action:"mouse_button",button:1,position:[x,y],pressed:true} | {action:"mouse_move",position:[x,y]} | {action:"set_property",node:"Path",property:"x",value:1} | {action:"call_method",node:"Path",method:"start",args:[]} | {action:"emit_signal",node:"Path",signal_name:"hit",args:[]} | {action:"watch_signal",node:"Path",signal_name:"hit"} | {action:"wait_for_signal",node:"Path",signal_name:"hit",timeout_seconds:2}. Assertion actions: {action:"assert_property",node:"Path",property:"position",op:">",value:{x:0}} (op: ==,!=,>,<,>=,<=; for vectors/colors only the provided components are checked) | {action:"assert_node_exists",node:"Path",exists:true} | {action:"assert_in_group",node:"Path",group:"mobs",expected:true} | {action:"assert_signal_emitted",node:"Path",signal_name:"hit",min_count:1} (requires a prior watch_signal) | {action:"assert_method_returns",node:"Path",method:"get_score",args:[],op:">=",value:10} | {action:"assert_node_count",group:"mobs",op:">",value:0}. Node paths are relative to the scene root ("" or "root" = root). |
| run_testsA | Run a GUT or GdUnit4 test suite headless and return the pass/fail summary. Auto-detects the framework from the project addons. |
| capture_scene_screenshotA | EXPERIMENTAL visual UAT: boot a scene with a rendering driver and save a PNG screenshot. Requires a GPU/display or a software rasterizer; may fail in pure-headless CI. Returns the image. |
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/ibnutoriq/godot-mcp-extended'
If you have feedback or need assistance with the MCP directory API, please join our Discord server