unreal-engine-mcp-server 0.6.0-beta-e → 0.6.0-beta-f
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/CHANGELOG.md +63 -0
- package/README.md +14 -12
- package/dist/automation/bridge-config.js +4 -2
- package/dist/automation/message-schema.js +2 -2
- package/dist/gateway/gateway-manifest.generated.json +1075 -171
- package/dist/resources/actors.js +1 -1
- package/dist/server/gateway/gateway-execute-dispatch.js +22 -4
- package/dist/server/gateway/gateway-schema-validate.js +18 -7
- package/dist/server/gateway/gateway-search.js +1 -1
- package/dist/tools/catalog/capabilities/generated/canonical-registry.generated.d.ts +2 -2
- package/dist/tools/catalog/capabilities/generated/canonical-registry.generated.js +2 -2
- package/dist/tools/catalog/capabilities/generated/canonical-registry.generated.json +4581 -546
- package/dist/tools/catalog/capabilities/generated/capability-cost-index.generated.d.ts +1 -1
- package/dist/tools/catalog/capabilities/generated/capability-cost-index.generated.js +37 -1
- package/dist/tools/catalog/capabilities/generated/parent-tool-definitions.generated.js +1835 -275
- package/dist/tools/catalog/capabilities/records/aggregate.d.ts +1 -1
- package/dist/tools/catalog/capabilities/records/aggregate.js +1 -1
- package/dist/tools/catalog/capabilities/records/build-environment/atmosphere.data.js +3 -2
- package/dist/tools/catalog/capabilities/records/build-environment/water.data.js +1 -1
- package/dist/tools/catalog/capabilities/records/control-actor/advanced-records.js +26 -6
- package/dist/tools/catalog/capabilities/records/control-actor/component-records.js +13 -6
- package/dist/tools/catalog/capabilities/records/control-actor/properties.d.ts +34 -2
- package/dist/tools/catalog/capabilities/records/control-actor/properties.js +27 -3
- package/dist/tools/catalog/capabilities/records/control-actor/search-records.js +31 -2
- package/dist/tools/catalog/capabilities/records/control-actor/spawn-records.js +29 -29
- package/dist/tools/catalog/capabilities/records/control-actor/state-records.js +3 -3
- package/dist/tools/catalog/capabilities/records/control-actor/transform-records.js +58 -28
- package/dist/tools/catalog/capabilities/records/control-editor/asset.js +5 -3
- package/dist/tools/catalog/capabilities/records/control-editor/input.js +3 -2
- package/dist/tools/catalog/capabilities/records/control-editor/properties.js +3 -3
- package/dist/tools/catalog/capabilities/records/control-editor/screenshot.js +1 -1
- package/dist/tools/catalog/capabilities/records/control-editor/session.js +4 -2
- package/dist/tools/catalog/capabilities/records/folds/animation-physics.folds.js +1 -1
- package/dist/tools/catalog/capabilities/records/folds/build-environment.folds.js +1 -1
- package/dist/tools/catalog/capabilities/records/folds/control-actor.folds.js +2 -2
- package/dist/tools/catalog/capabilities/records/folds/control-editor.folds.js +2 -2
- package/dist/tools/catalog/capabilities/records/folds/inspect.folds.js +5 -5
- package/dist/tools/catalog/capabilities/records/folds/manage-ai.folds.js +2 -2
- package/dist/tools/catalog/capabilities/records/folds/manage-asset.folds.js +1 -1
- package/dist/tools/catalog/capabilities/records/folds/manage-audio.folds.js +5 -4
- package/dist/tools/catalog/capabilities/records/folds/manage-blueprint.folds.js +16 -8
- package/dist/tools/catalog/capabilities/records/folds/manage-character.folds.js +1 -1
- package/dist/tools/catalog/capabilities/records/folds/manage-combat.folds.js +4 -4
- package/dist/tools/catalog/capabilities/records/folds/manage-effect.folds.js +5 -5
- package/dist/tools/catalog/capabilities/records/folds/manage-geometry.folds.js +1 -1
- package/dist/tools/catalog/capabilities/records/folds/manage-interaction.folds.js +4 -4
- package/dist/tools/catalog/capabilities/records/folds/manage-networking.folds.js +1 -1
- package/dist/tools/catalog/capabilities/records/folds/system-control.folds.js +3 -2
- package/dist/tools/catalog/capabilities/records/gameplay/animation-physics/authoring-3.data.js +59 -5
- package/dist/tools/catalog/capabilities/records/gameplay/manage-ai/add-actions.data.js +1 -1
- package/dist/tools/catalog/capabilities/records/gameplay/manage-character/character-1.data.js +1 -1
- package/dist/tools/catalog/capabilities/records/gameplay/manage-character/character-2.data.js +1 -1
- package/dist/tools/catalog/capabilities/records/gameplay/manage-combat/combat-properties.js +1 -1
- package/dist/tools/catalog/capabilities/records/gameplay/manage-combat/combat.data.js +32 -12
- package/dist/tools/catalog/capabilities/records/gameplay/manage-effect/effect.data.js +36 -15
- package/dist/tools/catalog/capabilities/records/gameplay/manage-gas/gas.data.js +2 -2
- package/dist/tools/catalog/capabilities/records/gameplay/manage-interaction/interaction.data.js +23 -11
- package/dist/tools/catalog/capabilities/records/gameplay/manage-interaction/schema.js +4 -4
- package/dist/tools/catalog/capabilities/records/inspect/component-actor.data.js +6 -2
- package/dist/tools/catalog/capabilities/records/inspect/global.data.js +1 -0
- package/dist/tools/catalog/capabilities/records/inspect/object-property.data.js +14 -7
- package/dist/tools/catalog/capabilities/records/inspect/properties.js +1 -1
- package/dist/tools/catalog/capabilities/records/inspect/runtime.data.js +6 -4
- package/dist/tools/catalog/capabilities/records/inspect/stats.data.js +2 -0
- package/dist/tools/catalog/capabilities/records/manage-asset/asset-advanced.js +7 -3
- package/dist/tools/catalog/capabilities/records/manage-asset/asset-lifecycle.js +11 -3
- package/dist/tools/catalog/capabilities/records/manage-asset/builder.js +1 -1
- package/dist/tools/catalog/capabilities/records/manage-asset/content-sources.js +1 -1
- package/dist/tools/catalog/capabilities/records/manage-asset/material-graph.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-asset/texture-create.js +1 -1
- package/dist/tools/catalog/capabilities/records/manage-audio/authoring.data.js +27 -3
- package/dist/tools/catalog/capabilities/records/manage-blueprint/behaviours.d.ts +3 -0
- package/dist/tools/catalog/capabilities/records/manage-blueprint/behaviours.js +622 -0
- package/dist/tools/catalog/capabilities/records/manage-blueprint/blueprint-lifecycle.js +31 -9
- package/dist/tools/catalog/capabilities/records/manage-blueprint/functions-events.js +28 -0
- package/dist/tools/catalog/capabilities/records/manage-blueprint/graph-batch.js +37 -16
- package/dist/tools/catalog/capabilities/records/manage-blueprint/graph-nodes.js +118 -14
- package/dist/tools/catalog/capabilities/records/manage-blueprint/graph-pins.js +4 -4
- package/dist/tools/catalog/capabilities/records/manage-blueprint/index.js +2 -0
- package/dist/tools/catalog/capabilities/records/manage-blueprint/properties.d.ts +19 -5
- package/dist/tools/catalog/capabilities/records/manage-blueprint/properties.js +20 -14
- package/dist/tools/catalog/capabilities/records/manage-blueprint/scs-components.js +6 -3
- package/dist/tools/catalog/capabilities/records/manage-blueprint/variables-metadata.js +15 -4
- package/dist/tools/catalog/capabilities/records/manage-blueprint/widget-animation.js +29 -0
- package/dist/tools/catalog/capabilities/records/manage-blueprint/widget-templates.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-level/lifecycle.data.js +11 -10
- package/dist/tools/catalog/capabilities/records/manage-level/operations-power.data.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-level/operations.data.js +1 -1
- package/dist/tools/catalog/capabilities/records/manage-level/properties.d.ts +0 -3
- package/dist/tools/catalog/capabilities/records/manage-level/properties.js +1 -4
- package/dist/tools/catalog/capabilities/records/manage-networking/input.data.js +2 -2
- package/dist/tools/catalog/capabilities/records/manage-sequence/media.js +4 -4
- package/dist/tools/catalog/capabilities/records/shared/fold-build.js +5 -2
- package/dist/tools/catalog/capabilities/records/shared/fold-types.d.ts +1 -0
- package/dist/tools/catalog/capabilities/records/system-control/console.js +2 -1
- package/dist/tools/catalog/capabilities/records/system-control/plugins.js +9 -2
- package/dist/tools/catalog/capabilities/records/system-control/system-ops.js +99 -18
- package/dist/tools/catalog/capabilities/records/utility/output-glossary.js +3 -0
- package/dist/tools/catalog/capabilities/records/utility/utility-schema-pins.js +3 -1
- package/dist/tools/catalog/capabilities/records/world/manage-geometry.dynamicmesh.data.js +8 -5
- package/dist/tools/catalog/capabilities/records/world/manage-geometry.operations.data.js +3 -2
- package/dist/tools/catalog/capabilities/records/world/manage-geometry.optimize.data.js +19 -7
- package/dist/tools/catalog/capabilities/records/world/manage-geometry.primitives.data.js +17 -12
- package/dist/tools/catalog/capabilities/records/world/manage-level-structure.structure.data.js +1 -1
- package/dist/tools/catalog/capabilities/records/world/manage-level-structure.volume.data.js +3 -3
- package/dist/tools/catalog/capabilities/records/world/properties.js +1 -1
- package/dist/tools/catalog/capabilities/retrieval/constants.d.ts +1 -0
- package/dist/tools/catalog/capabilities/retrieval/constants.js +4 -1
- package/dist/tools/catalog/capabilities/retrieval/scoring.d.ts +1 -0
- package/dist/tools/catalog/capabilities/retrieval/scoring.js +15 -4
- package/dist/tools/catalog/capabilities/semantic/receipt-outcome.js +6 -3
- package/dist/utils/responses/gateway-reply-compaction.d.ts +1 -0
- package/dist/utils/responses/gateway-reply-compaction.js +2 -1
- package/package.json +3 -2
- package/server.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -13,6 +13,69 @@ _Nothing yet._
|
|
|
13
13
|
|
|
14
14
|
---
|
|
15
15
|
|
|
16
|
+
## 🏷️ [0.6.0-beta-f] - 2026-10-16
|
|
17
|
+
|
|
18
|
+
> [!NOTE]
|
|
19
|
+
> **Beta.** Published as a semver prerelease (`0.6.0-beta-f`) under the npm `beta` dist-tag, so `npm install` keeps serving the newest stable release, **`0.5.30`**. This section is everything on `dev` since the `v0.6.0-beta-e` tag, written from the code diff.
|
|
20
|
+
|
|
21
|
+
<details>
|
|
22
|
+
<summary><b>✨ Added</b></summary>
|
|
23
|
+
|
|
24
|
+
- **Gameplay in one call**: `add_behaviour` writes health, damage on touch, pickups, sprint, shooting, chase, patrol, turrets, player controls, respawn, goals, jump pads, explosives, stomps, moving and falling platforms, countdowns, teleporters, spawners, dashes, HUD bars and counters, hints and game over into an Actor Blueprint as plain engine nodes.
|
|
25
|
+
- **Blueprint authoring**: Blueprint Interfaces, timelines (`edit_timeline`), Bind Event, Switch on Enum, animation-graph nodes by class, a Math Expression's `expression` in batches, and `remove_variable` `variableNames`.
|
|
26
|
+
- **Reading graphs**: `inspect_graph` `functions` finds a function by plain words, `get_graph_details` `filter` finds what reads or moves a variable and `unusedOnly` lists dead nodes, graph edits warn about pure nodes that run twice, and `compile` takes a `folder`.
|
|
27
|
+
- **Packaging**: `package_project` `executableName` names the game's .exe, `launch_build` `map` smoke-runs one level, and `enable_plugin` `targets` keeps an editor-only plugin out of the packaged game.
|
|
28
|
+
- **Project setup**: `configure_rendering` (Lumen, shadows, anti-aliasing, ray tracing, MegaLights) and `create_cpp_class`.
|
|
29
|
+
- **Many actors at once**: spawn batch `repeat` (rows and grids) and `properties`, `set_transform` and `edit_component` with `actorNames`, `set_folder`, and spawns and moves that name z-fighting faces.
|
|
30
|
+
- **Motion and physics**: motion reads that wait for a spawn (`spawnOf`) and name surfaces passed through and actors overlapped, `analyze_animation`, collision presets and per-channel responses, physical materials and `apply_damage`.
|
|
31
|
+
- **Effects and audio**: several parameters on a placed effect at once, `add_emitter` from another system, `get_niagara_info` for one emitter, `list_metasound_nodes` and box-shaped sound zones.
|
|
32
|
+
- **More reads and edits**: `get_property` `objectPaths`, `widget_list` texts and parent panels, `describe_view` `actors`, `get_widget_animation`, screenshot field of view, skeletal mesh import onto a skeleton, `validate_assets` `materialUsage`, `mesh_materials` `assetPaths`, SDF `relativeTo` and input `replaceKey`.
|
|
33
|
+
|
|
34
|
+
</details>
|
|
35
|
+
|
|
36
|
+
<details>
|
|
37
|
+
<summary><b>🔄 Changed</b></summary>
|
|
38
|
+
|
|
39
|
+
- **The editor plugin is now EngineWire** (was McpAutomationBridge), with short file names that fit Fab; settings saved under the old name still load.
|
|
40
|
+
- **A Blueprint graph batch is all or nothing**: a failed step undoes the steps before it.
|
|
41
|
+
- **Leaner replies**: each actor is named once, `runtime_report` reports the session unless asked for more, spawn batches past 20 items list only failures, and transforms read as typed.
|
|
42
|
+
- **The HTTP door takes capability IDs** as the stdio door does, and level calls list only the names they take.
|
|
43
|
+
- **Widget templates take their content**: a shop its `items` and `currency`, a dialog its `text` and `buttons`.
|
|
44
|
+
|
|
45
|
+
</details>
|
|
46
|
+
|
|
47
|
+
<details>
|
|
48
|
+
<summary><b>🔧 Fixed</b></summary>
|
|
49
|
+
|
|
50
|
+
- **Replies say what really happened**: a widget rename refuses a taken name, a clean compile drops stale warnings, a Shipping smoke run says it wrote no log, compiler warnings reach the receipt, and a self-destroying spawn, a game's own pause, a minimized editor and a non-realtime screenshot are named.
|
|
51
|
+
- **Blueprint graphs**: enums keep their type, array pins say so, call nodes take the names the editor shows, nodes made without a position find a free slot, refused nodes leave nothing, misspelled types are refused, and Math Expressions take a unary minus and `&&`/`||` comparisons.
|
|
52
|
+
- **Property values**: Map, Set, array, float and Blueprint struct values read and write as sent, actor arrays take labels, and unknown variable names are refused.
|
|
53
|
+
- **Gameplay**: projectiles hit and hurt, weapons fire, doors and switches open, `apply_force` pushes, placed props simulate, batch references land before BeginPlay, and a mouse move reaches a running game.
|
|
54
|
+
- **Placement checks**: no false off-map, sunk or floating reports for floors over pits, enclosures, stacked items and complex collision.
|
|
55
|
+
- **Niagara**: modules go where their dependencies hold, a duplicated system plays at once, and placed-effect parameters are typed and fully bindable.
|
|
56
|
+
- **Assets**: deletes count what they removed, imports name the mesh, Fab adds a pack's Unreal build, dead material branches list as orphaned, and material usage flags are saved.
|
|
57
|
+
- **Geometry**: appended faces face outwards, arrays are no longer one copy short, and SDF shapes mesh at the resolution asked for.
|
|
58
|
+
- **Undo, search and guidance**: volume and single-actor component edits are one undo step, more plain requests are found, and every pointer in record text names a real action.
|
|
59
|
+
|
|
60
|
+
</details>
|
|
61
|
+
|
|
62
|
+
<details>
|
|
63
|
+
<summary><b>📊 Change Statistics</b></summary>
|
|
64
|
+
|
|
65
|
+
| Metric | Count |
|
|
66
|
+
|--------|-------|
|
|
67
|
+
| Diff range | `v0.6.0-beta-e..v0.6.0-beta-f` |
|
|
68
|
+
| Commits | 212, the version bump and this release entry included |
|
|
69
|
+
| Files changed | 1,976 (1,950 hand-written, not counting generated files or line-ending-only changes) |
|
|
70
|
+
| Insertions / deletions | 34,715 / 11,597 (hand-written: 26,407 / 10,792) |
|
|
71
|
+
| Capability records | 416 |
|
|
72
|
+
| Callable `{tool, action}` pairs | 1,554 |
|
|
73
|
+
| C++ domain directories | 55 |
|
|
74
|
+
|
|
75
|
+
</details>
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
16
79
|
## 🏷️ [0.6.0-beta-e] - 2026-10-09
|
|
17
80
|
|
|
18
81
|
> [!NOTE]
|
package/README.md
CHANGED
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="
|
|
2
|
+
<img src="Public/banner.svg" alt="EngineWire: let any AI assistant work inside the Unreal Editor" width="100%">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
|
+
<h1 align="center">EngineWire</h1>
|
|
6
|
+
|
|
5
7
|
<p align="center">
|
|
6
8
|
<a href="https://opensource.org/licenses/MIT"><img alt="License: MIT" src="https://img.shields.io/badge/License-MIT-yellow.svg"></a>
|
|
7
9
|
<a href="https://www.npmjs.com/package/unreal-engine-mcp-server"><img alt="npm" src="https://img.shields.io/npm/v/unreal-engine-mcp-server"></a>
|
|
@@ -15,7 +17,7 @@
|
|
|
15
17
|
</p>
|
|
16
18
|
|
|
17
19
|
<p align="center">
|
|
18
|
-
<b>
|
|
20
|
+
<b>EngineWire connects Claude, Cursor, VS Code or any other MCP client to a running Unreal Editor,</b><br>
|
|
19
21
|
and let it build levels, Blueprints, UI, materials, effects and more, through a native C++ editor plugin.
|
|
20
22
|
</p>
|
|
21
23
|
|
|
@@ -91,10 +93,10 @@ Nearly 400 capabilities in all, behind a single MCP tool. The assistant finds th
|
|
|
91
93
|
## How it works
|
|
92
94
|
|
|
93
95
|
<p align="center">
|
|
94
|
-
<img src="
|
|
96
|
+
<img src="Public/architecture.svg" alt="Architecture: an AI client reaches the EngineWire plugin inside the Unreal Editor either over Streamable HTTP on port 3000 (Route A) or through the Node.js server over stdio and a WebSocket on port 8090 (Route B); the plugin drives the editor APIs on the game thread" width="100%">
|
|
95
97
|
</p>
|
|
96
98
|
|
|
97
|
-
The **
|
|
99
|
+
The **EngineWire** plugin runs inside the editor and does all the work, on the editor's game thread. Clients reach it in one of two ways, and both expose the same single tool, `unreal`:
|
|
98
100
|
|
|
99
101
|
| | 🌐 Route A · Native HTTP | 🧩 Route B · stdio |
|
|
100
102
|
| --- | --- | --- |
|
|
@@ -111,13 +113,13 @@ The [Quick Start](https://github.com/ChiR24/Unreal_mcp/wiki/Quick-Start) page wa
|
|
|
111
113
|
|
|
112
114
|
### 1. Add the plugin
|
|
113
115
|
|
|
114
|
-
Download `
|
|
116
|
+
Download `EngineWire-plugin-<version>.zip` from the newest `v0.6` pre-release on the [Releases page](https://github.com/ChiR24/Unreal_mcp/releases), and copy the `EngineWire` folder it contains into your project:
|
|
115
117
|
|
|
116
118
|
```text
|
|
117
|
-
MyGame/Plugins/
|
|
119
|
+
MyGame/Plugins/EngineWire/
|
|
118
120
|
```
|
|
119
121
|
|
|
120
|
-
Or use a clone of this repository: copy `plugins/
|
|
122
|
+
Or use a clone of this repository: copy `plugins/EngineWire/`, or reference the folder from your `.uproject` with `"AdditionalPluginDirectories": ["C:/Path/To/Unreal_mcp/plugins"]`.
|
|
121
123
|
|
|
122
124
|
Open the project and let Unreal rebuild the plugin. When it's loaded, the status bar shows **`MCP off`**. If you see *"Engine modules cannot be compiled at runtime"*, build the project once in Visual Studio, Rider or Xcode. More in [Installation](https://github.com/ChiR24/Unreal_mcp/wiki/Installation).
|
|
123
125
|
|
|
@@ -134,7 +136,7 @@ Build the plugin once on a machine with the engine and a compiler, then hand out
|
|
|
134
136
|
node scripts/package-plugin.mjs "C:/Program Files/Epic Games/UE_5.7"
|
|
135
137
|
```
|
|
136
138
|
|
|
137
|
-
This writes `build/
|
|
139
|
+
This writes `build/EngineWire-v<version>-UE5.7-<Platform>.zip`, where `<version>` is the `package.json` version (currently `0.6.0-beta-f`). Unzip it into `YourProject/Plugins/`. Binaries only work with the engine minor and platform they were built for: a 5.6 build won't load in 5.5, 5.7 or 5.8.
|
|
138
140
|
|
|
139
141
|
</details>
|
|
140
142
|
|
|
@@ -142,7 +144,7 @@ This writes `build/McpAutomationBridge-v<version>-UE5.7-<Platform>.zip`, where `
|
|
|
142
144
|
|
|
143
145
|
**Route A · Native HTTP (no Node.js)**
|
|
144
146
|
|
|
145
|
-
1. In **Edit › Project Settings › Plugins ›
|
|
147
|
+
1. In **Edit › Project Settings › Plugins › EngineWire**, tick **Enable Native MCP Server** (port `3000` by default), then restart the editor. The status bar now reads **`MCP :3000 (0)`**.
|
|
146
148
|
|
|
147
149
|
<img src="https://raw.githubusercontent.com/wiki/ChiR24/Unreal_mcp/assets/screenshots/settings-native-mcp.png" alt="The Native MCP section of the plugin settings, with Enable Native MCP Server ticked" width="520">
|
|
148
150
|
|
|
@@ -232,7 +234,7 @@ Both routes expose exactly **one** MCP tool, `unreal`, with four operations. Onl
|
|
|
232
234
|
| `configure` | Enables or disables groups of internal tools; never touches the editor |
|
|
233
235
|
|
|
234
236
|
<p align="center">
|
|
235
|
-
<img src="
|
|
237
|
+
<img src="Public/gateway.svg" alt="The gateway flow: search with a query returns rows with a nextCall; describe with tool and action returns the contract; execute with params, and consent when needed, returns data and a receipt listing changes, handles and warnings" width="100%">
|
|
236
238
|
</p>
|
|
237
239
|
|
|
238
240
|
A typical exchange:
|
|
@@ -307,7 +309,7 @@ These route requests inside the gateway; clients never list them. More in the [T
|
|
|
307
309
|
|
|
308
310
|
Most setups touch one setting: **Enable Native MCP Server** for Route A, or `UE_PROJECT_PATH` for Route B. Everything is listed on the [Configuration](https://github.com/ChiR24/Unreal_mcp/wiki/Configuration) page.
|
|
309
311
|
|
|
310
|
-
**Plugin settings** (Project Settings › Plugins ›
|
|
312
|
+
**Plugin settings** (Project Settings › Plugins › EngineWire, saved in `Config/DefaultGame.ini`):
|
|
311
313
|
|
|
312
314
|
| Setting | Default | |
|
|
313
315
|
| --- | --- | --- |
|
|
@@ -373,7 +375,7 @@ The bridge declares its engine-plugin dependencies, so Unreal enables them toget
|
|
|
373
375
|
| **MetaSound**, **Synthesis** | `manage_audio`: MetaSound authoring |
|
|
374
376
|
| **Enhanced Input**, **Online Subsystem**, **Online Subsystem Utils** | `manage_networking`: input mappings, sessions |
|
|
375
377
|
| **Interchange**, **Interchange OpenUSD**, **Data Validation**, **StructUtils** | Import/export, validation, struct helpers |
|
|
376
|
-
| **Fab**, **Bridge** | Fab asset library access (optional `
|
|
378
|
+
| **Fab**, **Bridge** | Fab asset library access (optional `EngineWireFab` module) |
|
|
377
379
|
|
|
378
380
|
</details>
|
|
379
381
|
|
|
@@ -2,7 +2,8 @@ import net from 'node:net';
|
|
|
2
2
|
import { DEFAULT_AUTOMATION_HOST, DEFAULT_AUTOMATION_PORT, DEFAULT_HEARTBEAT_INTERVAL_MS, DEFAULT_MAX_INBOUND_MESSAGES_PER_MINUTE, DEFAULT_MAX_PENDING_REQUESTS, DEFAULT_MAX_QUEUED_REQUESTS, DEFAULT_NEGOTIATED_PROTOCOLS, PACKAGE } from '../constants.js';
|
|
3
3
|
import { config } from '../config.js';
|
|
4
4
|
import { readProjectIniValue } from '../utils/config/ini-reader.js';
|
|
5
|
-
const BRIDGE_SETTINGS_SECTION = '/Script/
|
|
5
|
+
const BRIDGE_SETTINGS_SECTION = '/Script/EngineWire.EngineWireSettings';
|
|
6
|
+
const LEGACY_BRIDGE_SETTINGS_SECTION = '/Script/McpAutomationBridge.McpAutomationBridgeSettings';
|
|
6
7
|
const BRIDGE_SETTINGS_CATEGORY = 'Game';
|
|
7
8
|
function readProjectListenPort(log) {
|
|
8
9
|
const projectPath = process.env.UE_PROJECT_PATH;
|
|
@@ -10,7 +11,8 @@ function readProjectListenPort(log) {
|
|
|
10
11
|
return null;
|
|
11
12
|
}
|
|
12
13
|
try {
|
|
13
|
-
const raw = readProjectIniValue(projectPath, BRIDGE_SETTINGS_CATEGORY, BRIDGE_SETTINGS_SECTION, 'ListenPorts')
|
|
14
|
+
const raw = readProjectIniValue(projectPath, BRIDGE_SETTINGS_CATEGORY, BRIDGE_SETTINGS_SECTION, 'ListenPorts')
|
|
15
|
+
?? readProjectIniValue(projectPath, BRIDGE_SETTINGS_CATEGORY, LEGACY_BRIDGE_SETTINGS_SECTION, 'ListenPorts');
|
|
14
16
|
if (raw === undefined) {
|
|
15
17
|
return null;
|
|
16
18
|
}
|
|
@@ -60,8 +60,8 @@ export function pluginVersionMismatch(metadata) {
|
|
|
60
60
|
const server = `${PACKAGE.name} ${PACKAGE.version}`;
|
|
61
61
|
const install = `install the ${PACKAGE.version} plugin from ${RELEASE_TAG_URL}${PACKAGE.version} and restart the editor`;
|
|
62
62
|
return typeof plugin === 'string'
|
|
63
|
-
? `Version mismatch: this server is ${server} but the editor runs
|
|
64
|
-
: `Version mismatch: this server is ${server} but the editor runs
|
|
63
|
+
? `Version mismatch: this server is ${server} but the editor runs EngineWire ${plugin}, so actions and parameters can differ. Fix: ${install}, or pin the server to the plugin with npx -y ${PACKAGE.name}@${plugin} and restart the MCP client.`
|
|
64
|
+
: `Version mismatch: this server is ${server} but the editor runs an EngineWire plugin that predates version reporting, so actions and parameters can differ. Fix: ${install}.`;
|
|
65
65
|
}
|
|
66
66
|
export const bridgeErrorSchema = z.looseObject({
|
|
67
67
|
type: z.literal('bridge_error'),
|