Unity AI Complete Mastery Series
Part 1 — Unity AI Assistant Complete Beginner’s Guide: Ask, Plan & Agent Modes
Part 2 — Unity MCP Complete Guide: Connecting Claude Code, Codex, Gemini & Cursor to Unity Editor
Part 3 — Building Custom Unity MCP Tools: McpTool Deep Dive and 4 Registration Methods
Part 4 — Automating AI Workflows with the Unity Skills System: SKILL.md Complete Guide
Appendix — Unity MCP Built-in Tools Complete Reference: Parameters & Activation Guide for 51 Tools (this post)
Part 5 — Unity AI Assistant Project Overview Auto-Generation: Making AI Understand Your Project
Part 6 — Unity AI Assistant × Profiler: Diagnose Performance Bottlenecks in Plain Language
When Claude Code or Cursor connects to Unity Editor, what tools can it actually call? The official documentation doesn’t include a full list. This article analyzes the com.unity.ai.assistant @2.7 (Unity 6.3) package source directly and documents all 51 built-in MCP tools — their parameters, types, defaults, and activation methods. Written against Unity 6.3.
TL;DR
– Unity MCP ships with 53 built-in tools total (51 confirmed in source), organized into 5 groups: Core, Assets, Assistant, Debug & Diagnostics, and Editor.
– Only 7 tools are enabled by default (EnabledByDefault = true). The rest must be turned on manually in Project Settings.
– Two registration mechanisms exist:[McpTool]attribute declaration vs.AgentToolMcpAdapterbridging.
– AssetGeneration tools consume Unity Credits, and Profiler tools require captured data in the Profiler window to return meaningful results.
– To build your own tools, see McpTool Deep Dive.
Table of Contents
- How to Activate Tools
- Quick Reference — All Tools
- Core (18 tools)
- Assets (12 tools)
- Assistant (1 tool)
- Debug & Diagnostics (14 tools)
- Editor (7 tools)
How to Activate Tools
Unity MCP built-in tools fall into two states:
| State | Meaning |
|---|---|
Enabled by default (EnabledByDefault = true) |
Available immediately after MCP connection |
Manual activation required (EnabledByDefault = false) |
Must be enabled through the steps below |
Manual activation steps:
- In the Unity Editor menu, go to Edit > Project Settings
- Select AI > Unity MCP in the left panel
- Click the Tools tab
- Check the box next to each tool you want to enable
- Restart the MCP connection in your external AI client (Claude Code, Cursor, etc.)
7 tools enabled by default:
| Tool ID | Group |
|---|---|
Unity.RunCommand |
Core |
Unity.GetConsoleLogs |
Debug & Diagnostics |
Unity.Camera.Capture |
Editor |
Unity.SceneView.Capture2DScene |
Editor |
Unity.SceneView.CaptureMultiAngleSceneView |
Editor |
Unity.AssetGeneration.GenerateAsset |
Assets |
Unity.AssetGeneration.GetModels |
Assets |
These 7 tools are ready to use right after Unity MCP setup and cover the most common workflows. The remaining 44 tools follow an opt-in model — enable only what you need.
AssetGeneration note:
GenerateAssetandGetModelsare on by default, but AI generation features consume Unity Credits.
Profiler note: Profiler tools require captured data in the Unity Profiler window to return meaningful results.
Quick Reference — All Tools
| Tool ID | Group | Summary | Default |
|---|---|---|---|
Unity.ManageScript |
Core | Legacy script operation router (create/read/delete) | ✗ |
Unity.ManageScript_capabilities |
Core | Query supported operations and limits for ManageScript | ✗ |
Unity.CreateScript |
Core | Create a new C# script at a specified path | ✗ |
Unity.DeleteScript |
Core | Delete a C# script by URI or path | ✗ |
Unity.GetSha |
Core | Retrieve SHA256 hash and metadata for a file | ✗ |
Unity.ApplyTextEdits |
Core | Edit file text at precise character coordinates | ✗ |
Unity.ScriptApplyEdits |
Core | Structural C# editing at method/class level | ✗ |
Unity.ValidateScript |
Core | Diagnose syntax errors and performance hints in C# scripts | ✗ |
Unity.RunCommand |
Core | Compile and execute C# code directly in the Editor | ✓ |
Unity.ListResources |
Core | List file URIs within the project | ✗ |
Unity.ReadResource |
Core | Read file contents with slicing support | ✗ |
Unity.FindInFile |
Core | Search a file using a regex pattern | ✗ |
Unity.ManageGameObject |
Core | Create, modify, delete, and manage components on GameObjects | ✗ |
Unity.ManageScene |
Core | Load, save, create scenes, and query hierarchy | ✗ |
Unity.ManageEditor |
Core | Control Editor play/pause state and settings | ✗ |
Unity.ManageMenuItem |
Core | Execute and search Editor menu items | ✗ |
Unity.ManageAsset |
Core | Import, create, modify, delete, and search assets | ✗ |
Unity.ImportExternalModel |
Core | Download FBX from URL, import, place in scene, save as prefab | ✗ |
Unity.ManageShader |
Assets | Create, read, update, delete shader scripts | ✗ |
Unity.AssetGeneration.GenerateAsset |
Assets | AI-generate sprites, images, 3D models, and sounds | ✓ |
Unity.AssetGeneration.GetModels |
Assets | List available AI models for asset generation | ✓ |
Unity.AssetGeneration.GetCompositionPatterns |
Assets | Retrieve composition patterns for material/TerrainLayer generation | ✗ |
Unity.AssetGeneration.ManageInterrupted |
Assets | Check and resume interrupted asset generation jobs | ✗ |
Unity.AssetGeneration.ConvertToMaterial |
Assets | Convert a texture to a Material (no generative AI) | ✗ |
Unity.AssetGeneration.ConvertToTerrainLayer |
Assets | Convert a texture to a TerrainLayer (no generative AI) | ✗ |
Unity.AssetGeneration.ConvertSpriteSheetToAnimationClip |
Assets | Convert a sprite sheet to an AnimationClip | ✗ |
Unity.AssetGeneration.CreateAnimatorControllerFromClip |
Assets | Create an AnimatorController from an existing AnimationClip | ✗ |
Unity.AssetGeneration.EditAnimationClipTool |
Assets | Edit humanoid AnimationClips | ✗ |
Unity.AudioClip.Edit |
Assets | Trim silence, trim, adjust volume, or loop an audio clip | ✗ |
Unity.FindProjectAssets |
Assets | Search project assets by name and visual-semantic matching | ✗ |
Unity.Grep |
Assistant | Search file contents or list paths using ripgrep | ✗ |
Unity.ReadConsole |
Debug | Query, filter, or clear Unity console messages | ✗ |
Unity.GetConsoleLogs |
Debug | Retrieve console logs including stack traces | ✓ |
Unity.Profiler.GetFrameRangeTopTimeSummary |
Debug | Top time summary for a range of frames | ✗ |
Unity.Profiler.GetFrameTopTimeSamplesSummary |
Debug | Top time samples for a specific frame | ✗ |
Unity.Profiler.GetFrameSelfTimeSamplesSummary |
Debug | Top self-time samples for a specific frame | ✗ |
Unity.Profiler.GetSampleTimeSummary |
Debug | Time summary for a specific profiler sample | ✗ |
Unity.Profiler.GetBottomUpSampleTimeSummary |
Debug | Bottom-up sample time summary | ✗ |
Unity.Profiler.GetSampleTimeSummaryByMarkerPath |
Debug | Sample time summary by Marker ID path | ✗ |
Unity.Profiler.GetRelatedSamplesTimeSummary |
Debug | Related sample summary across concurrent threads | ✗ |
Unity.Profiler.GetOverallGcAllocationsSummary |
Debug | GC allocation summary for the full profiling dataset | ✗ |
Unity.Profiler.GetFrameGcAllocationsSummary |
Debug | Top GC allocation samples for a specific frame | ✗ |
Unity.Profiler.GetFrameRangeGcAllocationsSummary |
Debug | GC allocation summary for a range of frames | ✗ |
Unity.Profiler.GetSampleGcAllocationSummary |
Debug | GC allocation summary for a specific sample | ✗ |
Unity.GetUserGuidelines |
Editor | Load project coding conventions and folder structure context | ✗ |
Unity.GetProjectData |
Editor | Retrieve project overview data | ✗ |
Unity.PackageManager.GetPackageData |
Editor | Query package information | ✗ |
Unity.PackageManager.PackageManagerExecuteAction |
Editor | Add, remove, or install package samples | ✗ |
Unity.Camera.Capture |
Editor | Capture an image from a specific camera or scene view | ✓ |
Unity.SceneView.Capture2DScene |
Editor | Orthographic capture of a rectangular region in a 2D scene | ✓ |
Unity.SceneView.CaptureMultiAngleSceneView |
Editor | 4-angle multi-view capture of a 3D scene | ✓ |
Core (18 tools)
Registered directly via the [McpTool] attribute. Source path: Modules/Unity.AI.MCP.Editor/Tools/
Unity.ManageScript
A legacy compatibility router for script operations. For reading files directly, prefer resources/read; for editing, use Unity.ApplyTextEdits or Unity.ScriptApplyEdits.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action |
string | ✓ | — | 'create' | 'read' | 'delete' |
name |
string | ✓ | — | Script name (without .cs) |
path |
string | ✗ | "Assets/" |
Asset path |
contents |
string | ✗ | — | C# code for create/update |
script_type |
string | ✗ | — | Type hint (e.g. 'MonoBehaviour') |
namespace |
string | ✗ | — | Script namespace |
Returns: { success, message, data }
Unity.ManageScript_capabilities
Returns supported operations, limits, and guard configuration for Unity.ManageScript.
No parameters
Returns: { ops, text_ops, max_edit_payload_bytes, guards }
Unity.CreateScript
Creates a new C# script at the specified path. The path must be under Assets/, and content is Base64-encoded during transfer.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
path |
string | ✓ | — | Asset path (e.g. 'Assets/Scripts/My.cs') |
contents |
string | ✓ | — | C# code |
script_type |
string | ✗ | — | Type hint (e.g. 'MonoBehaviour') |
namespace |
string | ✗ | — | Namespace |
Unity.DeleteScript
Deletes a C# script by URI or Assets-relative path. The target must be under Assets/.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
uri |
string | ✓ | — | unity://path/... | file://... | Assets/... |
Unity.GetSha
Returns the SHA256 hash and basic metadata for a file without reading its contents. Use this together with Unity.ApplyTextEdits‘s precondition_sha256 to prevent concurrent edit conflicts.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
uri |
string | ✓ | — | Target file URI |
Returns: { sha256, metadata }
Unity.ApplyTextEdits
Replaces text at exact character positions in the file identified by the URI. Line and column numbers are 1-based, and tabs count as 1 character.
Recommended workflow:
Unity.ReadResource→Unity.FindInFile→Unity.ApplyTextEdits
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
uri |
string | ✓ | — | URI of the file to edit |
edits |
array | ✓ | — | List of edit items. Each item: { startLine, startCol, endLine, endCol, newText } |
precondition_sha256 |
string | ✗ | — | Current file SHA256 to prevent concurrent edit conflicts |
Unity.ScriptApplyEdits
Structural C# editing at the method or class level. Safer than raw text replacement — prefer this when possible.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
op |
string | ✓ | — | replace_method | insert_method | delete_method | anchor_insert | anchor_delete | anchor_replace |
className |
string | ✗ | name field |
Target class name |
methodName |
string | Conditional | — | Required for replace_method, delete_method |
replacement |
string | Conditional | — | Required for replace_method, insert_method |
position |
string | ✗ | — | insert_method only: start | end | after | before |
afterMethodName |
string | Conditional | — | Required when position='after' |
beforeMethodName |
string | Conditional | — | Required when position='before' |
anchor |
string | Conditional | — | Regex for anchor_* operations |
text |
string | Conditional | — | Text to insert for anchor_insert, anchor_replace |
options.validate |
string | ✗ | — | 'standard' (structural check) | 'relaxed' (internal edits only) |
Unity.ValidateScript
Diagnoses syntax errors and performance hints in a C# script.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
uri |
string | ✓ | — | URI of the script to validate |
level |
string | ✗ | 'basic' |
'basic' (fast syntax check) | 'standard' (includes performance hints) |
include_diagnostics |
boolean | ✗ | false |
When true, returns full diagnostics and summary |
Unity.RunCommand ★ Enabled by default
Compiles and executes C# code directly in Unity Editor. This is the most powerful tool available — it gives you programmatic access to virtually everything in the Editor: physics, input, graphics, gameplay, package management, and more.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
code |
string | ✓ | — | C# code to execute. The class name must be CommandScript |
title |
string | ✗ | — | Operation label for log identification |
Returns: { compilationStatus, executionStatus, logs, results }
Golden template (execution fails if you deviate from this structure):
internal class CommandScript
{
[UnityEditor.MenuItem("Tools/RunCommand", false, 0)]
public static void Execute()
{
var result = new System.Collections.Generic.Dictionary<string, object>();
// Write your code here
UnityEngine.Debug.Log(Newtonsoft.Json.JsonConvert.SerializeObject(result));
}
}
Unity.ListResources
Returns a list of file URIs under a specified folder.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Pattern |
string | ✗ | "*" |
Glob pattern for filtering files |
Under |
string | ✗ | "Assets" |
Root subfolder to search |
Limit |
integer | ✗ | 200 |
Maximum number of results |
ProjectRoot |
string | ✗ | — | Override the project root path |
Returns: { success, data: { uris, count }, error? }
Unity.ReadResource
Reads file contents via a unity://path/... URI. Supports line- and byte-level slicing.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Uri |
string | ✓ | — | URI of the file to read (must be under Assets/) |
StartLine |
integer | ✗ | — | Starting line number (1-based) |
LineCount |
integer | ✗ | — | Number of lines to read |
HeadBytes |
integer | ✗ | — | Number of bytes to read from the beginning |
TailLines |
integer | ✗ | — | Number of lines to read from the end |
Request |
string | ✗ | — | Natural language request (e.g. 'last 120 lines', '40 lines around MethodName') |
ProjectRoot |
string | ✗ | — | Override the project root path |
Returns: { success, data: { text, metadata }, error? }
Unity.FindInFile
Searches a file using a regex pattern and returns line numbers with excerpts. Ideal for locating rename or edit targets.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Uri |
string | ✓ | — | URI of the file to search |
Pattern |
string | ✓ | — | Regex search pattern |
IgnoreCase |
boolean | ✗ | true |
Whether to ignore case |
MaxResults |
integer | ✗ | 200 |
Maximum number of results |
ProjectRoot |
string | ✗ | — | Override the project root path |
Returns: { success, data: { matches, count }, error? }
Unity.ManageGameObject
Creates, modifies, deletes, and searches GameObjects, and performs component operations.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action |
string | ✓ | — | 'create' | 'modify' | 'find' | 'add_component' | 'remove_component' | 'set_component_property' | 'get_components' | 'get_component' |
target |
string | Conditional | — | GameObject name or hierarchy path. Required for modify/delete/component operations |
properties |
object | ✗ | — | Properties for create/modify (position, rotation, scale, parent, etc.) |
component_type |
string | Conditional | — | Type name for component operations (e.g. 'Rigidbody') |
component_properties |
object | Conditional | — | { propertyName: value } for set_component_property |
search_inactive |
boolean | ✗ | false |
Whether to include inactive GameObjects in find |
Returns: { success, message, data }
Unity.ManageScene
Loads, saves, or creates Unity scenes, and queries scene hierarchy.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Action |
string | ✓ | — | 'Load' | 'Save' | 'Create' | 'GetHierarchy' (and others) |
Name |
string | Conditional | — | Scene name for create/load/save (without extension) |
Path |
string | ✗ | "Assets/" |
Scene asset path |
BuildIndex |
integer | ✗ | — | Build index for load/build settings operations |
Returns: { success, message, data }
Unity.ManageEditor
Controls and queries Unity Editor play state, active tool, tags, layers, and more.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Action |
string | ✓ | — | 'Play' | 'Pause' | 'Stop' | 'GetState' | 'SetActiveTool' | 'AddTag' | 'AddLayer' (and others) |
WaitForCompletion |
boolean | ✗ | — | When true, waits for certain operations to complete |
ToolName |
string | Conditional | — | Tool name for SetActiveTool |
TagName |
string | Conditional | — | Tag name for AddTag |
LayerName |
string | Conditional | — | Layer name for AddLayer |
Returns: { success, message, data }
Unity.ManageMenuItem
Executes, searches, and checks the existence of Unity Editor menu items. Use 'List' first to discover menu paths when you’re not sure of the exact path.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Action |
string | ✓ | — | 'Execute' | 'List' | 'Exists' | 'Refresh' |
MenuPath |
string | Conditional | — | Required for Execute/Exists (e.g. 'File/Save Project') |
Search |
string | ✗ | — | Case-insensitive filter string for List |
Refresh |
boolean | ✗ | — | Force-refresh the menu cache before the operation |
Returns: { success, message, data }
Unity.ManageAsset
Handles a wide range of asset operations: import, create, modify, delete, move, rename, and search.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Action |
string | ✓ | — | 'Import' | 'Create' | 'Modify' | 'Delete' | 'Duplicate' | 'Move' | 'Rename' | 'Search' | 'GetInfo' | 'CreateFolder' | 'GetComponents' |
Path |
string | Conditional | — | Asset path or search scope |
AssetType |
string | Conditional | — | Required for Create (e.g. 'Material', 'Folder') |
Properties |
object | ✗ | — | Property dictionary for Create/Modify |
Destination |
string | Conditional | — | Destination path for Duplicate/Move |
SearchPattern |
string | ✗ | — | Search pattern (e.g. '*.prefab') |
Page |
integer | ✗ | — | Pagination for search results |
Returns: { success, data, error }
Unity.ImportExternalModel
Downloads an FBX from a URL, imports it into the project, places it in the scene, and saves it as a prefab.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
name |
string | ✓ | — | Asset name (single word/ID, no spaces) |
fbx_url |
string | ✓ | — | FBX file URL (supports local files, URLs, and zips containing FBX) |
height |
float | ✗ | — | Desired height in the scene |
albedo_texture_url |
string | ✗ | — | Albedo texture file URL |
Returns: { success, data: { sceneGameObject, prefab }, error }
Assets (12 tools)
Unity.ManageShader is registered directly via [McpTool]; the remaining 11 are bridged through AgentToolMcpAdapter.
Unity.ManageShader
Creates, reads, updates, and deletes shader scripts.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Action |
string | ✓ | — | 'Create' | 'Read' | 'Update' | 'Delete' |
Name |
string | ✓ | — | Shader name (without .shader extension) |
Path |
string | ✗ | "Assets/" |
Asset path |
Contents |
string | Conditional | — | Shader code for Create/Update |
Returns: { success, message, data }
Unity.AssetGeneration.GenerateAsset ★ Enabled by default
Generates sprites, images, 3D models, sounds, materials, and more with a single command parameter. Consumes Unity Credits.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
command |
string | ✓ | — | See supported command list below |
modelId |
string | Conditional | — | Required for generation commands. Use GetModels to verify valid IDs |
prompt |
string | Conditional | — | Description of what to generate. For voice generation, provide only the spoken text |
targetAssetPath |
string | Conditional | — | Target asset path for edit, upscale, or conversion commands |
referenceImageInstanceId |
string | ✗ | — | Reference image ID for palette-based recoloring |
referenceImageInstanceIds |
array | ✗ | — | List of reference image IDs for multi-view 3D model generation |
referenceImageLabels |
array | ✗ | — | View labels for multi-view images (e.g. ['front', 'back', 'left']) |
voiceName |
string | ✗ | — | Voice selection for voice generation |
durationInSeconds |
integer | ✗ | — | Sound duration in seconds (1–10) |
loop |
boolean | ✗ | — | Whether to generate a seamless loop |
Supported commands:
| command | Description |
|---|---|
GenerateSprite |
Generate a sprite (recommended to call RemoveImageBackground after) |
GenerateImage |
Generate an image (portrait, background, etc.) |
RemoveImageBackground |
Remove the background from an existing sprite or image |
UpscaleImage / UpscaleSprite |
Upscale an image or sprite |
RecolorImage / RecolorSprite |
Recolor based on a palette reference image |
EditSpriteWithPrompt / EditImageWithPrompt |
Edit a sprite or image using a text prompt |
GenerateSpritesheet |
Generate a sprite sheet from a prompt |
GenerateCubemap / UpscaleCubemap |
Generate or upscale a cubemap |
GenerateMaterial / AddPbrToMaterial |
Generate a material or add PBR maps |
GenerateTerrainLayer / AddPbrToTerrainLayer |
Generate a TerrainLayer or add PBR maps |
GenerateSound |
Generate a sound effect or voice |
GenerateMesh |
Generate a 3D model (as a prefab) |
RetopologyMesh |
Retopologize an existing mesh |
TextureMesh |
Add a texture to an existing mesh |
RigMesh |
Add rigging to an existing mesh |
Unity.AssetGeneration.GetModels ★ Enabled by default
Returns the list of AI models available for asset generation. Use this to verify modelId values before calling GenerateAsset.
No parameters
Returns: List of models (each entry includes a ModelId GUID)
Unity.AssetGeneration.GetCompositionPatterns
Returns available composition patterns that can be used as reference images for material or TerrainLayer generation. Call this before GenerateMaterial or GenerateTerrainLayer.
No parameters
Unity.AssetGeneration.ManageInterrupted
Checks or resumes interrupted asset generation jobs.
Parameter details were not confirmed in source.
Unity.AssetGeneration.ConvertToMaterial
Creates a Material from an existing Texture2D or Cubemap asset. Does not use generative AI.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
targetAssetPath |
string | ✓ | — | Path to the Texture2D or Cubemap asset |
savePath |
string | ✓ | — | Save path for the generated .mat file |
Unity.AssetGeneration.ConvertToTerrainLayer
Creates a TerrainLayer from an existing Texture2D asset. Does not use generative AI.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
referenceImagePath |
string | ✓ | — | Path to the Texture2D asset |
savePath |
string | ✓ | — | Save path for the generated .terrainlayer file |
Unity.AssetGeneration.ConvertSpriteSheetToAnimationClip
Creates an AnimationClip from a pre-sliced Texture2D sprite sheet.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
referenceImagePath |
string | ✓ | — | Path to the sliced Texture2D asset |
savePath |
string | ✓ | — | Save path for the generated .anim file |
Unity.AssetGeneration.CreateAnimatorControllerFromClip
Creates an AnimatorController from an existing AnimationClip and sets that clip as the default state.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
animationClipPath |
string | ✓ | — | Path to the existing .anim asset |
savePath |
string | ✓ | — | Save path for the generated .controller file |
Unity.AssetGeneration.EditAnimationClipTool
Edits a Unity humanoid AnimationClip. Humanoid clips only.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
command |
string | ✓ | — | 'MakeStationary' (remove root motion) | 'TrimToBestLoop' (trim to optimal loop range) |
targetAssetPath |
string | ✓ | — | Path to the target .anim file |
Unity.AudioClip.Edit
Trims silence, trims audio, adjusts volume, or creates a loop for an AudioClip asset. For a more natural loop, run TrimSilence before LoopSound.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
command |
string | ✓ | — | 'TrimSilence' | 'TrimSound' | 'ChangeVolume' | 'LoopSound' |
targetAssetPath |
string | ✓ | — | Path to the target AudioClip asset |
startTime |
float | Conditional | — | Trim start time in seconds (for TrimSound) |
endTime |
float | Conditional | — | Trim end time in seconds (for TrimSound) |
volume |
float | Conditional | — | Volume value (for ChangeVolume) |
Unity.FindProjectAssets
Searches project assets using a combination of name matching and visual-semantic search.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
query |
string | ✓ | — | Search query. Supports prefix syntax below |
Query prefix syntax:
| Prefix | Meaning | Example |
|---|---|---|
t:<type> |
Filter by asset type | t:Texture2D, t:Prefab |
dir:<path> |
Restrict search directory | dir:Assets/Characters |
l:<label> |
Filter by asset label | l:Environment |
k:<keyword> |
Keyword search | k:fire particle |
Results include a ResponseGuidance field — follow the guidance it provides when displaying results.
Assistant (1 tool)
Unity.Grep
Searches file contents or lists files by path pattern using ripgrep (rg). Searches .cs files only by default.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
args |
string | ✓ | — | ripgrep argument string including the search pattern. Use --glob/--type to specify file types, -l to output file paths only |
path |
string | ✗ | — | Search scope directory (limits search to this folder when specified) |
Examples:
– Search all .cs files for NavMeshAgent: args="NavMeshAgent"
– Search JSON files: args="--type json \"someKey\""
– List matching file paths only: args="-l \"TODO\""
Debug & Diagnostics (14 tools)
Unity.ReadConsole is registered directly via [McpTool]; Unity.GetConsoleLogs and the 11 Profiler tools are bridged through AgentToolMcpAdapter.
Profiler prerequisite: All Profiler tools require data captured in the Unity Profiler window. Without it, they return empty results.
Unity.ReadConsole
Queries or clears Unity Editor console messages. Offers finer filtering (type, timestamp, format) than Unity.GetConsoleLogs.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
Action |
string | ✓ | — | 'Get' | 'Clear' |
Types |
string | ✗ | 'All' |
'Error' | 'Warning' | 'Log' | 'All' |
Count |
integer | ✗ | — | Maximum number of messages to return |
FilterText |
string | ✗ | — | Message text filter |
SinceTimestamp |
string | ✗ | — | Return only messages after this timestamp (ISO 8601) |
Format |
string | ✗ | 'Plain' |
'Plain' | 'Detailed' | 'Json' |
IncludeStacktrace |
boolean | ✗ | — | Whether to include stack traces |
Returns: { success, data: { messages } }
Unity.GetConsoleLogs ★ Enabled by default
A quick way to retrieve Unity console logs including stack traces. Use this for fast debugging; switch to Unity.ReadConsole when you need finer-grained filtering.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
maxEntries |
integer | ✗ | 50 |
Maximum number of entries |
includeStackTrace |
boolean | ✗ | true |
Whether to include stack traces |
logTypes |
string | ✗ | "info,warning,error" |
Log types to retrieve (comma-separated) |
Profiler Tools (11 tools)
All Profiler tools are registered in ProfilingSummaryTools.cs with McpAvailability.Available. For full parameter details, refer directly to the source code.
| Tool ID | Primary Input | Description |
|---|---|---|
Unity.Profiler.GetFrameRangeTopTimeSummary |
Frame range | Top time summary for a range of frames |
Unity.Profiler.GetFrameTopTimeSamplesSummary |
Frame number | Top time samples for a specific frame |
Unity.Profiler.GetFrameSelfTimeSamplesSummary |
Frame number | Top self-time samples for a specific frame |
Unity.Profiler.GetSampleTimeSummary |
Sample identifier | Time summary for a specific sample |
Unity.Profiler.GetBottomUpSampleTimeSummary |
Sample identifier | Bottom-up sample time analysis |
Unity.Profiler.GetSampleTimeSummaryByMarkerPath |
Marker ID path | Sample time summary by marker path |
Unity.Profiler.GetRelatedSamplesTimeSummary |
Sample identifier | Related samples across concurrent threads |
Unity.Profiler.GetOverallGcAllocationsSummary |
(none) | GC allocation summary for the full dataset |
Unity.Profiler.GetFrameGcAllocationsSummary |
Frame number | Top GC allocation samples for a specific frame |
Unity.Profiler.GetFrameRangeGcAllocationsSummary |
Frame range | GC allocation summary for a range of frames |
Unity.Profiler.GetSampleGcAllocationSummary |
Sample identifier | GC allocation summary for a specific sample |
Editor (7 tools)
All 7 tools are bridged through AgentToolMcpAdapter.
Unity.GetUserGuidelines
Loads project context including coding conventions, folder structure, and naming rules. Call this before creating, editing, or analyzing files to get results that match your project’s existing style.
No parameters
Unity.GetProjectData
Returns basic project data needed to generate a project overview in Markdown.
No parameters
Unity.PackageManager.GetPackageData
Retrieves description, version, and dependency information for a Unity package. Cannot be used to install packages.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
packageName |
string | ✓ | — | Package name (e.g. com.unity.addressables) |
※ Parameter name not confirmed directly in source — may differ from actual implementation.
Unity.PackageManager.PackageManagerExecuteAction
Adds or removes Unity packages, or installs package samples.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
action |
string | ✓ | — | 'Add' | 'Remove' | 'InstallSample' (inferred) |
packageName |
string | ✓ | — | Package name |
※ Parameter names not confirmed directly in source — may differ from actual implementation.
Unity.Camera.Capture ★ Enabled by default
Captures an image from a specific camera or the current scene view. High computational cost — only use this when you actually need scene view context.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
instanceId |
integer | ✗ | — | Instance ID of the GameObject with the Camera component. Omit to capture the current scene view |
Unity.SceneView.Capture2DScene ★ Enabled by default
Captures a specific rectangular region in a 2D scene using orthographic (top-down) projection.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
x |
float | ✓ | — | World X coordinate of the capture area center |
y |
float | ✓ | — | World Y coordinate of the capture area center |
width |
float | ✓ | — | World width of the capture area |
height |
float | ✓ | — | World height of the capture area |
pixelsPerUnit |
float | ✗ | — | Resolution (higher = more detail, but larger image size) |
Unity.SceneView.CaptureMultiAngleSceneView ★ Enabled by default
Captures a 3D scene from 4 angles — isometric, front, top, and right — and returns them as a 2×2 grid. 3D scenes only — use Unity.SceneView.Capture2DScene for 2D scenes.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
focusObjectIds |
integer array | ✗ | — | List of GameObject instance IDs to frame. Omit to frame all objects in the scene |
Common Tool Combinations in Practice
Once you’ve skimmed the reference, you’ll start to see how the tools fit together. Here are a few patterns that keep coming up in real workflows.
Script editing flow: Unity.GetSha → Unity.ReadResource → Unity.FindInFile → Unity.ApplyTextEdits is the safe sequence. Grabbing the SHA upfront prevents conflicts from concurrent edits. For structural changes, consider Unity.ScriptApplyEdits first.
AI asset generation flow: Check Unity.AssetGeneration.GetModels for a valid modelId before calling GenerateAsset — that’s the baseline. For sprites, Unity’s own source recommends chaining RemoveImageBackground immediately after generation.
Profiler analysis flow: All 11 Profiler tools return empty results if the Unity Profiler window has no captured data. Capture first, then use GetFrameRangeTopTimeSummary to narrow down bottleneck frames, and GetSampleTimeSummary to drill into specific samples.
Related Posts
- Unity MCP Complete Guide: Connecting Claude Code, Codex, Gemini & Cursor to Unity Editor — The full Unity MCP and AI Gateway setup process. Required reading before using any of the tools in this reference.
- Building Custom Unity MCP Tools: McpTool Deep Dive — How to build your own tools when the built-ins aren’t enough. Covers all 4 registration methods with 3 real-world examples.
- Unity AI Assistant Complete Guide: Ask, Plan, and Agent Modes — A comparison of Unity’s three built-in AI agent modes.
← Previous: Part 4 — Automating AI Workflows with the Unity Skills System