Unreal Engine 5 editor plugin providing MCP (Model Context Protocol) integration with 22+ AI service providers, enabling AI-assisted development with tool execution, vision analysis, and local auxiliary model support
MCPToolbox exhibits significant definition quality gaps. While 15 tools are registered with names and basic descriptions, most descriptions are terse (10-50 chars, well below the 194-char baseline). Input schemas are present but lack depth: parameter descriptions are minimal or absent, enums are not used for constrained inputs (e.g., execute_command accepts free-form strings), and output schemas are not documented. No tool annotations (readOnlyHint/destructiveHint) despite clear risk levels. Error handling and recovery guidance are absent. The server conflates multiple concerns in single tools (e.g., select_actor accepts both actor_name and actor_class as alternatives, forcing LLM disambiguation). Parameter naming is inconsistent: some use underscores (actor_name), others lack type suffixes (property_value is a string but unnamed). No evidence of idempotency guarantees or pagination for list_assets. Security-critical tools like execute_python and execute_command lack input validation hints or scope declarations.
Analyze image using local vision model (Qwen3VL)
Execute Unreal Engine console command
Execute Python code in Unreal Engine Python environment
Execute an editor transaction (undo/redo compatible)
Get properties of a specific actor
Retrieve conversation memory and context
Get editor and game performance metrics
Get information about the current Unreal Engine project
execute_python and execute_command lack input validation and security constraints. Descriptions do not warn of code injection risks or require sandboxing. No scope declarations (e.g., 'requires:code_execution') or permission gates.
Parameter descriptions are missing or trivial across all tools. E.g., set_actor_property has 'property_value' with description 'Value to set', does not specify format, constraints, or type coercion rules. LLMs cannot infer valid inputs.
No output schemas documented. Tools like list_assets, get_actor_properties, and get_memory_context do not specify return structure, field types, or pagination. LLMs cannot plan downstream calls or extract required IDs.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | <=2025-11-25 | v2 |
Get list of currently selected actors in the editor
Generate text using local auxiliary model
List assets in the project
Save information to conversation memory
Capture current editor viewport screenshot
Select actor in the editor by name or class
Set a property value on an actor
select_actor accepts both actor_name and actor_class as alternatives without documenting mutual exclusivity or precedence. LLMs will pass both, causing ambiguous behavior. Should split into select_actor_by_name and select_actor_by_class or explicitly document the resolution order.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. WRITE tools (execute_command, set_actor_property, execute_python) are not marked as destructive. Agents cannot reason about side effects or retry safety.