Godot MCP - Full Control
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Set to 'true' for detailed server-side logging | |
| GODOT_PATH | No | Path to the Godot executable (overrides auto-detection) |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| launch_editorB | 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_sceneC | Create a new Godot scene file |
| add_nodeB | Add a node to an existing scene |
| load_spriteC | Load a sprite into a Sprite2D node |
| export_mesh_libraryC | Export a scene as a MeshLibrary resource |
| save_sceneC | Save changes to a scene file |
| get_uidA | Get the UID for a specific file in a Godot project (for Godot 4.4+) |
| update_project_uidsC | 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_pressA | 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_treeA | Get scene tree structure of the running game |
| game_evalC | Execute GDScript in the running game. Use "return" for values. |
| game_get_propertyB | Get a property value from any node in the running game by its path |
| game_set_propertyC | 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_nodeA | Remove and free a node from the running game's scene tree |
| game_change_sceneC | 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_nodeB | 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_settingsB | Modify a project.godot setting |
| list_project_filesB | List project files, optionally filtered by extension |
| game_connect_signalA | 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_signalB | 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_propertyB | Tween a node property in the running game |
| game_get_nodes_in_groupA | 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_nodeB | 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_fileC | Read a text file from a Godot project |
| write_fileA | Create or overwrite a text file in a Godot project |
| delete_fileC | Delete a file from a Godot project |
| create_directoryC | 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_releaseA | Release a previously held key |
| game_scrollC | Send mouse scroll wheel event at position |
| game_mouse_dragC | Drag mouse between two points over N frames |
| game_gamepadC | Send gamepad button or axis input event |
| create_projectB | Create a new Godot project from scratch |
| create_csharp_scriptA | Create a C# script file in a Godot .NET project |
| manage_autoloadsB | Add, remove, or list autoloads in a Godot project |
| manage_input_mapB | Add, remove, or list input actions and bindings |
| manage_export_presetsC | Create or modify export preset configuration |
| game_get_cameraA | Get active camera position, rotation, and size |
| game_set_cameraC | Move or rotate the active camera |
| game_raycastC | 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_playC | 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_tilemapB | Get or set cells in a TileMapLayer node |
| game_add_collisionC | Add a collision shape to a physics body node |
| game_environmentC | Get or set environment and post-processing settings |
| game_manage_groupC | Add or remove a node from a group, or list groups |
| game_create_timerB | Create a Timer node with configuration |
| game_set_particlesC | Configure GPUParticles2D/3D node properties |
| game_create_animationB | Create an animation with tracks and keyframes |
| export_projectC | Export a Godot project using a preset |
| game_serialize_stateB | Save or load node tree state as JSON |
| game_physics_bodyC | Configure physics body properties (mass, velocity, etc.) |
| game_create_jointB | Create a physics joint between two bodies |
| game_bone_poseB | Get or set bone poses on a Skeleton3D node |
| game_ui_themeB | Apply theme overrides to a Control node |
| game_viewportC | Create or configure a SubViewport node |
| game_debug_drawB | Draw debug lines, spheres, or boxes in 3D |
| game_http_requestC | HTTP GET/POST/PUT/DELETE with headers and body |
| game_websocketC | WebSocket client connect/disconnect/send messages |
| game_multiplayerC | ENet multiplayer create server/client/disconnect |
| game_rpcC | Call or configure RPC methods on nodes |
| game_touchC | Simulate touch press/release/drag and gestures |
| game_input_stateC | Query pressed keys, mouse position, connected pads |
| game_input_actionC | Manage runtime InputMap actions and strength |
| game_list_signalsB | List all signals on a node with connections |
| game_await_signalB | Await a signal with timeout and return args |
| game_scriptC | Attach, detach, or get source of node scripts |
| game_windowC | Get/set window size, fullscreen, title, position |
| game_os_infoA | Get platform, locale, screen, adapter, memory info |
| game_time_scaleB | Get/set Engine.time_scale and timing info |
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/tugcantopaloglu/godot-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server