Godot MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GODOT_PATH | No | Path to Godot executable (optional, auto-detected) |
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 |
|---|---|
| add_animation_libraryC | Add animation library to player. |
| add_animation_trackC | Add track to animation. |
| add_audio_busC | Add audio bus to layout. |
| add_autoloadC | Add an autoload entry. |
| add_bus_effectC | Add effect to audio bus. |
| add_input_bindingA | Add key/mouse/joypad binding to action. |
| add_nodeC | Add a node to a scene. |
| add_script_exportB | Add @export variable to GDScript. |
| add_script_functionC | Append a function to GDScript. |
| add_script_signalB | Add a signal declaration to GDScript. |
| add_shader_graph_nodeB | Add a node to a VisualShader graph. 40+ node types available (constants, math, textures, effects). |
| add_theme_typeC | Add a control type (font size/color) to a Theme. |
| add_tileset_sourceB | Add an atlas source (texture) to a TileSet. |
| add_translation_keyA | Append a translation key/row to an existing CSV. |
| attach_scriptC | Attach a script to a node. |
| capture_screenshotC | Capture screenshot of running game. |
| clone_nodeC | Deep-clone a node in a scene. |
| compile_shaderA | Compile (reimport) a .gdshader via Godot editor or local validation. |
| connect_shader_graph_nodesB | Connect two node ports in a VisualShader graph. |
| connect_signalC | Connect a signal between nodes. |
| create_animationB | Create Animation .tres resource. |
| create_atlas_textureC | Create AtlasTexture .tres. |
| create_audio_bus_layoutD | Create AudioBusLayout. |
| create_camera_attributesB | Create CameraAttributes (Practical or Physical) for 3D camera DOF and auto-exposure. |
| create_collision_polygonC | Create CollisionPolygon2D. |
| create_curveC | Create Curve .tres. |
| create_directoryC | Create a directory in project. |
| create_environmentC | Create Environment from preset. |
| create_gdextensionB | Create a .gdextension config file. |
| create_gradientC | Create Gradient .tres. |
| create_grid_mapC | Create a GridMap node for 3D tile-based level design. |
| create_image_textureA | Create an ImageTexture .tres pointing at an image file. |
| create_jointB | Create a physics joint. |
| create_mesh_primitiveA | Create 3D mesh resource: Box, Capsule, Cylinder, Plane, Sphere, Torus, etc. (11 types). |
| create_multimeshB | Create a MultiMesh .tres resource. |
| create_nav_linkB | Create a NavigationLink3D between two points. |
| create_nav_meshC | Create NavigationMesh .tres. |
| create_noise_textureC | Create NoiseTexture2D. |
| create_physics_materialC | Create PhysicsMaterial. |
| create_resourceC | Create a resource from template. |
| create_sceneC | Create a new scene from template. |
| create_scriptC | Create a new script from template. |
| create_shaderB | Create a new .gdshader from template. |
| create_shader_includeB | Create a .gdshaderinc file. |
| create_skyB | Create a Sky .tres with a procedural or panorama sky material. |
| create_spring_armA | Create a SpringArm3D for smooth camera follow. |
| create_sprite_framesC | Create a SpriteFrames .tres resource with named animations. |
| create_themeB | Create a Theme .tres resource. |
| create_tilesetB | Create a TileSet .tres resource. |
| create_translationC | Create translation CSV. |
| create_vehicle_bodyC | Create a VehicleBody3D with VehicleWheel nodes for car physics. |
| create_visual_shaderB | Create a new VisualShader .tres graph file. |
| create_worldC | Create World3D .tres. |
| create_world_environmentC | Create a .tscn with a WorldEnvironment node referencing an Environment. |
| delete_fileA | Delete a file with .bak backup. |
| diff_animationB | Compare two Animation .tres files. |
| diff_project_configA | Compare two config files (project.godot, .cfg, .import) ignoring whitespace and comments. |
| diff_resourceC | Compare two resource files. |
| diff_sceneC | Compare two scene files. |
| diff_scriptA | Compare two GDScript files line-by-line. |
| disconnect_shader_graph_nodesB | Disconnect two node ports in a VisualShader graph. |
| disconnect_signalD | Disconnect a signal. |
| duplicate_resourceB | Duplicate a .tres resource. |
| duplicate_sceneC | Duplicate a scene file. |
| edit_sceneC | Apply batch operations to a scene. |
| editor_add_autoloadC | Add an autoload singleton via editor API. |
| editor_add_input_actionC | Add an input action via editor API. |
| editor_add_nodeC | Add a node to the currently open scene in editor. |
| editor_attach_scriptB | Attach a script to a node in the editor. |
| editor_bake_lightmapsB | Trigger lightmap baking. |
| editor_bake_navigationA | Bake navigation meshes for all NavigationRegion nodes in current scene. |
| editor_clear_errorsA | Clear the editor error list. |
| editor_connect_signalB | Connect a signal between nodes in the editor. |
| editor_copyA | Copy selected nodes to the editor clipboard. |
| editor_create_cameraA | Create a Camera3D node in the open scene. |
| editor_create_csg_boxA | Create a CSGBox3D node in the open scene. |
| editor_create_csg_cylinderB | Create a CSGCylinder3D node in the open scene. |
| editor_create_csg_mergeA | Create a CSGCombiner3D node in the open scene. |
| editor_create_csg_polygonB | Create a CSGPolygon3D node in the open scene. |
| editor_create_csg_sphereA | Create a CSGSphere3D node in the open scene. |
| editor_create_folderB | Create a directory in the project via editor filesystem. |
| editor_create_gpu_particlesA | Create a GPUParticles3D node in the open scene. |
| editor_create_mesh_instanceB | Create a MeshInstance3D node in the open scene. |
| editor_create_multiplayer_spawnerA | Create a MultiplayerSpawner3D node in the open scene. |
| editor_create_multiplayer_synchronizerB | Create a MultiplayerSynchronizer3D node in the open scene. |
| editor_create_sceneB | Create and open a new scene in the editor. |
| editor_create_scriptB | Create and open a new GDScript in the editor. |
| editor_cutA | Cut selected nodes to the editor clipboard (with undo). |
| editor_debug_breakB | Stop execution (break) in debugger. |
| editor_debug_continueB | Resume execution in debugger. |
| editor_debug_stepB | Step into next line in debugger. |
| editor_debug_step_overA | Step over current line in debugger. |
| editor_delete_assetC | Delete a file or folder via editor. |
| editor_delete_selectedA | Delete currently selected nodes. |
| editor_disable_pluginB | Disable a named editor plugin. |
| editor_disconnect_signalC | Disconnect a signal between nodes. |
| editor_duplicate_assetC | Duplicate a file via editor filesystem. |
| editor_duplicate_nodeB | Duplicate a node with children, scripts, and signals. |
| editor_enable_pluginB | Enable a named editor plugin. |
| editor_evaluate_expressionA | Evaluate a GDScript expression in debugger/editor context. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 358 tools
Several near-duplicates exist, such as capture_screenshot and runtime_screenshot, plus multiple status/health-check tools with overlapping purposes. With 358 tools and repeated add_/create_/write_, read_/list_/editor_get_, and set_/editor_set_ namespaces, an agent cannot reliably distinguish intent without searching, which the included search_tools tool implicitly acknowledges.
Tool names are almost entirely lowercase snake_case with a verb_noun shape, and editor_/runtime_ prefixes create recognizable namespaces. However, related operations use inconsistent verbs (add_input_binding vs write_input_action, create_scene vs editor_create_scene, read_ vs list_ vs editor_get_), and a few oddities like get_status and launch_editor break the strict pattern.
358 tools is an extreme mismatch for an MCP server surface; even with good categorization, it is far beyond what an agent can hold or reliably route between. The included search_tools tool is a workaround for tool discovery, not a solution to over-scoping.
The coverage is encyclopedic: editor automation, runtime debugging, scenes, resources, shaders, audio, navigation, physics, UI, project configuration, and exports all have read/list/create/set support. A few lifecycle gaps exist, such as some entity types having readers but no writers or removers, but these are minor relative to the enormous surface.