Docs · Tools · Godot

99 MCP tools
for Godot, ready for your AI agent.

Nodes & scenes, resources, C# / GDScript files, and the editor run-and-play lifecycle — driven through EditorInterface.

99
Action
Family

Node

Inspect & edit the active scene tree

8

Find nodes in the active scene tree by path, type, or name.

node-findNode
  • pathstring
  • typestring
  • namestring
“Find every Camera3D node in the active scene.”

Read a node's stored properties (what the scene saves for it); each entry can be sent back to node-modify unchanged.

node-get-dataNode
  • nodeRef*NodeRef
“Show me every saved property of the Player node.”

Move an existing node to a different position among its siblings (negative index counts from the end).

node-reorderNode
  • nodeRef*NodeRef
  • index*int
“Move the Title label to the top of the VBoxContainer.”

Create a new node under a parent, optionally instancing a .tscn sub-scene.

node-createNode
  • parent*NodePath
  • typestring
  • instanceScenePathstring
  • namestring
“Add a MeshInstance3D cube under the World node.”

Set fields and properties on one or more nodes.

node-modifyNode
  • node*NodePath
  • patch*object
“Move the player node to the origin and name it Hero.”

Reparent nodes within the scene tree.

node-set-parentNode
  • node*NodePath
  • newParent*NodePath
“Move the lantern under the Props node.”

Duplicate nodes together with their subtrees.

node-duplicateNode
  • node*NodePath
  • countint
“Duplicate the platform node five times.”

Delete nodes from the active scene.

node-deleteNode
  • node*NodePath
“Delete the placeholder cube node.”

Scene

Open, save, create & inspect scenes

5

Open a res://*.tscn PackedScene in the editor.

scene-openScene
  • path*string
“Open res://scenes/Main.tscn.”

Save an open scene back to its .tscn file.

scene-saveScene
  • pathstring
“Save my changes to the main scene.”

Create a new scene asset in the project.

scene-createScene
  • path*string
  • rootTypestring
“Create a new Node3D scene at res://scenes/Level.tscn.”

List the scenes currently open in the editor.

scene-list-openedScene
“Which scenes are currently open?”

Retrieve the root nodes and structure of a scene.

scene-get-dataScene
  • pathstring
“Show me the node tree of the main scene.”

Resource

Find & mutate .tres / .res resources

6

Search the project for resources (.tres / .res).

resource-findResource
  • querystring
  • typestring
“Find every Material resource in the project.”

Read a resource's serialized fields and properties.

resource-get-dataResource
  • path*string
“Show me the fields of res://materials/Wall.tres.”

Modify a resource's properties.

resource-modifyResource
  • path*string
  • patch*object
“Set the albedo color of the wall material to grey.”

Create a new resource asset.

resource-createResource
  • path*string
  • type*string
“Create a new StandardMaterial3D resource for the floor.”

Move or rename a resource, keeping .import sidecars consistent.

resource-moveResource
  • fromPath*string
  • toPath*string
“Move the wall material into res://materials.”

Delete a resource from the project.

resource-deleteResource
  • path*string
“Delete the unused placeholder material.”

Script

CRUD on C# / GDScript · attach to nodes

6

Read a .cs or .gd script file.

script-readScript
  • path*string
“Show me the contents of Player.cs.”

Create a new script file.

script-createScript
  • path*string
  • contentsstring
“Create a HealthBar.cs script with a public float Health.”

Update an existing script file's contents.

script-updateScript
  • path*string
  • contents*string
“Add a _Ready method to Player.cs.”

Delete a script file.

script-deleteScript
  • path*string
“Delete the unused Spinner.gd script.”

Attach a script to a node.

script-attach-to-nodeScript
  • node*NodePath
  • script*string
“Attach Player.cs to the Player node.”

Validate GDScript (.gd) files and return structured parse/compile diagnostics. Omit the path to scan every .gd file under res://.

script-validateScript
  • scriptPathstring
“Check all my GDScript files for errors.”

Filesystem

Browse & reimport the res:// tree

2

Browse the res:// tree — file types and uids — via the editor file index, without loading resources.

filesystem-listFilesystem
  • pathstring
“List the files under res://scenes.”

Reimport files in the project.

filesystem-reimportFilesystem
  • pathsstring[]
“Reimport the textures I just replaced.”

Editor

Run/play lifecycle · selection

4

Read the editor application and run state.

editor-application-get-stateEditor
“Is the game currently running?”

Start or stop the running game (Godot launches it in a separate process).

editor-application-set-stateEditor
  • state*enum<Play|Stop>
“Run the game.”

Get the current editor selection.

editor-selection-getEditor
“What nodes are selected right now?”

Set the current editor selection.

editor-selection-setEditor
  • nodes*NodePath[]
“Select every Light3D node in the scene.”

Screenshot

Viewport · camera · isolated renders

3

Capture the editor viewport as a PNG.

screenshot-viewportScreenshot
“Take a screenshot of the editor viewport.”

Capture from a specific camera.

screenshot-cameraScreenshot
  • camera*NodePath
“Render the scene from the main camera.”

Render a node in isolation from a chosen angle.

screenshot-isolatedScreenshot
  • node*NodePath
“Render the player model in isolation.”

Console

Read & clear editor log collector

2

Read the plugin's collected editor logs, with filtering.

console-get-logsConsole
  • minSeverityenum<Log|Warning|Error>
  • limitint
“Show me the last 20 errors in the editor log.”

Clear the collected log cache.

console-clear-logsConsole
“Clear the editor log cache.”

Reflection

Find & call C# methods via ReflectorNet

2

Find C# methods, including private, across every loaded assembly.

reflection-method-findReflection
  • query*string
“Find every C# method whose name contains spawn.”

Call any C# method with input parameters and get the result.

reflection-method-callReflection
  • method*string
  • argsobject[]
“Call MyTools.GenerateLevel with seed 42.”

Runtime Errors

Poll errors from the running game (opt-in)

2

Read errors captured inside the running game (GDScript runtime errors, push_error/push_warning, shader errors, unhandled C# exceptions); poll only new ones via sinceSequence. Off by default — opt in with builder.WithRuntimeErrorCapture().

runtime-errors-getRuntime Errors
  • sinceSequencelong
  • maxEntriesint
“Run the game and tell me which runtime errors it raised.”

Clear the captured in-game runtime-error buffer (a no-op when capture is not enabled).

runtime-errors-clearRuntime Errors
“Clear the captured runtime errors before the next play test.”

Ping

Lightweight readiness probe

1

Lightweight readiness probe — echoes a message back, or returns pong. Verifies the end-to-end MCP path.

pingPing
  • messagestring
“Ping the Godot addon to check the connection.”

Animation

AnimationPlayer · libraries · tracks · keys

Extension · AI Animation · godot-cli install-extension com.IvanMurzak.Godot.MCP.Animation

7

Return the recommended starter config (length, loop mode, suggested track types) for a new animation.

animation-defaultsAnimation

Needs the AI Animation extension installed.

“What are good starter settings for a looping idle animation?”

Create an AnimationPlayer node in the edited scene; optional parent and name.

animation-player-createAnimation

Needs the AI Animation extension installed.

  • parentNodePath
  • namestring
“Add an AnimationPlayer under the Player node.”

Add an AnimationLibrary to an AnimationPlayer (by library name).

animation-library-addAnimation

Needs the AI Animation extension installed.

  • player*NodePath
  • library*string
“Add an animation library called moves to the AnimationPlayer.”

Create an Animation in a library (name, length, loop mode).

animation-createAnimation

Needs the AI Animation extension installed.

  • player*NodePath
  • name*string
  • lengthfloat
  • loopModestring
“Create a 1-second looping Idle animation.”

Add a track to an animation (track type value / position-3d / rotation-3d / scale-3d; node path; sub-property for value tracks).

animation-add-trackAnimation

Needs the AI Animation extension installed.

  • player*NodePath
  • animation*string
  • trackType*enum<value|position-3d|rotation-3d|scale-3d>
  • nodePath*string
“Add a position-3d track for the Hero to the Idle animation.”

Insert a keyframe into a track (animation, track index, time, value).

animation-insert-keyAnimation

Needs the AI Animation extension installed.

  • player*NodePath
  • animation*string
  • trackIndex*int
  • time*float
  • valueobject
“Insert a key at t=0.5 raising the Hero one unit.”

Read an AnimationPlayer's animation list, or a single animation's config (read-only).

animation-getAnimation

Needs the AI Animation extension installed.

  • player*NodePath
  • animationstring
“List the animations on the AnimationPlayer.”

Beehave

Behaviour trees · composites · leaves

Extension · AI Beehave · godot-cli install-extension com.IvanMurzak.Godot.MCP.Beehave

5

Return a recommended behaviour-tree skeleton description (composite/leaf taxonomy + wiring tips); needs no addon.

beehave-defaultsBeehave

Needs the AI Beehave extension installed.

“Suggest a behaviour-tree skeleton for a patrolling enemy.”

Instantiate a BeehaveTree node under an actor node in the edited scene and wire its actor / blackboard.

beehave-create-treeBeehave

Needs the AI Beehave extension installed.

  • actor*NodePath
  • namestring
“Create a BeehaveTree under the Enemy node.”

Add a SelectorComposite / SequenceComposite (chosen by arg) under a tree or composite node.

beehave-add-compositeBeehave

Needs the AI Beehave extension installed.

  • parent*NodePath
  • compositeType*enum<Selector|Sequence>
“Add a Selector composite under the BeehaveTree.”

Add an ActionLeaf / ConditionLeaf placeholder under a composite (a scaffold — you attach the behaviour script).

beehave-add-leafBeehave

Needs the AI Beehave extension installed.

  • parent*NodePath
  • leafType*enum<Action|Condition>
“Add an Action leaf under the Selector.”

Dump the structure (node types + parent/child) under a named BeehaveTree (read-only).

beehave-get-treeBeehave

Needs the AI Beehave extension installed.

  • tree*NodePath
“Show me the structure of the Enemy behaviour tree.”

CSG

Boolean solids — box/sphere/cylinder/combine

Extension · AI CSG · godot-cli install-extension com.IvanMurzak.Godot.MCP.CSG

6

Create a CSGBox3D in the edited scene; size (x, y, z); optional parent, name.

csg-box-createCSG

Needs the AI CSG extension installed.

  • size*Vector3
  • parentNodePath
  • namestring
“Create a 2×1×2 CSG box named Wall.”

Create a CSGSphere3D; radius, radial_segments; optional parent, name.

csg-sphere-createCSG

Needs the AI CSG extension installed.

  • radius*float
  • radialSegmentsint
  • parentNodePath
“Create a CSG sphere of radius 1.”

Create a CSGCylinder3D; radius, height; optional parent, name.

csg-cylinder-createCSG

Needs the AI CSG extension installed.

  • radius*float
  • height*float
  • parentNodePath
“Create a CSG cylinder of radius 0.5 and height 3.”

Create a CSGCombiner3D — the root container that boolean-combines its CSG children.

csg-combiner-createCSG

Needs the AI CSG extension installed.

  • parentNodePath
  • namestring
“Create a CSG combiner to hold the boolean shapes.”

Set a CSG node's boolean operation (Union / Intersection / Subtraction).

csg-set-operationCSG

Needs the AI CSG extension installed.

  • node*NodePath
  • operation*enum<Union|Intersection|Subtraction>
“Set the box to subtract from the combiner.”

Read a CSG node's scalar config (read-only).

csg-getCSG

Needs the AI CSG extension installed.

  • node*NodePath
“Show me the config of the CSG box.”

Dialogic

Characters, timelines & dialogue events

Extension · AI Dialogic · godot-cli install-extension com.IvanMurzak.Godot.MCP.Dialogic

5

Return a recommended starter timeline + character description (no addon needed).

dialogic-defaultsDialogic

Needs the AI Dialogic extension installed.

“Suggest a starter dialogue timeline and character.”

Create + save a DialogicCharacter resource (.dch) at a res:// path.

dialogic-create-characterDialogic

Needs the AI Dialogic extension installed.

  • path*string
  • namestring
“Create a Dialogic character named Guard at res://characters/Guard.dch.”

Create + save a DialogicTimeline resource (.dtl) with a few starter text events.

dialogic-create-timelineDialogic

Needs the AI Dialogic extension installed.

  • path*string
“Create a Dialogic timeline at res://timelines/Intro.dtl.”

Append an event (text / character / choice) to an existing timeline resource.

dialogic-add-eventDialogic

Needs the AI Dialogic extension installed.

  • path*string
  • eventType*enum<text|character|choice>
  • textstring
“Append a text event "Halt!" to the Intro timeline.”

Read back the events in a timeline resource (read-only).

dialogic-get-timelineDialogic

Needs the AI Dialogic extension installed.

  • path*string
“List the events in the Intro timeline.”

GridMap

3D grid · mesh library · cells

Extension · AI GridMap · godot-cli install-extension com.IvanMurzak.Godot.MCP.GridMap

7

Return the recommended starter config (cell size, default item id) for a new GridMap.

gridmap-defaultsGridMap

Needs the AI GridMap extension installed.

“What cell size should I use for a dungeon GridMap?”

Create a GridMap node in the edited scene; optional parent, name, cell_size (x, y, z).

gridmap-createGridMap

Needs the AI GridMap extension installed.

  • parentNodePath
  • namestring
  • cellSizeVector3
“Create a GridMap for the dungeon floor.”

Assign a MeshLibrary resource (by res:// path) to a GridMap.

gridmap-set-mesh-libraryGridMap

Needs the AI GridMap extension installed.

  • node*NodePath
  • path*string
“Assign the DungeonTiles mesh library to the GridMap.”

Set a cell at (x, y, z) to a MeshLibrary item id, with optional orientation.

gridmap-set-cellGridMap

Needs the AI GridMap extension installed.

  • node*NodePath
  • cell*Vector3Int
  • item*int
  • orientationint
“Place a wall tile at cell (2, 0, 3).”

Clear a single cell at (x, y, z).

gridmap-clear-cellGridMap

Needs the AI GridMap extension installed.

  • node*NodePath
  • cell*Vector3Int
“Clear the cell at (2, 0, 3).”

Clear every cell in a GridMap.

gridmap-clearGridMap

Needs the AI GridMap extension installed.

  • node*NodePath
“Clear every cell in the GridMap.”

Read a GridMap's scalar config (read-only).

gridmap-getGridMap

Needs the AI GridMap extension installed.

  • node*NodePath
“Show me the GridMap config.”

Navigation

Regions · agents · links · nav config

Extension · AI Navigation · godot-cli install-extension com.IvanMurzak.Godot.MCP.Navigation

6

Create a NavigationRegion2D / NavigationRegion3D node in the edited scene; optional parent, name, dimension (2D/3D).

navigation-region-createNavigation

Needs the AI Navigation extension installed.

  • parentNodePath
  • dimensionenum<2D|3D>
  • namestring
“Create a 3D navigation region for the level.”

Assign a NavigationPolygon (2D) / NavigationMesh (3D) resource to a region by res:// path.

navigation-region-set-meshNavigation

Needs the AI Navigation extension installed.

  • node*NodePath
  • path*string
“Assign the baked nav mesh to the region.”

Create a NavigationAgent2D / NavigationAgent3D under a parent node.

navigation-agent-createNavigation

Needs the AI Navigation extension installed.

  • parent*NodePath
  • dimensionenum<2D|3D>
“Add a navigation agent to the Enemy.”

Update an agent's scalar properties — radius, path_desired_distance, target_desired_distance, max_speed, avoidance_enabled; each clamped/validated.

navigation-agent-configureNavigation

Needs the AI Navigation extension installed.

  • node*NodePath
  • radiusfloat
  • maxSpeedfloat
  • avoidanceEnabledbool
“Set the enemy agent's radius to 0.5 and max speed to 4.”

Create a NavigationLink2D / NavigationLink3D with start/end positions.

navigation-link-createNavigation

Needs the AI Navigation extension installed.

  • parentNodePath
  • startPosition*Vector3
  • endPosition*Vector3
“Add a navigation link bridging the two platforms.”

Read a navigation node's scalar config (read-only).

navigation-getNavigation

Needs the AI Navigation extension installed.

  • node*NodePath
“Show me the navigation agent config on the Enemy.”

Particles

GPU emitters · configure · emit

Extension · AI Particles · godot-cli install-extension com.IvanMurzak.Godot.MCP.Particles

5

Return the recommended starter config (amount, lifetime, explosiveness, …) for a 2D/3D emitter.

particles-defaultsParticles

Needs the AI Particles extension installed.

“Suggest starter settings for a 3D spark emitter.”

Create a GpuParticles2D / GpuParticles3D node in the edited scene; optional parent, name, amount, lifetime.

particles-createParticles

Needs the AI Particles extension installed.

  • parentNodePath
  • dimensionenum<2D|3D>
  • amountint
  • lifetimefloat
“Create a 3D GPU particle emitter with 200 particles.”

Update an emitter's scalar properties; each clamped to a valid range.

particles-configureParticles

Needs the AI Particles extension installed.

  • node*NodePath
  • amountint
  • lifetimefloat
  • explosivenessfloat
“Set the emitter to 500 particles with a 2-second lifetime.”

Start/stop emission, optionally restarting first.

particles-set-emittingParticles

Needs the AI Particles extension installed.

  • node*NodePath
  • emitting*bool
  • restartbool
“Restart and start the spark emitter.”

Read an emitter's scalar config (read-only).

particles-getParticles

Needs the AI Particles extension installed.

  • node*NodePath
“Show me the particle emitter config.”

Phantom Camera

Virtual cameras · follow · look-at · priority

Extension · AI PhantomCamera · godot-cli install-extension com.IvanMurzak.Godot.MCP.PhantomCamera

7

Return the recommended follow-mode + damping starter config (no addon needed).

phantomcamera-defaultsPhantom Camera

Needs the AI PhantomCamera extension installed.

“Suggest a good follow + damping setup for a third-person camera.”

Ensure/create the required PhantomCameraHost on a scene Camera3D (the host is what actually drives the real camera).

phantomcamera-host-createPhantom Camera

Needs the AI PhantomCamera extension installed.

  • camera*NodePath
“Add a PhantomCameraHost to the main Camera3D.”

Instantiate a PhantomCamera3D node in the edited scene; optional parent, name, priority.

phantomcamera-createPhantom Camera

Needs the AI PhantomCamera extension installed.

  • parentNodePath
  • namestring
  • priorityint
“Create a PhantomCamera3D that follows the player.”

Set a PhantomCamera's follow_mode + follow_target (node path).

phantomcamera-set-followPhantom Camera

Needs the AI PhantomCamera extension installed.

  • node*NodePath
  • followMode*string
  • followTargetNodePath
“Make the PhantomCamera follow the Player node.”

Set a PhantomCamera's look_at_mode + look_at_target.

phantomcamera-set-look-atPhantom Camera

Needs the AI PhantomCamera extension installed.

  • node*NodePath
  • lookAtMode*string
  • lookAtTargetNodePath
“Make the PhantomCamera look at the Boss node.”

Set a PhantomCamera's priority (higher wins).

phantomcamera-set-priorityPhantom Camera

Needs the AI PhantomCamera extension installed.

  • node*NodePath
  • priority*int
“Bump the boss camera's priority so it takes over.”

Read a PhantomCamera's scalar config (read-only).

phantomcamera-getPhantom Camera

Needs the AI PhantomCamera extension installed.

  • node*NodePath
“Show me the PhantomCamera follow and look-at settings.”

Terrain3D

Terrain3D nodes · sculpt height · inspect

Extension · AI Terrain3D · godot-cli install-extension com.IvanMurzak.Godot.MCP.Terrain3D

4

Return the recommended region size / clipmap / LOD starter config (no addon needed).

terrain3d-defaultsTerrain3D

Needs the AI Terrain3D extension installed.

“What region size should I use for a large Terrain3D?”

Instantiate a Terrain3D node in the edited scene; set its data directory + region size.

terrain3d-createTerrain3D

Needs the AI Terrain3D extension installed.

  • parentNodePath
  • dataDirectorystring
  • regionSizeint
“Create a Terrain3D node with a 1024 region size.”

Sculpt/set terrain height at a world position via the terrain's data API.

terrain3d-set-heightTerrain3D

Needs the AI Terrain3D extension installed.

  • node*NodePath
  • position*Vector3
  • height*float
“Raise the terrain to height 20 at the world origin.”

Read a Terrain3D node's region count / size / extents (read-only).

terrain3d-get-infoTerrain3D

Needs the AI Terrain3D extension installed.

  • node*NodePath
“How many regions does the Terrain3D have?”

Tilemap

2D TileMapLayer · tileset · cells

Extension · AI Tilemap · godot-cli install-extension com.IvanMurzak.Godot.MCP.Tilemap

6

Create a TileMapLayer node in the edited scene; optional parent and name.

tilemap-createTilemap

Needs the AI Tilemap extension installed.

  • parentNodePath
  • namestring
“Create a TileMapLayer for the ground.”

Assign a TileSet resource (by res:// path) to a TileMapLayer.

tilemap-set-tilesetTilemap

Needs the AI Tilemap extension installed.

  • node*NodePath
  • path*string
“Assign the Ground tileset to the TileMapLayer.”

Set a cell at coords (x, y) from a tileset source_id + atlas coords (x, y).

tilemap-set-cellTilemap

Needs the AI Tilemap extension installed.

  • node*NodePath
  • cell*Vector2Int
  • sourceId*int
  • atlasCoords*Vector2Int
“Paint a grass tile at cell (3, 5).”

Erase the cell at coords (x, y).

tilemap-erase-cellTilemap

Needs the AI Tilemap extension installed.

  • node*NodePath
  • cell*Vector2Int
“Erase the cell at (3, 5).”

List the coordinates of all used (non-empty) cells.

tilemap-get-used-cellsTilemap

Needs the AI Tilemap extension installed.

  • node*NodePath
“List every painted cell in the TileMapLayer.”

Clear all cells in a TileMapLayer.

tilemap-clearTilemap

Needs the AI Tilemap extension installed.

  • node*NodePath
“Clear every tile from the TileMapLayer.”