Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_hierarchyA

Scene hierarchy as text tree. For finding specific object by name/type use search_scene. Max 3000 nodes. Use filter/depth to narrow. Set components=true to see component types. Set compress=true to group repeated slots/points/meshes. Set summary=true for compact root-only counts (60-100 tokens). Set incremental=true to get NO_CHANGE if scene unchanged since last call. full=True: bypass distillation. scene: filter to a single scene by name (multi-scene only).

sceneA

Scene management. action: new|open|save|discard|open_additive|close|set_active|list. path: required for open/save/open_additive/close/set_active. list requires no path. scene: save/discard target when multiple scenes loaded (identifies by name).

search_sceneA

Search scene objects. Syntax: name text, t:Component, tag=Tag, layer=N, active=bool. Combine with spaces. root: scope search to subtree (path or None for whole scene). limit: max results (default 50; 0=unlimited). scene: filter to a single scene by name (multi-scene only).

get_componentA

Component properties as key-value. For MULTIPLE objects, use inspect(paths='a,b,c') instead — 1 call vs N. fields: comma-separated field names to keep (e.g. 'mass,position') — projects the result to save tokens; shows requested fields even at default values. Aliases: position, rotation, scale, mass, enabled, active, name. full=True: bypass distillation, return raw response. compress=True: strip default values before transfer.

inspectA

Get components for multiple objects at once. paths: comma-separated. components: comma-separated types (default: all). find_type: component type to find — populates paths automatically (replaces explicit paths). fields: comma-separated field names to keep across all objects — projects the result to save tokens. full=True: bypass distillation. compress=True: strip default values before transfer.

set_propertyA

Set component property (Edit Mode, SerializedObject — for Play Mode use invoke_method or execute_code). find_type: component type — bulk-sets prop on all matching objects without specifying paths. For GO rename use rename_object(). ObjectReference: scene path (/Player), asset path (Assets/X.mat), sub-asset (Assets/X.fbx::ClipName), #instanceID, or 'null'. dry_run=True shows what would change without applying.

create_objectA

Create new GameObject. components: comma-separated types to add on creation. primitive: Cube|Sphere|Cylinder|Capsule|Plane|Quad. prefab_path: instantiate from prefab asset. scene: create in named loaded scene (omit = active scene).

set_activeB

Set GameObject active/inactive.

delete_objectA

Delete GameObject by instance ID or scene path. Provide one. force=True to delete non-empty containers.

manage_componentA

Add or remove a component. action: 'add' or 'remove' ONLY (no 'enable'/'disable' — use set_property with prop='m_Enabled' for that). type: short name (e.g. 'Button') or full namespace (e.g. 'UnityEngine.UI.Button').

set_parentA

Reparent existing GameObject. parent=null → move to scene root. world_position_stays=True (default): preserves world transform. False: stays local to new parent.

resolve_scene_refsA

Read-only scene reference resolver. refs: comma-separated list of $alias, /path, or t:Type tokens. fields: optional comma-separated field names to check existence on matched component. Returns one tab-aligned line per ref: OK|MISS|AMB + path + details.

lint_scene_refsB

Read-only linter for scene references in DSL scripts or batch commands. path: project-relative path to .playtest fil…

run_playtestA

[Play Mode] Execute a playtest DSL script. Returns structured report (for NUnit tests, use run_tests). Commands: MOVE TO x,y,z | WAIT n | WAIT_UNTIL query op value | ASSERT query op value | ASSERT_CONSOLE_CLEAN [IGNORE "pat"] | SNAPSHOT queries | INVOKE path comp method args | SET path comp field value | LOG msg | TIMESCALE n | ASSERT_CONSERVED SUM a+b OVER t | ASSERT_CTA VISIBLE|CLICKABLE | VAL name query | TELEPORT path x,y,z | ASSERT_BATCH...END | ASSERT_NEAR pathA pathB dist | INVARIANT query op value | SIMULATE name [DURATION n] [TIMESCALE n] | MONITOR name | TRACE_FLOW FROM a TO b FIELD f | CAPTURE label query | ASSERT_CAPTURED label INCREASED|DECREASED. defs: inline VAL definitions prepended to script.

lint_playtestA

Read-only preflight check on a .playtest file or inline script. Checks: unresolved $alias, deprecated ALIAS, TRACE_F…

compile_preflightA

Validate C# WITHOUT writing/recompiling (Roslyn). Use before writing .cs — catches typos in ~200ms vs 30s recompile. file_path: Assets-relative. new_content: full file. Returns OK preflight (ms) / ERR preflight + diagnostics / [ROSLYN UNAVAILABLE].

await_compileA

Block until Unity finishes compiling + reloading, then return compile errors. Use after writing .cs files instead of sleep. Returns errors or 'compile clean (Xs)'. Handles domain reload disconnects transparently. timeout=0 → immediate check, no loop. Epoch-aware via sync_status when available (+10 from MAJOR-1); falls back to compile_status.

batchA

Execute multiple commands in one call. Use for 2+ ops — reads AND writes. commands: one per line (cmd key=value). on_error: continue|stop (default continue). timeout: seconds (default 75). atomic: True reverts ALL prior ops on first failure (Unity Undo); execute_code fs side-effects NOT reverted. PREFER over individual tool calls.

validate_referencesA

Validate all ObjectReference fields under path recursively. Returns [ERROR]/[MISSING] for broken refs. Summary: "N ERROR, M OK". Use depth=1 for quick top-level scan, depth=3-5 for full subtree. verbose=True also shows [OK] lines (off by default to save tokens). ignore_optional=True skips fields marked [Optional] (reduces noise).

execute_codeA

Execute C# code in Unity Editor via Roslyn. 10-40x faster than recompile. Security: no System.IO, System.Net, System.Diagnostics. Bare statements are auto-wrapped in a static class — no boilerplate needed. Example: "var go = new GameObject("Test"); return go.name;"

sync_unityA

Unified Unity reload: trigger Refresh (+ optional Resolve), wait for new code to live.

resolve=True: call Client.Resolve() first (use after package.json change).
bump=True: atomically increment plugin patch version BEFORE sync, implies resolve=True.
Returns: 'sync clean' / compile errors / timeout message.
discover_toolsA

Find and enable tools by category. Canonical 8: SCENE, COMPONENTS, ASSETS, MEDIA, VERIFY, RUNTIME, TESTS, SYSTEM. include_legacy=True adds legacy aliases (object, animation, etc.). structured=True adds surface/mutability info. enable=False to browse only.

resolve_tool_schemaA

Return full parameter schemas for deferred tools. tools=comma-separated names.

alias_statusA

Check alias table health: loaded/empty/stale, sources, and total alias count.

mcp_statusA

Compact MCP status: scene, dirty, play/compile state, port, alias count.

release_smokeA

Run release readiness checks: status, aliases, compile. Returns PASS/FAIL summary.

get_consoleA

Recent console logs. For C# compile errors use get_compile_errors instead. keyword: case-insensitive substring filter. count_only: return N matches as string. since: only logs from last N seconds.

get_compile_errorsA

Compilation errors with file:line:column. Not lost on Console.Clear(). Structured, typed.

console_markA

Create a console watermark. Returns mark_id encoding current timestamp. Pass to get_console_since() to retrieve only logs after this point. Pure Python — no TCP call.

get_console_sinceA

Console entries after the watermark created by console_mark(). mark_id: string from console_mark() or bare float timestamp. level: optional filter ('error,exception,assert'). keyword: case-insensitive substring filter. count_only: return match count as string. count: max entries to return (default 500).

screenshotA

Capture screenshot (file path); describe= -> Haiku text (15-100x fewer tokens), raw=True forces path. camera: scene_view|scene_view_frame|multi_view|single_view|overview|overview_game. angle (single_view): front|left|top|iso|ex,ey,ez. zoom: higher=closer. angles: per-view Euler "ex,ey,ez|..." (_=skip). supersample 1-4. offset/fixed_size: framing. highlight: paths[:#RRGGBB] for bbox. show_colliders: wireframes. annotation_id: frame + highlight annotation by id (auto sets camera=annotation_frame).

run_testsA

Dispatch Unity tests and return their durable identity immediately.

A successful response is
``tests-started|request_id=...|run_id=...|utf_guid=...|state=dispatched``.
If transport fails after dispatch may have happened, the result is
``START-UNKNOWN`` with the same request_id; resolve it instead of retrying
with a new identity.
run_tests_waitA

Dispatch tests and wait for the exact run to become terminal.

Transport failures and domain reloads do not erase the last snapshot. A
caller timeout is observational only: it returns ``TIMEOUT`` with request,
run and snapshot data and never marks the Unity run complete.
resolve_test_requestA

Resolve a possibly lost start ACK without dispatching another test run.

get_test_runA

Return the durable JSON snapshot for one exact test run.

get_test_resultsC

Legacy result facade. Pass run_id to prevent reading a stale latest run.

editorC

Editor state/control. action: state|play|pause|stop|select|project_path. select: path (single) or paths (comma-sep multi, e.g. "/Player,/Enemy,/NPC").

undo_lastA

Undo the last N AI turns in the Unity Undo stack. Default: 1.

verify_after_changeA

Single verification gate after code/scene changes. Gates are additive — only enabled ones run: 1. await_compile (always) 2. get_compile_errors (always) 3. get_console_since mark_id (if mark_id provided) 4. run_tests_wait mode filter (if run_tests_mode provided) 5. run_playtest_suite paths (if playtests provided) Returns PASS only when ALL enabled gates pass. Failure includes which gate failed and recommended next command.

scene_change_planA

Pre-flight + plan for safe scene edit. 1. Check compile clean 2. Check console for errors 3. Resolve targets via resolve_scene_refs 4. Take checkpoint 5. Return plan_id + baseline status

apply_scene_changeA

Execute scene mutations with pre-check, post-verify, and optional save. 1. Validate plan_id exists and not expired (TTL 600s) 2. Execute batch commands 3. If verify: validate_references + console check 4. If save: save scene 5. Return mutation summary

reconnect_unityB

Reconnect to Unity. Port 0 or omitted = auto-discover from port files.

setup_objectsB

Create+configure multiple objects in one call. One per line: name [primitive=X] [parent=Y] [pos=(x,y,z)] [components…

configure_objectsA

Configure multiple objects at once. Format: /Path component.prop=value [...] per line. Example: /NPC1 Transf…

askA

Answer a read-only question about the Unity scene (AI-routed, not interactive — use ask_user to show a UI card and wai…

ask_userA

Show a question card in Unity chat; wait for user answer (interactive UI — use ask for read-only AI scene questions in…

permission_promptB

Handle Claude permission prompts via MCP.

Registered as --permission-prompt-tool so Claude routes all permission …

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
scene_hierarchyCurrent scene hierarchy summary.
console_errorsRecent console errors.
editor_stateEditor state: play mode, scene, selection.
tool_categoriesAvailable tool categories.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/german-krasnikov/unity-biome-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server