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
/plugin marketplace add akiojin/unity-mcp-server/plugin install akiojin-unity-mcp-server-claude-plugin-plugins-unity-mcp-server@akiojin/unity-mcp-serverThis skill is limited to using the following tools:
A guide for managing prefabs, materials, asset database, and Addressables.
// 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"
})
// 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
}
})
// Search for textures
mcp__unity-mcp-server__manage_asset_database({
action: "find_assets",
filter: "t:Texture2D"
})
// 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
})
// 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 })
// 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 }
})
// 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
})
// 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]
}
})
// 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]
}
})
| Shader | Property | Description |
|---|---|---|
| Standard | _Color | Albedo color [R,G,B,A] |
| Standard | _Metallic | Metallic value 0-1 |
| Standard | _Glossiness | Smoothness 0-1 |
| Standard | _MainTex | Albedo texture |
| Standard | _BumpMap | Normal map |
| Standard | _EmissionColor | Emission color |
| URP/Lit | _BaseColor | Base color |
| URP/Lit | _Smoothness | Smoothness |
| URP/Lit | _BaseMap | Base texture |
// 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 | Description | Example |
|---|---|---|
t:Type | Search by type | t:Texture2D, t:Material, t:Prefab |
l:Label | Search by label | l:UI, l:Environment |
name | Search by name | Player, Enemy* |
| Combined | AND with space | t:Material Red |
mcp__unity-mcp-server__manage_asset_database({
action: "get_asset_info",
assetPath: "Assets/Textures/Player.png"
})
// Returns: type, size, dependencies, labels, etc.
// Create folder
mcp__unity-mcp-server__manage_asset_database({
action: "create_folder",
folderPath: "Assets/NewFeature/Prefabs"
})
// 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 asset database
mcp__unity-mcp-server__manage_asset_database({
action: "refresh"
})
// Save all assets
mcp__unity-mcp-server__manage_asset_database({
action: "save"
})
// Get asset dependencies
mcp__unity-mcp-server__analyze_asset_dependencies({
action: "get_dependencies",
assetPath: "Assets/Prefabs/Player.prefab",
recursive: true // Include indirect dependencies
})
// Find assets that reference this asset
mcp__unity-mcp-server__analyze_asset_dependencies({
action: "get_dependents",
assetPath: "Assets/Materials/PlayerMat.mat"
})
mcp__unity-mcp-server__analyze_asset_dependencies({
action: "analyze_circular"
})
mcp__unity-mcp-server__analyze_asset_dependencies({
action: "find_unused",
includeBuiltIn: false
})
// Total size of asset and its dependencies
mcp__unity-mcp-server__analyze_asset_dependencies({
action: "analyze_size_impact",
assetPath: "Assets/Prefabs/Boss.prefab"
})
// Detect broken references
mcp__unity-mcp-server__analyze_asset_dependencies({
action: "validate_references"
})
// 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"
})
// 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"
})
// 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"
})
// 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
})
mcp__unity-mcp-server__manage_asset_import_settings({
action: "get",
assetPath: "Assets/Textures/Player.png"
})
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
}
})
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 saved preset
mcp__unity-mcp-server__manage_asset_import_settings({
action: "apply_preset",
assetPath: "Assets/Textures/UI_Icon.png",
preset: "UISprite"
})
mcp__unity-mcp-server__manage_asset_import_settings({
action: "reimport",
assetPath: "Assets/Textures/Player.png"
})
// 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 }
})
// 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 }
})
}
// 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"
})
// ❌ 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"
// ❌ No extension
materialPath: "Assets/Materials/Red"
// ✅ .mat extension required
materialPath: "Assets/Materials/Red.mat"
// ✅ Always exit prefab mode
mcp__unity-mcp-server__open_prefab({ prefabPath: "..." })
// ... edit ...
mcp__unity-mcp-server__exit_prefab_mode({ saveChanges: true })
// After modifying files externally
// ✅ Refresh to reflect changes
mcp__unity-mcp-server__manage_asset_database({
action: "refresh"
})
// ❌ 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 | Purpose |
|---|---|
create_prefab | Create prefab |
open_prefab | Start prefab mode |
exit_prefab_mode | End prefab mode |
save_prefab | Save prefab |
instantiate_prefab | Instantiate prefab |
modify_prefab | Modify prefab |
create_material | Create material |
modify_material | Modify material |
manage_asset_database | Asset DB operations |
analyze_asset_dependencies | Dependency analysis |
manage_asset_import_settings | Import settings |
addressables_manage | Addressables management |
addressables_build | Addressables build |
addressables_analyze | Addressables analysis |
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.