io.github.tomyud1/godot-mcp
NPM · GODOT-MCP-SERVER · SCANNED AUG 3
MCP server for Godot game engine integration — control the Godot editor with AI
Available components
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 →
Supply Chain Security70
- No malware found by supply-chain analysis.Pass
- CVE check failed: a known high-severity CVE affects @modelcontextprotocol/sdk 1.25.3, a direct dependency. A fixed version is available. View diagnostics → Fail
- No install/post-install scripts declared.Pass
- Only part of the dependency tree could be resolved (93 of 97), so this covers what we could see, not the whole tree. View diagnostics → Partial
Provenance & Transparency45
- Source repository is publicly reachable at the declared URL. View diagnostics → Pass
- Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
- Clear OSI-approved license (MIT).Pass
- Actively maintained (last published 103 days ago).Pass
- Disclosure check failed: no security disclosure policy was found in the source repository. See how to fix → Fail
Schema Quality & AI Usability81
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 8537 tokens (~121/item across 70 items; 65 tools + 5 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 Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage98
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 93% of tool parameters carry a description.Partial
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Unverified: 1 category
A category scored 0 because we could not verify it: a data source with nothing on this package, evidence we could not reach, or a check we could not run. We only credit what we can confirm.
Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.
npm · godot-mcp-server
claude mcp add tomyud1-godot-mcp -- npx -y godot-mcp-server
codex mcp add tomyud1-godot-mcp -- npx -y godot-mcp-server
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tomyud1-godot-mcp": {
"type": "local",
"command": [
"npx",
"-y",
"godot-mcp-server"
],
"enabled": true
}
}
} openclaw mcp add tomyud1-godot-mcp --command npx --arg -y --arg godot-mcp-server
mcp_servers:
tomyud1-godot-mcp:
command: "npx"
args: ["-y", "godot-mcp-server"] {
"mcpServers": {
"tomyud1-godot-mcp": {
"command": "npx",
"args": [
"-y",
"godot-mcp-server"
]
}
}
} 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.
- 2 Aug 26 +36
- CVE-2026-25536 affects this package: high ▼ security
- GHSA-frvp-7c67-39w9 affects this package: high ▼ security
- Provenance: unverified → fail ▼ security
- Known CVEs: unverified → fail ▼ security
- Install scripts: unverified → pass ▲ security
- Malware scan: unverified → pass ▲ security
- Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window). security
- Maintenance: unverified → pass ▲ functional
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → good ▲ functional
- License: unverified → pass ▲ functional
- Dependency health: unverified → partial ▲ functional
- Licence: MIT functional
- 31 Jul 26 −27
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 27 Jul 26 52
First indexed and scored.
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 3 Aug 2026 · Analysed npm/[email protected]
Provenance none
Ecosystem: npm · Outcome: none
Vulnerabilities 2 findings
| ID | CVE | Severity | Vector | Fix available |
|---|---|---|---|---|
| GHSA-frvp-7c67-39w9 | medium | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:N/A:N | yes | |
| GHSA-345p-7cg4-v4c7 | CVE-2026-25536 | high | CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N | yes |
Dependencies 93 packages
93 packages in the resolved dependency tree · 93 deprecated · 29 stale.
The dependency tree was only partially resolved, so these counts may be incomplete.
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.
send_input ~221
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 → wait → query_runtime_node / take_screenshot.
| Name | Type | Req | Description |
|---|---|---|---|
| event | object | yes | InputEvent descriptor: Key: {type:"key", key:"Space", pressed:true, shift?:bool, ctrl?:bool, alt?:bool} or {type:"key", keycode:32, pressed:true} Mouse button: {type:"mouse_button", button_index:… |
No output schema declared.
No examples provided.
set_collision_shape ~168
Create and assign a collision shape resource to a CollisionShape2D or CollisionShape3D node. Supports: CircleShape2D, RectangleShape2D, CapsuleShape2D, SphereShape3D, BoxShape3D, etc.
| Name | Type | Req | Description |
|---|---|---|---|
| node_path | string | — | Path to the CollisionShape2D/3D node |
| scene_path | string | yes | Path to the .tscn scene file |
| shape_params | object | — | Shape parameters: {radius: 32} for circles, {size: {x: 64, y: 64}} for rectangles, etc. |
| shape_type | string | yes | Shape type: CircleShape2D, RectangleShape2D, CapsuleShape2D, SphereShape3D, BoxShape3D, etc. |
No output schema declared.
No examples provided.
set_material ~205
Create and assign a material to a MeshInstance3D, CSG, or GeometryInstance3D node. Supports StandardMaterial3D or loading from file.
| Name | Type | Req | Description |
|---|---|---|---|
| material_params | object | — | 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… |
| material_type | string | yes | "StandardMaterial3D" or "file" to load from a resource path |
| node_path | string | — | Path to the target node |
| scene_path | string | yes | Path to the .tscn scene file |
| surface_index | number | — | For MeshInstance3D only: surface index for per-surface override. Omit for material_override on all surfaces. |
No output schema declared.
No examples provided.
set_mesh ~279
Create and assign a mesh resource to a MeshInstance3D node. REQUIRED to make 3D geometry visible. Primitive types: BoxMesh, SphereMesh, CylinderMesh, CapsuleMesh, PlaneMesh, PrismMesh, TorusMesh, QuadMesh, TextMesh. Or load from file.
| Name | Type | Req | Description |
|---|---|---|---|
| mesh_params | object | — | 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… |
| mesh_type | string | yes | Mesh class: "BoxMesh", "SphereMesh", "CylinderMesh", "CapsuleMesh", "PlaneMesh", "PrismMesh", "TorusMesh", "QuadMesh", "TextMesh", or "file" to load from a resource path |
| node_path | string | — | Path to the MeshInstance3D node within the scene |
| scene_path | string | yes | Path to the .tscn scene file |
No output schema declared.
No examples provided.
set_node_groups ~124
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).
| Name | Type | Req | Description |
|---|---|---|---|
| groups | array | yes | List of group names to apply |
| mode | string | — | replace (default): node ends up in EXACTLY the listed groups. add: union with existing. remove: drop the listed groups. |
| node_path | string | — | Path to the node (. for root) |
| scene_path | string | yes | Path to the .tscn scene file |
No output schema declared.
No examples provided.
set_node_properties ~151
Set MULTIPLE properties on a node in a single tool call. Non-atomic: each property is applied independently; the response separates "applied" from "failed" so partial success surfaces clearly. Saves the scene once at the end. Resource-typed properties must use set_resource_property / set_sprite_texture / etc.
| Name | Type | Req | Description |
|---|---|---|---|
| node_path | string | — | Path to the node (. for root, or relative path) |
| properties | object | yes | Map of property_name -> value. Each value follows the same form as modify_node_property.value (primitives, arrays, or {type:"Vector3",...} discriminated objects). |
| scene_path | string | yes | Path to the .tscn scene file |
No output schema declared.
No examples provided.
set_resource_property ~200
Modify a property on a Resource that is currently held by a node (or by another resource attached to that node). Use this to tweak shape radii, material colors, gradient stops, etc., WITHOUT recreating the resource. resource_path walks from the node down to the resource using "/"-separated property names, e.g. "shape", "material", or "material/next_pass". After the change, saves the scene.
| Name | Type | Req | Description |
|---|---|---|---|
| node_path | string | — | Path to the node owning the resource |
| property_name | string | yes | Property on the target resource to set (e.g. "radius", "albedo_color") |
| resource_path | string | yes | Path from node to the target resource via property names. Examples: "shape", "material", "material/next_pass" |
| scene_path | string | yes | Path to the .tscn scene file |
| value | — | yes | New value (same shape as modify_node_property.value) |
No output schema declared.
No examples provided.
set_sprite_texture ~322
Assign a texture resource to a Sprite2D / Sprite3D / TextureRect node in a .tscn scene file. Modes: • FromPath — load any texture file from disk (png/jpg/webp/svg/.tres) via load(). Returns whatever Texture2D the importer produced (usually CompressedTexture2D). Most common after generate_2d_asset. • ImageTexture (DEPRECATED ALIAS for FromPath, kept for back-compat) • NewImageTexture — force-create an ImageTexture (in-memory) from a raw image file. • PlaceholderTexture2D — in-scene placeholder of a given size. • GradientTexture2D / NoiseTexture2D — procedural textures. Response always includes texture_class (the actual Godot class the texture decoded to), width, height, and texture_path so the agent can confirm what landed without an extra get_resource_info call.
| Name | Type | Req | Description |
|---|---|---|---|
| node_path | string | — | Path to the Sprite2D/Sprite3D/TextureRect node |
| scene_path | string | yes | Path to the .tscn scene file |
| texture_params | object | — | Texture parameters. FromPath / ImageTexture / NewImageTexture: {path: "res://assets/sprite.png"}. PlaceholderTexture2D: {size: {x: 64, y: 64}}. GradientTexture2D / NoiseTexture2D: {width, height}. |
| texture_type | string | yes | How to obtain the texture. Prefer FromPath for assets on disk. |
No output schema declared.
No examples provided.
setup_autoload ~103
Register, unregister, or list autoload singletons. Autoloads are scripts/scenes loaded automatically at project start.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | — | Autoload name (e.g., "GameManager", "AudioManager") |
| operation | string | yes | "add" to register, "remove" to unregister, "list" to show all autoloads |
| path | string | — | res:// path to the script or scene file (required for "add") |
No output schema declared.
No examples provided.
snap_node_to_grid ~153
Snap a Node3D position to a grid in local or global space. Useful for modular level building and keeping 3D scenes aligned.
| Name | Type | Req | Description |
|---|---|---|---|
| axes | array | — | Axes to snap. Any of: ["x"], ["x","z"], ["x","y","z"] (default: all axes) |
| grid_size | — | yes | Positive grid size. Use a number for uniform snapping or {x,y,z} for per-axis snapping. |
| node_path | string | — | Path to the Node3D to snap |
| scene_path | string | yes | Path to the .tscn scene file |
| space | string | — | Coordinate space: "local" or "global" (default: "global") |
No output schema declared.
No examples provided.
stop_scene ~33
Stop the currently running scene in the Godot editor. Always stop the scene before editing code to avoid errors repeating every frame.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
take_screenshot ~152
Capture the current viewport of the running game and save it as a PNG. REQUIRES the game to be running with the MCPRuntime autoload connected (run_scene with wait_for_runtime=true first). Returns resource_path, absolute_path, width, height, and (optionally) base64_png. Default save location is res://addons/godot_mcp/cache/screenshots/.
| Name | Type | Req | Description |
|---|---|---|---|
| return_base64 | boolean | — | Also include the PNG bytes inline as base64 (default: false). Useful when the agent has no filesystem access. |
| save_to | string | — | Optional res:// or user:// destination path. Defaults to res://addons/godot_mcp/cache/screenshots/screenshot_<ms>.png |
No output schema declared.
No examples provided.
update_project_settings ~122
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 here, partial updates are merged safely (existing events are preserved).
| Name | Type | Req | Description |
|---|---|---|---|
| settings | object | yes | Dictionary of setting paths to new values (e.g., {"display/window/size/viewport_width": 1920, "display/window/size/viewport_height": 1080}) |
No output schema declared.
No examples provided.
validate_script ~64
Validate a GDScript file for syntax errors using Godot's built-in parser. Call after creating or modifying scripts to ensure they are error-free.
| Name | Type | Req | Description |
|---|---|---|---|
| path | string | yes | Path to the GDScript file to validate (e.g., res://scripts/player.gd) |
No output schema declared.
No examples provided.
wait ~87
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).
| Name | Type | Req | Description |
|---|---|---|---|
| ms | number | — | Milliseconds to wait (1..30000). |
| seconds | number | — | Seconds to wait (0.001..30). Convenient when the agent is thinking in seconds. |
No output schema declared.
No examples provided.