# io.github.n24q02m/better-godot-mcp (npm · @n24q02m/better-godot-mcp)

Composite MCP server for Godot Engine -- 17 composite tools for AI-assisted game development.

- Trust score: 69/100 (medium)
- Change this week: +31
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- npm · `@n24q02m/better-godot-mcp`: 69/100 (this document), [markdown](https://verifymcp.io/servers/n24q02m-better-godot-mcp/n24q02m-better-godot-mcp.md), [page](https://verifymcp.io/servers/n24q02m-better-godot-mcp/n24q02m-better-godot-mcp)
- oci · `docker.io/n24q02m/better-godot-mcp:latest`: 27/100, [markdown](https://verifymcp.io/servers/n24q02m-better-godot-mcp/docker-io-n24q02m-better-godot-mcp-latest.md), [page](https://verifymcp.io/servers/n24q02m-better-godot-mcp/docker-io-n24q02m-better-godot-mcp-latest)

## Channel facts

- Registry: `npm`
- Package: `@n24q02m/better-godot-mcp`
- Version: `1.21.0`
- Transport: `stdio`

## Trust breakdown

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. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Supply Chain Security**: 83/100
  - No malware found by supply-chain analysis.
  - CVE check failed: a known medium-severity CVE affects hono 4.12.33, reached via @modelcontextprotocol/sdk > hono. A fixed version is available.
  - No install/post-install scripts declared.
  - Only part of the dependency tree could be resolved (132 of 136), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 71/100
  - Repository check failed: the declared repository URL redirects; it must resolve directly.
  - Cryptographically verified build provenance (signed, bound to n24q02m/better-godot-mcp).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 16 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 56/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2668 tokens (~156/item across 17 items; 17 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (94% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add n24q02m-better-godot-mcp -- npx -y @n24q02m/better-godot-mcp
```

### Codex

```bash
codex mcp add n24q02m-better-godot-mcp -- npx -y @n24q02m/better-godot-mcp
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "n24q02m-better-godot-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@n24q02m/better-godot-mcp"
      ],
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add n24q02m-better-godot-mcp --command npx --arg -y --arg @n24q02m/better-godot-mcp
```

### Hermes

```yaml
mcp_servers:
  n24q02m-better-godot-mcp:
    command: "npx"
    args: ["-y", "@n24q02m/better-godot-mcp"]
```

### Other

```json
{
  "mcpServers": {
    "n24q02m-better-godot-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@n24q02m/better-godot-mcp"
      ]
    }
  }
}
```

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 69, −1)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail

### 2026-08-02 (score 70, +44)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security improvement] Malware scan: unverified → pass
- [security] Stability: Stability not yet verified: we do not have a sandbox capture of the MCP schema this version of the package serves yet.
- [security] The attested source repository moved: n24q02m/better-godot-mcp
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Capabilities: pass → unverified
- [functional regression] Security disclosure: fail → unverified
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] License: unverified → pass
- [functional improvement] Stability: unverified → 0.20
- [functional improvement] Dependency health: unverified → partial
- [functional] Licence: MIT

### 2026-08-01 (score 26, +26)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 0, −81)

- [security regression] Malware scan: pass → unverified
- [security regression] Install scripts: pass → unverified
- [security regression] Known CVEs: partial → unverified
- [security regression] Provenance: pass → unverified
- [security] The attested source repository moved: n24q02m/better-godot-mcp
- [functional regression] Maintenance: pass → unverified
- [functional regression] Security disclosure: fail → unverified
- [functional regression] License: pass → unverified
- [functional regression] Tool coverage: 100 → unverified
- [functional regression] Dependency health: partial → unverified
- [functional] Licence: MIT

### 2026-07-29 (score 81, +43)

- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security improvement] Known CVEs: unverified → partial
- [security] The attested source repository moved: n24q02m/better-godot-mcp
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional improvement] Dependency health: unverified → partial
- [functional improvement] License: unverified → pass
- [functional] Licence: MIT

### 2026-07-28 (score 38, +19)

- [functional regression] Dependency health: partial → unverified
- [functional improvement] Tool coverage: unverified → 100
- [functional] First check of Tool coverage: 100
- [functional] First check of Tool coverage: 94
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: fail
- [functional] First check of Schema quality: unverified

### 2026-07-27 (score 19)

First indexed and scored.

## MCP tools (17)

### `project` (~238 tokens)

Godot project operations.

Actions (required params -> optional):
\- info (-> project_path): project metadata
\- version: Godot engine version
\- run (-> scene_path, project_path): launch game
\- logs (-> pid): last captured stdout/stderr lines from a run (default: most recently started)
\- stop: stop running game
\- settings_get (key -> project_path): read project setting
\- settings_set (key, value -> project_path): write project setting
\- export (preset, output_path -> project_path): export game build

Input parameters:

- `action` (string, required): Action to perform
- `key` (string): Settings key (for settings_get/set)
- `output_path` (string): Export output path (for export)
- `pid` (number): PID to read logs for (for logs; default: most recently started)
- `preset` (string): Export preset name (for export)
- `project_path` (string): Path to Godot project directory
- `scene_path` (string): Path to a specific scene to run (optional)
- `value` (string): Settings value (for settings_set)

### `scenes` (~222 tokens)

Scene file (.tscn) CRUD.

Actions (required params -> optional):
\- create (scene_path -> root_type="Node2D", root_name, project_path)
\- list (-> project_path)
\- info (scene_path -> project_path)
\- delete (scene_path -> project_path)
\- duplicate (scene_path, new_path -> project_path)
\- set_main (scene_path -> project_path)

scene_path: relative to project root (e.g., "scenes/main.tscn"), NOT res:// prefix. Use nodes tool to edit nodes within a scene.

Input parameters:

- `action` (string, required): Action to perform
- `new_path` (string): Destination path (for duplicate)
- `project_path` (string): Path to Godot project directory
- `root_name` (string): Root node name for create
- `root_type` (string): Root node type for create (default: Node2D)
- `scene_path` (string): Relative scene file path from project root (e.g., "scenes/main.tscn"), not res:// prefix

### `nodes` (~263 tokens)

Scene node operations.

Actions (required params -> optional):
\- add (scene_path, name -> type="Node", parent=".", project_path)
\- remove (scene_path, name -> project_path)
\- rename (scene_path, name, new_name -> project_path)
\- list (scene_path -> project_path)
\- set_property (scene_path, name, property, value -> project_path)
\- get_property (scene_path, name, property -> project_path)

Node paths: relative to scene root using "/" (e.g., "Player/Sprite2D"). Use "." for root.

Input parameters:

- `action` (string, required): Action to perform
- `name` (string): Node name
- `new_name` (string): New name (for rename)
- `parent` (string): Parent node path relative to scene root (for add, default: "." = root). Use "/" separator, e.g., "Player/Sprite2D"
- `project_path` (string): Path to Godot project directory
- `property` (string): Property name (for get/set_property)
- `scene_path` (string): Path to scene file
- `type` (string): Node type (for add, default: Node)
- `value` (string): Property value (for set_property)

### `scripts` (~209 tokens)

GDScript file CRUD.

Actions (required params -> optional):
\- create (script_path -> extends="Node", content, project_path): generate template
\- read (script_path -> project_path)
\- write (script_path, content -> project_path): replace entire file
\- attach (script_path, scene_path, node_name -> project_path): link to scene node
\- list (-> project_path)
\- delete (script_path -> project_path)

script_path: relative to project root (e.g., "scripts/player.gd").

Input parameters:

- `action` (string, required): Action to perform
- `content` (string): Script content (for create/write)
- `extends` (string): Base class for create (default: Node)
- `node_name` (string): Target node name (for attach)
- `project_path` (string): Path to Godot project directory
- `scene_path` (string): Scene file path (for attach)
- `script_path` (string): Path to GDScript file

### `editor` (~79 tokens)

Godot editor control.

Actions (required params -> optional):
\- launch (-> project_path): open editor
\- status (-> project_path): check if editor is running

For running the game, use project(action="run") instead.

Input parameters:

- `action` (string, required): Action to perform
- `project_path` (string): Path to Godot project directory

### `config` (~91 tokens)

Server configuration and environment.

Actions (required params -> optional):
\- status: current config
\- set (key, value): update setting
\- detect_godot: find Godot binary path
\- check: verify project and Godot availability

Input parameters:

- `action` (string, required): Action to perform
- `key` (string): Config key (for set)
- `value` (string): Config value (for set)

### `help` (~33 tokens)

Full documentation for a tool. Use when compressed descriptions are insufficient.

Input parameters:

- `tool_name` (string, required): Tool to get documentation for

### `resources` (~140 tokens)

Resource file management.

Actions (required params -> optional):
\- list (-> type, project_path): browse resources (type: image|audio|font|shader|scene|resource)
\- info (resource_path -> project_path): resource metadata
\- delete (resource_path -> project_path)
\- import_config (resource_path -> project_path): view import settings

Input parameters:

- `action` (string, required): Action to perform
- `project_path` (string): Path to Godot project directory
- `resource_path` (string): Path to resource file
- `type` (string): Filter by type: image, audio, font, shader, scene, resource (for list)

### `input_map` (~190 tokens)

Input action management.

Actions (required params -> optional):
\- list (-> project_path): all input actions
\- add_action (action_name -> deadzone=0.5, project_path)
\- remove_action (action_name -> project_path)
\- add_event (action_name, event_type, event_value -> project_path)

event_type: key | mouse | joypad. event_value: e.g., KEY_SPACE.

Input parameters:

- `action` (string, required): Action to perform
- `action_name` (string): Input action name
- `deadzone` (number): Deadzone value (for add_action, default: 0.5)
- `event_type` (string): Event type: key, mouse, joypad (for add_event)
- `event_value` (string): Event value, e.g., KEY_SPACE (for add_event)
- `project_path` (string): Path to Godot project directory

### `signals` (~151 tokens)

Signal connection management.

Actions (required params -> optional):
\- list (scene_path -> project_path): all signal connections
\- connect (scene_path, signal, from, to, method -> flags, project_path)
\- disconnect (scene_path, signal, from, to, method -> project_path)

Input parameters:

- `action` (string, required): Action to perform
- `flags` (number): Connection flags
- `from` (string): Source node path
- `method` (string): Target method name
- `project_path` (string): Path to Godot project directory
- `scene_path` (string): Path to scene file
- `signal` (string): Signal name
- `to` (string): Target node path

### `animation` (~163 tokens)

Animation management. Actions: create_player|add_animation|add_track|add_keyframe|list. Use help tool for full docs.

Input parameters:

- `action` (string, required): Action to perform
- `anim_name` (string): Animation name
- `duration` (number): Animation duration in seconds
- `loop` (boolean): Whether animation loops
- `name` (string): AnimationPlayer node name
- `node_path` (string): Target node path for track
- `parent` (string): Parent node path
- `project_path` (string): Path to Godot project directory
- `property` (string): Target property for track
- `scene_path` (string): Path to scene file
- `track_type` (string): Track type: value, method, bezier

### `tilemap` (~141 tokens)

TileSet and TileMap management. Actions: create_tileset|add_source|set_tile|paint|list. Use help tool for full docs.

Input parameters:

- `action` (string, required): Action to perform
- `project_path` (string): Path to Godot project directory
- `scene_path` (string): Path to scene file (for list, paint)
- `texture_path` (string): Texture source path (for add_source)
- `tile_size` (number): Tile size in pixels (default: 16, for create_tileset)
- `tileset_path` (string): Path to TileSet .tres file (for create_tileset, add_source)

### `shader` (~106 tokens)

Godot shader management. Actions: create|read|write|get_params|list. Use help tool for full docs.

Input parameters:

- `action` (string, required): Action to perform
- `content` (string): Shader content (for create/write)
- `project_path` (string): Path to Godot project directory
- `shader_path` (string): Path to .gdshader file
- `shader_type` (string): Shader type: canvas_item, spatial, particles, sky, fog (for create)

### `physics` (~160 tokens)

Physics config. Actions: layers|collision_setup|body_config|set_layer_name. Use help tool for full docs.

Input parameters:

- `action` (string, required): Action to perform
- `collision_layer` (number): Collision layer bitmask
- `collision_mask` (number): Collision mask bitmask
- `dimension` (string): 2d or 3d (for set_layer_name)
- `gravity_scale` (number): Gravity scale (for body_config)
- `layer_number` (number): Layer number (for set_layer_name)
- `mass` (number): Mass (for body_config)
- `name` (string): Node name
- `project_path` (string): Path to Godot project directory
- `scene_path` (string): Path to scene file

### `audio` (~170 tokens)

Audio bus and stream management. Actions: list_buses|add_bus|add_effect|create_stream. Use help tool for full docs.

Input parameters:

- `action` (string, required): Action to perform
- `bus` (string): Audio bus (default: Master)
- `bus_name` (string): Audio bus name
- `effect_type` (string): Effect type (for add_effect)
- `name` (string): Stream player node name
- `parent` (string): Parent node path
- `project_path` (string): Path to Godot project directory
- `scene_path` (string): Path to scene file (for create_stream)
- `send_to` (string): Send bus target (default: Master)
- `stream_type` (string): Stream type: 2D, 3D, or global

### `navigation` (~135 tokens)

Navigation regions, agents, obstacles. Actions: create_region|add_agent|add_obstacle. Use help tool for full docs.

Input parameters:

- `action` (string, required): Action to perform
- `dimension` (string): 2D or 3D (default: 3D)
- `max_speed` (number): Agent max speed
- `name` (string): Node name
- `parent` (string): Parent node path (default: .)
- `project_path` (string): Path to Godot project directory
- `radius` (number): Agent/obstacle radius
- `scene_path` (string): Path to scene file

### `ui` (~177 tokens)

UI Control nodes and themes. Actions: create_control|set_theme|layout|list_controls. Use help tool for full docs.

Input parameters:

- `action` (string, required): Action to perform
- `font_size` (number): Default font size (for set_theme)
- `name` (string): Control node name
- `parent` (string): Parent node path (default: .)
- `preset` (string): Layout preset: full_rect, center, top_wide, bottom_wide, left_wide, right_wide
- `project_path` (string): Path to Godot project directory
- `scene_path` (string): Path to scene file
- `theme_path` (string): Path to theme .tres file (for set_theme)
- `type` (string): Control type (e.g., Button, Label, HBoxContainer)

## Diagnostics

Captured diagnostic sections: Provenance, Vulnerabilities, Dependencies. The full working is on the page: https://verifymcp.io/servers/n24q02m-better-godot-mcp/n24q02m-better-godot-mcp#diagnostics

## Score history

- 2026-08-04: 69
- 2026-08-03: 70
- 2026-08-02: 70
- 2026-08-01: 26
- 2026-07-30: 0
- 2026-07-29: 81
- 2026-07-28: 38
- 2026-07-27: 19

## Links

- npm package: https://www.npmjs.com/package/@n24q02m/better-godot-mcp
- Socket report: https://socket.dev/npm/package/@n24q02m/better-godot-mcp
- Changelog RSS feed: https://verifymcp.io/servers/n24q02m-better-godot-mcp/n24q02m-better-godot-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/n24q02m-better-godot-mcp/n24q02m-better-godot-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/n24q02m-better-godot-mcp/n24q02m-better-godot-mcp
