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.

Godai

NPM · @SNOPEK-GAMES/GODAI · SCANNED SEP 21

Automate the Godot Engine editor: edit scenes and scripts, run projects, manage engine versions

Available components

+3 this week 93 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 Security100
  • 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
  • 0 of 5 dependencies flagged as unhealthy. View diagnostics → Pass
Provenance & Transparency97
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Cryptographically verified build provenance (signed, bound to snopek-games/godai). View diagnostics → Pass
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 13 days ago).Pass
  • Security-disclosure policy not yet verified: we couldn't inspect the source repository.Unverified
Schema Quality & AI Usability64
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 9738 tokens (~198/item across 49 items; 49 tools + 0 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 Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 50 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
Install

How do I install the Godai MCP server?

Godai runs locally as an npm package, launched with npx -y @snopek-games/godai. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

npm · @snopek-games/godai

# add to Claude Code
claude mcp add com-snopekgames-godai -- npx -y @snopek-games/godai
// .cursor/mcp.json
{
  "mcpServers": {
    "com-snopekgames-godai": {
      "command": "npx",
      "args": [
        "-y",
        "@snopek-games/godai"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "com-snopekgames-godai": {
      "command": "npx",
      "args": [
        "-y",
        "@snopek-games/godai"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add com-snopekgames-godai -- npx -y @snopek-games/godai
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "com-snopekgames-godai": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@snopek-games/godai"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add com-snopekgames-godai --command npx --arg -y --arg @snopek-games/godai
# ~/.hermes/config.yaml
mcp_servers:
  com-snopekgames-godai:
    command: "npx"
    args: ["-y", "@snopek-games/godai"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "com-snopekgames-godai": {
      "Transport": "stdio",
      "Command": "npx",
      "Arguments": [
        "-y",
        "@snopek-games/godai"
      ]
    }
  }
}
# add to Vellum
assistant mcp add com-snopekgames-godai -t stdio -c npx -a -y @snopek-games/godai
// mcp.json
{
  "mcpServers": {
    "com-snopekgames-godai": {
      "command": "npx",
      "args": [
        "-y",
        "@snopek-games/godai"
      ]
    }
  }
}
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 0
    • Stability: 0.97 → pass security
  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 93 to 97. That category is still filling its 30-day observation window: 28 days of observed history at the previous scan, 29 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 87 to 90. That category is still filling its 30-day observation window: 26 days of observed history at the previous scan, 27 at this one. The score rises as the window fills, whether or not the server changes.

  • 16 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 80 to 83. That category is still filling its 30-day observation window: 24 days of observed history at the previous scan, 25 at this one. The score rises as the window fills, whether or not the server changes.

  • 14 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 73 to 77. That category is still filling its 30-day observation window: 22 days of observed history at the previous scan, 23 at this one. The score rises as the window fills, whether or not the server changes.

  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.

  • 10 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 60 to 63. That category is still filling its 30-day observation window: 18 days of observed history at the previous scan, 19 at this one. The score rises as the window fills, whether or not the server changes.

  • 8 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.

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/@snopek-games/godai@0.5.0

Provenance Verified

A signed build attestation was found and verified, binding this exact artifact to the source repository it claims to come from.

Result Verified
Ecosystem npm
Reason Verified
Discovered via Registry attestation endpoint
Source repo snopek-games/godai
Certificate issuer https://gitlab.com
Certificate SAN https://gitlab.com/snopek-games/godai//.gitlab-ci.yml@refs/tags/v0.5.0
Rekor log index 2751375268
Predicate type https://slsa.dev/provenance/v0.2
Subject digest sha512:6ddf671f9bf891b89f3abd01e7dac42019bd19ec0574debeb28320525e6558a775108c4809d69f5f065c53096d56e0dfad9e950578d90f595d793cb57

Background: How many MCP packages publish verified provenance →

Dependencies 5 packages
Packages resolved 5
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 49 exposed · ~9,361 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 ~521

Creates a new node in the current scene, with the given properties set. Property values are strings in Godot variant syntax: - String properties take the raw string, with NO extra quotes (e.g. "name": "MyNode") - Other types use Godot syntax, e.g. `0.5`, `true`, `Vector2(1, 2)`, `Color(1, 0, 0, 1)`, `NodePath("../Other")` - Packed arrays take a flat list of components, so: `PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)` is two colors (r,g,b,a, r,g,b,a), `PackedVector2Array(1, 2, 3, 4)` is two vectors - To reference a saved resource: `Resource("res://path/to/file.tres")` - To create an embedded resource: `Object(ClassName, "prop": value, ...)`, e.g. `Object(SphereMesh,"radius":2.0)`, or `Object(SphereMesh)` for one with every property at its default. Do NOT use SubResource() or ExtResource() - those only work inside .tscn files. - Integer enum properties take the option name (e.g. `Nearest`) or the integer value; setting one by integer returns a note with the matching option name, and an integer matching no option is still applied, with a warning Like all scene edits, the new node is in-memory until save_scene: call it once you're done editing, or it is lost. Every property is verified by reading it back after setting, like set_node_properties. The node is still created even when a property fails: properties that could not be set, or that ended up with a different value than requested, are reported in 'warnings' (with anything Godot printed in 'output'), and 'node_path' says where the node ended up. Do NOT retry the call over a warning - that would create a second node; fix the property with set_node_properties instead.

NameTypeReqDescription
node_typestringyesThe name of the node class to create
parent_pathstringPath to the parent node, relative to the scene root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
propertiesobjectKeys are the Godot property names to set
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did, in which case the node was NOT created
node_pathstringThe path of the new node, relative to the scene root
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene, or the option name matching an integer enum value that was set
outputarrayMessages Godot printed while the node was being created
successbooleanTrue if the node was created; property problems are reported in 'warnings' and do not affect this - do NOT retry the call for them, fix them with set_node_properties instead
warningsarrayProperties that could not be set, or ended up with a different value than requested; any property not listed here was set to the requested value

No examples provided.

add_to_group ~106

Adds a node in the current scene to one or more groups. Like all scene edits, the change is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
groupsarrayyesThe groups to add the node to
node_pathstringyesPath to the node, relative to the scene root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the node was added to the groups

No examples provided.

attach_script ~136

Attaches an existing script file to a node in the current scene. The script's base type must be compatible with the node's type. Use create_script first if the script doesn't exist yet. Like all scene edits, the attachment is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
node_pathstringyesPath to the node, relative to the scene root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
script_pathstringyesPath to the script file, relative to the project root
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the script was attached

No examples provided.

clear_log_messages ~73

Clears the log messages captured so far, so subsequent get_log_messages calls only return output from after this point. This only affects the captured messages; the editor's own Output panel is untouched.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the captured log messages were cleared

No examples provided.

close_editor ~125

Closes the Godot editor for the project. The user is asked to confirm first, and the call fails if they decline. A headless editor closes without asking. By default, unsaved changes are saved before closing; pass 'skip_save' as true to discard them instead. If the project is running, it is stopped first.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
skip_savebooleanDiscard unsaved changes instead of saving them before closing (default: false)
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue once the user has accepted and the editor is closing

No examples provided.

connect_signal ~177

Connects a signal on one node to a method on another node, in the current scene. Both nodes must be in the current scene. The signal must exist on 'from_node', and the method on 'to_node'. Like all scene edits, the connection is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
from_nodestringyesPath to the node emitting the signal, relative to the scene root
methodstringyesName of the method to call on the receiving node
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
signalstringyesName of the signal to connect
to_nodestringyesPath to the node receiving the signal, relative to the scene root
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the signal was connected

No examples provided.

create_resource ~470

Creates a new resource. Does NOT open it automatically. Property values are strings in Godot variant syntax: - String properties take the raw string, with NO extra quotes (e.g. "resource_name": "My Resource") - Other types use Godot syntax, e.g. `0.5`, `true`, `Vector2(1, 2)`, `Color(1, 0, 0, 1)` - Packed arrays take a flat list of components, so: `PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)` is two colors (r,g,b,a, r,g,b,a), `PackedVector2Array(1, 2, 3, 4)` is two vectors - To reference a saved resource: `Resource("res://path/to/file.tres")` - To create an embedded resource: `Object(ClassName, "prop": value, ...)`, e.g. `Object(SphereMesh,"radius":2.0)`, or `Object(SphereMesh)` for one with every property at its default. Do NOT use SubResource() or ExtResource() - those only work inside .tscn files. - Integer enum properties take the option name (e.g. `Nearest`) or the integer value; setting one by integer returns a note with the matching option name, and an integer matching no option is still applied, with a warning Every property is verified by reading it back after setting, like set_resource_properties. The resource is still created and saved even when a property fails: properties that could not be set, or that ended up with a different value than requested, are reported in 'warnings' (with anything Godot printed in 'output'). Do NOT retry the call over a warning - the file now exists; fix the property with set_resource_properties instead.

NameTypeReqDescription
file_pathstringyesPath to the .tres file to create, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
propertiesobjectKeys are the Godot property names to set
resource_typestringyesThe resource type
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did, in which case the resource was NOT created
notesarrayNotes that don't indicate a problem, e.g. the option name matching an integer enum value that was set
outputarrayMessages Godot printed while the resource was being created
successbooleanTrue if the resource was created and saved; property problems are reported in 'warnings' and do not affect this - do NOT retry the call for them, fix them with set_resource_properties instead
warningsarrayProperties that could not be set, or ended up with a different value than requested; any property not listed here was set to the requested value

No examples provided.

create_scene ~86

Creates a new scene and opens it in the editor.

NameTypeReqDescription
file_pathstringyesPath to the .tscn file to create, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
root_node_typestringyesThe node type of the scene's root node
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the scene was created and opened

No examples provided.

create_script ~146

Creates a new GDScript file. Does NOT open or attach it. If 'content' is given, it is used as the file's contents. Otherwise, a minimal script extending 'base_class' is generated.

NameTypeReqDescription
base_classstringBase class for the generated script when 'content' is omitted (default: Node)
contentstringFull contents of the script file. If omitted, a minimal template is generated.
file_pathstringyesPath to the .gd file to create, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the script file was created

No examples provided.

detach_script ~90

Removes the script attached to a node in the current scene. Like all scene edits, the change is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
node_pathstringyesPath to the node, relative to the scene root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the script was detached

No examples provided.

disconnect_signal ~145

Disconnects a previously-connected signal between two nodes in the current scene. Like all scene edits, the change is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
from_nodestringyesPath to the node emitting the signal, relative to the scene root
methodstringyesName of the connected method on the receiving node
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
signalstringyesName of the signal to disconnect
to_nodestringyesPath to the node receiving the signal, relative to the scene root
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the signal was disconnected

No examples provided.

execute_editor_script ~341

Executes the given GDScript code in the editor, in the context of a Node that is a child of the scene currently being edited. For modifying the current scene, use the other tools when possible. However, if you do use a script to modify the current scene, you MUST use `EditorUndoRedoManager` from `EditorInterface.get_editor_undo_redo()`, and the action name MUST end with "(Godai)". You can find nodes relative to the scene root using `EditorInterface.get_edited_scene_root().get_node_or_null(node_path)`. Two helper methods have been provided: - `func editor_undo_redo_create_node(p_undo_redo: EditorUndoRedoManager, p_parent: Node, p_child: Node) -> void` - `func editor_undo_redo_remove_node(p_undo_redo: EditorUndoRedoManager, p_parent: Node, p_child: Node) -> void` If you are using `EditorUndoRedoManager` to add or remove a node, you MUST call one of those helper methods before calling `commit_action()`. This will add some `add_do_method()` and `add_undo_method()` calls to ensure the changes are synchronized to the live game if the game is running. If the script successfully runs, the output from `print()` will be returned.

NameTypeReqDescription
codestringyesA snippet of GDScript code. It should use tabs rather than spaces for indentation. Don't wrap the code in a `_ready()` function.
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
outputarrayThe lines printed by the script via print()
successbooleanTrue if the script ran successfully

No examples provided.

get_current_scene ~50

Gets information about the scene that is currently opened in the Godot editor.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
root_node_namestringThe name of the root Node
root_node_typestringThe class of the root Node
scene_pathstringThe path to the scene file, or '[unsaved]' for a never-saved scene

No examples provided.

get_current_scene_tree ~52

Gets the tree for the scene that is currently opened in the Godot editor.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
childrenarrayThe child nodes; omitted if the node has no children
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
namestringThe Node name
pathstringThe path of the node within the scene, relative to the scene root
scriptstringThe path to the script file, if this node has a script attached; otherwise omitted
typestringThe class of the Node

No examples provided.

get_editor_settings ~305

Gets settings from the Godot editor itself (the values stored in the global editor configuration, e.g. 'text_editor/behavior/indent/size' or 'text_editor/appearance/whitespace/draw_tabs'). These are editor-wide preferences, not project settings. Pass 'names' to get specific settings by name (returned regardless of whether they match their default). Otherwise, all settings are returned, but only those whose value differs from the default; pass 'include_defaults' as true to also include settings left at their default value. Setting values are strings in Godot variant syntax. Integer enum settings are returned as their option name (e.g. `Nearest` instead of `0`), with a note pointing out the translation; pass 'enums_as_ints' as true to get the raw integer values instead. Settings under 'godai/' are Godai's own configuration and are never returned; only the user can see them, via Editor Settings.

NameTypeReqDescription
enums_as_intsbooleanReturn integer enum settings as their raw integer value, instead of translated to the option name (default: false)
include_defaultsbooleanWhen getting all settings, also include those left at their default value (default: false)
namesarraySpecific setting names to get. If omitted, all settings are returned.
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. which integer enum settings were translated to their option name
settingsobjectA map of setting name to value, in Godot variant syntax

No examples provided.

get_godai_settings ~64

Gets Godai's own settings, which configure Godai itself rather than anything inside the Godot project or editor. Only the settings that can be changed at runtime are included; the rest come from command-line arguments. Use set_godai_settings to change them.

Input schema present but exposes no named parameters.

NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
godot_versionstringThe version of Godot used by default, as named by list_installed_godot_versions; empty if none is configured
project_base_pathstringThe base path where the user's Godot projects live; always empty unless MCP is running with --global
update_checkstringWhether godai checks for its own updates: "on", "off", or empty for the default (on)

No examples provided.

get_import_settings ~82

Gets the import settings for an imported asset (e.g. a texture or audio file). Option values are strings in Godot variant syntax.

NameTypeReqDescription
file_pathstringyesPath to the imported asset, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
importerstringThe name of the importer used for this asset
optionsobjectA map of import option names to values, in Godot variant syntax

No examples provided.

get_log_messages ~139

Gets recent log output from the editor (print() output, warnings, and errors) captured since the editor started. Messages are sorted oldest first. Includes messages from both the editor and games run via `run_project`. Each line is prefixed with the local time it was captured, as '[HH:MM:SS.mmm]', so identical lines from different moments can be told apart.

NameTypeReqDescription
countintegerMaximum number of recent messages to return (default: 100). Use 0 for all retained messages.
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
messagesarrayThe most recent log lines, oldest first

No examples provided.

get_node_groups ~77

Gets the groups that nodes in the current scene belong to. The results are returned in 'nodes', keyed by the requested node path.

NameTypeReqDescription
node_pathsarrayyesThe nodes to get the groups of
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
nodesobjectMaps each requested node path to an array of its group names (internal engine groups omitted).

No examples provided.

get_node_properties ~547

Gets the values of properties on specific nodes in the current scene. Only properties whose value differs from the node's default are returned; pass 'include_defaults' as true to also include properties left at their default value. Properties that Godot neither saves nor shows in the inspector are left out, since they're derived from other properties (e.g. `global_position` comes from `transform`) or inactive given the node's other properties; ask for one by name (e.g. `MyNode:global_position`) to read it anyway. Property values are strings in Godot variant syntax: - String properties are returned raw, without quotes - Other types use Godot syntax, e.g. `0.5`, `true`, `Vector2(1, 2)`, `Color(1, 0, 0, 1)` - Packed arrays take a flat list of components, so: `PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)` is two colors (r,g,b,a, r,g,b,a), `PackedVector2Array(1, 2, 3, 4)` is two vectors - A property referencing a saved resource is returned as `Resource("res://path/to/file.tres")` - A property holding an embedded resource is summarized as `Object(ClassName)`, e.g. `Object(SphereMesh)` - Integer enum properties are returned as their option name (e.g. `Nearest` instead of `0`), with a note pointing out the translation; pass 'enums_as_ints' as true to get the raw integer values instead To inspect the properties of an embedded resource, append a colon-separated property path to the node path: `MyMesh:mesh` returns the properties of the mesh resource, and `MyMesh:mesh:radius` returns just that value. The per-node results are returned in 'nodes', keyed by the requested node path. If any of the node paths can't be found, an error is returned and no properties are read. If a property path can't be resolved, its value will be an object with an `error` key.

NameTypeReqDescription
enums_as_intsbooleanReturn integer enum properties as their raw integer value, instead of translated to the option name (default: false)
include_defaultsbooleanAlso include properties left at their default value (default: false)
node_pathsarrayyesThe nodes to get properties from
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
nodesobjectMaps each requested node path to its result.
notesarrayNotes that don't indicate a problem, e.g. which integer enum properties were translated to their option name

No examples provided.

get_project_settings ~258

Gets settings from the project (the values stored in 'project.godot', e.g. 'application/config/name' or 'display/window/size/viewport_width'). Pass 'names' to get specific settings by name (returned regardless of whether they match their default). Otherwise, all settings are returned, but only those whose value differs from the default; pass 'include_defaults' as true to also include settings left at their default value. Setting values are strings in Godot variant syntax. Integer enum settings are returned as their option name (e.g. `Nearest` instead of `0`), with a note pointing out the translation; pass 'enums_as_ints' as true to get the raw integer values instead.

NameTypeReqDescription
enums_as_intsbooleanReturn integer enum settings as their raw integer value, instead of translated to the option name (default: false)
include_defaultsbooleanWhen getting all settings, also include those left at their default value (default: false)
namesarraySpecific setting names to get. If omitted, all settings are returned.
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. which integer enum settings were translated to their option name
settingsobjectA map of setting name to value, in Godot variant syntax

No examples provided.

get_resource_properties ~575

Gets the values of properties on a saved resource file (e.g. a .tres file). Only properties whose value differs from the resource's default are returned; pass 'include_defaults' as true to also include properties left at their default value. Properties that Godot neither saves nor shows in the inspector are left out, since they're inactive given the resource's other properties (e.g. `alpha_scissor_threshold` on a material that isn't using alpha scissor); name one in 'properties' to read it anyway. Property values are strings in Godot variant syntax: - String properties are returned raw, without quotes - Other types use Godot syntax, e.g. `0.5`, `true`, `Vector2(1, 2)`, `Color(1, 0, 0, 1)` - Packed arrays take a flat list of components, so: `PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)` is two colors (r,g,b,a, r,g,b,a), `PackedVector2Array(1, 2, 3, 4)` is two vectors - A property referencing another saved resource is returned as `Resource("res://path/to/file.tres")` - A property holding an embedded resource is summarized as `Object(ClassName)`, e.g. `Object(FastNoiseLite)` - Integer enum properties are returned as their option name (e.g. `Nearest` instead of `0`), with a note pointing out the translation; pass 'enums_as_ints' as true to get the raw integer values instead Requested properties may use colon-separated sub-paths to address properties nested inside embedded resources or other properties, e.g. `noise:frequency` or `albedo_color:r`. The results are returned in 'properties', keyed by property name (or requested property path). If a requested property holds an embedded resource (e.g. `noise`), all of that resource's properties are returned for it, instead of just a summary. If a requested property can't be resolved, its value will be an object with an `error` key.

NameTypeReqDescription
enums_as_intsbooleanReturn integer enum properties as their raw integer value, instead of translated to the option name (default: false)
file_pathstringyesPath to the resource file, relative to the project root
include_defaultsbooleanAlso include properties left at their default value (default: false)
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
propertiesarrayThe properties to get. If omitted, all of the resource's properties are returned.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. which integer enum properties were translated to their option name
propertiesobjectIf 'properties' was omitted, a map of all the resource's property names to values. If 'properties' was given, a map of each requested property path to its result.

No examples provided.

get_selected_nodes ~62

Gets the nodes currently selected in the editor for the current scene. If nothing is selected, 'node_paths' is an empty array.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
node_pathsarrayPaths of the selected nodes, relative to the scene root

No examples provided.

instantiate_scene ~145

Instantiates a saved scene (.tscn/.scn) as a child node in the current scene, like adding an instanced scene in the editor. Like all scene edits, the new instance is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
namestringName for the new instance node
parent_pathstringPath to the parent node, relative to the scene root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
scene_pathstringyesPath to the scene file to instantiate, relative to the project root
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
node_pathstringThe path of the new instance node, relative to the scene root
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the scene was instantiated

No examples provided.

list_open_projects ~39

Lists the projects currently open in a Godot editor, which version of Godot each one is open in, and whether that editor is headless.

Input schema present but exposes no named parameters.

NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
projectsarrayThe projects that are currently open in a Godot editor

No examples provided.

list_projects ~55

Lists the Godot projects that are available to open. When the MCP is running with --global, this includes the projects registered in the project manager and those under the project base path. Otherwise, this recursively searches the allowed root paths.

Input schema present but exposes no named parameters.

NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
projectsarrayThe Godot projects that were found

No examples provided.

open_godot_project ~257

Opens a Godot project in a new Godot editor instance, if it isn't already open. Safe to call first for any project, open or not: one that is already open returns its running editor rather than starting a second one, so there is no need to check with list_open_projects beforehand. An editor that is already open keeps the version of Godot and the headless setting it was started with: headless is ignored for it, and asking for a godot_version it isn't running is an error rather than a silent no-op. Check already_open in the result to see whether an editor was already there.

NameTypeReqDescription
godot_versionstringOpen the project with this version of Godot, regardless of the version the project itself asks for, installing it if it isn't installed yet. Use a version from list_installed_godot_versions. Leave th…
headlessbooleanLaunch the editor without visual or audio output (default: false)
project_pathstringyesThe absolute path to the project directory
NameTypeReqDescription
already_openbooleanTrue if an editor was already running for this project, in which case headless was ignored and godot_version, if it was given, matched what that editor is running
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the project was already open, or a new editor instance was started for it

No examples provided.

open_resource ~64

Opens a resource in the inspector.

NameTypeReqDescription
file_pathstringyesPath to the .tres file to open, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the resource was opened in the inspector

No examples provided.

open_scene ~64

Opens a scene in the editor.

NameTypeReqDescription
file_pathstringyesPath to the .tscn file to open, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the scene was opened

No examples provided.

open_script ~67

Opens a script file in the editor's script editor.

NameTypeReqDescription
file_pathstringyesPath to the .gd file to open, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the script was opened in the script editor

No examples provided.

pin_project_to_godot_version ~111

Records in the project which version of Godot it is built with, so that Godai always opens it with that version. This is written to a .godai.json config file in the project, which is meant to be committed, so that everyone working on it opens the same editor.

NameTypeReqDescription
godot_versionstringyesThe version or linked name to pin the project to, which must already be installed
project_pathstringyesThe absolute path to the project directory
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
godot_versionstringThe version the project is now pinned to
successbooleanTrue if the project was pinned to that version

No examples provided.

read_script ~99

Reads the contents of a script file. If the script is currently open in the editor, its live (possibly unsaved) buffer is returned and 'open_in_editor' is true. Otherwise the contents are read from disk.

NameTypeReqDescription
file_pathstringyesPath to the .gd file, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
contentstringThe contents of the script (the live editor buffer if open, otherwise the file on disk)
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
open_in_editorbooleanTrue if the script is currently open in the editor (so 'content' is the live buffer)

No examples provided.

reimport ~94

Reimports one or more asset files (e.g. after changing the source file or its import settings). Each path must be an imported asset (i.e. have a .import file). On error, nothing is reimported.

NameTypeReqDescription
file_pathsarrayyesThe assets to reimport
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the assets were reimported

No examples provided.

remove_from_group ~106

Removes a node in the current scene from one or more groups. Like all scene edits, the change is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
groupsarrayyesThe groups to remove the node from
node_pathstringyesPath to the node, relative to the scene root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the node was removed from the groups

No examples provided.

remove_node ~93

Removes the given node (and all its children) from the current scene. Like all scene edits, the change is in-memory until save_scene: call it once you're done editing, or it is lost.

NameTypeReqDescription
node_pathstringyesPath to the node, relative to the scene root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene
successbooleanTrue if the node was removed

No examples provided.

restart_editor ~126

Restarts the Godot editor for the project. The user is asked to confirm first, and the call fails if they decline. A headless editor restarts without asking. By default, unsaved changes are saved before restarting; pass 'skip_save' as true to discard them instead. If the project is running, it is stopped first.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
skip_savebooleanDiscard unsaved changes instead of saving them before restarting (default: false)
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue once the editor has restarted and reconnected

No examples provided.

run_project ~143

Runs the project from the editor. 'scene' controls what runs: omit it or use 'main' to run the project's main scene, 'current' to run the scene open in the editor, or a path to run a specific scene file.

NameTypeReqDescription
clear_log_messagesbooleanClear the captured log messages before running, so get_log_messages only returns output from this run onward (default: false)
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
scenestringWhat to run: 'main' (default), 'current', or a path to a scene file
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the project started running

No examples provided.

save_scene ~60

Saves the scene currently open in the editor to its file. If the scene has never been saved, use save_scene_as instead.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
scene_pathstringThe path the scene was saved to
successbooleanTrue if the scene was saved

No examples provided.

save_scene_as ~93

Saves the scene currently open in the editor to the given path, changing the path of the current scene, such that subsequent save_scene calls would save to the new path.

NameTypeReqDescription
file_pathstringyesPath to the .tscn file to save to, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
scene_pathstringThe path the scene was saved to
successbooleanTrue if the scene was saved

No examples provided.

save_script ~107

Saves a script's unsaved changes from the editor to its file. If the script is open in the editor, its current (possibly unsaved) contents are written to disk. If it isn't open, there is nothing to save and this is a no-op.

NameTypeReqDescription
file_pathstringyesPath to the .gd file, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
savedbooleanTrue if the script was open and its contents were written to disk; false if it wasn't open (nothing to save)
successbooleanTrue if the operation succeeded

No examples provided.

set_editor_settings ~401

Changes settings in the Godot editor itself (editor-wide preferences, not project settings). Pass 'settings': a map of setting name (e.g. 'text_editor/behavior/indent/size') to value. Values are strings in Godot variant syntax (e.g. `16`, `true`, `2.0`); a value that isn't valid variant syntax is taken as a raw string. An integer enum setting takes the option name (e.g. `Nearest`) or the integer value; setting one by integer returns a note with the matching option name, and an integer matching no option is still applied, with a warning. Setting names must already exist; unknown names are rejected. Pass "create_missing": true to create a setting that doesn't exist yet (e.g. one belonging to a plugin that isn't currently loaded). Every setting is verified by reading it back after setting. Settings are set independently: when one fails, the rest are still applied. Settings that could not be set are reported in 'errors', and settings that ended up with a different value than requested are reported in 'warnings', along with the actual resulting value. Anything Godot printed while setting is returned in 'output'. Some settings only take effect after the editor restarts; changing one returns a warning, and the restart_editor tool can perform the restart. If none of the settings can even be attempted, the call fails and nothing is changed. Use get_editor_settings to see the available setting names and their current values. Settings under 'godai/' are Godai's own configuration and can't be changed; only the user can, via Editor Settings.

NameTypeReqDescription
create_missingbooleanAllow creating settings that don't exist yet; without it, unknown setting names are rejected
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
settingsobjectyesSettings to set (keys are setting names)
NameTypeReqDescription
errorsarrayWhen the call failed, the errors that made it fail (nothing was changed). Otherwise, settings that could not be set; any setting not listed here or in 'warnings' was set to the requested value
notesarrayNotes that don't indicate a problem, e.g. the option name matching an integer enum value that was set
outputarrayMessages Godot printed while the settings were being set
successbooleanTrue if every setting was verified to have taken the requested value (a setting that only triggered a warning still counts as success)
warningsarraySettings that were changed, but ended up with a different value than requested, or that require an editor restart to take effect

No examples provided.

set_godai_settings ~149

Changes Godai's own settings, which configure Godai itself rather than anything inside the Godot project or editor. Only the settings that can be changed at runtime can be set here; the rest come from command-line arguments. Use get_godai_settings to see the current values.

NameTypeReqDescription
godot_versionstringThe version of Godot to use by default; it must already be installed, which list_installed_godot_versions shows
project_base_pathstringThe base path where the user's Godot projects live; can only be set when MCP is running with --global
update_checkstringWhether godai checks for its own updates
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the settings were changed and saved

No examples provided.

set_import_settings ~177

Changes the import settings for an imported asset, and reimports it. Only pass the options you wish to change. Option values are strings in Godot variant syntax (e.g. `2`, `true`, `2.0`); a value that isn't valid variant syntax is taken as a raw string. An unknown option name fails the whole call. On error, nothing is changed. Use get_import_settings to see the available option names and the current importer.

NameTypeReqDescription
file_pathstringyesPath to the imported asset, relative to the project root
importerstringChange the importer used for this asset
optionsobjectImport options to set (keys are option names)
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the import settings were changed and the asset was reimported

No examples provided.

set_node_properties ~789

Sets the values of properties on specific nodes in the current scene. Only pass the properties you wish to change. To discover the properties a node supports (and their current values), call get_node_properties with "include_defaults": true. EXAMPLE: {"action": "Move node", "nodes": {"path/to/node": {"position": "Vector2(1, 2)"}}} Property values are strings in Godot variant syntax: - String properties take the raw string, with NO extra quotes (e.g. "text": "Hello") - Other types use Godot syntax, e.g. `0.5`, `true`, `Vector2(1, 2)`, `Color(1, 0, 0, 1)`, `NodePath("../Other")` - Packed arrays take a flat list of components, so: `PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)` is two colors (r,g,b,a, r,g,b,a), `PackedVector2Array(1, 2, 3, 4)` is two vectors - To reference a saved resource: `Resource("res://path/to/file.tres")` - To create an embedded resource: `Object(ClassName, "prop": value, ...)`, e.g. `Object(SphereMesh,"radius":2.0)`, or `Object(SphereMesh)` for one with every property at its default. Do NOT use SubResource() or ExtResource() - those only work inside .tscn files. - Careful: `Object(ClassName)` is also how an existing embedded resource reads back, so passing that in replaces it with a new one, losing whatever it held. - Integer enum properties take the option name (e.g. `Nearest`) or the integer value; setting one by integer returns a note with the matching option name, and an integer matching no option is still applied, with a warning Property names may use colon-separated sub-paths to set properties nested inside resources or other properties, e.g. `mesh:radius`, `material:albedo_color`, `position:x`. Note: changing a sub-property of a saved resource (`Resource("res://...")`) affects every scene using that resource. This uses the Godot editor's undo/redo system to set the properties, so as many set operations as possible should be done in a single call, so they can all be undone at once. Like all scene edits, the changes are in-memory until sa…

NameTypeReqDescription
actionstringyesHuman-readable description of the action that will be shown in Godot's undo/redo history
nodesobjectyesKeys are the paths of the nodes to change, within the scene and relative to its root. A key may include a colon-separated property path (e.g. `MyMesh:mesh`) to address a resource or other sub-object.
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayWhen the call failed, the errors that made it fail (nothing was changed). Otherwise, properties that could not be set; any property not listed here or in 'warnings' was set to the requested value
notesarrayNotes that don't indicate a problem, e.g. that the scene has unsaved changes until save_scene, or the option name matching an integer enum value that was set
outputarrayMessages Godot printed while the properties were being set
successbooleanTrue if every property was verified to have taken the requested value (a property that only triggered a warning still counts as success)
warningsarrayProperties that were changed, but ended up with a different value than requested

No examples provided.

set_project_settings ~415

Changes settings in the project and saves 'project.godot'. Pass 'settings': a map of setting name (e.g. 'display/window/size/viewport_width') to value. Values are strings in Godot variant syntax (e.g. `1280`, `true`, `2.0`); a value that isn't valid variant syntax is taken as a raw string. An integer enum setting takes the option name (e.g. `Nearest`) or the integer value; setting one by integer returns a note with the matching option name, and an integer matching no option is still applied, with a warning. Setting names must already exist; unknown names are rejected. Pass "create_missing": true to create new settings, e.g. custom game settings, 'autoload/...', 'input/...', 'shader_globals/...' or 'global_group/...'. A feature-tag override of an existing setting (e.g. 'application/config/name.web') counts as existing, and its value is validated against the base setting. Every setting is verified by reading it back after setting. Settings are set independently: when one fails, the rest are still applied (and saved). Settings that could not be set are reported in 'errors', and settings that ended up with a different value than requested are reported in 'warnings', along with the actual resulting value. Anything Godot printed while setting is returned in 'output'. Some settings only take effect after the editor restarts; changing one returns a warning, and the restart_editor tool can perform the restart. If none of the settings can even be attempted, the call fails and nothing is changed. Use get_project_settings to see the available setting names and their current values.

NameTypeReqDescription
create_missingbooleanAllow creating settings that don't exist yet; without it, unknown setting names are rejected
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
settingsobjectyesSettings to set (keys are setting names)
NameTypeReqDescription
errorsarrayWhen the call failed, the errors that made it fail (nothing was changed). Otherwise, settings that could not be set; any setting not listed here or in 'warnings' was set to the requested value
notesarrayNotes that don't indicate a problem, e.g. the option name matching an integer enum value that was set
outputarrayMessages Godot printed while the settings were being set
successbooleanTrue if every setting was verified to have taken the requested value and the project was saved (a setting that only triggered a warning still counts as success)
warningsarraySettings that were changed, but ended up with a different value than requested, or that require an editor restart to take effect

No examples provided.

set_resource_properties ~755

Sets the values of properties on a saved resource file (.tres or .res), and saves the changes to the file. Only pass the properties you wish to change. To discover the properties a resource supports (and their current values), call get_resource_properties with "include_defaults": true. EXAMPLE: {"action": "Change color", "file_path": "res://thing.tres", "properties": {"albedo_color": "Color(1, 0, 0, 1)"}} Property values are strings in Godot variant syntax: - String properties take the raw string, with NO extra quotes (e.g. "resource_name": "My Resource") - Other types use Godot syntax, e.g. `0.5`, `true`, `Vector2(1, 2)`, `Color(1, 0, 0, 1)` - Packed arrays take a flat list of components, so: `PackedColorArray(0, 0, 0, 1, 1, 1, 1, 1)` is two colors (r,g,b,a, r,g,b,a), `PackedVector2Array(1, 2, 3, 4)` is two vectors - To reference another saved resource: `Resource("res://path/to/file.tres")` - To create an embedded resource: `Object(ClassName, "prop": value, ...)`, e.g. `Object(FastNoiseLite,"frequency":0.1)`, or `Object(FastNoiseLite)` for one with every property at its default. Do NOT use SubResource() or ExtResource() - those only work inside .tscn files. - Careful: `Object(ClassName)` is also how an existing embedded resource reads back, so passing that in replaces it with a new one, losing whatever it held. - Integer enum properties take the option name (e.g. `Nearest`) or the integer value; setting one by integer returns a note with the matching option name, and an integer matching no option is still applied, with a warning Property names may use colon-separated sub-paths to set properties nested inside embedded resources or other properties, e.g. `noise:frequency`, `albedo_color:r`. Note: the changes are saved to the file immediately, and affect every scene using the resource. This uses the Godot editor's undo/redo system to set the properties, so as many set operations as possible should be done in a single call, so they can all be undone at once (undo…

NameTypeReqDescription
actionstringyesHuman-readable description of the action that will be shown in Godot's undo/redo history
file_pathstringyesPath to the .tres or .res file, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
propertiesobjectKeys are the Godot property names to set (colon-separated sub-paths allowed, e.g. `albedo_color:r`)
NameTypeReqDescription
errorsarrayWhen the call failed, the errors that made it fail (nothing was changed). Otherwise, properties that could not be set; any property not listed here or in 'warnings' was set to the requested value
notesarrayNotes that don't indicate a problem, e.g. the option name matching an integer enum value that was set
outputarrayMessages Godot printed while the properties were being set
successbooleanTrue if every property was verified to have taken the requested value (a property that only triggered a warning still counts as success)
warningsarrayProperties that were changed, but ended up with a different value than requested

No examples provided.

stop_project ~42

Stops the running project, if any.

NameTypeReqDescription
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue (the running project, if any, was stopped)

No examples provided.

unpin_project_from_godot_version ~63

Removes the version of Godot recorded in the project's .godai.json config file, leaving Godai to work out which version to open it with from the project itself.

NameTypeReqDescription
project_pathstringyesThe absolute path to the project directory
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
successbooleanTrue if the project is no longer pinned to a version of Godot
was_pinnedbooleanTrue if the project was pinned to begin with

No examples provided.

write_script ~220

Replaces the entire contents of an existing script file. You must read the script with read_script first: this fails if the script has changed since you last read it (or created/wrote it), so you don't overwrite edits you haven't seen. If it fails for that reason, read the script again and reapply your change. If the script is open in the editor, its editor buffer is updated instead of the file on disk (so unsaved edits aren't silently clobbered); 'saved' will be false, and you can call save_script to write it to disk. If it isn't open, the file is written directly and 'saved' is true. Use create_script to make a new script.

NameTypeReqDescription
contentstringyesThe full new contents of the script, which may be empty to blank the script out
file_pathstringyesPath to the .gd file, relative to the project root
project_pathstringThe path to the Godot project. It must already be open in the Godot editor.
NameTypeReqDescription
errorsarrayThe errors that caused the call to fail; present instead of the other properties when it did
notesarrayNotes that don't indicate a problem, e.g. that the script has unsaved changes until save_script
open_in_editorbooleanTrue if the script was open, so its editor buffer was updated rather than the file on disk
savedbooleanTrue if the new contents were written to disk; false if only the editor buffer was updated (call save_script to flush it)
successbooleanTrue if the script was written

No examples provided.

Common questions

What is the Godai MCP server?

Godai is an MCP server listed in the public MCP registry as com.snopekgames/godai. Automate the Godot Engine editor: edit scenes and scripts, run projects, manage engine versions. This page covers its npm package (@snopek-games/godai).

Is the Godai MCP server safe to use?

Godai scores 93 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. Its build provenance is signed and verified. 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 Godai MCP server expose?

Godai exposes 49 tools: open_godot_project, list_open_projects, get_godai_settings, set_godai_settings, pin_project_to_godot_version, and 44 more. Their descriptions and schemas cost roughly 9,361 tokens of context every time the server is loaded.

Is the Godai MCP server still maintained?

Godai 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 Godai MCP server under?

Godai declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.