Godot Mcp Bridge

io.github.TomasLucasUTNPublished by GitHub account TomasLucasUTNv1.3.0Updated Nov 1, 2026

MCP server for Godot game engine integration — control the Godot editor with AI

VerifiedSTDIODesktop onlyFiles & StorageDeveloper Tools

Overview

AI-generated overview

Bridges an AI assistant to the running Godot 4.5+ editor so it can read, edit and test scenes, scripts and project settings.

What you can do
  • Inspect the project: list and read files, search the project, dump the scene tree, query ClassDB and read project settings
  • Edit scenes: create scenes, add, remove, rename, move, duplicate and instance nodes, set properties and node references, attach scripts, connect signals, batch edits
  • Work with scripts: create and surgically edit GDScript, list and validate scripts
  • Run and debug: launch or stop a scene, read runtime and console logs, collect errors and warnings, take viewport screenshots
  • Manage the connection and toolsets: check status, diagnose connection problems, find tools, enable or disable optional toolsets, rescan the filesystem, restart the editor
When to use it
Useful when building or debugging a Godot 4.5+ game project and you want the assistant to inspect and change scenes and GDScript directly in the editor, run the game, and read errors instead of copy-pasting code.
Requirements
Runs as a local stdio process, typically started with npx from the npm package godot-mcp-bridge. Requires Godot 4.5+ and the godot_mcp addon installed and enabled in the project (an install command copies it into addons/godot_mcp). The editor must be running and connected; one Godot instance at a time, localhost only. No API keys or environment variables are declared.
Before you install
The assistant can write to your project: it creates and edits scenes and scripts, changes node properties, and can permanently delete files (delete_file needs confirm=true and makes a .bak backup by default). It can also restart the editor and launch or stop scenes. Edits to an open scene go through the live tree and undo, but changes to closed files are saved directly. Only the core toolset loads by default; others must be enabled explicitly.

Installation

In SourceWeft

  1. Open Godot Mcp Bridge in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

godot-mcp-bridge

Give your AI assistant full access to the Godot editor.

Build games faster with Claude, Cursor, or any MCP-compatible AI — no copy-pasting, no context switching. The AI reads, writes, and manipulates your scenes, scripts, nodes, and project settings directly inside the running Godot editor.

Godot 4.5+ · 225 tools (35 loaded by default) · Live-tree editing with undo · Interactive project visualizer · MIT license

See the project README for the full tool breakdown, architecture, and setup guide. This file is the condensed version shown on npm.


Quick Start

1. Install the Godot plugin

bash
npx godot-mcp-bridge install

Run from inside your Godot project folder — copies the addon into addons/godot_mcp/ and enables the plugin. Or copy addons/godot_mcp/ from the GitHub repo by hand and enable it under Project Settings → Plugins. (The "Godot AI Assistant tools MCP" AssetLib listing belongs to the upstream project this forked from, not this repo.)

2. Add the server to your AI client

Claude Desktop / Cursor — add to the client's MCP config:

json
{  "mcpServers": {    "godot": {      "command": "npx",      "args": ["-y", "godot-mcp-bridge"]    }  }}

Windows: use "command": "cmd", "args": ["/c", "npx", "-y", "godot-mcp-bridge"].

Works with any MCP-compatible client (Claude Code, Cline, Windsurf, etc.)

3. Connect

Restart your AI client, then restart your Godot project. Check the top-right corner of the editor for MCP Connected in green.


What Can It Do?

225 tools grouped by intent; only core (35 tools) loads by default so the agent stays focused. enable_toolset({ name: "..." }) pulls in more — runtime control, scene editing, project config, animation, physics, analysis, scaffolding, testing, and more. Edits to a scene that's open in the editor go through the live tree and Godot's undo system instead of silently overwriting the .tscn file on disk.

Interactive Visualizer

Run map_project and get a browser-based project explorer at localhost:6510:

  • Force-directed graph of all scripts and their relationships
  • Click any script to see variables, functions, signals, and connections
  • Edit code directly in the visualizer — changes sync to Godot in real time
  • Scene view with node property editing
  • Find usages before refactoring

Current Limitations

  • Local only — runs on localhost, no remote connections
  • Single connection — one Godot instance at a time
  • AI has limited Godot knowledge — it can help debug, write scripts, and build scenes, but can't create a complete game without guidance

Build From Source

bash
git clone https://github.com/TomasLucasUTN/godot-mcp-bridgecd godot-mcp-bridge/mcp-servernpm installnpm run build

Then point your AI client at mcp-server/dist/index.js instead of using npx.


License

MIT


GitHub · Report Issues

Source: mcp-server/README.md at commit f1d6f26

Tools

44

get_godot_status

Check if Godot editor is connected to the MCP server.

Takes no parameters.

diagnose_connection

Diagnose why the Godot editor is (or is not) connected — the #1 setup frustration. Works even when nothing is connected (runs entirely in the MCP server). Returns a pass/fail checklist plus, when disconnected, an ordered list of concrete remedies (enable the plugin, wrong port, Godot version, the _console.exe stub, etc.). Call this first when tools report "Godot editor is not connected".

Takes no parameters.

get_guide

Read a short markdown guide from the server — the same content as the MCP resources, exposed as a tool for clients that do not support them. Call with no args to list them, or with a slug for the full markdown. Worth reading when a workflow is non-obvious: testing a running game, choosing between the scene-editing tools, "Runtime helper not connected".

Parametersslug

find_tools

Find a tool by what you want to do, across all 231 — including the ones whose toolset is off. Ask "autotile a tilemap" or "record input" and get the matching names, a one-line summary each, and the toolset to enable. Use this when you know what you want to DO but not what it is called; list_toolsets is for browsing.

Parameterslimitqueryrequiredinclude_schema

list_toolsets

List every toolset with what it is for, how many tools it holds, and whether it is enabled. Only "core" is on by default; if the tool you need is not in list_tools, find its toolset here and enable that one.

Parametersinclude_tools

enable_toolset

Enable an optional toolset so its tools appear in the next list_tools call. "core" (look around, edit scenes/scripts, run the game, read errors) is always on; the rest are opt-in to keep the surface small. Use find_tools or list_toolsets to find which one holds the tool you want.

Parametersnamerequired

disable_toolset

Disable a toolset so its tools stop appearing in list_tools. Does not affect tool names already known to the client.

Parametersnamerequired

list_dir

List files and folders under a Godot project path (e.g., res://). Returns arrays of files and folders in the specified directory.

Parametersrootrequiredinclude_hidden

read_file

Read a text file from the Godot project, optionally a specific line range. Useful for reading GDScript files, scene files, or any text-based content.

Parameterspathrequiredend_linemax_bytesstart_line

search_project

Search the Godot project for a substring and return file hits with line numbers. At most max_results matches (default 50), each line cut at 200 chars, because the answer costs context. When it stops early it says `truncated: true` and reports `returned` rather than a total it never finished counting.

Parametersglobqueryrequiredmax_resultscase_sensitiveinclude_addons

scene_tree_dump

Dump the scene tree of the scene currently open in the Godot editor (node names, types, and attached scripts). Pass max_depth to keep the output small on large scenes — a depth-limited branch reports its descendant count instead of expanding. Start shallow (max_depth 1-2) for an overview, then drill in.

Parametersmax_depth

read_scene

Read and parse a scene file to get its node structure (and optionally properties). Use this to understand a scene before editing. On large scenes pass max_depth for a cheap shallow read — a depth-limited node reports children_truncated instead of expanding.

Parametersformatmax_depthmax_nodesnode_pathpropertiesscene_pathrequiredchild_offsetinclude_properties

classdb_query

Query Godot's ClassDB for class information: properties, methods, signals, and inheritance. Use this to verify that a class, method, or property actually exists in the running Godot engine before writing code. Prevents using wrong method names, outdated Godot 3 API, or incorrect signatures.

Parametersqueryfilterclass_namerequiredinclude_virtual

get_project_settings

Concise project settings summary: main_scene, window size/stretch, physics tick rate, and render basics.

Parametersinclude_renderinclude_physics

create_scene

Create a new Godot scene (.tscn) file with nodes. Use this to create player scenes, UI screens, game objects, etc.

Parametersnodesdry_runscene_pathrequiredattach_scriptroot_node_nameroot_node_typerequired

add_node

Add a node to an existing scene file, optionally with a script, groups, and a whole sub-tree of children in the same call. Children take the same keys as add_node itself ({name|node_name, type|node_type, properties?, script?, groups?, children?}); an unknown key is an error.

Parametersgroupsscriptdry_runchildrennode_namerequirednode_typerequiredpropertiesscene_pathrequiredparent_path

remove_node

Remove a node from an existing scene file.

Parametersdry_runnode_pathrequiredscene_pathrequired

set_node_properties

Set properties on ONE node — one or many, in a single call and a single save. For the same property across many nodes use batch_set_property. Non-atomic: each property is applied independently and the response separates "applied" from "failed", so partial success is visible. Never edit a .tscn as text. To set a script use attach_script, NOT a "script" property here: that only rewrites the file, leaving the editor's in-memory node scriptless, which makes connect_signal fail. Resource-typed properties need set_resource_property / set_sprite_texture / etc.

Parametersdry_runnode_pathpropertiesrequiredscene_pathrequired

set_node_reference

Point an exported property at another NODE in the same scene — the wiring you would otherwise do by dragging a node into an inspector slot. Use for any @export typed as a node (`@export var target: Area2D`, `@export var health: HealthComponent`) or as a NodePath. set_node_properties CANNOT do this: it takes a JSON value, and this needs a live object reference. Fails loudly if the property does not exist or is typed for a different node class, instead of silently doing nothing.

Parametersdry_runpropertyrequirednode_pathrequiredscene_pathrequiredtarget_pathrequired

rename_node

Rename a node in a scene.

Parametersdry_runnew_namerequirednode_pathrequiredscene_pathrequired

move_node

Move a node to a different parent in a scene and optionally control its position among siblings.

Parametersdry_runnode_pathrequiredscene_pathrequiredsibling_indexnew_parent_pathrequired

duplicate_node

Duplicate a node and its children within the same scene, inserted right after the original as a sibling.

Parametersdry_runnew_namenode_pathrequiredscene_pathrequired

instance_scene

Add an instance of another scene (.tscn) as a child node. This is how you compose scenes from reusable parts (like prefabs). The instance maintains a live reference to the source scene. Use this instead of add_node when you want to reuse an existing scene.

Parametersdry_runnode_namepropertiesscene_pathrequiredparent_pathinstance_pathrequired

attach_script

Attach or change a script on a node in a scene.

Parametersdry_runnode_pathscene_pathrequiredscript_pathrequired

connect_signal

Connect a signal between two nodes inside a .tscn scene file. The target script must define the method (will refuse otherwise). Equivalent to clicking the "+" in the editor's Node > Signals panel and persists the connection to the .tscn. NOTE: scripts must be attached via attach_script (NOT via modify_node_property), otherwise the editor's in-memory node will not see the script and this tool will reject the connection.

Parametersflagsmethodrequiredsignalrequireddry_runto_noderequiredfrom_noderequiredscene_pathrequired

batch_scene_edit

Apply many structural/property edits to ONE scene with a single load and a single save — much faster than N separate add_node/set_node_properties/... calls on a closed scene (each of those re-loads and re-saves the whole .tscn). For an open scene the whole batch lands on the live editor tree and marks it dirty (no disk write). Ops run in order; stop_on_error (default true) discards the entire batch — nothing saved — on the first failure. Op types: add_node {node_name,node_type,parent_path,properties?,script?,groups?,children?}, set_properties {node_path,properties}, remove_node {node_path}, rename_node {node_path,new_name}, move_node {node_path,new_parent_path,sibling_index?}.

Parametersdry_runoperationsrequiredscene_pathrequiredstop_on_error

create_script

Create a NEW GDScript file (.gd) that does not exist yet. Use this for creating new scripts, NOT for editing existing files (use edit_script for edits). Use classdb_query to verify unfamiliar Godot class methods. After creating a script, consider using run_scene to test and get_errors to check for issues.

Parameterspathrequiredcontentrequireddry_run

edit_script

Apply a SMALL, SURGICAL code edit (1-10 lines) to GDScript files. Auto-applies changes. For large changes, call multiple times. ONLY for .gd files - NEVER for .tscn scene files. Use classdb_query to verify unfamiliar Godot class methods. After making changes, consider using run_scene to test and get_errors to check for issues.

Parameterseditrequireddry_run

list_scripts

List all GDScript files in the project with basic metadata.

Takes no parameters.

validate_scripts

Validate many GDScript files at once. Pass "paths" (array of res:// .gd paths) to check a specific set, or omit it to sweep the project (addons/ excluded unless include_addons). Returns only the invalid scripts, each with a message you can act on, plus elapsed_ms. PREFER an explicit paths list: validation runs on the editor's main thread at roughly 34ms per script, so a whole-project sweep on a large codebase is slow and can approach the bridge's 20s watchdog.

Parameterspathsinclude_addons

delete_file

Permanently delete a file from the project. REQUIRES confirm=true as an explicit safety gate — omitting confirm returns an error. Creates a .bak backup alongside the original by default (disable with create_backup=false). REFUSES if the file is currently open in the editor (any scene tab or script editor tab); close the tab first, or pass force=true to bypass the check (not recommended — deleting the active scene out from under the editor can crash Godot). Use ONLY when deletion is explicitly requested; NEVER as a way to "edit" or "reset" a file (use edit_script instead). Does not delete directories.

Parameterspathrequiredforceconfirmrequireddry_runcreate_backup

run_scene

Launch a scene in the Godot editor. Blocks until the editor is playing, so the next get_errors / take_screenshot call sees a real game. Use the returned runtime_root (e.g. "/root/Main") as the prefix for query_runtime_node paths — it comes from the root node name in the .tscn, NOT the file name. wait_for_runtime=true also waits for the in-game MCPRuntime helper, which take_screenshot and send_input need. Full loop: get_guide("testing-loop").

Parameterssceneattach_debuggerdebug_collisionswait_for_runtimestartup_timeout_msblock_until_started

stop_scene

Stop the currently running scene in the Godot editor. Always stop the scene before editing code to avoid errors repeating every frame.

Takes no parameters.

is_playing

Compatibility shim: returns {playing, scene}. For richer info (uptime, runtime helper connectivity, last-launched target) prefer get_runtime_status.

Takes no parameters.

get_runtime_log

Return entries from the MCPRuntime in-game ring buffer. The buffer holds the last ~500 lines pushed via MCPRuntime.push_runtime_log(level, text) from your scripts plus internal connection events. For full engine stdout (script prints, errors, warnings) use get_console_log — the editor already captures the running game's stdout. Returns entries with ts_ms, level, and text plus started_at_ms (when the helper started) and now_ms.

Parameterslevellimitsince_ms

take_screenshot

Capture the current viewport of the running game and save it as a PNG. REQUIRES the game to be running with the MCPRuntime autoload connected (run_scene with wait_for_runtime=true first). Returns resource_path, absolute_path, width, height, and (optionally) base64_png. Default save location is res://addons/godot_mcp/cache/screenshots/.

Parameterssave_toreturn_base64

get_errors

Get errors and warnings from both the Godot Output panel and the Debugger > Errors tab. Returns file paths, line numbers, severity, stack traces, and which source each error came from. If errors mention a missing method or property, use classdb_query to verify the correct API before fixing.

Parametersmax_errorsinclude_warnings

get_console_log

Return the latest lines from the Godot editor output log (as a single "content" string). Pass filter to keep only lines containing a substring — cheaper than pulling the whole log to find one message.

Parametersfiltermax_lines

rescan_filesystem

Trigger a full filesystem rescan in the Godot editor. Use after creating, deleting, or modifying files externally (e.g. from the terminal or another tool). The scan is asynchronous and returns immediately. NOT enough for a new autoload or a new class_name — those need restart_editor.

Takes no parameters.

restart_editor

Restart the Godot editor. Needed for two things a rescan cannot fix: an AUTOLOAD added this session, and a brand-new class_name. Until the editor restarts, every script referencing them fails to compile — and a node whose script failed to compile loses its exported properties, so create_scene/add_node write defaults and still report ok. Symptom: you set a property, the call succeeds, and the value is wrong when you read it back. The bridge disconnects with the editor; poll get_godot_status until it reconnects (usually 20-40s).

Parameterssave

render_scene_preview

Render a 2D scene to a PNG WITHOUT running the game — the cheap way to actually look at a scene. take_screenshot needs a live game (launch, runtime connection, remembering to stop it); this renders offscreen in the editor, auto-framing the scene's content, and leaves no editor state changed. Use it to check layout, sprite placement, and whether a level looks like you think it does. 2D only.

Parameterswidthheightsave_toscene_pathrequiredtransparentshow_collision

batch_execute

Run a sequence of {tool, args} calls in ONE request instead of N round-trips — the way to build several scenes at once (batch_scene_edit covers only one). Dispatches inside the EDITOR, so it cannot reach tools that live in the running game (take_screenshot, send_input, query_runtime_node, game_eval, ...); call those directly. NOT a transaction: each scene tool still does its own load/save. stop_on_error halts at the first failure. Cannot be nested.

Parametersoperationsrequiredstop_on_error

find_nodes_by_type

Recursively find all nodes of a given class (or subclass, unless exact_match) in a scene. Returns node_path/node_name/node_type for each match.

Parametersnode_typerequiredscene_pathrequiredexact_match

get_scene_dependencies

List a scene's resource dependencies (instanced sub-scenes, scripts, external resources) via ResourceLoader.get_dependencies — reads the file's dependency table directly, no need to load the scene.

Parametersscene_pathrequired

Version history

2
  1. v1.3.0LatestNov 1, 2026
  2. v1.2.1Sep 16, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts