Godot MCP
The Godot MCP server lets AI agents create, edit, and run full Godot 4.5+ games entirely through MCP tool calls.
Project Management
Detect and validate the Godot executable
Create new projects, scaffold folders, and inspect project structure (nested/tree view)
List and group resources (scripts, shaders, scenes, textures)
Update project settings (app name, window size, etc.)
Scene & Node Editing
Create and save new
.tscnscenes with normalized filenamesInspect scene trees, validate scenes (dry-run parse), and add nodes of any instantiable Godot type
Edit nodes: rename, reparent, delete, or adjust transforms
Get and update node properties and transforms (position, rotation, scale) for
Node2D,Node3D, andControlnodesAdd/update
WorldEnvironmentnodes and theirEnvironmentsettings
Mesh & Shader Tools
Add and edit 3D primitive meshes (
BoxMesh,SphereMesh,CylinderMesh, etc.) with initial transforms and parametersCreate
.gdshaderfiles from a starter template or custom shader code
Scripting
Attach existing
.gdscripts to nodes, or auto-generate a starter script and attach it
Running, Testing & Debugging
Open the Godot editor, run the main scene or a specific scene as a detached process
Run with capture: collect stdout, stderr, log excerpts, and parsed warnings/errors
Take screenshots (last rendered frame after a short run)
Profile rendering performance (FPS, frame time, draw calls, memory) and detailed CPU/physics/audio metrics
Record video (AVI/MP4) with optional camera waypoints (requires FFmpeg for MP4)
Documentation
Search local Godot API docs (generated from your installed binary) for classes, methods, properties, signals, and constants
Works with Claude, Codex, LMStudio, OpenCode, and other MCP-compatible clients. Supports per-tool or global Godot executable specification.
Optional integration enabling video recording and encoding capabilities. When available, the server uses FFmpeg to encode captured gameplay footage to MP4 format via the godot_record_video tool, complementing the default AVI output.
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 create a new 2D project named 'Platformer' and add a player scene"
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
godot-mcp is a dependency-free MCP server for Godot 4.5+. It lets AI agents create, edit, and run full Godot games entirely through MCP tool calls.
Tested with Codex and Claude. Should also work with LMStudio, OpenCode, and any other MCP-compatible client.


Features
Detect Godot (
godot_detect_executable) : Locates and validates the Godot executable so every subsequent tool knows which engine binary to use.Create Project (
godot_create_project) : Scaffolds a brand-new Godot project with the chosen name and parent directory, delegating to Godot itself so the output stays compatible with newer 4.x releases.Create Folder (
godot_create_folder) : Creates project-relative folders with safesnake_casenaming for organizing assets, scenes, and scripts.Inspect Project Structure (
godot_get_project_structure) : Returns both nested structured entries and a human-readable tree string of all files and folders in the project.List Resources (
godot_list_resources) : Provides a fast grouped overview of scripts, shaders, scenes, and textures with counts, without manually globbing the project.Start Editor (
godot_start_project) : Opens the Godot editor for the project and returns a PID plus a log file path.Create Scene (
godot_create_scene) : Creates and saves a new scene with a Godot-stylesnake_case.tscnfilename andPascalCaseroot node name.Create Shader (
godot_create_shader) : Generates a.gdshaderfile from a starter template or explicit shader source code.Update Project Settings (
godot_update_project_settings) : Edits one or moreProjectSettingsparameters (app name, window size, etc.) through Godot itself. Accepts JSON-compatible values plus optional raw Godot expressions viavalue_godot.Attach Script (
godot_attach_script) : Attaches an existing.gdfile or creates a starter script that extends the target node's type before attaching it.Get Scene Tree (
godot_get_scene_tree) : Inspects a saved scene's node tree and parent/child structure using Godot's ownPackedScene.get_state().Validate Scene (
godot_validate_scene) : Dry-run parses a scene resource with a lightweight headless load so problems surface before a full run.Add Node (
godot_add_node) : Adds a new node of any instantiable Godot node type to an existing scene.Add Primitive Mesh (
godot_add_primitive_mesh) : Drops in aBoxMesh,CylinderMesh,SphereMesh, or other built-in primitive on aMeshInstance3Dnode for fast level blockout.Edit Primitive Mesh (
godot_edit_primitive_mesh) : Swaps the primitive type or changes parameters like size, height, radius, and segment counts.Edit Scene (
godot_edit_scene) : Renames a node, reparents it, deletes it, or combines those edits with transform changes in one save. Uses Godot to repack the scene.Get Node Properties (
godot_get_node_properties) : Returns the property list with serialized current values so object and vector values stay JSON-friendly.Get Node Transform (
godot_get_node_transform) : Inspects the root or a child node's transform section forNode2D,Node3D, andControlnodes.Update Node Transform (
godot_update_node_transform) : Adjusts position, rotation, scale, or other supported transform fields using JSON-friendly vector objects like{ "x": 10, "y": 20 }.Run Project (
godot_run_project) : Launches the project's main scene as a detached process, returning a PID plus a log file path.Run Scene (
godot_run_scene) : Launches a specific scene directly as a detached process.Run with Capture (
godot_run_with_capture) : Runs for a short capture window, then returns stdout, stderr, the Godot log file excerpt, and parsed debug lines for warnings and errors.Screenshot (
godot_screenshot) : Uses Godot's built-in movie writer to capture the last rendered PNG frame after running for a short duration.Search Docs (
godot_search_docs) : Searches a cached API dump generated from the selected Godot executable, so results stay aligned with the installed engine version.Add WorldEnvironment (
godot_add_world_environment) : Adds a WorldEnvironment node and applies Environment and node-level parameter updates in one call.Update WorldEnvironment (
godot_update_world_environment) : Updates an existing WorldEnvironment node's Environment settings (fog, tonemap, ambient light, background, etc.) and selected node properties.Run with Visual Profile (
godot_run_with_visual_profiler): Profiles a Godot project’s rendering and visual performance, reporting metrics such as fps, frame_time_ms, render_objects_in_frame, render_primitives_in_frame, render_draw_calls_in_frame, render_video_mem_bytes, navigation_process_ms, object_count, and node_count.Run with Profiler (
godot_run_with_profiler): Runs a Godot project or a specific scene with the built-in profiler to capture detailed performance data, including fps, frame_time_ms, process_time_ms, physics_time_ms, physics_frame_time_ms, navigation_process_ms, memory_static_bytes, object_count, resource_count, node_count, orphan_node_count, physics_2d_active_objects, physics_2d_collision_pairs, physics_2d_island_count, physics_3d_active_objects, physics_3d_collision_pairs, physics_3d_island_count, and audio_output_latency_ms.Record Video ( godot_record_video ): Runs a scene for a set duration, .avi by defualt or captures frames and audio and encodes the result to an .mp4 via ffmpeg if available. Accepts an camera_waypoints array (position, rotation, and FOV per keyframe).
The server also exposes MCP resource discovery over stdio, so clients can inspect a static tool catalog resource and a per-tool detail template without needing to call the tools first.
Related MCP server: Godot MCP Extended
Requirements
Python 3.10+
Godot 4.5 or newer
FFmpeg (optional)
Godot can be supplied either:
per tool call with
godot_executableglobally with the
GODOT_EXECUTABLEenvironment variable
Examples:
/Applications/Godot.app/Contents/MacOS/Godot/Applications/Godot_mono.app/Contents/MacOS/Godot/usr/local/bin/godot4
Run It
From this repository:
PYTHONPATH=src python3 -m godot_mcpOr install it:
python3 -m pip install -e .
godot-mcpMCP Config Example
{
"mcpServers": {
"godot": {
"command": "python3",
"args": ["-m", "godot_mcp"],
"env": {
"PYTHONPATH": "/path/to/godot-mcp/src",
"GODOT_EXECUTABLE": "/path/to/godot"
},
"toolCallTimeoutMillis": 240000
}
}
}Adjust "toolCallTimeoutMillis" as needed. e.g. using video recording. If your recording exceeds the default timeout of 120000 milliseconds (2 minutes), increase this value accordingly to prevent the tool call from timing out.
Notes
Scene filenames are normalized to
snake_case.tscn.Project-relative folder inputs are normalized to safe
snake_casedirectory segments.Scene root node names are normalized to
PascalCase.Shader filenames are normalized to
snake_case.gdshader.Script filenames are normalized to
snake_case.gdwhen the MCP creates them.godot_get_project_structurereturns both nested structured entries and a human-readable tree string.godot_list_resourcesreturns grouped project resources with counts for scripts, shaders, scenes, and textures.Scene tree inspection uses Godot's own
PackedScene.get_state()rather than hand-parsing.tscnfiles.godot_validate_sceneuses a lightweight headless load of the scene resource so parse problems surface before a full run.godot_add_primitive_meshandgodot_edit_primitive_meshwork through Godot itself, so primitive resources stay valid and level greyboxing can be driven through MCP with mesh-specific parameters.MCP resource discovery is available through
resources/list,resources/templates/list, andresources/read, includinggodot://server/tools,godot://server/guide, andgodot://tool/{name}.godot_get_node_propertiesreturns the property list with serialized current values so object and vector values stay JSON-friendly.godot_edit_sceneuses Godot to repack the scene after node edits instead of rewriting.tscntext directly.Local doc search uses a cached API dump generated from the selected Godot executable, so the results stay aligned with the installed engine version.
Transform inspection and editing currently support
Node2D,Node3D, andControlnodes, using JSON-friendly vector objects like{ "x": 10, "y": 20 }.godot_attach_scriptcan either attach an existing.gdfile or create a starter script that extends the target node's type before attaching it.godot_run_projectandgodot_run_scenestart detached processes and return a PID plus a log file path.godot_run_with_captureruns for a short capture window, then returns stdout, stderr, the Godot log file excerpt, and parsed debug lines for warnings and errors.godot_screenshotuses Godot's built-in movie writer, then keeps the last rendered PNG frame as the screenshot and cleans up the intermediate frames.The run tools are non-headless by default, so a normal game window appears unless you explicitly pass
headless=true.godot_start_projectopens the editor and returns a PID plus a log file path.Logs are written into the target project under
.godot-mcp/logs/.
Local Verification
This repository includes unit tests that use a fake Godot executable so the MCP server can be validated even when Godot is not installed in the current environment.
Run them with:
python3 -m unittest discover -s testsContributing
Contributions are welcome! Feel free to open issues, submit pull requests, or suggest new features. All contributions are appreciated.
License
This project is licensed under the MIT License.
Available Tools
24 toolsgodot_add_nodeB
Add a new node of any instantiable Godot node type to an existing saved scene.
Inputs: project_path (required), scene_path (required), node_type (required), parent_path, +2 more.
godot_add_primitive_meshC
Add a MeshInstance3D with a built-in PrimitiveMesh resource such as BoxMesh, CylinderMesh, SphereMesh, CapsuleMesh, PlaneMesh, PrismMesh, QuadMesh, or TorusMesh.
Inputs: project_path (required), scene_path (required), mesh_type (required), parent_path, +4 more.
godot_attach_scriptA
Attach a GDScript file to a specific node in a saved scene, creating the script file first when needed.
Inputs: project_path (required), scene_path (required), node_path, script_path, +5 more.
godot_create_folderB
Create a safe project-relative folder inside an existing Godot project.
Inputs: project_path (required), folder_path (required).
godot_create_projectC
Create a new Godot project, create common folders, and set the project display name.
Inputs: project_name (required), parent_directory (required), folder_name, godot_executable.
godot_create_sceneA
Create and save a new scene with a normalized Godot-style filename and root node name.
Inputs: project_path (required), scene_name (required), root_type, folder, +3 more.
godot_create_shaderA
Create a .gdshader file inside the Godot project, either from a starter template or explicit shader code.
Inputs: project_path (required), shader_name (required), folder, shader_type, +2 more.
godot_detect_executableB
Resolve the Godot 4.5+ executable that this MCP server will use.
Inputs: godot_executable.
godot_edit_primitive_meshC
Modify the PrimitiveMesh resource attached to an existing MeshInstance3D by changing its mesh type and/or one or more mesh parameters.
Inputs: project_path (required), scene_path (required), node_path (required), mesh_type, +2 more.
godot_edit_sceneA
Modify an existing node in a saved scene by updating its transform, renaming it, reparenting it, or deleting it.
Inputs: project_path (required), scene_path (required), node_path, transform, +4 more.
godot_get_node_propertiesB
Return the current property list and serialized values for a specific node in a saved scene.
Inputs: project_path (required), scene_path (required), node_path, godot_executable.
godot_get_node_transformB
Read the transform section of a specific node in a saved scene. Currently supports Node2D, Node3D, and Control nodes.
Inputs: project_path (required), scene_path (required), node_path, godot_executable.
godot_get_project_structureC
Return a nested folder/file view of a Godot project or one of its subfolders.
Inputs: project_path (required), folder_path, max_depth, include_hidden.
godot_get_scene_treeB
Inspect a saved scene and return its node hierarchy plus parent/child relationships.
Inputs: project_path (required), scene_path (required), godot_executable.
godot_list_resourcesB
List saved scripts, shaders, scenes, and textures in a Godot project or one of its subfolders.
Inputs: project_path (required), folder_path.
godot_run_projectC
Run a Godot project using its current main scene.
Inputs: project_path (required), headless, godot_executable.
godot_run_sceneC
Run a specific Godot scene from an existing project.
Inputs: project_path (required), scene_path (required), headless, godot_executable.
godot_run_with_captureA
Run a Godot project or a specific scene for a short capture window and return stdout, stderr, log output, plus parsed warnings and errors.
Inputs: project_path (required), scene_path, headless, capture_seconds, +2 more.
godot_screenshotA
Run a Godot project or specific scene for a short duration, keep the last rendered frame, and return the screenshot path.
Inputs: project_path (required), scene_path, capture_seconds, fps, +1 more.
godot_search_docsB
Search the exact local Godot docs for the installed engine version, including class, method, property, signal, and constant docs.
Inputs: query, class_name, member_name, member_type, +3 more.
godot_start_projectB
Start Godot's editor for an existing project, optionally opening a specific scene in the editor.
Inputs: project_path (required), scene_path, godot_executable.
godot_update_node_transformB
Update the transform section of a specific node in a saved scene. Currently supports Node2D, Node3D, and Control nodes.
Inputs: project_path (required), scene_path (required), transform (required), node_path, +1 more.
godot_update_project_settingsC
Update one or more ProjectSettings values and save them back to the Godot project through Godot itself.
Inputs: project_path (required), settings (required), godot_executable.
godot_validate_sceneA
Dry-run load a saved scene resource and report whether Godot can parse it successfully, without running the scene.
Inputs: project_path (required), scene_path (required), godot_executable.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 24 tools
Most tools have clearly distinct purposes with minimal overlap, though some pairs like godot_run_project/godot_run_scene and godot_get_node_transform/godot_update_node_transform could potentially cause confusion if not carefully read. The descriptions generally clarify the differences, such as project-wide vs. scene-specific execution and read vs. write operations for transforms.
All tools follow a consistent 'godot_verb_noun' snake_case pattern throughout, making them predictable and easy to parse. The verb choices are appropriate and uniform across the set, such as 'create', 'get', 'update', 'run', and 'list'.
With 24 tools, the count feels heavy for a single domain like Godot project management, bordering on excessive. While many tools are justified for specific operations, the high number may overwhelm agents and could potentially be streamlined or grouped more efficiently.
The toolset provides comprehensive coverage for Godot project workflows, including project/scene creation, editing, inspection, execution, debugging, and documentation. It supports full CRUD/lifecycle operations for nodes, scenes, and resources, with no obvious gaps that would hinder agent tasks.
Maintenance
Related MCP Connectors
AI game maker: build, run, screenshot and play-test Godot and retro console games in a live project
Lets your AI build and edit websites in Xodia, a visual website builder for real code (Vite, React, Tailwind CSS or plain HTML in your own git repo): read and write site files, create pages and CMS collections, run typecheck, design and link checks, take screenshots, manage forms and translations, and pick up change requests the user sends from the visual editor. Sign in once with your Xodia account (OAuth). Free plan, no card needed. Setup: https://xodia.ai/ai/mcp
Git-backed platform for skills, tools, and context for AI agents
Gamedev tools for AI agents: level design, renders, sprites, GLB optimizer. Pay per call with x402.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables LLMs to create and modify Godot game engine projects by managing scenes, generating GDScript code, creating animations, and controlling the Godot editor through natural language commands.180 npm1MIT
- AlicenseAqualityDmaintenanceEnables AI agents to launch, edit, debug, and test Godot game projects with comprehensive scene and script manipulation tools.501MIT
- AlicenseCqualityCmaintenanceEnables AI agents to interact with the Godot game engine, including project inspection, scene/script parsing, headless exports, runtime control with live scene-tree inspection and evaluation, and API documentation search.100823 npm5MIT
- AlicenseBqualityCmaintenanceEnables AI agents to inspect, modify, run, and debug Godot projects, including scene and script analysis, editor and project management, and visual verification through screenshots.2210 npm14MIT