Godot MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GODOT_MCP_DEBUG | No | Set to any value to enable debug logging in the server |
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 |
|---|---|
| get_project_infoB | Get project metadata including name, version, engine version, and main scene |
| get_filesystem_treeC | Get the project filesystem tree structure |
| search_filesC | Search for files in the project by name pattern or content |
| get_project_settingsC | Get all project settings (project.godot values) |
| set_project_settingC | Set a project setting value |
| uid_to_project_pathB | Convert a Godot UID to a project file path |
| project_path_to_uidB | Convert a project file path to its UID |
| get_scene_treeC | Get the node tree of the specified or currently open scene |
| get_scene_file_contentB | Read the raw .tscn/.scn file content of a scene |
| create_sceneB | Create a new empty scene with a specified root node type |
| open_sceneB | Open a scene file in the editor |
| delete_sceneC | Delete a scene file from the project |
| add_scene_instanceB | Add an instance of a scene as a child of a node in the current scene |
| play_sceneA | Start playing the current or specified scene. Required before using any runtime tools (get_game_*, capture_frames, etc.) |
| stop_sceneA | Stop the currently playing scene |
| save_sceneC | Save the current scene or save it to a new path |
| get_loaded_scenesB | Get a list of all currently loaded scenes in the editor |
| set_main_sceneB | Set the project's main scene |
| add_nodeB | Add a new node to the scene tree |
| delete_nodeB | Delete a node from the scene tree |
| duplicate_nodeC | Duplicate a node in the scene tree |
| move_nodeB | Move a node to a new parent in the scene tree |
| update_propertyC | Update a property value on a node |
| get_node_propertiesB | Get all properties of a node |
| add_resourceC | Add a resource (material, texture, etc.) to a node property |
| set_anchor_presetC | Set anchor preset on a Control node |
| rename_nodeB | Rename a node in the scene tree |
| connect_signalB | Connect a signal from one node to another node's method |
| disconnect_signalB | Disconnect a signal connection |
| get_node_groupsB | Get all groups a node belongs to |
| set_node_groupsB | Set the groups a node belongs to (replaces existing groups) |
| find_nodes_in_groupA | Find all nodes belonging to a specific group |
| get_editor_selectionA | Get the currently selected nodes in the editor |
| select_nodesC | Select nodes in the editor |
| clear_editor_selectionA | Clear the current editor selection |
| list_scriptsB | List all GDScript files in the project with class info |
| read_scriptA | Read the contents of a GDScript file |
| create_scriptC | Create a new GDScript file |
| delete_scriptB | Delete a GDScript file from the project |
| edit_scriptB | Edit an existing GDScript file by replacing a text segment |
| attach_scriptB | Attach a GDScript to a node in the scene |
| get_open_scriptsA | Get list of scripts currently open in the script editor |
| validate_scriptB | Validate a GDScript file for syntax errors |
| search_in_filesC | Search for text across project files |
| get_editor_errorsA | Validate all GDScripts in the current scene tree and return compilation errors |
| get_editor_screenshotB | Take a screenshot of the Godot editor window |
| get_game_screenshotC | Take a screenshot of the running game viewport |
| execute_editor_scriptB | Execute a GDScript snippet in the editor context (EditorScript) |
| clear_outputA | Clear the editor output log |
| get_signalsC | Get all signals and their connections for a node |
| reload_pluginA | Reload editor plugins (triggers plugin re-initialization) |
| reload_projectA | Rescan the project filesystem for new or changed files |
| get_output_logB | Get the contents of the editor output log |
| simulate_keyB | Simulate a keyboard key press/release in the running game |
| simulate_mouse_clickB | Simulate a mouse click at a screen position |
| simulate_mouse_moveB | Simulate mouse movement to a screen position |
| simulate_actionA | Simulate an input action (from InputMap) being pressed/released |
| simulate_sequenceA | Simulate a sequence of input events with timing |
| get_input_actionsA | Get all input actions defined in the InputMap |
| set_input_actionB | Add or modify an input action and its event mappings |
| get_game_scene_treeA | 🔴 Game must be running. Get the scene tree of the running game (runtime state) |
| get_game_node_propertiesB | 🔴 Game must be running. Get all properties of a node in the running game |
| set_game_node_propertyA | 🔴 Game must be running. Set a property on a node in the running game |
| execute_game_scriptA | 🔴 Game must be running. Execute a GDScript snippet in the running game context |
| capture_framesA | 🔴 Game must be running. Capture frames from the running game viewport as PNG files |
| monitor_propertiesA | 🔴 Game must be running. Monitor specific properties on a game node for changes over time |
| start_recordingA | 🔴 Game must be running. Start recording game state changes |
| stop_recordingA | 🔴 Game must be running. Stop recording and return the recorded game state data |
| replay_recordingC | 🔴 Game must be running. Replay a previously recorded game session |
| find_nodes_by_scriptB | 🔴 Game must be running. Find all nodes in the game that use a specific script |
| get_autoloadA | 🔴 Game must be running. Get properties of an autoload singleton from the running game |
| batch_get_propertiesB | 🔴 Game must be running. Get multiple properties from multiple nodes in one call |
| find_ui_elementsB | 🔴 Game must be running. Find UI elements in the running game by type, text, or name |
| click_button_by_textB | 🔴 Game must be running. Find and click a button by its text content |
| wait_for_nodeB | 🔴 Game must be running. Wait for a node to appear in the running game tree |
| find_nearby_nodesB | 🔴 Game must be running. Find nodes within a radius of a world position |
| navigate_toB | 🔴 Game must be running. Navigate a node to a target position using pathfinding |
| move_toC | 🔴 Game must be running. Directly move a node to a target position |
| watch_signalsA | 🔴 Game must be running. Watch for signal emissions from a game node |
| list_animationsA | List all animations on an AnimationPlayer |
| create_animationB | Create a new animation on an AnimationPlayer |
| add_animation_trackC | Add a track to an animation |
| set_animation_keyframeC | Set a keyframe in an animation track |
| get_animation_infoB | Get detailed information about an animation including tracks and keyframes |
| remove_animationB | Remove an animation from an AnimationPlayer |
| create_animation_treeC | Create an AnimationTree node on a given path |
| get_animation_tree_structureB | Get the structure of an AnimationTree including state machines and blend trees |
| set_tree_parameterB | Set a parameter on an AnimationTree (e.g. blend amount, state) |
| add_state_machine_stateC | Add a state to an AnimationNodeStateMachine |
| tilemap_set_cellB | Set a single cell in a TileMap |
| tilemap_fill_rectB | Fill a rectangular area of a TileMap with a tile |
| tilemap_get_cellB | Get the tile data at a specific cell |
| tilemap_clearB | Clear cells in a TileMap area or the entire map |
| tilemap_get_infoA | Get TileMap configuration and TileSet information |
| tilemap_get_used_cellsB | Get all used cell coordinates in a TileMap |
| create_themeC | Create a new Theme resource |
| delete_themeC | Delete a theme resource file from the project |
| set_theme_colorB | Set a color in a theme for a specific control type |
| set_theme_constantC | Set a constant value in a theme |
| set_theme_font_sizeC | Set a font size in a theme |
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/KeeVeeG/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server