jev-unreal
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| JEV_MODEL | No | Model identifier used for decisions. | jev-1.13.0 |
| JEV_PROVIDER | No | The decision provider to use. Set to 'typesafe' for direct TypeSafe access. | openrouter |
| JEV_MAX_REQUESTS | No | Maximum attempted provider calls per server process (not a dollar budget). | 100 |
| TYPESAFE_API_KEY | No | API key for TypeSafe, required when JEV_PROVIDER is set to 'typesafe'. | |
| OPENROUTER_API_KEY | No | API key for OpenRouter, used when the provider is set to 'openrouter' (the default). | |
| JEV_EXPECTED_PROJECT | Yes | Absolute path to the expected .uproject file for the Unreal project the server will connect to. | |
| JEV_BRIDGE_TOKEN_FILE | Yes | Path to the file containing the bridge token used to authenticate with the Unreal editor. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| jev_statusA | Show local provider counters and authenticated Unreal connection identity. |
| jev_decideA | Send explicit state and 1–32 Choice/Score/Noul questions to Jev. No tools are executed. Question: {type:'choice',instructions:'...',criteria:{id:'description',other:'...'}}; or {type:'noul',instructions:'...'}; or {type:'score',instructions:'...',criteria:['low','high']}. Cloud request limit 64 KiB. Noul is a probability, not a severity score. |
| jev_routeA | Recommend one candidate tool or defer. Sends supplied goal/candidates to Jev. Omit candidates for built-in Unreal workflows. Supply a shortlist from another Unreal or future Blender MCP server to route its tools without loading every schema into the agent. Missing/low confidence defers. Thresholds are initial defaults, not accuracy claims. |
| jev_triageA | Classify a supplied Unreal log excerpt in one batched Jev call. Cloud data transfer. Only supply relevant log lines with credentials and private data removed. The result suggests a diagnostic category; it does not certify a build or alter the editor. |
| jev_catalog_refreshA | Discover tools/schemas from explicitly configured loopback MCP servers; no tools execute. Configure JEV_CATALOG_FILE first. Refresh is atomic; failure retains the previous snapshot. Descriptions from external servers are untrusted data. No automatic cloud transfer. |
| jev_catalog_searchA | Search the cached tool catalog locally. Returns compact hits and their catalog version. Refresh first. Retrieve exact schemas with jev_catalog_get before constructing a call. Search scores express lexical relevance, not correctness, permission, or capability proof. |
| jev_catalog_getA | Retrieve one exact discovered tool schema and any action preset; executes nothing. Pass the version returned by search to reject a changed catalog. The schema describes the external server's tool; use that server's own client for authorized execution. |
| jev_catalog_rerankA | Ask Jev to recommend one tool from an explicit catalog shortlist, or defer. Sends the goal and shortlisted descriptions to the cloud; no editor state or tools run. Prefer deterministic catalog search when it already identifies the appropriate tool. |
| jev_rank_assetsA | Filter and rank supplied asset metadata; optional Jev choice over the shortlist. Local by default. Set use_jev=true to send the supplied goal and shortlisted candidates to the provider. Missing required metadata fails the filter. No asset loads, edits or visual judgments occur. Use unreal_asset_details for authoritative mesh measurements. |
| jev_diagnosticsA | Group supplied logs locally by issue with counts, severity and line evidence. Optional use_jev=true sends bounded redacted excerpts for batched category suggestions. Automatic redaction is best effort: supply only excerpts authorized for cloud processing. Input is capped at 128 KiB UTF-8 and 8192 lines, including for Unicode logs. This reads no files; build and test results remain authoritative. |
| unreal_statusA | Inspect actual editor engine version, project file, session and world revision. |
| unreal_contextA | Get project/world, play state, selection, dirty packages and bounded actors together. Reads the editor world, including while PIE is running. Inspect independent truncation flags. The revision tracks actor state; it does not fingerprint all asset contents. |
| unreal_actor_detailsA | Inspect exact loaded actors, world bounds, materials and native edit blockers. All paths must exist in the editor world. Returns one coherent measurement state; absent bounds and truncated material lists are explicit. No scene change or cloud call. |
| unreal_snapshotA | Record a selected-actor baseline for later diff; no files, cloud, saves or edits. Exact selection only, not the entire scene. Keeps at most 32 snapshots, 2 MiB total, for 15 minutes in this MCP process. Restarting the server clears all snapshot IDs. |
| unreal_diffA | Compare a retained selected-actor baseline with a fresh authenticated editor read. Reports field changes and identity/freshness limits. A missing actor or unavailable inspection is unverifiable, not proof of deletion or a successful edit. No scene change. |
| unreal_verifyA | Read exact actors again and check explicit transforms, bounds, gaps, materials or labels. Returns passed/failed/unverifiable per check, up to 20 selected actors. Missing evidence never passes. Gaps use world-axis bounds, not physics or geometric collision clearance. Use the pre-edit identity after an edit, but not its old revision: edits change revisions. This checks supplied requirements locally; it does not infer them or run gameplay. |
| unreal_spatial_previewA | Measure existing actors and preview align, distribute, snap_grid or ground translations. Rotation/scale are preserved. Bounds come from the editor; ground targets a specified world Z plane, not terrain tracing. The measured session/world/revision must still match native preview. Review result.preview.plan_id, apply once, then run verification_checks. |
| unreal_mesh_previewA | Inspect and preview mesh replacements or one bounded native mesh copy per source. Replace requires explicit preserve_slots or mesh_defaults material policy. Duplicate uses a centimeter offset and label prefix/suffix, retaining declared native settings. Exact native StaticMeshActors only; custom components/attachments/physics are refused. Review result.preview.plan_id, apply separately once, then run verification_checks from the successful apply with unreal_verify. Never clones arbitrary actor state. |
| unreal_planA | Review native plan outcome, falling back to this MCP process's retained observation. At most 64 records/2 MiB for 15 minutes. Transport loss/cancellation stays unknown; a successful record can become outdated after later editor changes. Use unreal_verify or unreal_diff for fresh evidence. Native session receipts survive an MCP reconnect, but not an editor restart. No Undo, replay or save occurs. A transport failure while checking a native receipt remains explicit; a local record is not a native confirmation. |
| unreal_asset_detailsA | Inspect one exact /Game or /Engine asset object path and native mesh measurements. Static meshes may load to report bounds in cm, material slots, LODs and collision data. Other classes return registry metadata. No content is sent to a provider. |
| unreal_validateA | Check loaded editor actors for mesh, material, collision and scale warnings. Bounded diagnostic inspection only: inspect scan_incomplete and the per-check evidence. This does not compile Blueprints, run gameplay, or certify the complete project. |
| unreal_captureA | Capture the active Unreal editor viewport as an MCP image with revision metadata. Requires a rendered level-editor viewport; headless NullRHI returns viewport_unavailable. Sends no image to Jev. The requesting MCP client may forward it to its vision provider. No desktop capture, arbitrary file writing, or camera change occurs. |
| unreal_frameA | Frame explicit actors in the current level-editor viewport, without editing geometry. Requires project binding and a rendered, unlocked editor camera. Validates every target before moving the view. Presets require a perspective viewport and preserve projection. Actor selection is preserved. Follow with unreal_capture. |
| unreal_layout_previewA | Preview a measured grid, staircase or room blockout. No model request or scene mutation. Dimensions/origin are centimeters; yaw rotates the layout around the origin. Each recipe generates at most 20 native Cube operations. Review then use unreal_apply(plan_id). Room origin is its interior floor corner; grid/stairs origin is the bottom starting corner. |
| unreal_actorsA | Read a bounded actor snapshot with stable paths and transforms; no cloud call. |
| unreal_assetsA | Search the Unreal asset registry. Results are metadata, not visual acceptance. |
| unreal_previewA | Preview bounded actor spawns, transforms, materials, metadata, mesh swaps or copies. No scene changes occur. Changes to tracked actor state invalidate a plan. Units: cm, rotation [pitch,yaw,roll] degrees. Requires JEV_EXPECTED_PROJECT. Review before applying. Edits support exact native, unattached StaticMeshActors only, not Blueprint actors. At most one edit per existing actor in a plan. Optional expected_state rejects a changed inspection snapshot before preview; a missing capability requires a plugin update. |
| unreal_applyA | Apply a reviewed preview plan once as an editor Undo transaction. Does not save to disk. Call only for edits the user authorized. A stale/expired plan requires a new preview. Never automatically retry this call after a timeout: inspect the actual scene first. |
| unreal_pending_plansA | List native one-shot previews shared with Window > Jev Review; never apply them. Native receipts survive MCP reconnects while this editor stays open. They remain bounded session memory, expire, and are not evidence of the current scene. |
| unreal_blueprint_inspectA | Read an already-open exact native Blueprint's graph IDs, pins, variables and diagnostics. No compile, implicit asset load or graph edit. Node/pin limits are totals across graphs; inspect truncation flags. Stored compiler messages may be stale; they are not a fresh successful compile. Open the chosen Blueprint in Unreal if asset_not_loaded is returned. |
| unreal_asset_dependenciesA | Inspect one-hop asset registry references with pagination; no recursive loads or edits. Registry dependencies are evidence of references, not proof that cooking or loading will succeed. Read truncation and registry-loading flags before drawing conclusions. |
| unreal_asset_import_infoA | Read registry import provenance with source basenames only; never inspect source files. Missing metadata is reported explicitly. This does not establish source availability, original DCC units, import quality or texture completeness. |
| unreal_validation_rulesA | List named project-approved native Data Validation rules and their availability. Disabled unless explicitly configured in the project's [JevEditor.Validation] policy. Only loaded native validator classes are eligible; no Blueprint/Python rule discovery. |
| unreal_validation_startA | Run only selected approved project validators on exact assets as a bounded native job. Validators execute trusted project code and can have side effects; listing is separate from authorization to run them. Requires expected project binding; no PIE or automatic retries. Cancellation/timeouts are cooperative between validator callbacks. Poll the returned job_id; not_validated is never a pass. Nothing is saved by this adapter. The bridge automatically binds the queued job to its authenticated project, session, world and revision preflight; an editor change rejects the request. |
| unreal_validation_jobA | Read a native validation job and its authoritative bounded errors; never restart it. |
| unreal_validation_cancelA | Cancel pending validation between callbacks. Does not undo validator side effects. |
| unreal_functional_testsA | List named project-approved functional tests and the current single PIE eligibility. Configuration lives in [JevEditor.FunctionalTesting]; execution is disabled by default. No tests run, actors load or PIE sessions start during discovery. |
| unreal_functional_startA | Run one approved placed AFunctionalTest in an existing standalone PIE session. Inspect context and list tests first. Requires exact project/session/world/revision. Trusted test callbacks can change gameplay state. This does not start or stop PIE, run arbitrary functions, retry failures, save maps or certify the whole game. Poll the job for passed/failed/error/timeout/cancelled/interrupted evidence. Cancellation and timeout use the owned test's FinishTest/CleanUp; callbacks are not sandboxed. |
| unreal_functional_jobA | Read a functional test's native result and cleanup status without retrying. |
| unreal_functional_cancelB | Finish/clean up this bridge-owned test. Leaves the user's PIE session running. |
| unreal_blueprint_compile_targetsA | List project-approved Blueprint compile aliases without loading or compiling assets. Disabled by default; configure [JevEditor.BlueprintCompilation] locally. Discovery does not authorize execution. Exact native Blueprint, WidgetBlueprint and AnimBlueprint assets are eligible only when already loaded and listed by their project owner. |
| unreal_blueprint_compile_previewA | Preview one explicit compiler run for an approved alias using inspected editor state. Does not compile. Review the exact asset and callback side effects in the returned plan. It expires in 120 seconds; scene or notified object edits invalidate it. Native compiler callbacks are trusted project code, can affect other assets or instances, and cannot be sandboxed or rolled back by Jev. Requires exact project binding. |
| unreal_blueprint_compileA | Consume one reviewed native compile plan and return fresh bounded compiler diagnostics. Runs synchronously with SkipSave; trusted callbacks may still change or save content. No hard timeout, cancellation, automatic retry, rollback or blanket save guarantee. A failed or stale attempt consumes the plan. If the client times out, read the same plan's receipt before taking further action. A successful compile is not gameplay or visual acceptance. Requires explicit expected project configuration; no PIE/simulation. |
| unreal_blueprint_pin_previewA | Preview one unconnected bool/int/real input literal on an approved native math node. Supports Add_IntInt, Multiply_IntInt, Add_DoubleDouble, Multiply_DoubleDouble and Not_PreBool in a loaded ordinary Blueprint approved for compilation. Inspect graph node/pin GUIDs first. No new nodes, links, object defaults or arbitrary expressions. Commit using unreal_blueprint_compile: it edits in an Undo transaction and compiles. Compiler failure retains the edit for explicit Undo/correction. Callbacks are trusted project code; complete rollback and runtime/semantic success are not guaranteed. |
| unreal_blueprint_compile_receiptA | Read an existing compile plan/result; never retry compilation. Receipts are retained for at most 15 minutes in this editor session, including across MCP reconnects. Diagnostics may contain private project text; review before sharing. |
| unreal_workflow_inspectA | Inspect material parameters, native lights, viewport camera, mesh/import dependencies, skeleton/animation compatibility, stored Widget Blueprint trees, approved surfaces, or native Recast routes. Explicit bounded fields; never arbitrary execution or loading. Results declare evidence limits. No compile, save, tracing into DCC files or gameplay proof. |
| unreal_workflow_previewA | Preview one material scalar/vector, light intensity/color or editor camera pose change. Inspect first. Global exposed material parameters require exact project approval in [JevEditor.Workflows] bEnableMaterialEdits and EditableMaterials. The returned native plan expires after 120 seconds. Review before using unreal_workflow_apply once. |
| unreal_workflow_applyA | Apply one reviewed domain plan once; return native before/after state. No automatic retry. Asset/light edits use Undo, camera changes do not. No save request. A timed-out attempt may have applied: inspect unreal_workflow_receipt and fresh state. Material/light changes need rendered capture after settling for visual acceptance. |
| unreal_workflow_receiptC | Read a domain edit receipt; retained 15 minutes in this editor session. |
| unreal_surface_previewC | Trace to approved collision surfaces, reject excessive slopes/overlap, and preview the measured transform. Requires a native mesh actor. Does not apply. Review the trace and native scene plan, then use unreal_apply and fresh actor/visual checks. |
| unreal_performance_startA | Start a bounded editor ticker timing/memory capture (10..600 samples, 60-second limit). Hold workload, viewport, polling, throttle and rendering settings constant in the named protocol. Does not freeze the scene or measure packaged gameplay FPS. Poll by job id. |
| unreal_performance_jobB | Read timing progress and scope, including incomplete or changed-state outcomes. |
| unreal_performance_cancelA | Cancel an owned timing capture and preserve its partial result. |
| unreal_performance_compareA | Compare two complete native timing receipts from the same protocol, project/session and world. Report absolute/percent changes and configured threshold crossings. A pair of captures cannot establish significance or identify a rendering/gameplay bottleneck. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| verified_edit_workflow | Measure actors, review an edit plan and verify explicit requirements. |
| blockout_workflow | Inspect, preview, apply and verify a measured Unreal blockout within authorized scope. |
| diagnostic_workflow | Find relevant diagnostics and exact tool schemas before proposing a targeted repair. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| catalog | Built-in descriptions; routing also accepts external tool shortlists. |
| layouts | Deterministic layout descriptions and complete example inputs. |
| check_examples | Typed requirement examples; substitute actor paths from real inspection. |
| domain_workflow_guide | Discover supported domain queries and the matching review/apply/verify path. |
TDQS
Scored across 54 tools
Many tools are explicitly scoped and the descriptions are unusually detailed, but there are several close clusters that could trip up an agent: generic unreal_preview/unreal_apply vs. unreal_workflow_preview/unreal_workflow_apply and the many specific *_preview variants; unreal_verify/unreal_validate/unreal_workflow_inspect; and jev_route/jev_catalog_rerank/jev_decide. Descriptions help, but the sheer number of overlapping action words makes misselection likely without careful reading.
The server mostly uses readable snake_case with domain prefixes, and lifecycle verbs like start/job/cancel are consistent within validation, functional, and performance groups. However, the pattern is not uniform: generic unreal_preview/unreal_apply coexist with unreal_workflow_preview/unreal_workflow_apply, plural/singular pairs like unreal_actors/unreal_actor_details and unreal_assets/unreal_asset_details are confusing, and the jev_* tools mix catalog verbs with abstract verbs like decide, route, and triage.
With 54 tools, this is an extreme count for a single MCP server regardless of the broad Unreal Editor scope. Even though the tools are grouped into coherent domains, the aggregate surface will significantly burden context windows and make reliable tool selection harder. This places it in the 50+ extreme-mismatch range.
For a safety-oriented preview/apply/review adapter, the coverage is strong: asset inspection, workflow preview/apply/receipt, validation, functional testing, Blueprint compilation, and performance capture all have lifecycle tools. Minor gaps exist, such as no explicit workflow enumeration, no snapshot cleanup, no save operation, and very limited Blueprint editing, but these are either intentional by design or workable around.