unity-biome-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| 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 |
|---|---|
| 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 |
| 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 |
| 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. |
| 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. |
| run_tests_waitA | Dispatch tests and wait for the exact run to become terminal. |
| 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_userA | Show a question card in Unity chat; wait for user answer (interactive UI — use |
| 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| scene_hierarchy | Current scene hierarchy summary. |
| console_errors | Recent console errors. |
| editor_state | Editor state: play mode, scene, selection. |
| tool_categories | Available tool categories. |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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