MCP server for interacting with the Scryfall MTG API
Godot is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
MCP server for Godot game engine integration — control the Godot editor with AI
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user tomyud1-godot-mcp '--' npx -y godot-mcp-server
# 2 — ask your agent for something these tools do
# generate_2d_asset, batch_execute, list_dir and 74 more
Godot costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts Godot as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user tomyud1-godot-mcp '--' npx -y godot-mcp-serverReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
77 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Render an SVG to a PNG asset on disk via Image.load_svg_from_buffer. The SVG is rendered directly from bytes — no temp file is created, so concurrent calls are safe and project-rename quirks (user:// rebinding) cannot break it. Returns resource_path, absolute_path, dimensions {width,height}, and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| svg_code | string | yes | Complete SVG markup. Either single or double quotes are accepted in attributes. |
| filename | string | yes | Output filename. ".png" appended if missing. |
| save_path | string | no | Destination directory (default: res://assets/generated/). Created if it does not exist. |
| width | number | no | Optional desired output width in pixels. Combined with the SVG's intrinsic width to derive a uniform render_scale. |
| height | number | no | Optional desired output height in pixels. Same as width but matched on the height axis. If both width and height are provided, width takes precedence for scale derivation. |
| scale | number | no | Optional explicit render scale (e.g. 2.0 = 2x). Overrides width/height-derived scaling. Default: 1.0. |
Run an ordered list of MCP tool calls as a single composite operation. Use this whenever you would otherwise issue multiple consecutive mutations on the same scene/script/project — e.g. "create a node, set 5 properties, attach a script, connect 2 signals" becomes one call instead of 9. Cuts…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| commands | array | yes | Ordered list of sub-commands to run. Each entry is {name: <tool-name>, args: <object>}. Sub-commands run sequentially; earlier results are NOT piped into later args (build the args before sending). Mu |
| atomic | boolean | no | Default true. When true, any sub-command failure rolls back every earlier successful step from snapshots and discards the entry. When false, successful steps stay in place and the partial entry is com |
| stop_on_error | boolean | no | Default true. Only meaningful when atomic=false. When true the batch stops at the first failure; when false it continues through errors, executing every command. Ignored when atomic=true (which always |
List files and folders under a Godot project path (e.g., res://). Returns arrays of files and folders in the specified directory.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Folder to list, like res:// (default) or res://scenes |
| include_hidden | boolean | no | Include hidden files and folders (names starting with "."). Default: false. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | res:// path to the file (e.g., res://scripts/player.gd) |
| start_line | number | no | 1-based inclusive start line (optional) |
| end_line | number | no | Inclusive end line; 0 or missing means to end of file (optional) |
| max_bytes | number | no | Maximum bytes to return before truncating (default: 200000) |
Search the Godot project for a substring and return file hits with line numbers. Useful for finding usages of functions, variables, or any text pattern.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Case-insensitive substring to find |
| glob | string | no | Optional glob filter like **/*.gd to search only GDScript files |
| max_results | number | no | Maximum matches to return (default: 200) |
| case_sensitive | boolean | no | Match case exactly (default: false) |
Create a NEW GDScript file (.gd) that does not exist yet. STRICTLY for .gd files — non-.gd extensions (.json, .gdignore, .md, etc.) are rejected with a pointer at write_file. A missing extension is auto-completed to .gd. Use edit_script for changes to an existing file. Use classdb_query to verify…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Script file path (res://scripts/player.gd) - must not exist yet |
| content | string | yes | Full GDScript content to write to the file |
Concise project settings summary: main_scene, window size/stretch, physics tick rate, and render basics.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_render | boolean | no | Include render settings |
| include_physics | boolean | no | Include physics settings |
Return the full InputMap: built-in actions (ui_*, spatial_editor/*) plus all project-defined actions from project.godot. Each action maps to an object with "events" (array of key/mouse/gamepad bindings) and optionally "deadzone". Use this before configure_input_map to see current bindings and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| include_deadzones | boolean | no | Include the per-action "deadzone" field in each action object (default: true). When true, each action is {"deadzone": 0.5, "events": [...]}. When false, each action is {"events": [...]}. |
Return named 2D/3D physics collision layers from ProjectSettings.
No parameter schema on file.
Get available properties for a Godot node type. Use this to discover what properties exist on a node type (e.g., anchors_preset for Control, position for Node2D).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| node_type | string | yes | Node class name (e.g., "Sprite2D", "Control", "Label", "Button") |
Return the latest lines from the Godot editor Output panel (editor-side messages plus prints from the running game). NOTE: this does NOT include the Debugger > Errors tab — runtime push_error / script errors during play often surface only there. After run_scene, always call get_errors (not just…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| max_lines | number | no | Maximum number of lines to include (default: 50) |
| debug | boolean | no | When true, include editor_log_rtl_path and editor_log_candidates (each EditorLog widget found, with text length and a 200-char tail sample). Use this to diagnose cases where running-game prints do not |
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. Debugger rows can appear a few frames after run_scene returns; pass wait_ms:300 when checking immediately after…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| max_errors | number | no | Maximum number of errors to return (default: 50) |
| include_warnings | boolean | no | Include warnings in addition to errors (default: true) |
| wait_ms | number | no | Optional short wait before reading Output/Debugger errors, capped at 1000ms. Use ~300ms immediately after run_scene to avoid false "0 errors" results while the Debugger > Errors tab catches up. |
Mark the current position in the Godot editor log. Subsequent get_console_log and get_errors calls will only return output after this point.
No parameter schema on file.
Open a file in the Godot editor at a specific line (side-effect only).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | res:// path to open |
| line | number | no | 1-based line number |
Dump the scene tree of the scene currently open in the Godot editor (node names, types, and attached scripts) as an indented text block. Reflects unsaved edits (uses the live editor tree, not the .tscn on disk). All args are optional; with no args the entire tree is returned (existing behavior).…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| subtree_root | string | no | Scene-relative node path to start the dump at (e.g. "UI/HUD"). Empty or "." = scene root. Errors if the node is not found. |
| max_depth | number | no | Stop traversal at depth N from the (subtree_)root. 0 = only that root node. Omit or pass a negative value for unlimited depth. |
| offset | number | no | Skip the first N nodes in DFS preorder (used for pagination). Default 0. |
| limit | number | no | Maximum number of nodes to render after offset. Omit for unlimited. |
Return the node path(s) the user has currently selected in the Godot editor (Scene dock). Call this FIRST whenever the user refers to a node without naming a path — phrases like "this node", "fix this", "change the color here", "delete that", "make this red", "the selected one", "what I have…
No parameter schema on file.
Replace or extend the editor's Scene-dock selection. Two main uses: (1) after add_node, focus the user's gizmo on the freshly-created node so they can see/manipulate it immediately, and (2) draw the user's attention to a node the AI just modified or discovered ("here is the offending node —…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| node_paths | yes | Scene-relative path(s) to select. "." = scene root, "UI/HUD/Label" for nested. Accepts a single string OR an array of strings; both forms behave identically. | |
| mode | string | no | "replace" (default) clears the existing selection first; "add" appends to it. |
Close open editor tabs (scenes and/or scripts). Files on disk are NOT touched — this only changes the editor UI state. Default behavior with no args closes EVERY open tab (both scenes and scripts). Primary use case: test automation — reset the editor to a known state between test runs without…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | Which tab kind to target. "any" (default) closes both scenes and scripts. "scene" or "script" restricts to that side. |
| paths | array | no | Optional list of paths to close (with or without "res://"). Omit or pass an empty array to close ALL open tabs of the chosen kind. Paths not currently open are returned in not_open rather than causi |
Browse Godot project settings by category. Returns values from the editor's in-memory state — this matches project.godot after a normal Godot save, but direct edits to project.godot on disk are not reflected until the editor restarts (rescan_filesystem does not help). Call without a category to…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| category | string | no | Settings category prefix (e.g., "display", "physics", "rendering", "application", "audio"). Omit to list all available categories. |
Update one or more Godot project settings. Pass a dictionary of setting paths to their new values. Use list_settings first to discover available setting paths, current values, and valid options for a category. For input action bindings, prefer configure_input_map — if you do pass input/* keys…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| settings | object | yes | Dictionary of setting paths to new values (e.g., {"display/window/size/viewport_width": 1920, "display/window/size/viewport_height": 1080}) |
Add, remove, or replace input actions and their key/button bindings. Use get_input_map to see current actions before modifying.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| action | string | yes | Input action name (e.g., "move_left", "jump", "attack") |
| operation | string | yes | "add" to create action and/or append events, "remove" to delete the action entirely, "set" to replace all events on an action (creates it if needed) |
| deadzone | number | no | Action deadzone (default: 0.5) |
| events | array | no | Input events to bind. Each object needs a "type" field: {"type":"key","key":"Space"} for keyboard, {"type":"mouse_button","button_index":1} for mouse (1=left,2=right,3=middle), {"type":"joypad_button" |
Launch a scene in the Godot editor. By default the call BLOCKS until the editor flips to playing state (so the next get_errors / take_screenshot / send_input call sees a real game). The response includes started, runtime_connected, wait_for_started_ms, wait_for_runtime_ms, scene_path, and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | no | Scene to run: omit for the main scene, "current" for the scene open in the editor, or a res:// path. |
| block_until_started | boolean | no | Wait until the editor reports playing=true before returning (default: true). Up to startup_timeout_ms. |
| wait_for_runtime | boolean | no | Wait until the MCPRuntime in-game helper connects back (required for take_screenshot/send_input). Default: false. |
| startup_timeout_ms | number | no | Max time in ms to wait for the above signals. Default: 10000. Bump to 15000–20000 on slower machines or autoload-heavy projects. Values above 25000 are clamped (response would otherwise miss the trans |
| clear_output | boolean | no | Watermark the Output panel and Debugger > Errors tab at launch so get_console_log / get_errors only return entries from THIS run, preventing stale output from a previous run being read as current erro |
Stop the currently running scene in the Godot editor. Always stop the scene before editing code to avoid errors repeating every frame.
No parameter schema on file.
Compatibility shim: returns {playing, scene}. For richer info (uptime, runtime helper connectivity, last-launched target) prefer get_runtime_status.
No parameter schema on file.
Combined editor + runtime status snapshot. Returns playing, playing_scene, last_launched ("current"|"main"|res-path), uptime_ms since the most recent run_scene, runtime_helper_connected (true once the in-game MCPRuntime autoload is talking to the MCP server), godot_version (e.g.…
No parameter schema on file.
Sleep server-side. Useful between input events to let the game process them. Capped at 30000ms / 30s. Pass either ms or seconds (ms wins if both given).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ms | number | no | Milliseconds to wait (1..30000). |
| seconds | number | no | Seconds to wait (0.001..30). Convenient when the agent is thinking in seconds. |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| save_to | string | no | Optional res:// or user:// destination path. Defaults to res://addons/godot_mcp/cache/screenshots/screenshot_<ms>.png |
| return_base64 | boolean | no | Also include the PNG bytes inline as base64 (default: false). Useful when the agent has no filesystem access. |
Synthesize an InputEvent and dispatch it to the running game via Input.parse_input_event. REQUIRES the game to be running with the MCPRuntime autoload connected. Use this to drive automated tests: click buttons, press keys, fire input actions. For multi-step interactions, alternate send_input →…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| event | object | yes | InputEvent descriptor: Key: {type:"key", key:"Space", pressed:true, shift?:bool, ctrl?:bool, alt?:bool, meta?:bool, echo?:bool} or {type:"key", keycode:32, pressed:true} Mouse button: {type:"mouse |
Read a live node in the running game. REQUIRES the game to be running with the MCPRuntime autoload connected. Returns class, path, script, groups and property values. By default (no properties) it returns everything that describes the node's current state: all script variables (health, score,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| node_path | string | yes | Absolute path (e.g. /root/Main/Player) or relative to current_scene. |
| properties | array | no | Property names (or colon paths) to read. Omit to get every script variable and every property that differs from its default. |
| include_children | boolean | no | List direct children {name, class}. Default: false. |
| include_groups | boolean | no | Include the node's group memberships. Default: true. |
Snapshot of Godot's Performance singleton from inside the RUNNING game: fps, frame/physics step times, static memory (current + peak), renderer draw calls / objects / primitives, and engine-wide object/node/orphan counts. REQUIRES the game to be running with the MCPRuntime autoload connected…
No parameter schema on file.
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 script prints/stdout use get_console_log; for runtime push_error / script errors use get_errors…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Maximum entries to return (default: 200, max 500) |
| since_ms | number | no | Only return entries with ts_ms >= since_ms. Use 0 (default) for all. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| class_name | string | yes | Godot class name to query (e.g., "CharacterBody2D", "Sprite2D", "Control") |
| query | string | no | What to return: "all" (default), "properties", "methods", or "signals" |
| include_virtual | boolean | no | Include well-known virtual methods like _ready, _process, _input (default: true). Set to false to see only public non-virtual methods. |
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. If a scan is already in progress (often happens right after a batch of mutations), the call…
No parameter schema on file.
Register, unregister, or list autoload singletons. Autoloads are scripts/scenes loaded automatically at project start.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | no | Autoload name (e.g., "GameManager", "AudioManager") |
| operation | string | yes | "add" to register, "remove" to unregister, "list" to show all autoloads |
| path | string | no | res:// path to the script or scene file (required for "add") |
Create a new Godot scene (.tscn) with a tree of nodes in one call, including their properties, textures, collision shapes, scripts and groups. Use this to create player scenes, UI screens, game objects, etc. All-or-nothing: the whole tree is built and checked in memory first. Unknown node…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Scene file path (e.g., res://Scenes/player.tscn) |
| root_node_name | string | no | Name of the root node. Default: the file name in PascalCase (res://player_ship.tscn -> PlayerShip). |
| root_node_type | string | yes | Type of root node (e.g., Node2D, CharacterBody2D, Control, Node3D). REQUIRED. |
| nodes | array | no | Child nodes to create under the root. Each node spec: {name|node_name, type|node_type, properties?, script?, groups?, children?}. Unknown keys (e.g. "class", "parent") are errors. properties values: V |
| attach_script | string | no | Optional script path to attach to root node (res://path/to/script.gd) |
Read and parse a scene file to get its full node structure and properties. Use this to understand a scene before editing. NOTE: include_properties: true returns a hand-picked subset (position, rotation, scale, size, offset, visible, modulate, z_index, text, collision_layer, collision_mask, mass)…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file (res://path/to/scene.tscn) |
| include_properties | boolean | no | Include the curated property subset above on each node (default: false). For a full per-node property dump use get_scene_node_properties. |
Return the FULL property list of a single node in a .tscn file, including @export'd script vars and inherited properties — with current values, declared variant types, hint metadata, and a category grouping. Complements read_scene (which uses a curated subset of common properties for quick tree…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file (res://path/to/scene.tscn) |
| node_path | string | no | Path to the node within the scene (. for root, or relative path like "UI/HUD/Label"). Defaults to "." (scene root). |
Add a node (optionally with a script, groups, properties and a whole tree of children) to an existing scene file in one call. Children format: {name|node_name, type|node_type, properties?, script?, groups?, children?}; unknown child keys are errors. All-or-nothing: the node tree is built and…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file (res://path/to/scene.tscn) |
| node_name | string | yes | Name for the new node |
| node_type | string | yes | Type of node (e.g., Sprite2D, Camera2D, RigidBody2D, CollisionShape2D) |
| parent_path | string | no | Path to parent node (. for root, or relative path like Sprite2D) |
| properties | object | no | Optional properties to set on the node. Values are read according to each property type: numbers/bools/strings; enums by name ("Nearest") or number; Vector2/3 as {x, y[, z]} or [x, y[, z]]; Color as { |
| script | string | no | Optional script path to attach to the new node (res://path/to/script.gd) |
| groups | array | no | Optional list of node groups this node should belong to. Persisted to the .tscn file. |
| children | array | no | Optional tree of children to create under the new node. Each entry has the same shape as add_node's args (minus parent_path). Use this to build sub-trees in one call. |
Remove a node from an existing scene file.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file |
| node_path | string | yes | Path to the node to remove (cannot be root, use relative path) |
Deprecated alias of set_node_properties for a single property.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the node (. for root, or relative path like "Sprite2D") |
| property_name | string | yes | Name of the property to modify (position, scale, rotation, modulate, visible, etc.) |
| value | yes | New value, read according to the property type (same forms as set_node_properties). |
Rename a node in a scene.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file |
| node_path | string | yes | Path to the node to rename |
| new_name | string | yes | New name for the node |
Move a node to a different parent in a scene and optionally control its position among siblings.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file |
| node_path | string | yes | Path to the node to move |
| new_parent_path | string | yes | Path to the new parent node (. for root) |
| sibling_index | number | no | Optional position among siblings (0 = first child). Omit or -1 to append. |
Attach or change a script on a node in a scene.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file |
| node_path | string | no | Path to the node (. for root, or relative path) |
| script_path | string | yes | Path to the script file (res://path/to/script.gd) |
Remove a script from a node in a scene.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file |
| node_path | string | yes | Path to the node (. for root) |
Deprecated alias: assigns {type: shape_type, ...shape_params} to the node's shape property.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the CollisionShape2D/3D node |
| shape_type | string | yes | Shape type: CircleShape2D, RectangleShape2D, CapsuleShape2D, SphereShape3D, BoxShape3D, etc. |
| shape_params | object | no | Shape parameters: {radius: 32} for circles, {size: {x: 64, y: 64}} for rectangles, etc. |
Deprecated alias: assigns a texture to the node's texture property.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the Sprite2D/Sprite3D/TextureRect node |
| texture_type | string | yes | FromPath (alias ImageTexture), NewImageTexture, or a Texture2D class such as GradientTexture2D, NoiseTexture2D, PlaceholderTexture2D. |
| texture_params | object | no | Texture parameters. FromPath / ImageTexture / NewImageTexture: {path: "res://assets/sprite.png"}. PlaceholderTexture2D: {size: {x: 64, y: 64}}. GradientTexture2D / NoiseTexture2D: {width, height}. |
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.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the scene file being edited (the parent scene) |
| instance_path | string | yes | Path to the .tscn scene to instance (the child/prefab scene) |
| node_name | string | no | Optional name for the instance. If omitted, uses the instanced scene's root node name. |
| parent_path | string | no | Path to parent node within the scene (. for root, or relative path like Level/Enemies) |
| properties | object | no | Optional property overrides on the instance root, e.g. {"position": {"x": 5, "y": 0, "z": 10}}. Same value forms as set_node_properties; checked before the parent scene is touched. |
Deprecated alias: assigns {type: mesh_type, ...mesh_params} (or a file) to the node's mesh property.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the MeshInstance3D node within the scene |
| mesh_type | string | yes | Mesh class: "BoxMesh", "SphereMesh", "CylinderMesh", "CapsuleMesh", "PlaneMesh", "PrismMesh", "TorusMesh", "QuadMesh", "TextMesh", or "file" to load from a resource path |
| mesh_params | object | no | BoxMesh: {size:{x,y,z}}. SphereMesh: {radius,height,radial_segments,rings}. CylinderMesh: {top_radius,bottom_radius,height}. CapsuleMesh: {radius,height}. PlaneMesh: {size:{x,y}}. PrismMesh: {left_to_ |
Deprecated alias: assigns a material to material_override, surface_material_override/<surface_index> or material, depending on the node.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the target node |
| material_type | string | yes | "StandardMaterial3D" or "file" to load from a resource path |
| material_params | object | no | StandardMaterial3D: {albedo_color:{r,g,b,a}, metallic:0-1, roughness:0-1, emission:{r,g,b}, emission_energy:float, transparency:0=disabled/1=alpha/2=scissor/3=hash/4=depth_pre_pass}. file: {path:"res: |
| surface_index | number | no | For MeshInstance3D only: surface index for per-surface override. Omit for material_override on all surfaces. |
Query computed 3D spatial data for a Node3D in a scene file. Returns local/global positions, scales, rotation quaternions, and subtree bounding boxes (AABB) when available. Use this before making precise 3D placement decisions.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the Node3D (. for root, or relative path like Level/Props/Crate) |
| include_bounds | boolean | no | Include computed subtree AABBs when visual descendants exist (default: true) |
Measure the world-space distance between two Node3D nodes in a scene file. Returns both the full 3D delta and the horizontal XZ distance.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| from_node_path | string | yes | Path to the first Node3D |
| to_node_path | string | yes | Path to the second Node3D |
Snap a Node3D position to a grid in local or global space. Useful for modular level building and keeping 3D scenes aligned.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the Node3D to snap |
| grid_size | yes | Positive grid size. Use a number for uniform snapping or {x,y,z} for per-axis snapping. | |
| axes | array | no | Axes to snap. Any of: ["x"], ["x","z"], ["x","y","z"] (default: all axes) |
| space | string | no | Coordinate space: "local" or "global" (default: "global") |
Set one or more properties on a node in a .tscn scene. This is THE tool for changing node properties, including resources. ALWAYS use it (or create_scene/add_node) to change scenes; never edit .tscn files as text. Values are read according to each property's type: • numbers, bools, strings;…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file, or to a .tres/.res resource file to edit that resource directly (node_path then omitted) |
| node_path | string | no | Path to the node (. for root, or relative path) |
| properties | object | yes | Map of property name (or colon path like "material:albedo_color") -> value. See the tool description for value forms. |
Set, add, or remove a node's group memberships in a .tscn scene file. Groups persist to disk so the running game can call get_tree().get_nodes_in_group(name).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the node (. for root) |
| groups | array | yes | List of group names to apply |
| mode | string | no | replace (default): node ends up in EXACTLY the listed groups. add: union with existing. remove: drop the listed groups. |
Read the list of groups a node belongs to in a .tscn scene file.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | — |
| node_path | string | no | — |
Search a .tscn file for nodes matching one or more filters. Filters AND together; pass any subset. Scene-scoped — for project-wide text search use search_project instead. Returns one entry per match with path (relative to scene root, "." = root), name, type (Godot class), and groups. Filters: •…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | no | Path to the .tscn scene file (res://...). Optional; defaults to the editor's current edited scene. |
| name_pattern | string | no | Case-insensitive match against node names. Glob (contains "*"/"?") or substring otherwise. |
| type | string | no | Godot class name or globally registered script class_name. Matches class AND subclasses (is_a check). |
| in_group | string | no | Group name to filter by. |
| recursive | boolean | no | Traverse the whole subtree (default true). If false, only the scene root and its direct children are checked. |
Deprecated alias: sets <resource_path>:<property_name> through set_node_properties.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | Path to the .tscn scene file |
| node_path | string | no | Path to the node owning the resource |
| resource_path | string | yes | Path from node to the target resource via property names. Examples: "shape", "material", "material/next_pass" |
| property_name | string | yes | Property on the target resource to set (e.g. "radius", "albedo_color") |
| value | yes | New value (same forms as set_node_properties) |
Save a Resource currently held by a node (or sub-resource) to a standalone .tres file so it can be referenced by other scenes / shared / committed. The node's property is then re-pointed to the saved file. To change the file later, call set_node_properties with scene_path set to the .tres (this…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | — |
| node_path | string | no | — |
| resource_path | string | yes | Path from node to the resource (e.g. "shape", "material") |
| save_to | string | yes | Destination path (res://.../foo.tres) |
Inspect ANY Godot Resource. Two modes: • path mode: pass {path: "res://foo.png"} for a resource on disk (.tres / .res / image / .glb / .ogg / .tscn / etc.) • node mode: pass {scene_path, node_path, resource_property} to inspect a resource attached to a node WITHOUT having to save it as .tres…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Path mode: resource path on disk (res://...). |
| scene_path | string | no | Node mode: path to the .tscn that owns the node. |
| node_path | string | no | Node mode: path to the node within the scene. |
| resource_property | string | no | Node mode: property name on the node holding the resource (e.g. "shape", "material", "stream", "texture"). |
List signal connections involving a node. source="scene_file" (default) reads connections persisted to a .tscn. source="runtime" requires the game to be running and reads live connections from the SceneTree. Use the runtime mode to verify dynamically-connected signals (those connected from code in…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| source | string | no | Where to read connections from. Default: scene_file |
| scene_path | string | no | For source="scene_file": path to the .tscn |
| node_path | string | yes | Path to the node. For source="runtime" use absolute (/root/Main/Player) or relative to current_scene. |
| include_outgoing | boolean | no | Include signals that this node emits (default: true) |
| include_incoming | boolean | no | Include signals from other nodes whose handler is on this node (default: true). Only honored for scene_file source. |
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, otherwise…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | — |
| from_node_path | string | yes | Path to the emitting node (scene-relative, "." = root) |
| signal | string | yes | Signal name on the emitting node |
| to_node_path | string | yes | Path to the receiving node (scene-relative, "." = root) |
| method | string | yes | Method name on the receiving node's script |
| flags | number | no | Connection flags (CONNECT_DEFERRED=1, CONNECT_PERSIST=2, CONNECT_ONE_SHOT=4). Default 0. |
Remove a signal connection from a .tscn scene file. No-op if the connection doesn't exist.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| scene_path | string | yes | — |
| from_node_path | string | yes | Path to the emitting node |
| signal | string | yes | — |
| to_node_path | string | yes | Path to the receiving node |
| method | string | yes | — |
Invoke any method on any node, in either the editor's on-disk scene or the running game. The write counterpart to query_runtime_node (which only reads).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| node_path | string | yes | Path to the target node. Editor mode: relative to scene root (e.g. "Player", "UI/HUD/Label", or "." for root). Runtime mode: absolute (/root/Main/Player) or relative to current_scene (Player). |
| method | string | yes | Method name on the target node. Validated against node.has_method(); on miss returns closest_matches and available_methods_sample. |
| args | array | no | Positional arguments to pass. Default: []. Arity is pre-checked against the method signature (allowing for default arguments). |
| scene_path | string | no | Editor mode only: which .tscn to operate on. Defaults to the editor's currently edited scene (must be saved at least once). Ignored when runtime=true. |
| runtime | boolean | no | When true, call on the live node in the running game via MCPRuntime. Requires the game to be running (run_scene first). When false (default), operates on the .tscn file in the editor. |
| expect_return | boolean | no | Capture and serialize the return value (default: true). Set false for void / fire-and-forget calls to skip serialization in the response. |
| confirm | boolean | no | Required for methods on the destructive denylist (queue_free, free, set_script, remove_child, replace_by, reparent) and, in runtime mode, for direct calls on /root/<name> (autoload/scene root territor |
Edit an existing GDScript (.gd) file in place by replacing old_text with new_text, and save. The text can be any size — a single line, a function, or the whole file for a full rewrite. If old_text matches more than once, pass context_before/context_after to disambiguate; if it can't be found,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Script to edit (res://path/to/script.gd) |
| old_text | string | yes | Exact text to replace, including whitespace and indentation |
| new_text | string | yes | Replacement text (empty string deletes old_text) |
| context_before | string | no | Optional unique text right before old_text, when old_text appears more than once |
| context_after | string | no | Optional unique text right after old_text |
Validate a GDScript file for syntax errors using Godot's built-in parser. Good for ordinary project scripts after editing. For @tool/editor-plugin addon scripts this isolated parser path may return valid:false with diagnostics_available:false because dependencies and editor context are not fully…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Path to the GDScript file to validate (e.g., res://scripts/player.gd) |
Create a directory (with parent directories if needed).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Directory path (res://path/to/folder) |
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…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Path to the file to delete (e.g. res://scenes/old.tscn) |
| confirm | boolean | yes | REQUIRED. Must be explicitly set to true — safety gate to prevent accidental deletes. Calls without confirm=true fail with an error. |
| create_backup | boolean | no | If true (default), saves a .bak copy next to the original before deletion so the file can be recovered. Set false to delete without backup. |
| force | boolean | no | If true, bypass the "file is open in editor" guard. Use ONLY if you know the file is not the active scene. The guard exists because deleting the active scene tab from under the editor can crash Godot. |
Recursively delete a directory and ALL of its contents from the project. REQUIRES confirm=true. For a non-empty folder you must ALSO pass recursive=true — otherwise the call refuses and reports the file/sub-folder count. The whole deletion lands as a SINGLE undo entry: one mcp_undo restores every…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | Folder to delete (e.g. res://enemies/old). res:// is prepended if missing. |
| confirm | boolean | yes | REQUIRED. Must be explicitly true — safety gate against accidental deletes. Calls without confirm=true fail with an error. |
| recursive | boolean | no | REQUIRED for a non-empty folder. Must be true to delete a folder that contains any files or sub-folders. Default false. |
| force | boolean | no | If true, bypass the "file open in editor" guard. Deleting an open scene/script can crash the editor — prefer closing the tabs. Default false. |
| force_orphan | boolean | no | If true, delete even when files inside are still referenced from outside the folder. This WILL leave broken references. Default false. |
| allow_no_undo | boolean | no | If true, delete a folder too large to snapshot without recording an undo entry. The deletion then cannot be reverted with mcp_undo. Default false. |
Write UTF-8 text content to any file in the project. Creates the file if missing; REFUSES to clobber an existing file unless overwrite=true. Parent directories are auto-created (override with create_dirs=false). Refuses to write to plugin source (anywhere under res://addons/godot_mcp/ except…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | yes | File path (res://... — res:// is prepended if missing). |
| content | string | yes | Text content to write. Encoded as UTF-8. Pass an empty string to create a zero-byte file. |
| overwrite | boolean | no | REQUIRED to replace an existing file. Default false — calls against an existing path without overwrite=true return file_exists:true and refuse. |
| create_dirs | boolean | no | If true (default), missing parent directories are auto-created. If false, missing parent dirs return an error. |
| force | boolean | no | Bypass the plugin-source-protection guard. Required to overwrite anything under res://addons/godot_mcp/ except res://addons/godot_mcp/cache/. Default false. |
Rename or move a project file. By default also rewrites every literal reference to the old path in other text-format project files (.tscn, .tres, .gd, .cs, .gdshader, project.godot) and updates any matching autoload/* entry in ProjectSettings, so scenes and preloads keep working. When Godot…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| old_path | string | yes | Current file path |
| new_path | string | yes | New file path |
| update_references | boolean | no | Update references in other files (default: true) |
List all GDScript files in the project with basic metadata.
No parameter schema on file.
Check if the Godot editor is connected to the MCP server. Also reports the plugin, server and Godot versions, and warns when the plugin and server versions differ.
No parameter schema on file.
Read a short markdown guide from the server. Same content as the MCP resources/read protocol, exposed as a tool so it works in MCP clients that do not support resources (e.g. Claude Desktop, Cursor chat). Call with no args to list available guides: …. Call with {slug: "..."} to get the full…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | Guide slug. Omit to list all available guides. Known slugs: …. |
Roll back the most recent MCP mutation(s). Use this proactively — not just when the user asks — any time you want to recover from a mistake, clean up after a partial failure, or try a different approach. Specifically: call this if a tool call produced an error or unexpected result and you want a…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| count | number | no | Number of entries to undo from the top of the stack. Defaults to 1. Stops early if the stack runs out. |
| preview | boolean | no | If true, return what *would* be undone without performing the undo. Use to verify before committing. |
Re-apply the most recently undone MCP mutation(s). Use this proactively whenever you've over-undone — for example, you walked back several steps to inspect intermediate state, or you undid in error and want to recover the change without re-deriving its arguments. Also use when the user says…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| count | number | no | Number of entries to redo. Defaults to 1. |
| preview | boolean | no | If true, return what *would* be redone without performing it. |
List the undo and redo stacks: tool name, args summary, files affected, and age in seconds for each entry. Use to decide how far to undo (then call mcp_undo with the chosen count) or to confirm a specific change is still on the stack. Returns {undo: [...newest-first], redo: [...newest-first], cap:…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | number | no | Max entries to return per stack. Defaults to 20. |
Crawl the entire Godot project and build an interactive visual map of all scripts showing their structure (variables, functions, signals), connections (extends, preloads, signal connections), and descriptions. Opens an interactive browser-based visualization.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| path | string | no | Folder to start crawling from (default: res://) |
| include_addons | boolean | no | Whether to include scripts in the addons/ folder (default: false) |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Godot or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
No tools were enumerated, so prompt-injection, capability and toxic-flow analysis had no tool surface to inspect. To grade a package’s real runtime tools, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| No per-tool rows for this release — see the note below. | ||
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.6.1. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Godot can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.