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