MCP server giving Claude complete control over Unity Editor — scene, components, assets, scripts, settings, build, and more.
Critical gaps across naming, descriptions, and schemas. Tool names lack consistent verb prefixes (unity_search_assets vs unity_get_asset vs unity_execute_csharp). Descriptions are present but generic (10-50 chars for most tools, well below the 194-char baseline). Parameter descriptions exist but lack constraints, ranges, and format specifications. No output schemas documented. The unity_execute_csharp tool is a severe security and composition violation, it bypasses all tool boundaries and accepts arbitrary code execution. Most tools lack error handling guidance. Schemas are partially visible but incomplete (missing type info for nested objects like 'target' in unity_scene_view).
Add component to GameObject
Builds the Unity project for the specified target platform
Create Materials, ScriptableObjects, Folders, Texture2D, Prefabs, etc.
Execute editor commands (play, stop, save, compile, etc.)
Execute arbitrary C# code inside Unity Editor. Code runs with full access to UnityEngine and UnityEditor APIs. Use this as an escape hatch for anything the other tools don't cover. Code is compiled as a temp script and executed immediately.
Read asset metadata and properties
Read component data via SerializedProperty
Reads console entries with optional filtering
unity_execute_csharp violates tool composition and security patterns. Accepting arbitrary C# code execution bypasses all tool boundaries, prevents LLM reasoning about side effects, and creates an irreversible escape hatch. This tool should be removed entirely or replaced with constrained, specific operations (e.g., unity_run_editor_script with a whitelist of allowed scripts).
Parameter descriptions lack constraints, ranges, and format specifications. E.g., 'depth' parameter has no min/max bounds (could be 0, 1000, or negative). 'command' in unity_editor_command accepts free-form strings with no enum or validation guidance. LLMs cannot infer valid values and will hallucinate invalid inputs.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., does unity_search_assets return asset_id, path, or both?). This forces agents to guess at response structure and risks failed chaining.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 38 | 2026-07-28+ | v2 |
Read currently selected objects
Re-import an asset with force update
Manages packages (add, remove, list)
Remove component from GameObject
Control SceneView camera (frame, move, orbit)
Find assets by name/type filter
Set ANY serialized property (batched)
Change selection in hierarchy
Descriptions are too short (10-50 chars vs. 194-char baseline). Most lack context for when to use the tool vs. similar ones. E.g., 'Read asset metadata and properties' does not explain when to call unity_get_asset vs. unity_search_assets or what 'depth' controls.
No error handling guidance. Tools return generic errors (e.g., 'Search failed: {ex.Message}') without recovery hints. LLMs cannot determine if an error is retryable, user-fixable, or fatal, and have no guidance on next steps.