MCP server that provides tools for Unity Editor integration, including asset database refresh and test execution with EditMode and PlayMode support
This server has 2 tools with basic but incomplete definitions. Tool names follow verb_noun convention (refresh_asset_database, run_tests) which is correct. Both tools have descriptions, but they lack critical depth for LLM decision-making. The RunTestsRequest struct shows typed parameters with schema annotations, but the refresh_asset_database tool has an empty input schema ({}). Parameter descriptions exist but are basic. The server lacks output schema documentation, callers cannot predict what refresh_asset_database returns or how to interpret run_tests results. Error handling is present but minimal. Overall, the tools are functional but fall short of production-grade quality due to missing output schemas, sparse error guidance, and limited parameter detail.
Refresh Unity asset database, which compiles C# scripts if scripts changed. Returns detected problems (e.g. C# compile errors) if any.
Run Unity tests. Supports EditMode and PlayMode tests with optional filtering. Please use refresh_asset_database tool to compile scripts before running tests(if any script changed).
refresh_asset_database has an empty input schema ({}). This tool accepts no parameters, which is valid, but the ABSENCE of any documented output schema means the LLM cannot predict what 'detected problems' look like or how to extract C# compile error details. LLMs cannot reason about downstream tool chains when output structure is undocumented.
run_tests input schema is defined in Rust (RunTestsRequest struct with schemars annotations) but the OUTPUT schema is not documented anywhere in the source. The tool returns test results, but the caller has no way to know: are results structured as pass/fail per test? What fields are included? How are errors reported? This forces LLMs to guess or fail at result parsing.
The run_tests filter parameter description recommends 'fully qualified name, e.g. MyNamespace.MyClass or MyNamespace.MyClass.MyMethod' but does NOT clarify: Is the filter a regex, an exact match, a prefix match, or substring? What happens if the filter matches zero tests? Does it error or silently pass? This ambiguity will cause LLM errors when filtering fails to match expected tests.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 56 | - | v1 |
Neither tool description includes error guidance. refresh_asset_database says it 'Returns detected problems' but does not explain: What if no C# compiler is installed? What if the project is locked? What does the agent do on failure? This violates the recovery-guide pattern and leaves the LLM without actionable next steps.
No pagination or result limits documented for run_tests. If a test suite has 1000 tests and the agent runs without a filter, what happens? Does the tool return all results (bloating context) or cap them? No limit is stated, and no next_cursor or pagination mechanism is visible.