Supports Unity scene and GameObject creation, management, and analysis. Efficiently performs hierarchy operations, component configuration, and scene analysis. Use when: scene creation, scene loading, GameObject creation, component addition, hierarchy retrieval, scene analysis
/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 creating, managing, and analyzing Unity scenes, GameObjects, and components.
// List loaded scenes
mcp__unity-mcp-server__list_scenes({ includeLoadedOnly: true })
// Current scene info
mcp__unity-mcp-server__get_scene_info({ includeGameObjects: true })
// Get hierarchy (lightweight)
mcp__unity-mcp-server__get_hierarchy({
nameOnly: true,
maxObjects: 100
})
// Empty GameObject
mcp__unity-mcp-server__create_gameobject({
name: "GameManager"
})
// Primitive
mcp__unity-mcp-server__create_gameobject({
name: "Floor",
primitiveType: "plane",
position: { x: 0, y: 0, z: 0 },
scale: { x: 10, y: 1, z: 10 }
})
// Add Rigidbody
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Player",
componentType: "Rigidbody",
properties: { mass: 1.5, useGravity: true }
})
// Create and load new scene
mcp__unity-mcp-server__create_scene({
sceneName: "Level01",
path: "Assets/Scenes/",
loadScene: true,
addToBuildSettings: true
})
// Single scene load (replaces current scene)
mcp__unity-mcp-server__load_scene({
scenePath: "Assets/Scenes/MainMenu.unity",
loadMode: "Single"
})
// Additive load (adds to current scene)
mcp__unity-mcp-server__load_scene({
scenePath: "Assets/Scenes/UI.unity",
loadMode: "Additive"
})
// Save current scene
mcp__unity-mcp-server__save_scene()
// Save as new file
mcp__unity-mcp-server__save_scene({
scenePath: "Assets/Scenes/Level01_backup.unity",
saveAs: true
})
// All scenes in project
mcp__unity-mcp-server__list_scenes()
// Only scenes in build settings
mcp__unity-mcp-server__list_scenes({ includeBuildScenesOnly: true })
// Specific scene details
mcp__unity-mcp-server__get_scene_info({
scenePath: "Assets/Scenes/Main.unity",
includeGameObjects: true
})
// Full specification
mcp__unity-mcp-server__create_gameobject({
name: "Enemy",
primitiveType: "cube",
parentPath: "/Enemies",
position: { x: 5, y: 1, z: 0 },
rotation: { x: 0, y: 45, z: 0 },
scale: { x: 1, y: 2, z: 1 },
tag: "Enemy",
layer: 8
})
| Type | Description |
|---|---|
cube | Cube |
sphere | Sphere |
cylinder | Cylinder |
capsule | Capsule |
plane | Plane |
quad | Quad (2D plane) |
// Search by name
mcp__unity-mcp-server__find_gameobject({
name: "Player",
exactMatch: true
})
// Search by tag
mcp__unity-mcp-server__find_gameobject({
tag: "Enemy"
})
// Search by layer
mcp__unity-mcp-server__find_gameobject({
layer: 8 // 0-31
})
// Partial match search
mcp__unity-mcp-server__find_gameobject({
name: "Spawn",
exactMatch: false
})
// Transform change
mcp__unity-mcp-server__modify_gameobject({
path: "/Player",
position: { x: 0, y: 1, z: 0 },
rotation: { x: 0, y: 90, z: 0 }
})
// Name, tag, layer change
mcp__unity-mcp-server__modify_gameobject({
path: "/OldName",
name: "NewName",
tag: "Player",
layer: 3
})
// Change parent object
mcp__unity-mcp-server__modify_gameobject({
path: "/Player",
parentPath: "/Characters"
})
// Unparent
mcp__unity-mcp-server__modify_gameobject({
path: "/Characters/Player",
parentPath: null
})
// Change active state
mcp__unity-mcp-server__modify_gameobject({
path: "/Player",
active: false
})
// Single delete
mcp__unity-mcp-server__delete_gameobject({
path: "/OldObject"
})
// Multiple delete
mcp__unity-mcp-server__delete_gameobject({
paths: ["/Object1", "/Object2", "/Object3"]
})
// Keep children
mcp__unity-mcp-server__delete_gameobject({
path: "/Parent",
includeChildren: false
})
// Lightweight (names and paths only) - for large scenes
mcp__unity-mcp-server__get_hierarchy({
nameOnly: true,
maxObjects: 500
})
// Detailed (with components and transform) - for small scenes
mcp__unity-mcp-server__get_hierarchy({
includeComponents: true,
includeTransform: true,
maxObjects: 50
})
// Specific subtree only
mcp__unity-mcp-server__get_hierarchy({
rootPath: "/Enemies",
maxDepth: 2
})
// Exclude inactive objects
mcp__unity-mcp-server__get_hierarchy({
includeInactive: false
})
// Basic addition
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Player",
componentType: "Rigidbody"
})
// With properties
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Player",
componentType: "BoxCollider",
properties: {
size: { x: 1, y: 2, z: 1 },
center: { x: 0, y: 1, z: 0 },
isTrigger: false
}
})
// Custom script
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Player",
componentType: "PlayerController"
})
modify_component - Batch change multiple propertiesmcp__unity-mcp-server__modify_component({
gameObjectPath: "/Player",
componentType: "Rigidbody",
properties: {
mass: 2.0,
drag: 0.5,
useGravity: true
}
})
set_component_field - Precise single field change// Serialized field (including private)
mcp__unity-mcp-server__set_component_field({
gameObjectPath: "/Player",
componentType: "PlayerController",
fieldPath: "_moveSpeed",
value: 5.0
})
// Nested field
mcp__unity-mcp-server__set_component_field({
gameObjectPath: "/Player",
componentType: "PlayerController",
fieldPath: "settings.jumpHeight",
value: 3.0
})
// Array element
mcp__unity-mcp-server__set_component_field({
gameObjectPath: "/Player",
componentType: "Inventory",
fieldPath: "items[0].count",
value: 10
})
// Object reference
mcp__unity-mcp-server__set_component_field({
gameObjectPath: "/Player",
componentType: "PlayerController",
fieldPath: "targetTransform",
objectReference: { assetPath: "Assets/Prefabs/Target.prefab" }
})
// Enum value
mcp__unity-mcp-server__set_component_field({
gameObjectPath: "/Player",
componentType: "PlayerController",
fieldPath: "state",
enumValue: "Running"
})
modify_component vs set_component_field| Feature | modify_component | set_component_field |
|---|---|---|
| Use case | Batch multiple properties | Precise single field |
| Nested support | ❌ Top-level only | ✅ Dot notation |
| Array elements | ❌ | ✅ [index] supported |
| Private fields | △ Serialized only | ✅ All serialized |
| Object references | △ | ✅ assetPath/guid |
// List components
mcp__unity-mcp-server__list_components({
gameObjectPath: "/Player"
})
// Remove component
mcp__unity-mcp-server__remove_component({
gameObjectPath: "/Player",
componentType: "OldScript"
})
// When multiple of same type exist
mcp__unity-mcp-server__remove_component({
gameObjectPath: "/Player",
componentType: "AudioSource",
componentIndex: 1 // Second AudioSource
})
// Search by category
mcp__unity-mcp-server__get_component_types({
category: "Physics" // Physics, Rendering, UI, etc.
})
// Search by name
mcp__unity-mcp-server__get_component_types({
search: "Collider"
})
// Only those addable via AddComponent
mcp__unity-mcp-server__get_component_types({
onlyAddable: true
})
// Object statistics
mcp__unity-mcp-server__analyze_scene_contents({
groupByType: true,
includePrefabInfo: true
})
// With memory info
mcp__unity-mcp-server__analyze_scene_contents({
includeMemoryInfo: true
})
// Find objects with specific component
mcp__unity-mcp-server__find_by_component({
componentType: "Light",
searchScope: "scene"
})
// Include prefabs in search
mcp__unity-mcp-server__find_by_component({
componentType: "AudioSource",
searchScope: "all",
includeInactive: true
})
// GameObject details
mcp__unity-mcp-server__get_gameobject_details({
gameObjectName: "Player",
includeComponents: true,
includeMaterials: true,
includeChildren: true,
maxDepth: 3
})
// All component property values
mcp__unity-mcp-server__get_component_values({
gameObjectName: "Player",
componentType: "Rigidbody",
includePrivateFields: true
})
// Object reference relationships
mcp__unity-mcp-server__get_object_references({
gameObjectName: "Player",
includeAssetReferences: true,
includeHierarchyReferences: true
})
// 1. Create new scene
mcp__unity-mcp-server__create_scene({
sceneName: "GameLevel",
loadScene: true
})
// 2. Create environment objects
mcp__unity-mcp-server__create_gameobject({
name: "Environment"
})
mcp__unity-mcp-server__create_gameobject({
name: "Ground",
primitiveType: "plane",
parentPath: "/Environment",
scale: { x: 50, y: 1, z: 50 }
})
// 3. Set up lighting
mcp__unity-mcp-server__create_gameobject({
name: "Sun"
})
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Sun",
componentType: "Light",
properties: {
type: "Directional",
intensity: 1.0,
color: { r: 1, g: 0.95, b: 0.8, a: 1 }
}
})
// 4. Save
mcp__unity-mcp-server__save_scene()
// Create Canvas
mcp__unity-mcp-server__create_gameobject({ name: "Canvas" })
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Canvas",
componentType: "Canvas",
properties: { renderMode: "ScreenSpaceOverlay" }
})
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Canvas",
componentType: "CanvasScaler"
})
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Canvas",
componentType: "GraphicRaycaster"
})
// Add button
mcp__unity-mcp-server__create_gameobject({
name: "StartButton",
parentPath: "/Canvas"
})
mcp__unity-mcp-server__add_component({
gameObjectPath: "/Canvas/StartButton",
componentType: "Button"
})
// Create physics object
mcp__unity-mcp-server__create_gameobject({
name: "PhysicsCube",
primitiveType: "cube",
position: { x: 0, y: 5, z: 0 }
})
// Add Rigidbody
mcp__unity-mcp-server__add_component({
gameObjectPath: "/PhysicsCube",
componentType: "Rigidbody",
properties: { mass: 1.0 }
})
// Collider is auto-added (for primitives)
// ❌ Without slash
gameObjectPath: "Player"
// ✅ Leading slash required
gameObjectPath: "/Player"
// ✅ Hierarchy path
gameObjectPath: "/Parent/Child/GrandChild"
// ❌ Using non-existent tag
tag: "CustomEnemy" // Error
// ✅ Add tag first
mcp__unity-mcp-server__manage_tags({
action: "add",
tagName: "CustomEnemy"
})
// ❌ Cannot find inactive object
mcp__unity-mcp-server__find_gameobject({ name: "HiddenObject" })
// ✅ Explicitly include inactive
mcp__unity-mcp-server__get_hierarchy({
includeInactive: true
})
// ❌ Getting all info (high token usage)
mcp__unity-mcp-server__get_hierarchy({
includeComponents: true,
includeTransform: true,
maxObjects: -1 // Unlimited
})
// ✅ Lightweight for overview
mcp__unity-mcp-server__get_hierarchy({
nameOnly: true,
maxObjects: 100
})
// ✅ Get details only for specific object
mcp__unity-mcp-server__get_gameobject_details({
gameObjectName: "SpecificObject",
includeComponents: true
})
// ✅ Save after important changes
mcp__unity-mcp-server__save_scene()
| Tool | Purpose |
|---|---|
create_scene | Create scene |
load_scene | Load scene |
save_scene | Save scene |
list_scenes | List scenes |
get_scene_info | Get scene info |
create_gameobject | Create GameObject |
find_gameobject | Find GameObject |
modify_gameobject | Modify GameObject |
delete_gameobject | Delete GameObject |
get_hierarchy | Get hierarchy |
add_component | Add component |
modify_component | Modify component (batch) |
set_component_field | Modify field (precise) |
remove_component | Remove component |
list_components | List components |
get_component_types | List available types |
analyze_scene_contents | Analyze scene |
find_by_component | Find by component |
get_gameobject_details | Get detailed info |
get_component_values | Get property values |
manage_tags | Manage tags |
manage_layers | Manage layers |
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.