esc
navigate openSearch by Pagefind

Command groups

The 50 command groups, how invocation works, and how the wire coerces values.

Invocation is godot-mcp <group> <command> [--flag value …]. Command and flag names accept kebab- or snake-case (node set-anchor becomes node.set_anchor). Values that start with [ or { are parsed as JSON. On error the CLI prints the JSON-RPC code, message, and any suggestions to stderr.

The groups

AreaGroups
Core editingproject scene node script csharp editor debug engine fs
3D placement + authoringspatial material csg gridmap mesh authoring scene3d
Proceduralscatter pcg wfc
Art + runtimelighting path camera scene2d runtime input particles shader
Animationanimation anim_tree skeleton
World + systemstilemap navigation physics audio input_map resource multiplayer
Project opstheme ui localization import export android analysis batch profiling test doc cleanup

Discover the catalog

You don’t have to know a command’s name or flags in advance. The CLI serves the whole catalog live from the running editor, so it never goes stale:

Terminal window
godot-mcp node --help # list a group, one line per command
godot-mcp node add --help # a param table: flag, type, required, description
godot-mcp help all # the entire catalog, grouped by category
godot-mcp engine commands --group node --docs # the same, as JSON

Every one of the 330 commands carries param docs, so <group> <command> --help prints a real table rather than a generic hint. engine commands is the JSON form: a flat methods list plus a groups map of group → command names, with --group to narrow and --docs to attach the param docs. Because help reads the live addon, it needs an editor running.

How values are coerced

Godot literals stay strings and are coerced engine-side toward the target type:

Terminal window
godot-mcp node set --node-path Player --property position --value "Vector2(100, 200)"
godot-mcp node set --node-path Light --property color --value "#ff0000"
  • --key value or --key=value for strings, --key=true|false or a bare --flag for booleans.
  • JSON arrays and objects when the value starts with [ or {.
  • Packed-array properties take a JSON array of the element literal, for example '["Vector2(-64,-64)", "Vector2(64,-64)"]'.
  • scene.tree and node.get report node paths relative to the scene root (., UI/Score), so they feed straight back as --node-path. --node-path selected resolves to the editor’s current selection.

Output formats

On a terminal, a result renders for reading: an object becomes a titled key/value box, an array of objects becomes a table, and values are color-coded by type. Piped or redirected output is exact pretty-printed JSON, so scripts and agents parse the same shape as always without stripping anything. The global --format flag (before the group) pins one of pretty, json, tsv, or ndjson (newline-delimited compact JSON), and the GODOT_MCP_FORMAT environment variable does the same for a whole shell when the flag is absent:

Terminal window
godot-mcp --format tsv scene tree

TSV renders a success result as tab-separated text for shell pipelines: an array of objects becomes a header row plus one row per element; a single object becomes key/value rows; nested values are emitted as compact JSON, with tabs and newlines escaped. NO_COLOR drops the color from the terminal render without changing its layout.

Built with the help of godot-mcp. MIT licensed.