Unity Asset Management

SkillSearch

Supports creating, editing, and managing Unity assets (prefabs, materials, asset database, Addressables). Includes dependency analysis and import settings. Use when: prefab creation, material editing, asset search, dependency analysis, Addressables

Use Unity Asset Management in Claude, ChatGPT or Ahel Desktop

Free. Sign in, add Unity Asset Management and connect your AI. About a minute.

Also: Claude Code · Cursor · Codex

Then ask your AI: use the Unity Asset Management skill

Details

Instructions available. Your AI can read the instructions. Execution depends on the setup they require.

Add Ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.

Unity Asset ManagementStart free

What this skill tells your AI

The instructions your AI receives, as published by akiojin/unity-mcp-server in .claude-plugin/plugins/unity-mcp-server/skills/unity-asset-management/SKILL.md and read by Ahel’s review.

A guide for managing prefabs, materials, asset database, and Addressables.

Quick Start

1. Create and Place Prefabs

// Create prefab from GameObject
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  gameObjectPath: "/Enemy"
})

// Instantiate prefab in scene
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  position: { x: 5, y: 0, z: 0 },
  name: "Enemy_01"
})

2. Create Material

// Create basic material
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/RedMetal.mat",
  shader: "Standard",
  properties: {
    "_Color": [1, 0, 0, 1],
    "_Metallic": 0.8,
    "_Glossiness": 0.6
  }
})

3. Search Assets

// Search for textures
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Texture2D"
})

Prefab Management

Create Prefab

// Create prefab from scene GameObject
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab",
  gameObjectPath: "/Player"
})

// Create empty prefab
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Empty.prefab",
  createFromTemplate: true
})

// Allow overwrite
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab",
  gameObjectPath: "/Player",
  overwrite: true
})

Prefab Mode (Editing)

// Open prefab
mcp__unity-mcp-server__open_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab"
})

// Focus on specific object
mcp__unity-mcp-server__open_prefab({
  prefabPath: "Assets/Prefabs/Player.prefab",
  focusObject: "Weapon",  // Relative path from prefab root
  isolateObject: true
})

// Edit in prefab mode (component operations, etc.)
mcp__unity-mcp-server__add_component({
  gameObjectPath: "/Player",  // In prefab mode, prefab root is the root
  componentType: "AudioSource"
})

// Save and exit prefab mode
mcp__unity-mcp-server__save_prefab()
mcp__unity-mcp-server__exit_prefab_mode({ saveChanges: true })

// Exit without saving
mcp__unity-mcp-server__exit_prefab_mode({ saveChanges: false })

Prefab Instantiation

// Basic instantiation
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab"
})

// With Transform
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  position: { x: 10, y: 0, z: 5 },
  rotation: { x: 0, y: 90, z: 0 },
  name: "Enemy_Guard"
})

// With parent object
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Coin.prefab",
  parent: "/Collectibles",
  position: { x: 0, y: 1, z: 0 }
})

Prefab Modification

// Change properties (also apply to instances)
mcp__unity-mcp-server__modify_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  modifications: {
    "health": 150,
    "speed": 3.5
  },
  applyToInstances: true
})

// Do not apply to instances
mcp__unity-mcp-server__modify_prefab({
  prefabPath: "Assets/Prefabs/Enemy.prefab",
  modifications: { "debugMode": true },
  applyToInstances: false
})

Material Management

Create Material

// Standard shader
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/Metal.mat",
  shader: "Standard",
  properties: {
    "_Color": [0.8, 0.8, 0.8, 1],
    "_Metallic": 1.0,
    "_Glossiness": 0.9
  }
})

// Unlit shader
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/Unlit.mat",
  shader: "Unlit/Color",
  properties: {
    "_Color": [1, 0, 0, 1]
  }
})

// URP shader
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/URPLit.mat",
  shader: "Universal Render Pipeline/Lit",
  properties: {
    "_BaseColor": [1, 1, 1, 1],
    "_Smoothness": 0.5
  }
})

// Copy existing material
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/MetalRed.mat",
  copyFrom: "Assets/Materials/Metal.mat",
  properties: {
    "_Color": [1, 0, 0, 1]
  }
})

Modify Material

// Change properties
mcp__unity-mcp-server__modify_material({
  materialPath: "Assets/Materials/Metal.mat",
  properties: {
    "_Color": [0, 0, 1, 1],
    "_Metallic": 0.5
  }
})

// Change shader
mcp__unity-mcp-server__modify_material({
  materialPath: "Assets/Materials/Debug.mat",
  shader: "Unlit/Color",
  properties: {
    "_Color": [1, 0, 1, 1]
  }
})

Common Shader Properties

ShaderPropertyDescription
Standard_ColorAlbedo color [R,G,B,A]
Standard_MetallicMetallic value 0-1
Standard_GlossinessSmoothness 0-1
Standard_MainTexAlbedo texture
Standard_BumpMapNormal map
Standard_EmissionColorEmission color
URP/Lit_BaseColorBase color
URP/Lit_SmoothnessSmoothness
URP/Lit_BaseMapBase texture

Asset Database Operations

Search Assets

// Type filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Texture2D"
})

// Name filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "Player"
})

// Label filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "l:UI"
})

// Combined filter
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Material Player"
})

// Folder specification
mcp__unity-mcp-server__manage_asset_database({
  action: "find_assets",
  filter: "t:Prefab",
  searchInFolders: ["Assets/Prefabs", "Assets/Characters"]
})

Filter Syntax

FilterDescriptionExample
t:TypeSearch by typet:Texture2D, t:Material, t:Prefab
l:LabelSearch by labell:UI, l:Environment
nameSearch by namePlayer, Enemy*
CombinedAND with spacet:Material Red

Get Asset Info

mcp__unity-mcp-server__manage_asset_database({
  action: "get_asset_info",
  assetPath: "Assets/Textures/Player.png"
})
// Returns: type, size, dependencies, labels, etc.

Folder Operations

// Create folder
mcp__unity-mcp-server__manage_asset_database({
  action: "create_folder",
  folderPath: "Assets/NewFeature/Prefabs"
})

Move, Copy, Delete Assets

// Move
mcp__unity-mcp-server__manage_asset_database({
  action: "move_asset",
  fromPath: "Assets/Old/Player.prefab",
  toPath: "Assets/New/Player.prefab"
})

// Copy
mcp__unity-mcp-server__manage_asset_database({
  action: "copy_asset",
  fromPath: "Assets/Templates/Enemy.prefab",
  toPath: "Assets/Enemies/Enemy_01.prefab"
})

// Delete
mcp__unity-mcp-server__manage_asset_database({
  action: "delete_asset",
  assetPath: "Assets/Unused/OldPrefab.prefab"
})

Refresh and Save

// Refresh asset database
mcp__unity-mcp-server__manage_asset_database({
  action: "refresh"
})

// Save all assets
mcp__unity-mcp-server__manage_asset_database({
  action: "save"
})

Dependency Analysis

Get Dependencies

// Get asset dependencies
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "get_dependencies",
  assetPath: "Assets/Prefabs/Player.prefab",
  recursive: true  // Include indirect dependencies
})

Get Dependents

// Find assets that reference this asset
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "get_dependents",
  assetPath: "Assets/Materials/PlayerMat.mat"
})

Detect Circular Dependencies

mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "analyze_circular"
})

Detect Unused Assets

mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "find_unused",
  includeBuiltIn: false
})

Analyze Size Impact

// Total size of asset and its dependencies
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "analyze_size_impact",
  assetPath: "Assets/Prefabs/Boss.prefab"
})

Validate References

// Detect broken references
mcp__unity-mcp-server__analyze_asset_dependencies({
  action: "validate_references"
})

Addressables System

Entry Management

// Add entry
mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  groupName: "Enemies",
  address: "enemy_basic",
  labels: ["combat", "spawn"]
})

// Remove entry
mcp__unity-mcp-server__addressables_manage({
  action: "remove_entry",
  assetPath: "Assets/Prefabs/OldEnemy.prefab"
})

// Change address
mcp__unity-mcp-server__addressables_manage({
  action: "set_address",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  newAddress: "enemy_soldier"
})

// Add label
mcp__unity-mcp-server__addressables_manage({
  action: "add_label",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  label: "boss"
})

// Remove label
mcp__unity-mcp-server__addressables_manage({
  action: "remove_label",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  label: "combat"
})

// Move entry to different group
mcp__unity-mcp-server__addressables_manage({
  action: "move_entry",
  assetPath: "Assets/Prefabs/Enemy.prefab",
  targetGroupName: "BossEnemies"
})

Group Management

// List groups
mcp__unity-mcp-server__addressables_manage({
  action: "list_groups"
})

// List entries in group
mcp__unity-mcp-server__addressables_manage({
  action: "list_entries",
  groupName: "Enemies",
  pageSize: 50,
  offset: 0
})

// Create group
mcp__unity-mcp-server__addressables_manage({
  action: "create_group",
  groupName: "DLC_01"
})

// Remove group
mcp__unity-mcp-server__addressables_manage({
  action: "remove_group",
  groupName: "OldGroup"
})

Addressables Build

// Build
mcp__unity-mcp-server__addressables_build({
  action: "build",
  buildTarget: "StandaloneWindows64"
})

// Clean build (delete cache then build)
mcp__unity-mcp-server__addressables_build({
  action: "clean_build"
})

Addressables Analysis

// Detect duplicate assets
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_duplicates",
  pageSize: 20
})

// Analyze dependencies
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_dependencies",
  assetPath: "Assets/Prefabs/Player.prefab"
})

// Detect unused assets
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_unused",
  pageSize: 50
})

Import Settings

Get Import Settings

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "get",
  assetPath: "Assets/Textures/Player.png"
})

Texture Settings

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "modify",
  assetPath: "Assets/Textures/Player.png",
  settings: {
    maxTextureSize: 1024,
    textureCompression: "Compressed",
    filterMode: "Bilinear",
    generateMipMaps: true,
    sRGBTexture: true
  }
})

Audio Settings

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "modify",
  assetPath: "Assets/Audio/BGM.mp3",
  settings: {
    loadType: "Streaming",
    compressionFormat: "Vorbis",
    quality: 0.7,
    sampleRateSetting: "PreserveSampleRate"
  }
})

Apply Preset

// Apply saved preset
mcp__unity-mcp-server__manage_asset_import_settings({
  action: "apply_preset",
  assetPath: "Assets/Textures/UI_Icon.png",
  preset: "UISprite"
})

Reimport

mcp__unity-mcp-server__manage_asset_import_settings({
  action: "reimport",
  assetPath: "Assets/Textures/Player.png"
})

Common Workflows

Prefab Workflow

// 1. Build GameObject in scene
mcp__unity-mcp-server__create_gameobject({
  name: "NewEnemy",
  primitiveType: "capsule"
})

mcp__unity-mcp-server__add_component({
  gameObjectPath: "/NewEnemy",
  componentType: "Rigidbody"
})

// 2. Convert to prefab
mcp__unity-mcp-server__create_prefab({
  prefabPath: "Assets/Prefabs/Enemies/NewEnemy.prefab",
  gameObjectPath: "/NewEnemy"
})

// 3. Delete original in scene
mcp__unity-mcp-server__delete_gameobject({
  path: "/NewEnemy"
})

// 4. Instantiate from prefab
mcp__unity-mcp-server__instantiate_prefab({
  prefabPath: "Assets/Prefabs/Enemies/NewEnemy.prefab",
  position: { x: 0, y: 0, z: 0 }
})

Material Variations

// Create base material
mcp__unity-mcp-server__create_material({
  materialPath: "Assets/Materials/Enemy_Base.mat",
  shader: "Standard",
  properties: {
    "_Metallic": 0.2,
    "_Glossiness": 0.5
  }
})

// Create variations
const colors = [
  { name: "Red", color: [1, 0, 0, 1] },
  { name: "Blue", color: [0, 0, 1, 1] },
  { name: "Green", color: [0, 1, 0, 1] }
]

for (const variant of colors) {
  mcp__unity-mcp-server__create_material({
    materialPath: `Assets/Materials/Enemy_${variant.name}.mat`,
    copyFrom: "Assets/Materials/Enemy_Base.mat",
    properties: { "_Color": variant.color }
  })
}

Addressables Setup

// 1. Create group
mcp__unity-mcp-server__addressables_manage({
  action: "create_group",
  groupName: "Characters"
})

// 2. Add assets
mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  assetPath: "Assets/Prefabs/Player.prefab",
  groupName: "Characters",
  address: "player",
  labels: ["player", "controllable"]
})

mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  assetPath: "Assets/Prefabs/NPC.prefab",
  groupName: "Characters",
  address: "npc_villager",
  labels: ["npc", "friendly"]
})

// 3. Build
mcp__unity-mcp-server__addressables_build({
  action: "build"
})

// 4. Analyze
mcp__unity-mcp-server__addressables_analyze({
  action: "analyze_duplicates"
})

Common Mistakes

1. Prefab Path Format

// ❌ No extension
prefabPath: "Assets/Prefabs/Player"

// ✅ .prefab extension required
prefabPath: "Assets/Prefabs/Player.prefab"

// ❌ Not starting with Assets
prefabPath: "Prefabs/Player.prefab"

// ✅ Start with Assets/
prefabPath: "Assets/Prefabs/Player.prefab"

2. Material Path Format

// ❌ No extension
materialPath: "Assets/Materials/Red"

// ✅ .mat extension required
materialPath: "Assets/Materials/Red.mat"

3. Forgetting to Exit Prefab Mode

// ✅ Always exit prefab mode
mcp__unity-mcp-server__open_prefab({ prefabPath: "..." })
// ... edit ...
mcp__unity-mcp-server__exit_prefab_mode({ saveChanges: true })

4. Forgetting to Refresh

// After modifying files externally
// ✅ Refresh to reflect changes
mcp__unity-mcp-server__manage_asset_database({
  action: "refresh"
})

5. Addressables Group Not Created

// ❌ Adding entry to non-existent group
mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  groupName: "NonExistent",  // Error
  ...
})

// ✅ Create group first
mcp__unity-mcp-server__addressables_manage({
  action: "create_group",
  groupName: "NewGroup"
})

mcp__unity-mcp-server__addressables_manage({
  action: "add_entry",
  groupName: "NewGroup",
  ...
})

Tool Reference

ToolPurpose
create_prefabCreate prefab
open_prefabStart prefab mode
exit_prefab_modeEnd prefab mode
save_prefabSave prefab
instantiate_prefabInstantiate prefab
modify_prefabModify prefab
create_materialCreate material
modify_materialModify material
manage_asset_databaseAsset DB operations
analyze_asset_dependenciesDependency analysis
manage_asset_import_settingsImport settings
addressables_manageAddressables management
addressables_buildAddressables build
addressables_analyzeAddressables analysis

Signals

GitHub stars
34
Forks
7
Last commit
Sep 2026
Advanced
Item type
skill
Key
unity-asset-management-akiojin
Source
github.com/akiojin/unity-mcp-server