godot-mcp
Provides tools for launching the Godot editor, running projects, capturing debug output, managing scenes and nodes, and analyzing project structure.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@godot-mcp Run my Godot project and show debug output"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Godot MCP
A Model Context Protocol (MCP) server for interacting with the Godot game engine.
Introduction
Godot MCP enables AI assistants to launch the Godot editor, run projects, capture debug output, and control project execution - all through a standardized interface.
This direct feedback loop helps AI assistants like Claude understand what works and what doesn't in real Godot projects, leading to better code generation and debugging assistance.
Related MCP server: Godot MCP
Features
Launch Godot Editor: Open Godot editor for a specific project
Run Godot Projects: Execute Godot projects in debug mode
Capture Debug Output: Retrieve console output and error messages
Control Execution: Start and stop Godot projects programmatically
Get Godot Version: Retrieve the installed Godot version
List Godot Projects: Find Godot projects in a specified directory
Project Analysis: Get detailed information about project structure
Scene Management:
Create new scenes with specified root node types
Add nodes to existing scenes with customizable properties
Load sprites and textures into Sprite2D nodes
Export 3D scenes as MeshLibrary resources for GridMap
Save scenes with options for creating variants
UID Management (for Godot 4.4+):
Get UID for specific files
Update UID references by resaving resources
Requirements
Godot Engine installed on your system
Python >= 3.10
uv package manager (includes
uvxtool, no extra installation needed)An AI assistant that supports MCP (Cline, Cursor, etc.)
What is uvx?
uvxis a tool included with the uv package manager that lets you run Python applications directly from GitHub without cloning the repository or managing virtual environments manually. Once you install uv, theuvxcommand becomes automatically available.Benefits of using uvx:
No need to clone the repository
Automatically manages dependencies and virtual environments
Always runs the latest version
Simplifies the configuration process
Installation
Prerequisites
Install Python 3.10 or later
Install uv package manager (includes uvx):
curl -LsSf https://astral.sh/uv/install.sh | shOr follow the uv installation guide
After installation, you can run
uv --versionanduvx --versionto verify your installation.
Step 1: Run Server
Recommended: Use uvx (No Clone Required)
Recommended Method - Use uvx to run directly from GitHub without cloning:
uvx --from "git+https://github.com/ChanceFlow/godot-mcp@main" godot-mcpAlternative: Local Development (For Contributing)
Only clone the repository if you plan to contribute or develop locally:
git clone https://github.com/ChanceFlow/godot-mcp.git
cd godot-mcp
uv sync
uv run python godot_mcp/server.pyStep 2: Configure with Your AI Assistant
Recommended: Use uvx
Add to your AI assistant's MCP settings (recommended for most users):
For Cline (~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json):
{
"mcpServers": {
"godot": {
"command": "uvx",
"args": ["--from", "git+https://github.com/ChanceFlow/godot-mcp@main", "godot-mcp"],
"env": {
"DEBUG": "true"
},
"disabled": false,
"autoApprove": [
"launch_editor",
"run_project",
"get_debug_output",
"stop_project",
"get_godot_version",
"list_projects",
"get_project_info",
"create_scene",
"add_node",
"load_sprite",
"export_mesh_library",
"save_scene",
"get_uid",
"update_project_uids"
]
}
}
}For Cursor UI:
Go to Cursor Settings > Features > MCP
Click on + Add New MCP Server button
Fill out form:
Name:
godot(or any name you prefer)Type:
commandCommand:
uvx --from "git+https://github.com/ChanceFlow/godot-mcp@main" godot-mcp
Click "Add"
You may need to press refresh button in top right corner of MCP server card to populate tool list
For Cursor (Project-Specific):
Create a file at .cursor/mcp.json in your project directory:
{
"mcpServers": {
"godot": {
"command": "uvx",
"args": ["--from", "git+https://github.com/ChanceFlow/godot-mcp@main", "godot-mcp"],
"env": {
"DEBUG": "true"
}
}
}
}Alternative: Local Development (For Contributing)
Only use this if you've cloned the repository locally:
For Cline:
{
"mcpServers": {
"godot": {
"command": "uv",
"args": ["run", "python", "godot_mcp/server.py"],
"env": {
"DEBUG": "true"
}
}
}
}For Cursor: Use uv run python godot_mcp/server.py as the command.
Step 3: Optional Environment Variables
You can customize the server behavior with these environment variables:
GODOT_PATH: Path to the Godot executable (overrides automatic detection)DEBUG: Set to "true" to enable detailed server-side debug logging
Example Prompts
Once configured, your AI assistant will automatically run the MCP server when needed. You can use prompts like:
"Launch the Godot editor for my project at /path/to/project"
"Run my Godot project and show me any errors"
"Get information about my Godot project structure"
"Help me debug this error in my Godot project: [paste error]"
"Write a GDScript for a character controller with double jump and wall sliding"
"Create a new scene with a Player node in my Godot project"
"Add a Sprite2D node to my player scene and load the character texture"
"Export my 3D models as a MeshLibrary for use with GridMap"
"Create a UI scene with buttons and labels for my game's main menu"
"Get the UID for a specific script file in my Godot 4.4 project"
"Update UID references in my Godot project after upgrading to 4.4"Implementation Details
Architecture
The Godot MCP server uses a bundled GDScript approach for complex operations:
Direct Commands: Simple operations like launching the editor or getting project info use Godot's built-in CLI commands directly.
Bundled Operations Script: Complex operations like creating scenes or adding nodes use a single, comprehensive GDScript file (
godot_operations.gd) that handles all operations.
This architecture provides several benefits:
No Temporary Files: Eliminates the need for temporary script files, keeping your system clean
Simplified Codebase: Centralizes all Godot operations in one (somewhat) organized file
Better Maintainability: Makes it easier to add new operations or modify existing ones
Improved Error Handling: Provides consistent error reporting across all operations
Reduced Overhead: Minimizes file I/O operations for better performance
The bundled script accepts operation type and parameters as JSON, allowing for flexible and dynamic operation execution without generating temporary files for each operation.
Development
Running the Server
Direct execution:
uv run python godot_mcp/server.pyDevelopment mode with MCP Inspector:
uv run mcp dev godot_mcp/server.pyTesting
Run tests with pytest:
pytestTroubleshooting
Godot Not Found: Set the GODOT_PATH environment variable to your Godot executable
Connection Issues: Ensure the server is running and restart your AI assistant
Invalid Project Path: Ensure the path points to a directory containing a project.godot file
Python Version: Ensure you're using Python 3.10 or later
License
This project is licensed under the MIT License - see the LICENSE file for details.
Available Tools
84 toolsanimation_add_trackA
Add a track to an existing animation.
Category: Animation
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) animation_name: Name of the animation track_type: Type of track (value, method, bezier, audio, animation) track_path: Node path for the track (e.g., "Player:position")
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), animation_name (required), track_type (required), +1 more. Returns: result
animation_createA
Create an Animation resource and add it to a scene.
Category: Animation
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) animation_name: Name of the animation to create duration: Duration of the animation in seconds (default: 1.0) loop: Whether the animation should loop (default: False)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), animation_name (required), duration, +1 more. Returns: result
animation_get_infoA
Get information about an animation.
Category: Animation
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) animation_name: Name of the animation
Returns: JSON string containing animation information or error description
Inputs: project_path (required), scene_path (required), animation_name (required). Returns: result
animation_listA
List all animations in a scene.
Category: Animation
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project)
Returns: JSON string containing list of animations or error description
Inputs: project_path (required), scene_path (required). Returns: result
animation_set_keyframeA
Set a keyframe in an animation track.
Category: Animation
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) animation_name: Name of the animation track_index: Index of the track (0-based) time: Time position for the keyframe in seconds value: Value for the keyframe (JSON string for complex values)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), animation_name (required), track_index (required), +2 more. Returns: result
audio_add_stream_playerC
Add an audio stream player node to a scene.
Category: Audio
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node player_name: Name for the new audio player node player_type: Type of player (AudioStreamPlayer, AudioStreamPlayer2D, AudioStreamPlayer3D, default: AudioStreamPlayer) autoplay: Whether to start playing automatically (default: False)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), player_name (required), +2 more. Returns: result
audio_configure_busB
Configure an audio bus in the project.
Category: Audio
Args: project_path: Path to the Godot project directory bus_name: Name of the audio bus (e.g., "Master", "Music", "SFX") volume_db: Volume in decibels (range: -80 to 24) mute: Whether to mute the bus solo: Whether to solo the bus (mute all other buses)
Returns: Success message or error description
Inputs: project_path (required), bus_name (required), volume_db, mute, +1 more. Returns: result
audio_set_streamB
Set an audio stream for an audio player.
Category: Audio
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) player_path: Path to the audio player node audio_file_path: Path to the audio file (relative to project, e.g., "sounds/music.ogg") volume_db: Volume in decibels (default: 0.0, range: -80 to 24) pitch_scale: Pitch scaling factor (default: 1.0, range: 0.01 to 4.0)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), player_path (required), audio_file_path (required), +2 more. Returns: result
autoload_addA
Add an autoload singleton to the project.
Category: Autoload
Args: project_path: Path to the Godot project directory name: Name of the autoload (will be accessible as global) script_path: Path to the script file (relative to project)
Returns: Success message or error description
Inputs: project_path (required), name (required), script_path (required). Returns: result
autoload_listA
List all autoload singletons in the project.
Category: Autoload
Args: project_path: Path to the Godot project directory
Returns: JSON string containing list of autoloads or error description
Inputs: project_path (required). Returns: result
autoload_removeA
Remove an autoload singleton from the project.
Category: Autoload
Args: project_path: Path to the Godot project directory name: Name of the autoload to remove
Returns: Success message or error description
Inputs: project_path (required), name (required). Returns: result
camera_addA
Add a camera node to a scene.
Category: Camera
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node camera_name: Name for the new camera node camera_type: Type of camera (Camera2D or Camera3D, default: Camera2D) make_current: Whether to make this the current/active camera (default: True)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), camera_name (required), +2 more. Returns: result
camera_get_infoA
Get information about a camera.
Category: Camera
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) camera_path: Path to the camera node
Returns: JSON string containing camera information or error description
Inputs: project_path (required), scene_path (required), camera_path (required). Returns: result
camera_set_currentC
Set a camera as the current/active camera.
Category: Camera
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) camera_path: Path to the camera node
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), camera_path (required). Returns: result
camera_set_propertiesA
Set properties for a camera.
Category: Camera
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) camera_path: Path to the camera node zoom: Zoom level as JSON array [x, y] (Camera2D only) offset: Offset as JSON array [x, y] (Camera2D) or [x, y, z] (Camera3D) fov: Field of view in degrees (Camera3D only, default: 75) near: Near clipping plane distance (Camera3D only, default: 0.05) far: Far clipping plane distance (Camera3D only, default: 4000)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), camera_path (required), zoom, +4 more. Returns: result
canvas_layer_addA
Add a CanvasLayer node to organize UI elements by depth.
Category: CanvasLayer
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node layer_name: Name for the new canvas layer layer_order: Layer rendering order (higher values render on top, default: 0)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), layer_name (required), +1 more. Returns: result
canvas_layer_configureB
Configure properties of a CanvasLayer.
Category: CanvasLayer
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) layer_path: Path to the canvas layer node offset: Offset as JSON array [x, y] rotation: Rotation in radians scale: Scale as JSON array [x, y] follow_viewport: Whether to follow the viewport
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), layer_path (required), offset, +3 more. Returns: result
canvas_layer_set_orderB
Set the rendering order of a CanvasLayer.
Category: CanvasLayer
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) layer_path: Path to the canvas layer node layer_order: Layer rendering order (higher values render on top)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), layer_path (required), layer_order (required). Returns: result
collision_add_shapeA
Add a collision shape to a CollisionObject2D/3D node.
Category: Collision
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the CollisionObject node (e.g., "Player", "Enemy/CollisionObject2D") shape_type: Type of collision shape (RectangleShape2D, CircleShape2D, BoxShape3D, SphereShape3D, CapsuleShape2D, etc.) shape_properties: JSON string of shape properties (e.g., '{"size": [10, 20]}' for rectangle)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), shape_type (required), +1 more. Returns: result
collision_set_layersB
Configure collision layers and masks for a CollisionObject node.
Category: Collision
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the CollisionObject node collision_layer: Collision layer bitmask (which layers this object is on) collision_mask: Collision mask bitmask (which layers this object can collide with)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), collision_layer, +1 more. Returns: result
collision_set_shape_propertiesB
Set properties of a collision shape.
Category: Collision
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the CollisionShape node shape_index: Index of the shape (0 for first CollisionShape child) properties: JSON string of properties to set (e.g., '{"size": [20, 30], "position": [5, 0]}')
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), shape_index (required), +1 more. Returns: result
editor_launchB
Launch the Godot editor for a specific project.
Category: Editor
Args: project_path: Path to the Godot project directory
Inputs: project_path (required). Returns: result
environment_setupB
Set up environment and ambient lighting for a 3D scene.
Category: Light
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node environment_name: Name for the WorldEnvironment node (default: "WorldEnvironment") ambient_light_color: Ambient light color as JSON array [r, g, b] ambient_light_energy: Ambient light energy/intensity background_mode: Background mode (Sky, Color, Custom, default: Sky) sky_color: Sky color as JSON array [r, g, b] (for Color background mode)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), environment_name, +4 more. Returns: result
godot_get_versionA
Get the installed Godot version.
Category: Godot
Inputs: no named parameters. Returns: result
input_list_actionsA
List all input actions defined in the project's input map.
Category: Input
Args: project_path: Path to the Godot project directory
Returns: JSON containing all input actions with their key bindings
Inputs: project_path (required). Returns: result
input_setup_actionA
Set up an input action with key bindings in the project's input map.
Category: Input
Args: project_path: Path to the Godot project directory action_name: Name of the input action (e.g., "jump", "move_left") keys: List of key strings to bind (e.g., ["Space", "W", "Ctrl+S"]) Supported keys: A-Z, 0-9, F1-F12, Space, Enter, Tab, Escape, Arrow keys (Up, Down, Left, Right), and modifiers (Ctrl+, Alt+, Shift+, Meta+)
Inputs: project_path (required), action_name (required), keys (required). Returns: result
light_addA
Add a light source to a 3D scene.
Category: Light
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node light_name: Name for the new light node light_type: Type of light (DirectionalLight3D, OmniLight3D, SpotLight3D, default: DirectionalLight3D) Note: PointLight3D is deprecated in Godot 4.x, use OmniLight3D instead energy: Light energy/intensity (default: 1.0) color: Light color as JSON array [r, g, b] with values 0-1 (default: [1, 1, 1] white)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), light_name (required), +3 more. Returns: result
light_set_propertiesB
Set properties of a light source.
Category: Light
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) light_path: Path to the light node energy: Light energy/intensity color: Light color as JSON array [r, g, b] range: Light range (for PointLight3D/SpotLight3D) attenuation: Attenuation curve (for PointLight3D/SpotLight3D) spot_angle: Spot angle in degrees (for SpotLight3D) spot_attenuation: Spot attenuation curve (for SpotLight3D)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), light_path (required), energy, +5 more. Returns: result
light_set_shadowB
Configure shadow settings for a light source.
Category: Light
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) light_path: Path to the light node shadow_enabled: Whether shadows are enabled (default: True) shadow_bias: Shadow bias to reduce shadow acne shadow_blur: Shadow blur amount
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), light_path (required), shadow_enabled, +2 more. Returns: result
node_addB
Add a node to an existing scene.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_type: Type of node to add (e.g., Sprite2D, CollisionShape2D) node_name: Name for the new node parent_node_path: Path to the parent node (e.g., "root" or "root/Player") properties: Optional properties to set on the node
Inputs: project_path (required), scene_path (required), node_type (required), node_name (required), +2 more. Returns: result
node_add_to_groupA
Add a node to a group.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node (e.g., "root/Player") group_name: Name of the group to add the node to persistent: Whether the group membership persists when saved (default: True)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), group_name (required), +1 more. Returns: result
node_deleteA
Delete a node from a scene.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node to delete (e.g., "root/Player")
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required). Returns: result
node_duplicateB
Duplicate a node in a scene.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node to duplicate (e.g., "root/Player") new_name: Optional name for the duplicate (default: original name + number)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), new_name. Returns: result
node_get_propertiesA
Get all properties of a specific node in a scene.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node within the scene (e.g., "root" or "root/Player/Sprite2D") include_inherited: Whether to include inherited properties (default: False)
Returns: JSON containing the node's properties with their names, values, and types
Inputs: project_path (required), scene_path (required), node_path (required), include_inherited. Returns: result
node_load_sprite_textureA
Load a sprite into a Sprite2D node.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the Sprite2D node (e.g., "root/Player/Sprite2D") texture_path: Path to the texture file (relative to project)
Inputs: project_path (required), scene_path (required), node_path (required), texture_path (required). Returns: result
node_renameA
Rename a node in a scene.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node to rename (e.g., "root/OldName") new_name: New name for the node
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), new_name (required). Returns: result
node_reparentB
Move a node to a new parent in a scene (reparent).
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node to move (e.g., "root/Player") new_parent_path: Path to the new parent node (e.g., "root/Entities")
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), new_parent_path (required). Returns: result
node_set_propertyA
Set a property value on a node in a scene.
Category: Node
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node (e.g., "root" or "root/Player") property_name: Name of the property to set (e.g., "position", "scale", "visible") property_value: Value to set (supports int, float, string, bool, dict for Vector2/3, list)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), property_name (required), +1 more. Returns: result
particle_add_systemA
Add a particle system to a scene.
Category: Particle
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node particle_name: Name for the new particle system particle_type: Type of particle system (CPUParticles2D, CPUParticles3D, GPUParticles2D, GPUParticles3D, default: CPUParticles2D) amount: Number of particles (default: 8) emitting: Whether to start emitting immediately (default: True)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), particle_name (required), +3 more. Returns: result
particle_set_propertiesB
Set properties of a particle system.
Category: Particle
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) particle_path: Path to the particle system node lifetime: Particle lifetime in seconds speed_scale: Speed scale multiplier explosiveness: Explosiveness ratio (0-1) randomness: Emission randomness (0-1) direction: Emission direction as JSON array [x, y] or [x, y, z] spread: Emission spread angle in degrees gravity: Gravity vector as JSON array [x, y] or [x, y, z] initial_velocity_min: Minimum initial velocity initial_velocity_max: Maximum initial velocity
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), particle_path (required), lifetime, +8 more. Returns: result
particle_start_emittingB
Start or stop particle emission.
Category: Particle
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) particle_path: Path to the particle system node emitting: Whether to emit particles (default: True)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), particle_path (required), emitting. Returns: result
physics_set_body_propertiesA
Set physics properties for a RigidBody2D/3D node.
Category: Physics
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the RigidBody node mass: Mass of the body in kg (default: 1.0) friction: Friction coefficient 0-1 (default: 1.0) bounce: Bounce/restitution coefficient 0-1 (default: 0.0) gravity_scale: Gravity scale multiplier (default: 1.0) linear_damp: Linear damping (default: 0.0) angular_damp: Angular damping (default: 0.0)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), mass, +5 more. Returns: result
project_exportA
Export a Godot project using the specified export preset.
Category: Project
Args: project_path: Path to the Godot project directory preset_name: Name of the export preset (as defined in export_presets.cfg) output_path: Path where the exported file will be saved debug: If True, export a debug build (default: False for release) export_pack: If True, export only a PCK file (default: False for full export)
Inputs: project_path (required), preset_name (required), output_path (required), debug, +1 more. Returns: result
project_get_debug_outputA
Get the current debug output and errors.
Category: Project
Inputs: no named parameters. Returns: result
project_get_infoB
Retrieve metadata about a Godot project.
Category: Project
Args: project_path: Path to the Godot project directory
Inputs: project_path (required). Returns: result
project_listA
List Godot projects in a directory.
Category: Project
Args: directory: Directory to search for Godot projects recursive: Whether to search recursively (default: false)
Inputs: directory (required), recursive. Returns: result
project_list_export_presetsA
List available export presets for a Godot project.
Category: Project
Args: project_path: Path to the Godot project directory
Inputs: project_path (required). Returns: result
project_runA
Run the Godot project and capture output.
Category: Project
Args: project_path: Path to the Godot project directory scene: Optional specific scene to run
Inputs: project_path (required), scene. Returns: result
project_setting_getA
Get a project setting value from project.godot.
Category: Project
Args: project_path: Path to the Godot project directory setting_key: The setting key (e.g., "display/window/size/viewport_width")
Inputs: project_path (required), setting_key (required). Returns: result
project_setting_setB
Set a project setting in project.godot.
Category: Project
Args: project_path: Path to the Godot project directory setting_key: The setting key (e.g., "display/window/size/viewport_width") setting_value: The value to set (int, float, string, or bool)
Inputs: project_path (required), setting_key (required), setting_value (required). Returns: result
project_stopA
Stop the currently running Godot project.
Category: Project
Inputs: no named parameters. Returns: result
project_update_uidsB
Update UID references in a Godot project by resaving resources (for Godot 4.4+).
Category: Project
Args: project_path: Path to the Godot project directory
Inputs: project_path (required). Returns: result
resource_create_materialA
Create a StandardMaterial3D resource and optionally assign it to a node.
Category: Resource
Args: project_path: Path to the Godot project directory save_path: Path where the material will be saved (e.g., "materials/red.tres") albedo_color: Base color as hex string (e.g., "#FF0000") or color name (e.g., "red") roughness: Surface roughness (0.0 = smooth/reflective, 1.0 = rough) metallic: Metallic value (0.0 = non-metal, 1.0 = metal) emission_enabled: Enable emission/glow effect emission_color: Emission color as hex string or color name emission_energy: Emission intensity multiplier transparency: Transparency mode ("disabled", "alpha", "alpha_scissor", "alpha_hash") cull_mode: Face culling mode ("back", "front", "disabled") scene_path: Optional scene path to assign the material to a node target_node_path: Optional node path to assign the material (e.g., "root/MeshInstance3D")
Inputs: project_path (required), save_path (required), albedo_color, roughness, +8 more. Returns: result
resource_export_mesh_libraryA
Export a scene as a MeshLibrary resource.
Category: Resource
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (.tscn) to export output_path: Path where the mesh library (.res) will be saved mesh_item_names: Optional names of specific mesh items to include (defaults to all)
Inputs: project_path (required), scene_path (required), output_path (required), mesh_item_names. Returns: result
resource_get_material_propertiesA
Get properties from a material resource file.
Category: Resource
Args: project_path: Path to the Godot project directory material_path: Path to the material file (e.g., "materials/red.tres")
Returns: JSON containing material properties: type, albedo_color, metallic, roughness, etc.
Inputs: project_path (required), material_path (required). Returns: result
resource_get_uidA
Get the UID for a specific file in a Godot project (for Godot 4.4+).
Category: Resource
Args: project_path: Path to the Godot project directory file_path: Path to the file (relative to project) for which to get the UID
Inputs: project_path (required), file_path (required). Returns: result
resource_listA
List resource files in a Godot project.
Category: Resource
Args: project_path: Path to the Godot project directory directory: Optional subdirectory to search in (relative to project root) extensions: List of file extensions to include (default: common asset types) recursive: Whether to search recursively (default: True)
Returns: JSON containing categorized resource files
Inputs: project_path (required), directory, extensions, recursive. Returns: result
scene_createB
Create a new Godot scene file.
Category: Scene
Args: project_path: Path to the Godot project directory scene_path: Path where the scene file will be saved (relative to project) root_node_type: Type of the root node (e.g., Node2D, Node3D)
Inputs: project_path (required), scene_path (required), root_node_type. Returns: result
scene_get_treeA
Get the node tree structure of a scene.
Category: Scene
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) max_depth: Maximum depth to traverse (-1 for unlimited, default: -1)
Returns: JSON containing the scene's node tree with node names, types, and children
Inputs: project_path (required), scene_path (required), max_depth. Returns: result
scene_instantiateA
Instance a scene as a child node in another scene.
Category: Scene
Args: project_path: Path to the Godot project directory target_scene_path: Path to the scene where the instance will be added source_scene_path: Path to the scene to instance (e.g., "scenes/player.tscn") parent_node_path: Path to the parent node (default: "root") instance_name: Optional custom name for the instance
Returns: Success message or error description
Inputs: project_path (required), target_scene_path (required), source_scene_path (required), parent_node_path, +1 more. Returns: result
scene_listA
List all scene files (.tscn) in a Godot project.
Category: Scene
Args: project_path: Path to the Godot project directory directory: Optional subdirectory to search in (relative to project root) recursive: Whether to search recursively (default: True)
Returns: JSON array containing scene file paths relative to project root
Inputs: project_path (required), directory, recursive. Returns: result
scene_saveC
Save changes to a scene file.
Category: Scene
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) new_path: Optional new path to save the scene to (for creating variants)
Inputs: project_path (required), scene_path (required), new_path. Returns: result
script_attachB
Attach a GDScript file to a node in a scene.
Category: Script
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node (e.g., "root" or "root/Player") script_path: Path to the script file (relative to project)
Inputs: project_path (required), scene_path (required), node_path (required), script_path (required). Returns: result
script_createB
Create a new GDScript file.
Category: Script
Args: project_path: Path to the Godot project directory script_path: Path for the new script (relative to project, e.g., "scripts/player.gd") extends_type: Base class the script extends (default: "Node") content: Optional full script content. If not provided, creates a template.
Returns: Success message or error description
Inputs: project_path (required), script_path (required), extends_type, content. Returns: result
script_detachB
Detach a script from a node in a scene.
Category: Script
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node (e.g., "root" or "root/Player")
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required). Returns: result
script_listA
List all GDScript files (.gd) in a Godot project.
Category: Script
Args: project_path: Path to the Godot project directory directory: Optional subdirectory to search in (relative to project root) recursive: Whether to search recursively (default: True)
Returns: JSON array containing script file paths relative to project root
Inputs: project_path (required), directory, recursive. Returns: result
signal_connectB
Connect a signal from one node to a method on another node.
Category: Signal
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) source_node_path: Path to the source node that emits the signal (e.g., "root/Button") signal_name: Name of the signal to connect (e.g., "pressed") target_node_path: Path to the target node that receives the signal (e.g., "root/Handler") method_name: Name of the method to call on the target node (e.g., "_on_button_pressed")
Inputs: project_path (required), scene_path (required), source_node_path (required), signal_name (required), +2 more. Returns: result
signal_disconnectC
Disconnect a signal connection in a scene.
Category: Signal
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) source_node_path: Path to the node that emits the signal signal_name: Name of the signal to disconnect target_node_path: Path to the node that receives the signal method_name: Name of the method to disconnect
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), source_node_path (required), signal_name (required), +2 more. Returns: result
signal_list_connectionsA
List all signal connections in a scene or for a specific node.
Category: Signal
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Optional path to a specific node (if None, lists all connections in scene)
Returns: JSON containing signal connections with source, signal name, target, and method
Inputs: project_path (required), scene_path (required), node_path. Returns: result
signal_list_node_signalsA
List all signals available on a node.
Category: Signal
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the node (e.g., "root" or "root/Button")
Returns: JSON containing the node's available signals with their parameters
Inputs: project_path (required), scene_path (required), node_path (required). Returns: result
tilemap_get_cellA
Get cell data from a TileMap or TileMapLayer node.
Category: TileMap
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the TileMap or TileMapLayer node (e.g., "root/TileMap") x: X coordinate of the cell y: Y coordinate of the cell layer: Layer index for TileMap nodes (ignored for TileMapLayer, default: 0)
Returns: JSON containing cell data: source_id, atlas_coords, alternative_tile, is_empty
Inputs: project_path (required), scene_path (required), node_path (required), x (required), +2 more. Returns: result
tilemap_set_cellB
Set a cell in a TileMap or TileMapLayer node.
Category: TileMap
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the TileMap or TileMapLayer node (e.g., "root/TileMap") x: X coordinate of the cell y: Y coordinate of the cell source_id: ID of the tile source/tileset (default: 0) atlas_x: X coordinate in the tile atlas (default: 0) atlas_y: Y coordinate in the tile atlas (default: 0) layer: Layer index for TileMap nodes (ignored for TileMapLayer, default: 0) alternative_tile: Alternative tile ID (default: 0)
Inputs: project_path (required), scene_path (required), node_path (required), x (required), +6 more. Returns: result
timer_addA
Add a Timer node to a scene.
Category: Timer
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node timer_name: Name for the new timer node wait_time: Time in seconds to wait before timeout signal (default: 1.0) one_shot: If true, timer stops after timeout (default: False) autostart: If true, timer starts automatically (default: False)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), timer_name (required), +3 more. Returns: result
timer_configureA
Configure properties of an existing Timer node.
Category: Timer
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) timer_path: Path to the timer node wait_time: Time in seconds to wait before timeout signal one_shot: If true, timer stops after timeout autostart: If true, timer starts automatically
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), timer_path (required), wait_time, +2 more. Returns: result
ui_add_containerA
Add a UI container node to organize controls.
Category: UI
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node container_type: Type of container (VBoxContainer, HBoxContainer, GridContainer, MarginContainer, etc.) container_name: Name for the new container node
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), container_type (required), +1 more. Returns: result
ui_add_controlA
Add a UI control node to a scene.
Category: UI
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node control_type: Type of control (Button, Label, Panel, LineEdit, TextureRect, etc.) control_name: Name for the new control node text: Text content for controls that support it (Button, Label, etc.)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), control_type (required), +2 more. Returns: result
ui_set_layoutA
Set layout properties for a UI control.
Category: UI
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) node_path: Path to the control node anchor_preset: Preset name (FullRect, CenterTop, Center, etc.) position: Position as JSON array [x, y] size: Size as JSON array [width, height] anchors: Custom anchors as JSON object {"left": 0, "top": 0, "right": 1, "bottom": 1}
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), node_path (required), anchor_preset, +3 more. Returns: result
viewport_addC
Add a SubViewport node to a scene for rendering to texture.
Category: Viewport
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) parent_node_path: Path to the parent node viewport_name: Name for the new viewport node width: Viewport width in pixels (default: 1024) height: Viewport height in pixels (default: 600)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), parent_node_path (required), viewport_name (required), +2 more. Returns: result
viewport_configureB
Configure rendering options for a SubViewport.
Category: Viewport
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) viewport_path: Path to the viewport node transparent_bg: Whether to use a transparent background handle_input_locally: Whether to handle input locally render_target_update_mode: Update mode (Disabled, Once, WhenVisible, WhenParentVisible, Always) msaa: MSAA mode (Disabled, 2x, 4x, 8x)
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), viewport_path (required), transparent_bg, +3 more. Returns: result
viewport_set_sizeC
Set the size of a SubViewport.
Category: Viewport
Args: project_path: Path to the Godot project directory scene_path: Path to the scene file (relative to project) viewport_path: Path to the viewport node width: New width in pixels height: New height in pixels
Returns: Success message or error description
Inputs: project_path (required), scene_path (required), viewport_path (required), width (required), +1 more. Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 84 tools
Tools are grouped by categories (Animation, Audio, Node, etc.) with clear, distinct actions. Within each category, each tool has a unique purpose (e.g., animation_create vs animation_add_track), minimizing confusion.
The naming pattern is predominantly 'category_action' in snake_case, which is consistent. Minor deviations like 'configure' vs 'set' (timer_configure vs node_set_property) and some longer names slightly break uniformity.
At 84 tools, the server is very comprehensive. While each tool feels justified by Godot's breadth, the count is high and could be overwhelming or excessive for simpler use cases.
The tool set covers a wide range of Godot subsystems (animation, audio, physics, UI, etc.). Missing some actions like removing animation tracks or audio players, but core workflows are well-supported.
Maintenance
Related MCP Connectors
AI game maker: build, run, screenshot and play-test Godot and retro console games in a live project
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to control Unreal E…
Control Unreal Engine to browse assets, import content, and manage levels and sequences. Automate…
Publish web games on Gamealia from AI assistants: SDK, autotest, listing, upload. Local or remote.
121
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with the Godot game engine by launching the editor, running projects, capturing debug output, managing scenes and nodes, and controlling project execution through a standardized interface.18194 npm11MIT
- AlicenseBqualityNot gradedmaintenanceEnables AI assistants to interact with the Godot game engine by launching the editor, running projects, capturing debug output, managing scenes and nodes, and controlling project execution through a standardized interface.14194 npm1-
- AlicenseCqualityDmaintenanceEnables AI assistants to interact with and manipulate Godot game engine projects, including creating projects, launching editor, managing scenes and nodes.12807 npm1MIT
- AlicenseAqualityDmaintenanceEnables AI agents to launch, edit, debug, and test Godot game projects with comprehensive scene and script manipulation tools.501MIT