一键导入
unity-mcp
Use when controlling Unity editor via AI, automating scene operations, or programmatically generating Unity assets and scripts
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when controlling Unity editor via AI, automating scene operations, or programmatically generating Unity assets and scripts
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
Use when the current Agent LLM cannot process images directly and visual analysis is needed — bridges images through KimiCode CLI print mode to a multimodal Kimi model for text description
Use when building HUDs, menus, inventory screens, settings panels, or any widget-based interface in Unreal Engine 5. Also use when connecting C++ logic to UMG Blueprint visuals, handling gamepad or keyboard focus navigation, managing UI state, creating widget animations, or troubleshooting UMG performance issues like frame drops, hitches, or widget memory leaks.
Use when working in a DevFlow project with .devflow/ directory and gate-based step-by-step workflows
Use when contributing new skills to the skill-lib repository, installing skills locally, or verifying skill compliance with repository standards
Use when analyzing unfamiliar code modules, understanding system architecture, or preparing for refactoring
Use when implementing new modules from design documents, adding features to existing code, or generating structured implementations
| name | unity-mcp |
| description | Use when controlling Unity editor via AI, automating scene operations, or programmatically generating Unity assets and scripts |
A reference guide for deploying and using the Unity MCP Server, covering API operations, data type formats, and common issue resolution.
Complete deployment guide, API usage tips, and troubleshooting manual for the Unity MCP (Model Context Protocol) Server.
This skill covers:
Do not use when:
Usage scenarios:
Environment requirements:
Check in the Unity editor:
MCP or McpForUnity related foldersIf the MCP plugin is not installed:
Install via Unity Asset Store:
Or install via Git URL:
https://github.com/anthropics/unity-mcp.gitRestart Unity after installation
# Windows
Test-Path "$env:USERPROFILE\.local\bin\uvx.exe"
# macOS/Linux
which uvx
If not installed:
Plugin source:
mcpforunityserver>=0.0.0a0uvx is usually installed in the following locations:
Windows:
# Standard installation path
$env:USERPROFILE\.local\bin\uvx.exe
# Or
C:\Users\<Username>\.local\bin\uvx.exe
# Check if it exists
Test-Path "$env:USERPROFILE\.local\bin\uvx.exe"
macOS/Linux:
~/.local/bin/uvx
# Or
/usr/local/bin/uvx
⚠️ Prompt the user:
uvx tool not found. Please do the following in the Unity editor:
1. Open Window → MCP → Local Setup
2. Click "Install Dependencies" or "Setup Local Environment"
3. Wait for the installation to complete
4. Try starting the MCP Server again
Windows (dynamic path):
$uvxPath = "$env:USERPROFILE\.local\bin\uvx.exe"
if (Test-Path $uvxPath) {
& $uvxPath --prerelease explicit --from "mcpforunityserver>=0.0.0a0" mcp-for-unity --transport http --http-url http://localhost:8080 --project-scoped-tools
} else {
Write-Host "Error: uvx not found. Please install dependencies by clicking MCP → Local Setup in Unity."
}
macOS/Linux:
~/.local/bin/uvx --prerelease explicit --from "mcpforunityserver>=0.0.0a0" mcp-for-unity --transport http --http-url http://localhost:8080 --project-scoped-tools
Note:
--project-scoped-tools to enable project-level tools1. Initialize session
POST http://localhost:8080/mcp
Headers: Accept: application/json, text/event-stream
Body: {"jsonrpc":"2.0","id":1,"method":"initialize",...}
↓
2. Extract Session ID (from response header mcp-session-id)
↓
3. Set active Unity instance
↓
4. Execute tool calls
PowerShell Example:
$headers = @{
"Content-Type" = "application/json"
"Accept" = "application/json, text/event-stream"
"mcp-session-id" = "your-session-id"
}
# Initialize
$init = '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"openclaw","version":"1.0"}}}'
$response = Invoke-WebRequest -Uri "http://localhost:8080/mcp" -Method Post -Headers $headers -Body $init
$sessionId = $response.Headers["mcp-session-id"]
# Set active instance
$setInstance = '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"set_active_instance","arguments":{"instance":"ProjectName@hash"}}}'
// Create empty object
{
"name": "manage_gameobject",
"arguments": {
"action": "create",
"name": "MyObject",
"position": [0, 0, 0]
}
}
// Create Sprite object (2D)
{
"action": "create",
"name": "Tree2D",
"position": [1, 2, 0]
}
// Then add SpriteRenderer component
// Delete object
{
"action": "delete",
"name": "MyObject"
}
// Add component
{
"name": "manage_components",
"arguments": {
"action": "add",
"target": "Tree2D",
"component_type": "SpriteRenderer"
}
}
// Set property ⚠️ Pay attention to type format
{
"action": "set_property",
"target": "Tree2D",
"component_type": "SpriteRenderer",
"property": "color",
"value": {"r": 0.1, "g": 0.5, "b": 0.2, "a": 1.0} // ✅ Object format
// ❌ Incorrect: [0.1, 0.5, 0.2, 1]
}
// Create scene
{
"name": "manage_scene",
"arguments": {
"action": "create",
"name": "MyScene",
"path": "MyFolder"
}
}
// Save scene
{
"action": "save"
}
// Get hierarchy
{
"action": "get_hierarchy",
"page_size": 50
}
// Create folder
{
"name": "manage_asset",
"arguments": {
"action": "create_folder",
"path": "MyFolder"
}
}
// Create texture
{
"action": "create",
"width": 64,
"height": 64,
"path": "MyFolder/Texture.png"
}
// Search assets
{
"action": "search",
"path": "MyFolder",
"page_size": 50
}
Incorrect format (array):
"value": [0.1, 0.5, 0.2, 1.0]
Correct format (object):
"value": {"r": 0.1, "g": 0.5, "b": 0.2, "a": 1.0}
PowerShell construction:
$color = @{r=0.1; g=0.5; b=0.2; a=1.0} | ConvertTo-Json -Compress
# Result: {"r":0.1,"g":0.5,"b":0.2,"a":1}
"position": [1, 2, 3]
"scale": [1.5, 2, 1]
"rotation": [0, 90, 0]
Symptoms:
Resolution steps:
Open Unity Asset Store:
Window → Package ManagerInstall the plugin:
MCP for Unity packageRestart the Unity editor
Verify installation:
MCP or Window → MCPMCP folderSymptoms:
The term 'uvx' is not recognized as a cmdlet, function, operable program, or script file.
# Or
Cannot find part of the path "C:\Users\xxx\.local\bin\uvx.exe"
Cause:
Resolution steps:
Install in Unity:
Window → MCP → Local SetupInstall Dependencies or Setup Local EnvironmentVerify installation:
# Windows
Get-Command uvx
# Or
Test-Path "$env:USERPROFILE\.local\bin\uvx.exe"
# macOS/Linux
which uvx
Restart the terminal to load the new PATH environment variable
Dynamic path detection script:
function Get-UvxPath {
# Try common paths
$paths = @(
"$env:USERPROFILE\.local\bin\uvx.exe",
"$env:LOCALAPPDATA\uv\uvx.exe",
"C:\Program Files\uv\uvx.exe"
)
foreach ($path in $paths) {
if (Test-Path $path) { return $path }
}
# Try to find from PATH
$uvx = Get-Command uvx -ErrorAction SilentlyContinue
if ($uvx) { return $uvx.Source }
return $null
}
$uvxPath = Get-UvxPath
if (-not $uvxPath) {
Write-Host "❌ uvx not found. Please install it by clicking Window → MCP → Local Setup in Unity."
exit 1
}
Write-Host "✅ Found uvx: $uvxPath"
Symptoms:
Failed to convert value for property 'sprite' to type 'Sprite'
Cause:
manage_texture creates a Texture2D, but SpriteRenderer requires a Sprite typeSolutions:
Editor folder to batch assign valuesSymptoms:
Error converting token to UnityEngine.Color: Error reading JObject from JsonReader
Solution: Use the object format {"r":x,"g":y,"b":z,"a":w} instead of the array [x,y,z,w]
Symptoms:
Missing session ID
Bad Request: Missing session ID
Solution:
mcp-session-id HeaderSymptoms:
{
"instance_count": 0,
"instances": []
}
Or
Active instance set to ... : false
Cause:
Resolution steps:
Ensure the Unity editor is open (and the project is loaded)
Start the MCP Session in Unity:
Window → MCP or MCP → SessionCheck connection status:
Status: Connected or Transport: HTTPhttp://localhost:8080Re-fetch the instance list:
{
"name": "resources/read",
"params": {
"uri": "mcpforunity://instances"
}
}
Full startup flow chart:
User Machine
├─ [1] Start MCP Server (uvx command)
│ └─ Waiting for connection...
│
└─ [2] Open Unity Editor
└─ [3] Window → MCP → Start Session
└─ Establish connection
↓
MCP Server detects instance
↓
instance_count: 1
Common Questions:
Q: Nothing happens after clicking Start Session?
Q: Shows "Connection Failed"?
http://localhost:8080)Symptoms:
Unexpected keyword argument 'xxx'
Solution: Check the API documentation and use the correct parameter names:
"component": "SpriteRenderer" → ✅ "component_type": "SpriteRenderer""filter": "All" → ✅ Not supported, omit or use the correct parameter1. Create GameObject (empty object)
manage_gameobject: create
2. Add SpriteRenderer component
manage_components: add, component_type=SpriteRenderer
3. Set color
manage_components: set_property, property=color, value={r,g,b,a}
4. Manually assign Sprite (API limitation)
Or drag and drop the texture onto the Sprite field in Unity
$objects = @(
@{name="Obj1"; pos=@(1,2,0); color=@{r=1;g=0;b=0;a=1}},
@{name="Obj2"; pos=@(-1,1,0); color=@{r=0;g=1;b=0;a=1}}
)
foreach ($obj in $objects) {
# Create object
# Add component
# Set property
}
1. Execute operation
2. Check console logs
read_console: get
3. Verify result
manage_scene: get_hierarchy
4. If there is an error, read specific component information
resources/read: mcpforunity://scene/gameobject/{id}/components
| Limitation | Description | Workaround |
|---|---|---|
| Sprite assignment | Cannot set Sprite directly via API | Manual drag-and-drop or editor script |
| Texture import settings | Cannot modify Texture Import Settings | Pre-configure or set manually in Unity |
| Complex components | Some component properties are not supported | Configure manually using the Unity editor |
| Script creation | Content needs escaping | Use simple scripts or templates |
manage_scene: save after batch operationsread_console to view errorssuccess field after each operation| Tool | Purpose |
|---|---|
manage_gameobject | CRUD GameObjects |
manage_components | Add/remove/set components |
manage_scene | Scene operations |
manage_asset | Asset operations |
manage_texture | Create textures |
read_console | Get Unity console logs |
set_active_instance | Set target Unity instance |
Content-Type: application/json
Accept: application/json, text/event-stream
mcp-session-id: <session-id>
{
"jsonrpc": "2.0",
"id": 1,
"result": {
"content": [{
"type": "text",
"text": "{\"success\": true, ...}"
}]
}
}