gopeak 2.3.6 → 2.3.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +56 -37
- package/build/index.js +23 -2
- package/package.json +8 -6
package/README.md
CHANGED
|
@@ -10,10 +10,14 @@
|
|
|
10
10
|
[](https://github.com/HaD0Yun/Gopeak-godot-mcp/network/members)
|
|
11
11
|
[](https://opensource.org/licenses/MIT)
|
|
12
12
|
|
|
13
|
+
🌐 **Languages**: **English** | [한국어](README-ko.md) | [日本語](README-ja.md) | [Deutsch](README-de.md) | [Português](README-pt_BR.md) | [简体中文](README-zh.md)
|
|
14
|
+
|
|
13
15
|

|
|
14
16
|
|
|
15
17
|
**GoPeak is an MCP server for Godot that lets AI assistants run, inspect, modify, and debug real projects end-to-end.**
|
|
16
18
|
|
|
19
|
+
> English is the canonical source of truth. Localized READMEs are concise overviews and may lag behind `README.md`.
|
|
20
|
+
|
|
17
21
|
> Discord community chat is temporarily unavailable while the invite link is refreshed. Please use GitHub Discussions in the meantime: https://github.com/HaD0Yun/Gopeak-godot-mcp/discussions
|
|
18
22
|
|
|
19
23
|
---
|
|
@@ -64,7 +68,7 @@ gopeak setup
|
|
|
64
68
|
}
|
|
65
69
|
```
|
|
66
70
|
|
|
67
|
-
> `GOPEAK_TOOL_PROFILE=compact` is the default. It exposes
|
|
71
|
+
> `GOPEAK_TOOL_PROFILE=compact` is the default. It exposes a trusted core surface with dynamic tool groups that activate on demand — keeping token usage low while making experimental or environment-dependent capabilities explicit.
|
|
68
72
|
|
|
69
73
|
### 3) First prompts to try
|
|
70
74
|
|
|
@@ -77,10 +81,10 @@ gopeak setup
|
|
|
77
81
|
## Why GoPeak
|
|
78
82
|
|
|
79
83
|
- **Real project feedback loop**: run the game, inspect logs, and fix in-context.
|
|
80
|
-
- **
|
|
81
|
-
- **Token-efficient by default**: compact
|
|
82
|
-
- **Dynamic tool groups**: search with `tool.catalog` and matching groups auto-activate
|
|
83
|
-
- **Deep Godot integration**: ClassDB queries, runtime inspection, debugger hooks, bridge-based scene/resource edits.
|
|
84
|
+
- **Trusted Godot 4 workflow tools** across project discovery, scene/script/resource editing, runtime/LSP/DAP integrations, testing, and asset workflows.
|
|
85
|
+
- **Token-efficient by default**: compact core surface + dynamic tool groups. Activate only the capability family you need instead of loading the full legacy surface.
|
|
86
|
+
- **Dynamic tool groups with explicit maturity labels**: search with `tool.catalog` and matching groups auto-activate, or manually activate with `tool.groups`.
|
|
87
|
+
- **Deep Godot integration with setup gates**: ClassDB queries, runtime inspection, debugger hooks, and bridge-based scene/resource edits clearly state addon, editor, LSP, DAP, or runtime requirements.
|
|
84
88
|
|
|
85
89
|
### Best For
|
|
86
90
|
|
|
@@ -94,9 +98,9 @@ gopeak setup
|
|
|
94
98
|
|
|
95
99
|
GoPeak supports three exposure profiles:
|
|
96
100
|
|
|
97
|
-
- `compact` (default):
|
|
98
|
-
- `full`: exposes full legacy tool list
|
|
99
|
-
- `legacy`: same exposed behavior as `full`
|
|
101
|
+
- `compact` (default): trusted core tools plus dynamic tool groups activated on demand.
|
|
102
|
+
- `full`: exposes the full legacy tool list for compatibility and audit work.
|
|
103
|
+
- `legacy`: same exposed behavior as `full` for older configurations.
|
|
100
104
|
|
|
101
105
|
Configure with either:
|
|
102
106
|
|
|
@@ -105,32 +109,32 @@ Configure with either:
|
|
|
105
109
|
|
|
106
110
|
### Dynamic Tool Groups (compact mode)
|
|
107
111
|
|
|
108
|
-
In `compact` mode,
|
|
112
|
+
In `compact` mode, additional tools are organized into dynamic groups that activate automatically when needed. Maturity labels are intentionally conservative until each group has Godot 4 fixture evidence:
|
|
109
113
|
|
|
110
|
-
| Group |
|
|
114
|
+
| Group | Maturity | Description / setup gate |
|
|
111
115
|
|---|---|---|
|
|
112
|
-
| `scene_advanced` |
|
|
113
|
-
| `uid` |
|
|
114
|
-
| `import_export` |
|
|
115
|
-
| `autoload` |
|
|
116
|
-
| `signal` |
|
|
117
|
-
| `runtime` |
|
|
118
|
-
| `resource` |
|
|
119
|
-
| `animation` |
|
|
120
|
-
| `plugin` |
|
|
121
|
-
| `input` |
|
|
122
|
-
| `tilemap` |
|
|
123
|
-
| `audio` |
|
|
124
|
-
| `navigation` |
|
|
125
|
-
| `theme_ui` |
|
|
126
|
-
| `asset_store` |
|
|
127
|
-
| `testing` |
|
|
128
|
-
| `dx_tools` |
|
|
129
|
-
| `intent_tracking` |
|
|
130
|
-
| `class_advanced` |
|
|
131
|
-
| `lsp` |
|
|
132
|
-
| `dap` |
|
|
133
|
-
| `version_gate` |
|
|
116
|
+
| `scene_advanced` | audit-required | Duplicate, reparent nodes, load sprites; verify scene ownership/persistence in a Godot 4 fixture before treating as trusted. |
|
|
117
|
+
| `uid` | audit-required | UID management for resources; gate behavior by Godot version and resource save/load evidence. |
|
|
118
|
+
| `import_export` | audit-required | Import pipeline, reimport, validate project; requires fixture checks for import settings and export command construction. |
|
|
119
|
+
| `autoload` | audit-required | Autoload singletons, main scene; requires project settings round-trip verification. |
|
|
120
|
+
| `signal` | audit-required | Disconnect signals, list connections; requires signal round-trip verification. |
|
|
121
|
+
| `runtime` | optional-runtime | Live scene inspection, runtime properties, metrics; requires the runtime addon/socket. |
|
|
122
|
+
| `resource` | audit-required | Create/modify materials, shaders, resources; requires resource save/load fixture checks. |
|
|
123
|
+
| `animation` | audit-required | Animations, tracks, animation tree, state machine; requires saved scene/resource fixture checks. |
|
|
124
|
+
| `plugin` | optional-editor | Enable/disable/list editor plugins; requires editor plugin availability. |
|
|
125
|
+
| `input` | audit-required | Input action mapping; requires project settings round-trip verification. |
|
|
126
|
+
| `tilemap` | audit-required | TileSet and TileMap cell painting; must account for Godot 4.3+ `TileMapLayer` behavior before being promoted. |
|
|
127
|
+
| `audio` | audit-required | Audio buses, effects, volume; requires bus layout fixture checks. |
|
|
128
|
+
| `navigation` | audit-required | Navigation regions and agents; requires saved scene/resource fixture checks. |
|
|
129
|
+
| `theme_ui` | audit-required | Theme colors, font sizes, shaders; requires resource save/load fixture checks. |
|
|
130
|
+
| `asset_store` | optional-network | Search/download external CC0 assets; requires network/provider availability and should remain optional. |
|
|
131
|
+
| `testing` | optional-runtime | Screenshots, viewport capture, input injection; requires runtime addon/editor availability. |
|
|
132
|
+
| `dx_tools` | audit-required | Error log, project health, find usages, scaffold; requires deterministic static fixture checks. |
|
|
133
|
+
| `intent_tracking` | workflow-layer | Intent capture, decision logs, handoff briefs; not a Godot engine primitive and should stay opt-in/workflow-scoped. |
|
|
134
|
+
| `class_advanced` | trusted-static | Class inheritance inspection; validate against ClassDB/static evidence. |
|
|
135
|
+
| `lsp` | optional-lsp | GDScript completions, hover, symbols; requires Godot LSP on port 6005. |
|
|
136
|
+
| `dap` | optional-dap | Breakpoints, stepping, stack traces; requires Godot DAP on port 6006. |
|
|
137
|
+
| `version_gate` | audit-required | Version validation and patch verification; requires explicit version fixture evidence. |
|
|
134
138
|
|
|
135
139
|
**How it works:**
|
|
136
140
|
|
|
@@ -161,7 +165,7 @@ The internal headless serializer uses `_type`, but MCP callers should prefer `ty
|
|
|
161
165
|
|
|
162
166
|
### Don't worry about tokens
|
|
163
167
|
|
|
164
|
-
GoPeak uses **cursor-based pagination** for `tools/list` — even in `full` profile, tools are delivered in pages (default 33) instead of dumping
|
|
168
|
+
GoPeak uses **cursor-based pagination** for `tools/list` — even in `full` profile, tools are delivered in pages (default 33) instead of dumping the entire legacy definition set at once. Your AI client fetches the next page only when it needs more.
|
|
165
169
|
|
|
166
170
|
Set page size with `GOPEAK_TOOLS_PAGE_SIZE`:
|
|
167
171
|
|
|
@@ -274,15 +278,17 @@ Then enable plugins in **Project Settings → Plugins** (especially `godot_mcp_e
|
|
|
274
278
|
|
|
275
279
|
## Core Capabilities
|
|
276
280
|
|
|
281
|
+
These capabilities are grouped by workflow value. Optional-runtime/LSP/DAP/network groups require their setup gates before use; audit-required groups should be promoted only after fixture evidence.
|
|
282
|
+
|
|
277
283
|
- **Project control**: launch editor, run/stop project, capture debug output
|
|
278
284
|
- **Scene editing**: create scenes, add/delete/reparent nodes, edit properties
|
|
279
285
|
- **Script workflows**: create/modify scripts, inspect script structure
|
|
280
286
|
- **Resources**: create/modify resources, materials, shaders, tilesets
|
|
281
287
|
- **Signals/animation**: connect signals, build animations/tracks/state machines
|
|
282
|
-
- **Runtime tools**: inspect live tree, set properties, call methods, metrics
|
|
283
|
-
- **LSP + DAP**: diagnostics/completion/hover + breakpoints/step/stack trace
|
|
284
|
-
- **Input + screenshots**: keyboard/mouse/action injection and viewport capture
|
|
285
|
-
- **Asset library**: search/fetch CC0 assets (
|
|
288
|
+
- **Runtime tools**: inspect live tree, set properties, call methods, metrics (requires runtime addon/socket)
|
|
289
|
+
- **LSP + DAP**: diagnostics/completion/hover + breakpoints/step/stack trace (requires Godot LSP/DAP ports)
|
|
290
|
+
- **Input + screenshots**: keyboard/mouse/action injection and viewport capture (requires runtime/editor bridge setup)
|
|
291
|
+
- **Asset library**: search/fetch CC0 assets (optional network/provider workflow)
|
|
286
292
|
|
|
287
293
|
### Tool families (examples)
|
|
288
294
|
|
|
@@ -327,6 +333,19 @@ Visualize your entire project architecture with `visualizer.map` (`map_project`
|
|
|
327
333
|
|
|
328
334
|
---
|
|
329
335
|
|
|
336
|
+
## Migration & Deprecation Policy
|
|
337
|
+
|
|
338
|
+
GoPeak treats `compact` as the safe default and `full`/`legacy` as compatibility profiles. Any future hide, remove, rename, or API-contract change must include:
|
|
339
|
+
|
|
340
|
+
1. an old → new mapping or an explicit no-replacement note;
|
|
341
|
+
2. the profile impact (`compact`, `full`, `legacy`, or opt-in group);
|
|
342
|
+
3. whether an alias remains and the planned removal window;
|
|
343
|
+
4. README/docs and release-note updates;
|
|
344
|
+
5. a verification command proving `tools/list` exposure and alias behavior;
|
|
345
|
+
6. a migration prompt example for common Godot workflows.
|
|
346
|
+
|
|
347
|
+
Current compatibility stance: legacy tool names and compact aliases remain supported. Dynamic groups with optional external requirements (`runtime`, `testing`, `lsp`, `dap`, `asset_store`) should be documented as opt-in/setup-gated rather than marketed as always-available core behavior.
|
|
348
|
+
|
|
330
349
|
## Technical Reference
|
|
331
350
|
|
|
332
351
|
### Environment variables
|
package/build/index.js
CHANGED
|
@@ -1077,7 +1077,7 @@ class GodotServer {
|
|
|
1077
1077
|
this.logDebug(`Command: ${cmd}`);
|
|
1078
1078
|
try {
|
|
1079
1079
|
const { stdout, stderr } = await execAsync(cmd);
|
|
1080
|
-
return { stdout, stderr };
|
|
1080
|
+
return { stdout, stderr: this.sanitizeGodotStderr(stderr) };
|
|
1081
1081
|
}
|
|
1082
1082
|
finally {
|
|
1083
1083
|
rmSync(paramsDir, { recursive: true, force: true });
|
|
@@ -1089,7 +1089,7 @@ class GodotServer {
|
|
|
1089
1089
|
const execError = error;
|
|
1090
1090
|
return {
|
|
1091
1091
|
stdout: execError.stdout,
|
|
1092
|
-
stderr: execError.stderr,
|
|
1092
|
+
stderr: this.sanitizeGodotStderr(execError.stderr),
|
|
1093
1093
|
};
|
|
1094
1094
|
}
|
|
1095
1095
|
throw error;
|
|
@@ -2287,6 +2287,27 @@ class GodotServer {
|
|
|
2287
2287
|
}
|
|
2288
2288
|
return null;
|
|
2289
2289
|
}
|
|
2290
|
+
sanitizeGodotStderr(stderr) {
|
|
2291
|
+
if (!stderr) {
|
|
2292
|
+
return stderr;
|
|
2293
|
+
}
|
|
2294
|
+
const ignoredPatterns = [
|
|
2295
|
+
/WARNING: ObjectDB instances leaked at exit/i,
|
|
2296
|
+
/at:\s+cleanup\s+\(core\/object\/object\.cpp:/i,
|
|
2297
|
+
/ERROR:\s+\d+\s+resources still in use at exit/i,
|
|
2298
|
+
/at:\s+clear\s+\(core\/io\/resource\.cpp:/i,
|
|
2299
|
+
];
|
|
2300
|
+
const filteredLines = stderr
|
|
2301
|
+
.split(/\r?\n/)
|
|
2302
|
+
.filter((line) => {
|
|
2303
|
+
const trimmed = line.trim();
|
|
2304
|
+
if (!trimmed) {
|
|
2305
|
+
return false;
|
|
2306
|
+
}
|
|
2307
|
+
return !ignoredPatterns.some((pattern) => pattern.test(trimmed));
|
|
2308
|
+
});
|
|
2309
|
+
return filteredLines.join('\n').trim();
|
|
2310
|
+
}
|
|
2290
2311
|
/**
|
|
2291
2312
|
* Capture/update current intent snapshot
|
|
2292
2313
|
*/
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "gopeak",
|
|
3
|
-
"version": "2.3.
|
|
3
|
+
"version": "2.3.7",
|
|
4
4
|
"mcpName": "io.github.HaD0Yun/gopeak",
|
|
5
|
-
"description": "GoPeak — MCP server for Godot
|
|
5
|
+
"description": "GoPeak — MCP server for trusted Godot 4 workflows with compact/dynamic tool profiles, setup-gated LSP/DAP/runtime integrations, and migration-safe legacy compatibility.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "./build/index.js",
|
|
8
8
|
"bin": {
|
|
9
|
-
"gopeak": "
|
|
10
|
-
"godot-mcp": "
|
|
9
|
+
"gopeak": "build/cli.js",
|
|
10
|
+
"godot-mcp": "build/cli.js"
|
|
11
11
|
},
|
|
12
12
|
"files": [
|
|
13
13
|
"build",
|
|
@@ -23,6 +23,7 @@
|
|
|
23
23
|
"test:smoke": "node scripts/smoke-test.mjs",
|
|
24
24
|
"test:integration": "node test-bridge.mjs",
|
|
25
25
|
"test:dynamic-groups": "node test-dynamic-groups.mjs",
|
|
26
|
+
"test:docs": "node test-readme-localization-consistency.mjs && node test-docs-package-policy.mjs",
|
|
26
27
|
"test:regressions": "node test-regressions.mjs",
|
|
27
28
|
"test:ci": "npm run test:smoke && npm run test:regressions",
|
|
28
29
|
"ci": "npm run build && npm run typecheck && npm run test:ci",
|
|
@@ -34,7 +35,8 @@
|
|
|
34
35
|
"version:bump": "node scripts/bump-version.mjs",
|
|
35
36
|
"test:setup": "npm run build && node test-setup-hooks.mjs && node test-metadata-consistency.mjs && node test-packaging-consistency.mjs",
|
|
36
37
|
"test:metadata": "npm run build && node test-metadata-consistency.mjs",
|
|
37
|
-
"test:packaging": "npm run build && node test-packaging-consistency.mjs"
|
|
38
|
+
"test:packaging": "npm run build && node test-packaging-consistency.mjs",
|
|
39
|
+
"test:docs-policy": "node test-docs-package-policy.mjs"
|
|
38
40
|
},
|
|
39
41
|
"engines": {
|
|
40
42
|
"node": ">=18"
|
|
@@ -53,7 +55,7 @@
|
|
|
53
55
|
},
|
|
54
56
|
"overrides": {
|
|
55
57
|
"@hono/node-server": "^1.19.11",
|
|
56
|
-
"hono": "4.12.
|
|
58
|
+
"hono": "^4.12.18",
|
|
57
59
|
"path-to-regexp": "8.4.1"
|
|
58
60
|
},
|
|
59
61
|
"license": "MIT",
|