Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

io.github.TomasLucasUTN/godot-mcp-bridge

NPM · GODOT-MCP-BRIDGE · SCANNED SEP 21

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

Available components

+1 this week 85 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security98
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • 31 of 96 dependencies flagged as unhealthy. View diagnostics → Partial
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 16 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability84
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 6815 tokens (~128/item across 53 items; 44 tools + 9 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management91
  • Stability check failed: the tool surface changed between 1.1.6 and 1.2.1: 1 tool removals, 0 breaking changes, 1 additions. See how to fix → Fail
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 99% of tool parameters carry a description.Partial
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 3 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 45 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
  • Supports UI / widget rendering.Pass
Install

How do I install the io.github.TomasLucasUTN/godot-mcp-bridge server?

io.github.TomasLucasUTN/godot-mcp-bridge runs locally as an npm package, launched with npx -y godot-mcp-bridge. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · godot-mcp-bridge

# add to Claude Code
claude mcp add tomaslucasutn-godot-mcp-bridge -- npx -y godot-mcp-bridge
// .cursor/mcp.json
{
  "mcpServers": {
    "tomaslucasutn-godot-mcp-bridge": {
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp-bridge"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "tomaslucasutn-godot-mcp-bridge": {
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp-bridge"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add tomaslucasutn-godot-mcp-bridge -- npx -y godot-mcp-bridge
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "tomaslucasutn-godot-mcp-bridge": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "godot-mcp-bridge"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add tomaslucasutn-godot-mcp-bridge --command npx --arg -y --arg godot-mcp-bridge
# ~/.hermes/config.yaml
mcp_servers:
  tomaslucasutn-godot-mcp-bridge:
    command: "npx"
    args: ["-y", "godot-mcp-bridge"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "tomaslucasutn-godot-mcp-bridge": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "godot-mcp-bridge"
      ]
    }
  }
}
# add to Vellum
assistant mcp add tomaslucasutn-godot-mcp-bridge -t stdio -c npx -a -y godot-mcp-bridge
// mcp.json
{
  "mcpServers": {
    "tomaslucasutn-godot-mcp-bridge": {
      "command": "npx",
      "args": [
        "-y",
        "godot-mcp-bridge"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 21 Sept 26 +1
    • Security disclosure: unverified → pass functional
  • 20 Sept 26 0
    • Security disclosure: pass → unverified functional
  • 19 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 81 to 84.

  • 18 Sept 26 −3

    No change was recorded against any check on this day. Stability & Change Management went from 98 to 81.

  • 17 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 94 to 98.

  • 15 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 88 to 91.

  • 13 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 81 to 84.

  • 11 Sept 26 −3

    No change was recorded against any check on this day. Stability & Change Management went from 98 to 78.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed npm/godot-mcp-bridge@1.2.1

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem npm

Background: How many MCP packages publish verified provenance →

Dependencies 96 packages
Packages resolved 96
Stale 31
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 44 exposed · ~6,454 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
add_node ~281

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.

NameTypeReqDescription
childrenarraySub-tree to create in the same call. Each entry takes add_node's own args, minus parent_path.
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
groupsarrayOptional list of node groups this node should belong to. Persisted to the .tscn file.
node_namestringyesName for the new node
node_typestringyesType of node (e.g., Sprite2D, Camera2D, RigidBody2D, CollisionShape2D)
parent_pathstringPath to parent node (. for root, or relative path like Sprite2D)
propertiesobjectOptional dictionary of properties to set on the node
scene_pathstringyesPath to the scene file (res://path/to/scene.tscn)
scriptstringOptional script path to attach to the new node (res://path/to/script.gd)

No output schema declared.

No examples provided.

attach_script ~96

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

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
node_pathstringPath to the node (. for root, or relative path)
scene_pathstringyesPath to the scene file
script_pathstringyesPath to the script file (res://path/to/script.gd)

No output schema declared.

No examples provided.

batch_execute ~187

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.

NameTypeReqDescription
operationsarrayyesOrdered list of {tool, args} to run. Max 100. e.g. [{"tool":"add_node","args":{...}}, {"tool":"set_node_properties","args":{...}}]
stop_on_errorbooleanIf true, stop at the first operation that returns ok:false. Default: false (run all).

No output schema declared.

No examples provided.

batch_scene_edit ~253

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?}.

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
operationsarrayyesOrdered edits. Each is an object with an "op" field and that op's args.
scene_pathstringyesPath to the .tscn file
stop_on_errorbooleanDiscard the whole batch (save nothing) on the first failing op. Default true.

No output schema declared.

No examples provided.

classdb_query ~210

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.

NameTypeReqDescription
class_namestringyesGodot class name to query (e.g., "CharacterBody2D", "Sprite2D", "Control")
filterstringCase-insensitive substring: only members whose name contains it are returned. Use when checking for a specific method/property (e.g. "velocity") on a big class — cuts the output massively.
include_virtualbooleanInclude well-known virtual methods like _ready, _process, _input (default: true). Set to false to see only public non-virtual methods.
querystringWhat to return: "all" (default), "properties", "methods", or "signals"

No output schema declared.

No examples provided.

connect_signal ~211

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.

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
flagsnumberConnection flags (CONNECT_DEFERRED=1, CONNECT_PERSIST=2, CONNECT_ONE_SHOT=4). Default 0.
from_nodestringyesPath to the emitting node
methodstringyesMethod name on the receiving node's script
scene_pathstringyes
signalstringyesSignal name on the emitting node
to_nodestringyesPath to the receiving node

No output schema declared.

No examples provided.

create_scene ~206

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

NameTypeReqDescription
attach_scriptstringOptional script path to attach to root node (res://path/to/script.gd)
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
nodesarrayChild nodes to add: {name|node_name, type|node_type, properties?, script?, groups?, children?}. Both key styles work; an unknown key is an error, not a generic Node.
root_node_namestringName of root node (default: derived from filename)
root_node_typestringyesType of root node (e.g., Node2D, CharacterBody2D, Control, Node3D). REQUIRED.
scene_pathstringyesScene file path (e.g., res://Scenes/player.tscn)

No output schema declared.

No examples provided.

create_script ~139

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.

NameTypeReqDescription
contentstringyesFull GDScript content to write to the file
dry_runbooleanPreview only: checks the path and whether the file exists, writes nothing. Default false.
pathstringyesScript file path (res://scripts/player.gd) - must not exist yet

No output schema declared.

No examples provided.

delete_file ~264

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.

NameTypeReqDescription
confirmbooleanyesMust be true — the safety gate described above.
create_backupbooleanIf true (default), saves a .bak copy next to the original before deletion so the file can be recovered. Set false to delete without backup.
dry_runbooleanPreview without deleting. Default false. Needs no confirm — it changes nothing.
forcebooleanBypass the "open in editor" guard. Only when you know it is not the active scene.
pathstringyesPath to the file to delete (e.g. res://scenes/old.tscn)

No output schema declared.

No examples provided.

diagnose_connection ~93

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".

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

disable_toolset ~48

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

NameTypeReqDescription
namestringyesToolset to disable, or "all".

No output schema declared.

No examples provided.

duplicate_node ~107

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

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
new_namestringOptional name for the duplicate. Defaults to the original name with an incrementing number suffix.
node_pathstringyesPath to the node to duplicate (cannot be root)
scene_pathstringyesPath to the scene file

No output schema declared.

No examples provided.

edit_script ~180

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.

NameTypeReqDescription
dry_runbooleanPreview only: reports whether the snippet matched and what it would produce, writes nothing. Default false.
editobjectyesEdit spec: {type: "snippet_replace", file: "res://path.gd", old_snippet: "old code", new_snippet: "new code", context_before: "line above", context_after: "line below"}. Keep old_snippet SMALL (1-10…

No output schema declared.

No examples provided.

enable_toolset ~90

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.

NameTypeReqDescription
namestringyesToolset to enable, or "all".

No output schema declared.

No examples provided.

find_nodes_by_type ~98

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.

NameTypeReqDescription
exact_matchbooleanIf true, match exact class only (not subclasses). Default: false
node_typestringyesClass name to match, e.g. "CharacterBody2D"
scene_pathstringyesPath to the scene file

No output schema declared.

No examples provided.

find_tools ~177

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.

NameTypeReqDescription
include_schemabooleanAlso return each match's full inputSchema. Default false — the names and summaries are usually enough to pick one.
limitnumberHow many matches to return (1-40, default 8).
querystringyesWhat you are trying to do, in your own words (e.g. "bake a navmesh", "read the player position while the game runs").

No output schema declared.

No examples provided.

get_console_log ~87

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.

NameTypeReqDescription
filterstringCase-insensitive substring: only matching log lines are returned.
max_linesnumberMaximum number of lines to include (default: 50)

No output schema declared.

No examples provided.

get_errors ~106

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.

NameTypeReqDescription
include_warningsbooleanInclude warnings in addition to errors (default: true)
max_errorsnumberMaximum number of errors to return (default: 50)

No output schema declared.

No examples provided.

get_godot_status ~23

Check if Godot editor is connected to the MCP server.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

get_guide ~100

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".

NameTypeReqDescription
slugstringGuide to read. Omit to list them.

No output schema declared.

No examples provided.

get_project_settings ~53

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

NameTypeReqDescription
include_physicsbooleanInclude physics settings
include_renderbooleanInclude render settings

No output schema declared.

No examples provided.

get_runtime_log ~173

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.

NameTypeReqDescription
levelstringOnly return entries of this level (e.g. "error", "warning", "info"). Omit for all.
limitnumberMaximum entries to return (default: 200, max 500)
since_msnumberOnly return entries with ts_ms >= since_ms. Use 0 (default) for all.

No output schema declared.

No examples provided.

get_scene_dependencies ~60

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.

NameTypeReqDescription
scene_pathstringyesPath to the scene file

No output schema declared.

No examples provided.

instance_scene ~223

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.

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
instance_pathstringyesPath to the .tscn scene to instance (the child/prefab scene)
node_namestringOptional name for the instance. If omitted, uses the instanced scene's root node name.
parent_pathstringPath to parent node within the scene (. for root, or relative path like Level/Enemies)
propertiesobjectOptional property overrides on the instance root (e.g., {position: {type: "Vector3", x: 5, y: 0, z: 10}})
scene_pathstringyesPath to the scene file being edited (the parent scene)

No output schema declared.

No examples provided.

is_playing ~39

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_dir ~97

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

NameTypeReqDescription
include_hiddenbooleanInclude dot-entries. Default false. Supported by the handler all along; it was missing from this schema, so the unknown-argument guard rejected anyone who passed it.
rootstringyesStarting path like res://addons/ai_assistant or res://

No output schema declared.

No examples provided.

list_scripts ~21

List all GDScript files in the project with basic metadata.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_toolsets ~106

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.

NameTypeReqDescription
include_toolsbooleanAlso list every tool name in each toolset. Off by default: that is ~2,000 tokens, and find_tools answers "what is this called" for a quarter of it.

No output schema declared.

No examples provided.

move_node ~119

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

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
new_parent_pathstringyesPath to the new parent node (. for root)
node_pathstringyesPath to the node to move
scene_pathstringyesPath to the scene file
sibling_indexnumberOptional position among siblings (0 = first child). Omit or -1 to append.

No output schema declared.

No examples provided.

read_file ~145

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.

NameTypeReqDescription
end_linenumberInclusive end line; 0 or missing means to end of file (optional)
max_bytesnumberStop after this many bytes. Use it on a large file rather than pulling the whole thing into context. Supported by the handler all along; it was missing from this schema.
pathstringyesres:// path to the file (e.g., res://scripts/player.gd)
start_linenumber1-based inclusive start line (optional)

No output schema declared.

No examples provided.

read_scene ~317

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.

NameTypeReqDescription
include_propertiesbooleanInclude a fixed set of common properties (position, rotation, scale, size, visible, modulate, z_index, text, collision layers, mass) on every node. All-or-nothing and expensive on a big tree — prefer…
max_depthnumberMax tree depth to expand (root is 0). Omit or -1 for the full tree. Use 1-2 for a cheap overview of a big scene.
node_pathstringRead this branch instead of the whole scene, e.g. "Player" or "UI/HUD". Default "." (the scene root). max_depth cuts a big scene off at the top; this starts lower, which is usually the actual questio…
propertiesarrayReturn exactly these properties on every node, e.g. ["position"] to get the whole layout of a 2D scene in one call. Overrides include_properties. A name the node does not have is reported under missi…
scene_pathstringyesPath to the scene file (res://path/to/scene.tscn)

No output schema declared.

No examples provided.

remove_node ~75

Remove a node from an existing scene file.

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
node_pathstringyesPath to the node to remove (cannot be root, use relative path)
scene_pathstringyesPath to the scene file

No output schema declared.

No examples provided.

rename_node ~78

Rename a node in a scene.

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
new_namestringyesNew name for the node
node_pathstringyesPath to the node to rename
scene_pathstringyesPath to the scene file

No output schema declared.

No examples provided.

render_scene_preview ~245

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.

NameTypeReqDescription
heightnumberOutput height in pixels. Default 648.
save_tostringWhere to write the PNG. Defaults to res://addons/godot_mcp/cache/previews/<scene>.png
scene_pathstringyesScene to render (res://path/to/scene.tscn)
show_collisionbooleanDraw CollisionShape2D/CollisionPolygon2D outlines (same visual as Godot's Debug > Visible Collision Shapes), so hitboxes can be checked from the PNG directly. Default false.
transparentbooleanTransparent background instead of the scene's own. Default false.
widthnumberOutput width in pixels. Default 1152.

No output schema declared.

No examples provided.

rescan_filesystem ~69

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.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

restart_editor ~154

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).

NameTypeReqDescription
savebooleanSave all open scenes and project settings before restarting. Default true. Setting false discards unsaved editor work.

No output schema declared.

No examples provided.

run_scene ~374

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").

NameTypeReqDescription
attach_debuggerbooleanDefault true (the editor's Play). False runs the game as its own process with no debugger: a game_eval runtime error then answers as a result instead of halting the game, at the cost of debug_* stepp…
block_until_startedbooleanWait until the editor reports playing=true before returning (default: true). Up to startup_timeout_ms.
debug_collisionsbooleanDraw CollisionShape2D/3D outlines for this run, so take_screenshot shows them. Only takes effect on the run it is passed to — flipping it mid-session is unreliable. Default: false.
scenestringScene to run: omit for main scene, "current" for the currently open scene, or a res:// path for a specific scene
startup_timeout_msnumberA cap, not an expected wait — MCPRuntime connects in ~1.7s. Default 20000. If wait_for_runtime reports false, poll get_runtime_status; it is usually about to land.
wait_for_runtimebooleanWait until the MCPRuntime in-game helper connects back (required for take_screenshot/send_input). Default: false.

No output schema declared.

No examples provided.

scene_tree_dump ~118

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.

NameTypeReqDescription
max_depthnumberMax tree depth to expand (root is 0). Omit or -1 for the full tree. Use 1-2 for a cheap overview of a big scene.

No output schema declared.

No examples provided.

search_project ~199

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.

NameTypeReqDescription
case_sensitivebooleanMatch case exactly. Default false.
globstringOptional glob filter like **/*.gd to search only GDScript files
include_addonsbooleanSearch res://addons/ too. Default false: third-party addon source answers almost every common identifier and crowds out the project own code.
max_resultsnumberStop after this many matches (default 50). The handler has always supported it; it was missing from this schema, so the unknown-argument guard rejected anyone who tried.
querystringyesCase-insensitive substring to find

No output schema declared.

No examples provided.

set_node_properties ~231

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.

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
node_pathstringPath to the node (. for root, or relative path)
propertiesobjectyesMap of property_name -> value. Each value follows the same form as modify_node_property.value (primitives, arrays, or {type:"Vector3",...} discriminated objects).
scene_pathstringyesPath to the .tscn scene file

No output schema declared.

No examples provided.

set_node_reference ~230

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.

NameTypeReqDescription
dry_runbooleanPreview only: do the work, report it, write nothing. Default false.
node_pathstringyesNode that HOLDS the property (. for root, or a relative path)
propertystringyesName of the exported property to set, e.g. "initial_state" or "health"
scene_pathstringyesPath to the .tscn scene file
target_pathstringyesNode it should point AT, relative to the scene root, e.g. "StateMachine/Idle"

No output schema declared.

No examples provided.

stop_scene ~33

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

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

take_screenshot ~152

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/.

NameTypeReqDescription
return_base64booleanAlso include the PNG bytes inline as base64 (default: false). Useful when the agent has no filesystem access.
save_tostringOptional res:// or user:// destination path. Defaults to res://addons/godot_mcp/cache/screenshots/screenshot_<ms>.png

No output schema declared.

No examples provided.

validate_scripts ~187

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.

NameTypeReqDescription
include_addonsbooleanInclude res://addons/ in a whole-project sweep. Default false: plugin code is usually most of the files and is not yours to fix.
pathsarrayres:// .gd paths to validate. Omit to sweep the project — but pass the files you changed instead when you know them.

No output schema declared.

No examples provided.

Common questions

What is the io.github.TomasLucasUTN/godot-mcp-bridge server?

io.github.TomasLucasUTN/godot-mcp-bridge is listed in the public MCP registry as io.github.TomasLucasUTN/godot-mcp-bridge. MCP server for Godot game engine integration, control the Godot editor with AI. This page covers its npm package (godot-mcp-bridge).

Is the io.github.TomasLucasUTN/godot-mcp-bridge server safe to use?

io.github.TomasLucasUTN/godot-mcp-bridge scores 85 out of 100 on VerifyMCP. We found no known CVEs affecting it as of 21 September 2026. It declares no install or post-install scripts. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the io.github.TomasLucasUTN/godot-mcp-bridge server expose?

io.github.TomasLucasUTN/godot-mcp-bridge exposes 44 tools: get_godot_status, diagnose_connection, get_guide, find_tools, list_toolsets, and 39 more. Their descriptions and schemas cost roughly 6,454 tokens of context every time the server is loaded.

Is the io.github.TomasLucasUTN/godot-mcp-bridge server still maintained?

io.github.TomasLucasUTN/godot-mcp-bridge is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the io.github.TomasLucasUTN/godot-mcp-bridge server under?

io.github.TomasLucasUTN/godot-mcp-bridge declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.