Allows LLMs to understand Unity scenes efficiently through a structured representation of the scene graph based on the required use case.
This Unity semantic bridge MCP server provides 34 tools with moderate documentation quality. Naming is generally strong (verb-noun convention: get_*, set_*, create_*, delete_, etc.). However, descriptions vary significantly in quality and length. Many tool descriptions are excellent (200-400 chars, clearly explaining when/why to use them), but some are bare-bones (under 50 chars). Parameter descriptions are present across all tools but vary in completeness, most provide type and purpose, but few include format constraints, ranges, or examples. Output schemas are mostly implicit (return types mentioned in descriptions) rather than formally documented in the code sample provided. Error handling is minimal, no evidence of actionable error messages, recovery guidance, or error classification. The server shows solid foundational work but lacks the polish required for A-grade quality.
Adds a component to a GameObject.
Clears all console logs in the Unity Editor.
Copies a component from one GameObject to another.
Creates a new GameObject in the scene.
Creates a new ScriptableObject instance.
Deletes an asset from the project.
Deletes a GameObject from the scene.
Bare-bones parameter descriptions on 18+ tools (notify_unity, delete_asset, refresh_assets, clear_console_logs, etc.). Parameters like 'path', 'text', 'instance_id' lack format/constraint guidance. Examples: 'path' should specify 'project-relative path, e.g. Assets/Scripts/MyScript.cs'; 'instance_id' appears repeatedly but is never explained as being obtained from get_scene_hierarchy.
No output schemas documented in code sample. Tool descriptions mention return types ('returns JSON', 'returns a list', 'returns screenshot as image') but formal output schema definitions are missing from the source code shown. LLMs cannot reliably plan downstream tool calls or extract specific fields without schema visibility.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Duplicates a GameObject in the scene.
Finds all assets or scenes that reference a specific asset path.
Finds assets in Unity. Default folders: ['Assets'].
Generates an asset catalog from the project, optionally including thumbnails.
Polls the status of an asset catalog generation run.
Returns the current compilation status of the project.
Retrieves the source code for a component script.
Returns the inspector values for a component on a GameObject.
Retrieves recent console logs from the Unity Editor.
Returns the child hierarchy of a single GameObject as a flat list. Use this instead of get_scene_hierarchy when you already know the root object and want to avoid fetching the entire scene (faster, less likely to time out).
Returns information about lights affecting a specific GameObject.
Returns physics layer configuration and collision matrix.
Returns Unity Project Settings as JSON. Selectively fetch sections to keep output small. Sections: - core: Unity version, editor platform, active build target/group, company/product/bundleVersion - rendering: active pipeline (Built-in/URP/HDRP), URP asset path, color space, MSAA/quality, plus URP details (folded from get_urp_pipeline_settings) - input: Active Input Handling (Old/New/Both) and default InputActionAsset assets if any - ui: uGUI vs UI Toolkit signals — EventSystem/Canvas in open scenes, UIDocument/VisualTreeAsset/StyleSheet counts - scripting: API compatibility level, #define symbols (group), allowUnsafeCode, scripting backend - editor_prefs: current Editor Interaction Mode, idle time, setter support and restore availability (user preferences, not project assets) - tags_layers: Tag list and layer names/index map (physics collision matrix stays in get_physics_layers) Example: get_project_settings(sections=["core","rendering"]) for a focused query.
Returns the folder structure starting from the given path.
Returns the current Unity scene hierarchy as a list of GameObjects with their paths and instance_ids. Note: Scene hierarchy subtree traversal will always be pruned if a SkinnedMeshRenderer is encountered. Use get_gameobject_tree to inspect a character's rig This is usually the FIRST tool to call — use it to discover GameObjects and their instance_ids, which are required by inspect_gameobject and get_component_inspector_values. Tip: set includeComponents=True to confirm a component exists on a GameObject before inspecting it. Tip: for a specific known subtree (e.g. a UI Canvas), pass its instance_id as root_instance_id instead of raising max_nodes to reach it from the scene root.
Captures a screenshot and returns it as an image. Useful for visually inspecting lighting, UI layout, or general scene appearance.
Returns Universal Render Pipeline settings.
Returns detailed inspection data for a specific GameObject.
Sends a message to the Unity Editor chat window.
Triggers an asset database refresh in Unity.
Removes a component from a GameObject.
Explicitly change Unity's user-level Interaction Mode on the main thread. Recommended for long-running tasks that interact with Unity: set mode="no_throttling" before starting, then set mode="default" when the task finishes, including on failure or cancellation. Use mode="restore" instead if you need to preserve a prior custom setting. no_throttling disables frame idling; default restores Unity's default preference. restore restores the original mode and idle time (including Custom/Monitor modes). Repeated overrides retain the first restore point across domain reloads, not Editor restarts. Changes persist until explicitly changed; restore before quitting if temporary. Returns JSON with requestedMode, changed and editor_prefs, or Error: ... . No Throttling can increase CPU/power use. Does not guarantee unfocused Editor updates. Does not change Play Mode, refresh assets, or save scenes.
Sets field values on a component.
Sets the parent of a GameObject.
Enables or disables Play Mode in the Unity Editor.
Updates fields on an existing ScriptableObject.
Creates or overwrites a C# script file in the project.
Missing error handling and recovery guidance. None of the tool descriptions include guidance on what to do if a tool fails (e.g., 'if get_scene_hierarchy times out, try with lower depth and max_nodes'). No evidence of actionable error messages, categorization (retryable vs. user-fixable), or error classification in responses.
Destructive tools (delete_asset, delete_gameobject) lack confirmation/dry-run patterns. No indication that these operations require approval, support rollback, or guide the agent to request confirmation before executing.
Parameter naming inconsistencies across related tools. Some use 'instance_id' (get_gameobject_tree, inspect_gameobject), others could benefit from clearer names like 'gameobject_instance_id' to disambiguate from 'asset_instance_id'. No suffix-typing pattern applied (e.g., '_id', '_name', '_path') to guide parameter usage.
Missing pagination/limit guidance for tools returning lists. get_console_logs and get_scene_hierarchy both mention max_nodes/depth truncation but do not document whether results are paginated, whether a cursor or offset exists, or how an LLM should refine queries if truncated.
Descriptions for simple write tools are too generic. Examples: refresh_assets ('Triggers an asset database refresh'), clear_console_logs ('Clears all console logs'). These lack context on side effects, preconditions, and when an LLM should call them, e.g., 'Clears all console logs in the Editor. Call this after setting_play_mode=true to isolate new errors from prior runs.'