Skip to main content
Glama

Godot MCP

Github-sponsors

Made with Godot

中文文档

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 uvx tool, no extra installation needed)

  • An AI assistant that supports MCP (Cline, Cursor, etc.)

What is uvx?

uvx is 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, the uvx command 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

  1. Install Python 3.10 or later

  2. Install uv package manager (includes uvx):

    curl -LsSf https://astral.sh/uv/install.sh | sh

    Or follow the uv installation guide

    After installation, you can run uv --version and uvx --version to verify your installation.

Step 1: Run Server

Recommended Method - Use uvx to run directly from GitHub without cloning:

uvx --from "git+https://github.com/ChanceFlow/godot-mcp@main" godot-mcp

Alternative: 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.py

Step 2: Configure with Your AI Assistant

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:

  1. Go to Cursor Settings > Features > MCP

  2. Click on + Add New MCP Server button

  3. Fill out form:

    • Name: godot (or any name you prefer)

    • Type: command

    • Command: uvx --from "git+https://github.com/ChanceFlow/godot-mcp@main" godot-mcp

  4. Click "Add"

  5. 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:

  1. Direct Commands: Simple operations like launching the editor or getting project info use Godot's built-in CLI commands directly.

  2. 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.py

Development mode with MCP Inspector:

uv run mcp dev godot_mcp/server.py

Testing

Run tests with pytest:

pytest

Troubleshooting

  • 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 tools
animation_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

    B3.4/5.0

    Scored across 84 tools

    Disambiguation5/5

    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.

    Naming Consistency4/5

    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.

    Tool Count3/5

    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.

    Completeness4/5

    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

    ActivityNo data
    ResponsivenessSyncing

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables 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.
      18
      194 npm
      11
      MIT
    • A
      license
      B
      quality
      Not graded
      maintenance
      Enables 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.
      14
      194 npm
      1
      -
    • A
      license
      C
      quality
      D
      maintenance
      Enables AI assistants to interact with and manipulate Godot game engine projects, including creating projects, launching editor, managing scenes and nodes.
      12
      807 npm
      1
      MIT