MCP server for Unity Editor control. 150+ tools: scene editing, components, assets, playtests, screenshots, batch workflows. PlayTest DSL, Execute C#, Visual Diff, In-Unity Chat. Works with Claude, Codex, Cursor, Windsurf, VS Code, Rider.
Unity Biome MCP has 13 tools with generally present but inconsistent quality. Most tools have descriptions (10/13 have substantive descriptions), and schemas are partially present. However, significant gaps exist: parameter descriptions are often vague or missing, output schemas are not documented, error handling guidance is minimal, and several tools exhibit naming ambiguity or parameter design issues. The server shows beta maturity (package version 2.0.0, Development Status :: 4) with reasonable tooling (pytest, ruff, import-linter, pydantic) but lacks production-grade polish on tool definitions themselves. Key issues: 'ask' vs 'ask_user' naming creates LLM confusion; 'do' and 'animator_intent' and 'ui_intent' all accept 'dry_run' but lack output schema documentation; 'debug' parameter 'gather' is vaguely typed as string with no enum constraint; 'permission_prompt' is a meta-tool that should not be exposed to agents; checkpoint restore lacks conflict resolution detail in error paths.
Convert NL intent to Unity Animator Controller setup via DSL. dry_run=True returns the batch plan without executing it.
Answer a read-only question about the Unity scene (AI-routed, not interactive — use `ask_user` to show a UI card and wait for user input). Routes to deterministic tool plans for common patterns, uses Haiku summarization for complex multi-tool results.
Show a question card in Unity chat; wait for user answer (interactive UI — use `ask` for read-only AI scene questions instead). questions: JSON array matching AskUserQuestion schema: [{"question":"...","header":"...","options":[{"label":"..."}],"multiSelect":false}]. Returns JSON map of question→answer (or free text if Other field used).
Use to get a snapshot of project state before starting work. Returns compact text block with requested context within token budget.
Returns Haiku cost: session/cap/day/skipped features. Text format.
Create a durable checkpoint before an agent turn.
Missing output schemas on most tools (11/13 tools do not document what the response structure is). LLM cannot predict return fields, risks incorrect chaining and hallucinated field names.
Generic and confusing tool names: 'do' is extremely vague and does not start with an action verb pattern; 'ask' and 'ask_user' are too similar and create LLM confusion about which to use. Violates pattern:tool naming guidance.
Unstructured enum constraints: 'debug' tool 'gather' param accepts 'comma-separated batch-safe tool names' with no list of valid names; 'ui_intent' 'template' param hints at enum values ('hud|menu|dialog|grid') in description but not enforced as JSON Schema enum. LLM cannot self-correct invalid values.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 61 | 2026-07-28+ | v2 |
Restore files to their pre-turn state. Tries Unity Undo first when domain stamp matches; falls back to file restore. MVP: after_refs always empty — no ChangeSet-based conflict detection yet.
AI-assisted scene debug: gather diagnostic context based on symptom (not compile/reload — use `diagnose` for that; not runtime state — use `debug_animator` or `debug_physics`). Returns structured diagnostic text for LLM analysis.
Convert natural language intent into Unity scene operations. Use when scene structure unknown or task is ambiguous. NOT for targeted mutations on known objects — use batch directly. Haiku generates a batch DSL plan, which is validated then executed.
Return the current ChangeSet: accumulated mutations this session. Use after any mutation sequence to review what changed.
Returns telemetry snapshot. Clears counters when reset=True. No confirmation required.
Handle Claude permission prompts via MCP. Registered as --permission-prompt-tool so Claude routes all permission checks here instead of blocking on stdin.
Convert NL intent to Unity UI hierarchy. Templates bypass Haiku.
permission_prompt tool should NOT be exposed to agents as a directly callable tool. This is a framework-level callback for MCP permission flow, not an agent action. Exposing it violates pattern:tool-gateway and creates security/UX confusion.
Vague internal terminology in descriptions without context: 'Haiku summarization', 'Haiku generates a batch DSL plan', 'batch-safe tool names' are all implementation details that LLMs do not understand. Descriptions should explain behavior in user-facing terms, not internal jargon.
No error handling or recovery guidance. Tools like 'checkpoint_restore' document limitations ('MVP: after_refs always empty'), but none of the tools provide actionable error messages or recovery steps. Pattern:recovery-guide not implemented.
'dry_run' parameter behavior is undocumented for output: 'animator_intent', 'do', and 'ui_intent' all accept dry_run=true, which returns a 'plan' instead of executing. But what does the plan look like? Is it DSL? Structured JSON? Free text? LLM cannot reason about dry_run mode without knowing the output format.