# Godot Agent Loop (npm · @beremaran/godot-agent-loop)

MCP automation loop with 167 tested tools for Godot 4

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

## Components

- npm · `@beremaran/godot-agent-loop`: 78/100 (this document), [markdown](https://verifymcp.io/servers/beremaran-godot-agent-loop/beremaran-godot-agent-loop.md), [page](https://verifymcp.io/servers/beremaran-godot-agent-loop/beremaran-godot-agent-loop)

## Channel facts

- Registry: `npm`
- Package: `@beremaran/godot-agent-loop`
- Version: `1.0.1`
- 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 (96 of 100), so this covers what we could see, not the whole tree.
- **Provenance & Transparency**: 97/100
  - Source repository is publicly reachable at the declared URL.
  - Cryptographically verified build provenance (signed, bound to beremaran/godot-agent-loop).
  - Clear OSI-approved license (MIT).
  - Actively maintained (last published 1 days ago).
  - Disclosure check failed: no security disclosure policy was found in the source repository.
- **Schema Quality & AI Usability**: 71/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 2733 tokens (~70/item across 39 items; 39 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 30/100
  - Stability observed for 9 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.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add beremaran-godot-agent-loop -- npx -y @beremaran/godot-agent-loop
```

### Codex

```bash
codex mcp add beremaran-godot-agent-loop -- npx -y @beremaran/godot-agent-loop
```

### opencode

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

### OpenClaw

```bash
openclaw mcp add beremaran-godot-agent-loop --command npx --arg -y --arg @beremaran/godot-agent-loop
```

### Hermes

```yaml
mcp_servers:
  beremaran-godot-agent-loop:
    command: "npx"
    args: ["-y", "@beremaran/godot-agent-loop"]
```

### Other

```json
{
  "mcpServers": {
    "beremaran-godot-agent-loop": {
      "command": "npx",
      "args": [
        "-y",
        "@beremaran/godot-agent-loop"
      ]
    }
  }
}
```

## 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 78, +3)

- [security regression] CVE-2026-69207 affects this package: medium
- [security regression] Known CVEs: partial → fail
- [functional improvement] Stability: unverified → 0.30

### 2026-08-03 (score 75, +53)

- [security improvement] Known CVEs: unverified → partial
- [security improvement] Install scripts: unverified → pass
- [security improvement] Provenance: unverified → pass
- [security] Stability: Stability not yet verified: not enough scan history yet (needs a 30-day window).
- [security] The attested source repository moved: beremaran/godot-agent-loop
- [functional regression] Security disclosure: unverified → fail
- [functional improvement] Tool coverage: unverified → 100
- [functional improvement] License: unverified → pass
- [functional improvement] Maintenance: unverified → pass
- [functional improvement] MCP protocol: unverified → pass
- [functional improvement] Schema quality: unverified → good
- [functional] Licence: MIT

### 2026-08-02 (score 22, +2)

- [functional regression] Security disclosure: fail → unverified
- [functional improvement] Dependency health: unverified → partial

### 2026-08-01 (score 20, −8)

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

### 2026-07-31 (score 28, −18)

- [security regression] Malware scan: pass → unverified
- [functional regression] Security disclosure: fail → unverified

### 2026-07-30 (score 46, +22)

- [functional improvement] Tool coverage: unverified → 100

### 2026-07-28 (score 24, −22)

- [functional regression] Tool coverage: 100 → unverified
- [functional] First check of Schema quality: unverified

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

First indexed and scored.

## MCP tools (39)

### `godot_tools` (~97 tokens)

Search, inspect, or call tools outside the default core surface

Input parameters:

- `action` (string, required): Discovery or dispatch action
- `arguments` (object): Arguments passed to the selected tool
- `domain` (string): Optional domain filter
- `limit` (integer): Maximum search results. Default: 20
- `query` (string): Name/description/action search text
- `toolName` (string): Tool to describe or call

### `launch_editor` (~29 tokens)

Launch Godot editor for a specific project

Input parameters:

- `projectPath` (string, required): Godot project path

### `editor_control` (~113 tokens)

Inspect and edit open scenes through an authenticated editor bridge

Input parameters:

- `action` (string, required): Editor action
- `name` (string): New node name
- `nodePath` (string): Scene-relative node path
- `nodePaths` (array): Scene-relative node paths for select
- `projectPath` (string, required): Godot project path whose editor is open
- `property` (string): Property to edit
- `scenePath` (string): Project-relative or res:// scene path
- `value`: New property value

### `run_project` (~42 tokens)

Run the Godot project and capture output

Input parameters:

- `projectPath` (string, required): Godot project path
- `scene` (string): Optional: Specific scene to run

### `verify_project` (~112 tokens)

Run bounded assertions and capture evidence with deterministic teardown

Input parameters:

- `assertions` (array): Bounded assertions evaluated against the running game
- `captureScreenshot` (boolean): Capture a screenshot and return its SHA-256 digest. Default: false
- `projectPath` (string, required): Godot project path
- `scene` (string): Optional scene to run
- `teardown` (boolean): Stop the project after verification. Default: true
- `waitFrames` (integer): Frames to wait before assertions. Default: 2

### `run_project_tests` (~132 tokens)

Discover or run native, GUT, and GdUnit4 project tests with structured results

Input parameters:

- `action` (string, required): Discover tests or run them
- `artifactPaths` (array): Project-relative report files to return as artifact metadata
- `failFast` (boolean): Stop native execution after the first failed file. Default: false
- `framework` (string): Test framework. Default: auto
- `projectPath` (string, required): Godot project path
- `testPaths` (array): Project-relative test files or directories
- `timeoutSeconds` (number): Per-run timeout. Default: 60

### `get_debug_output` (~17 tokens)

Get the current debug output and errors

### `stop_project` (~16 tokens)

Stop the currently running Godot project

### `get_godot_version` (~18 tokens)

Get the installed Godot version

### `list_projects` (~45 tokens)

List Godot projects in a directory

Input parameters:

- `directory` (string, required): Directory to search for Godot projects
- `recursive` (boolean): Whether to search recursively (default: false)

### `get_project_info` (~29 tokens)

Retrieve metadata about a Godot project

Input parameters:

- `projectPath` (string, required): Godot project path

### `create_scene` (~73 tokens)

Create a new Godot scene file

Input parameters:

- `projectPath` (string, required): Godot project path
- `rootNodeType` (string): Type of the root node (e.g., Node2D, Node3D)
- `scenePath` (string, required): Path where the scene file will be saved (relative to project)

### `add_node` (~121 tokens)

Add a node to an existing scene

Input parameters:

- `nodeName` (string, required): Name for the new node
- `nodeType` (string, required): Type of node to add (e.g., Sprite2D, CollisionShape2D)
- `parentNodePath` (string): Path to the parent node (e.g., "root" or "root/Player")
- `projectPath` (string, required): Godot project path
- `properties` (object): Optional properties to set on the node
- `scenePath` (string, required): Scene file path (relative to project)

### `save_scene` (~63 tokens)

Save changes to a scene file

Input parameters:

- `newPath` (string): Optional: New path to save the scene to (for creating variants)
- `projectPath` (string, required): Godot project path
- `scenePath` (string, required): Scene file path (relative to project)

### `game_screenshot` (~19 tokens)

Screenshot the running game (returns base64 PNG)

### `game_click` (~70 tokens)

Click at a position in the running Godot game window

Input parameters:

- `button` (integer): Mouse button (1=left, 2=right, 3=middle). Default: 1
- `x` (number, required): X coordinate to click
- `y` (number, required): Y coordinate to click

### `game_key_press` (~159 tokens)

Send a key press or input action to the running game

Input parameters:

- `action` (string): Godot input action name (e.g. "move_forward", "ui_accept")
- `alt` (boolean): Alt modifier
- `ctrl` (boolean): Ctrl modifier
- `key` (string): Key name (e.g. "W", "Space", "Escape", "Enter")
- `meta` (boolean): Meta/Command modifier
- `physical` (boolean): Treat key as a physical key location
- `pressed` (boolean): Press (true) or release (false). Default: true (auto-release)
- `shift` (boolean): Shift modifier
- `text` (string): Unicode text to inject instead of a named key/action

### `game_get_ui` (~18 tokens)

Get visible UI elements from the running game

### `game_get_scene_tree` (~40 tokens)

Get scene tree structure of the running game

Input parameters:

- `maxNodes` (integer): Maximum nodes returned in deterministic pre-order. Default: 1000

### `game_get_node_info` (~44 tokens)

Get node info: class, properties, signals, methods, children

Input parameters:

- `nodePath` (string, required): Path to the node (e.g., "/root/Player")

### `game_wait` (~65 tokens)

Wait N frames in the running game

Input parameters:

- `frameType` (string): Frame to wait on: "physics" (fixed 60Hz ticks) or "render". Default: render
- `frames` (integer): Positive integer number of frames to wait. Default: 1

### `read_scene` (~46 tokens)

Read scene file as JSON node tree (headless)

Input parameters:

- `projectPath` (string, required): Godot project path
- `scenePath` (string, required): Scene file path (relative to project)

### `modify_scene_node` (~91 tokens)

Modify node properties in a scene file (headless)

Input parameters:

- `nodePath` (string, required): Path to the node within the scene (e.g., "root/Player/Sprite2D")
- `projectPath` (string, required): Godot project path
- `properties` (object, required): Properties to set on the node as key-value pairs
- `scenePath` (string, required): Scene file path (relative to project)

### `remove_scene_node` (~72 tokens)

Remove a node from a scene file (headless)

Input parameters:

- `nodePath` (string, required): Path to the node to remove (e.g., "root/Player/OldNode")
- `projectPath` (string, required): Godot project path
- `scenePath` (string, required): Scene file path (relative to project)

### `read_project_settings` (~30 tokens)

Read project.godot as structured JSON

Input parameters:

- `projectPath` (string, required): Godot project path

### `modify_project_settings` (~100 tokens)

Modify a project.godot setting

Input parameters:

- `key` (string, required): Setting key (e.g., "run/main_scene", "window/size/viewport_width")
- `projectPath` (string, required): Godot project path
- `section` (string, required): Section in project.godot (e.g., "application", "display", "rendering")
- `value` (string, required): Value to set (as a string, will be written as-is)

### `list_project_files` (~116 tokens)

List project files, optionally filtered by extension

Input parameters:

- `cursor` (integer): Zero-based cursor from a previous response. Default: 0
- `extensions` (array): Optional file extensions to filter by (e.g., [".gd", ".tscn"]). Include the dot.
- `limit` (integer): Maximum files returned per page. Default: 1000
- `projectPath` (string, required): Godot project path
- `subdirectory` (string): Optional subdirectory to search in (e.g., "scripts/player")

### `attach_script` (~90 tokens)

Attach a GDScript to a scene node (headless)

Input parameters:

- `nodePath` (string, required): Path to the node within the scene (e.g., "root/Player")
- `projectPath` (string, required): Godot project path
- `scenePath` (string, required): Scene file path (relative to project)
- `scriptPath` (string, required): Path to the .gd script file (relative to project)

### `read_file` (~44 tokens)

Read a text file from a Godot project

Input parameters:

- `filePath` (string, required): File path relative to project root
- `projectPath` (string, required): Godot project path

### `write_file` (~57 tokens)

Create or overwrite a text file in a Godot project

Input parameters:

- `content` (string, required): File content to write
- `filePath` (string, required): File path relative to project root
- `projectPath` (string, required): Godot project path

### `game_get_errors` (~40 tokens)

Get new push_error/push_warning messages since last call

Input parameters:

- `maxItems` (integer): Maximum unread error lines returned. Default: 1000

### `game_get_logs` (~40 tokens)

Get new print output from the running game since last call

Input parameters:

- `maxItems` (integer): Maximum unread log lines returned. Default: 1000

### `game_key_release` (~40 tokens)

Release a previously held key

Input parameters:

- `action` (string): Godot input action name to release
- `key` (string): Key name to release

### `create_project` (~73 tokens)

Create a new Godot project from scratch

Input parameters:

- `dotnet` (boolean): Scaffold a .NET (C#) project (.csproj + "C#" feature). Default: false
- `projectName` (string, required): Name of the project
- `projectPath` (string, required): Directory where the project will be created

### `manage_input_map` (~106 tokens)

Add, remove, or list input actions and bindings

Input parameters:

- `action` (string, required): "list", "add", or "remove"
- `actionName` (string): Input action name (required for add/remove)
- `deadzone` (number): Deadzone for the action. Default: 0.5
- `key` (string): Key to bind (for add, e.g. "W", "Space")
- `projectPath` (string, required): Godot project path

### `validate_script` (~62 tokens)

Check a GDScript file for syntax/type errors (headless, no run)

Input parameters:

- `projectPath` (string, required): Godot project path
- `scriptPath` (string, required): GDScript file path relative to project (e.g. "scripts/player.gd")

### `validate_scripts` (~85 tokens)

Batch-check GDScript files (git-changed by default, or all)

Input parameters:

- `projectPath` (string, required): Godot project path
- `scope` (string): "changed" = git-changed .gd (default); "all" = every .gd in project
- `scriptPaths` (array): Optional explicit list of .gd paths to check (overrides scope)

### `create_script` (~97 tokens)

Create a GDScript file from a template

Input parameters:

- `className` (string): Optional class_name
- `extends` (string): Base class to extend. Default: Node
- `methods` (array): Method stubs to include
- `projectPath` (string, required): Godot project path
- `scriptPath` (string, required): Script file path (relative to project)
- `source` (string): Full source code (overrides template)

### `set_main_scene` (~45 tokens)

Set the main scene in project.godot

Input parameters:

- `projectPath` (string, required): Godot project path
- `scenePath` (string, required): Scene path (relative to project)

## Diagnostics

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

## Score history

- 2026-08-04: 78
- 2026-08-03: 75
- 2026-08-02: 22
- 2026-08-01: 20
- 2026-07-31: 28
- 2026-07-30: 46
- 2026-07-28: 24
- 2026-07-27: 46

## Links

- npm package: https://www.npmjs.com/package/@beremaran/godot-agent-loop
- Socket report: https://socket.dev/npm/package/@beremaran/godot-agent-loop
- Repository: https://github.com/beremaran/godot-agent-loop
- Changelog RSS feed: https://verifymcp.io/servers/beremaran-godot-agent-loop/beremaran-godot-agent-loop/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/beremaran-godot-agent-loop/beremaran-godot-agent-loop/changelog.json
- HTML version of this page: https://verifymcp.io/servers/beremaran-godot-agent-loop/beremaran-godot-agent-loop
