MCP server for runtime inspection and manipulation of Unity game engine objects, fields, methods, and scenes
Server has 8 tools with complete input schemas and descriptions. Naming follows verb_noun convention (find_, get_, inspect_, invoke_, read_, write_, take_). Descriptions are present (avg ~120 chars) but lack actionable context for LLM selection. Parameters are typed but many lack constraints (enums, ranges). Output schemas are not documented. Error handling is minimal, no recovery guidance or categorization. Security concern: invoke_method and write_field are destructive but lack confirmation patterns or permission gates. No pagination support despite potential for large result sets (find_objects, find_types).
Finds GameObjects or assets of a specific type. Returns a list with instance_id, name, and type.
Searches for loaded System.Types in the AppDomain containing the query string (case-insensitive). Returns matching type full names.
Returns the immediate parent and all children of a specific Unity object. If instance_id is omitted or 0, returns the root GameObjects of all active scenes.
Inspects a specific Unity object by its instance ID, or a class by its class name (to query static members).
Invokes a method on a specific Unity object or static class. Supports generic methods (e.g. GetComponent<T>) via type_args.
Reads the value of a field or property. Supports dot-notation for nested access (e.g. 'transform.parent.name'). Can read static members by omitting instance_id and specifying class_name.
No output schema documentation. LLMs cannot predict response structure for find_objects, find_types, get_hierarchy, inspect_object. Baseline requires documented return types for A+ tools.
Destructive tools (invoke_method, write_field) lack confirmation or dry-run patterns. No permission gates. Agents can modify game state without safeguards.
find_objects and find_types return unbounded lists (find_types caps at 100 but find_objects does not). No pagination, limit, or offset parameters. Large result sets will exhaust context.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Captures a screenshot of the current game view and returns it as a base64 encoded PNG. Note: Only PNG is supported because native JPEG encoding is buggy and crashes the game.
Writes a value to a field or property. Supports dot-notation for nested access (e.g. 'transform.position.x'). Can write to static fields/properties by omitting instance_id and specifying class_name.
Parameter descriptions lack constraints. 'scale' in take_screenshot states range (0.1 - 1.0) but invoke_method 'args' and 'type_args' have no format guidance. LLMs will guess at serialization.
Error handling is minimal. No recovery guidance, categorization, or actionable messages. Exceptions are thrown but not caught with context for LLM retry logic.