@uemcp/server 1.9.1 → 1.11.0

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.
Files changed (3) hide show
  1. package/README.md +29 -0
  2. package/dist/index.mjs +4749 -2138
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -131,6 +131,14 @@ The MCP tool surface currently exposes:
131
131
  - `scaffold_class_template`
132
132
  - `get_live_compile_details`
133
133
  - `run_editor_python`
134
+ - `set_navmesh_settings`
135
+ - `set_nav_agents`
136
+ - `set_crowd_settings`
137
+ - `create_nav_area`
138
+ - `add_nav_modifier_volume`
139
+ - `add_nav_link`
140
+ - `find_path`
141
+ - `test_reachability`
134
142
 
135
143
  ## Project Identity
136
144
 
@@ -661,6 +669,27 @@ This is intended to let an MCP client resolve the canonical Unreal project ident
661
669
  - An editor whose Python Script Plugin is absent or disabled returns `state: 'unsupported'` with the reason, which is a different answer from a script that ran and failed
662
670
  - The whole script runs inside one `FScopedTransaction`, so a successful run is a single editor undo; a failed run cancels the transaction rather than leaving half its effects behind
663
671
  - `executionMode` is `script` (default: a whole block of Python, or a `.py` path with arguments), `statement` (exactly one statement) or `evaluate` (one expression, whose value comes back in `result`). `script` is the default because the engine reports a traceback line by line only in that mode; the two statement modes put it in `result` instead. Commands are capped at 16,384 characters, and output and error lines at 200 lines each, with `truncated` set
672
+ ### `set_navmesh_settings` / `set_nav_agents` / `set_crowd_settings`
673
+
674
+ - Navmesh generation settings are written onto the level's `RecastNavMesh` actor and only reach the navmesh on the next build, so the response reports `rebuildRequired` and the caller follows with `build_navigation`. Rebuilding here instead would be a minutes-long job on a socket with a seconds-long read budget
675
+ - `cellSize`, `cellHeight` and `agentMaxStepHeight` live per resolution since UE 5.4 — the same-named members on the actor are deprecated and no longer read by the generator — so `resolution` names which of the three sets is being written, and `appliedSettings` reports exactly which fields the write touched
676
+ - The response reports every setting as it stands **after** the write, read back off the actor, so a value the navmesh clamped is visible rather than echoed back as requested
677
+ - `set_nav_agents` replaces the project's whole `SupportedAgents` list, which is what gives a level one navmesh per agent size. It is read once when the navigation system starts, so the response reports `restartRequired` rather than pretending a running editor picked it up
678
+ - `set_crowd_settings` writes the Detour crowd manager and the RVO avoidance manager, both config defaults rather than per-level state. Only the manager a request actually names is saved, so a crowd-only call leaves the avoidance section alone
679
+
680
+ ### `create_nav_area` / `add_nav_modifier_volume` / `add_nav_link`
681
+
682
+ - `create_nav_area` makes a nav area Blueprint under `NavArea` (or one of the stock parents) and reports `generatedClassPath` — the class, not the asset, is what a modifier volume or a link references
683
+ - `add_nav_modifier_volume` places an `ANavModifierVolume` and builds its cube brush through the same actor factory the place-actor panel uses. Without that brush the volume covers nothing, so a non-positive extent is refused rather than placed
684
+ - `add_nav_link` replaces the proxy's default link with the ones the request carries. `left` and `right` are offsets from the actor, the space the level editor's own link handles move in, and the response reports them in world space so a link and the `find_path` that crosses it can be compared directly
685
+ - All three leave the navmesh untouched until the next `build_navigation`, and say so through `rebuildRequired`
686
+
687
+ ### `find_path` / `test_reachability`
688
+
689
+ - Synchronous navmesh queries against the editor world, which is what makes "is this level traversable" answerable without entering PIE
690
+ - A destination nothing can reach comes back as `reachable: false` with a partial path, not as an error: that is the answer, and a tool that threw would make the check unusable in a sweep. `queryResult` carries the engine's own `ENavigationQueryResult` so an off-navmesh endpoint stays distinguishable from a walled-off one
691
+ - `reachable` means a path that actually arrives. A partial path proves the goal is **not** reachable however far along it got, so it never counts as reachable in `find_path`
692
+ - `test_reachability` answers a batch of pairs without returning path geometry, and fails one pair rather than the request when an actor path no longer resolves — a sweep of spawn points against objectives is worth answering for the pairs that did resolve
664
693
 
665
694
  ## MCP Resources
666
695