build-cli
Build the unity-mcp-cli TypeScript CLI tool and link it globally for terminal use.
Render a target GameObject from a chosen camera angle with optional layer-based isolation, configurable background (solid/skybox/transparent), multi-light setup via JSON, and Composite (2x2 Front/Right/Back/Top) mode. Returns a PNG image. When isolated=true, inactive children
$ npx -y skills add IvanMurzak/Unity-MCP --skill screenshot-isolated --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/screenshot-isolatedContext preview
The summary Claude sees to decide when to auto-load this skill.
Render a target GameObject from a chosen camera angle with optional layer-based isolation, configurable background (solid/skybox/transparent), multi-light setup via JSON, and Composite (2x2 Front/Right/Back/Top) mode. Returns a PNG image. When isolated=true, inactive children
name: screenshot-isolated description: Render a target GameObject from a chosen camera angle with optional layer-based isolation, configurable background (solid/skybox/transparent), multi-light setup via JSON, and Composite (2x2 Front/Right/Back/Top) mode. Returns a PNG image. When isolated=true, inactive children may briefly fire OnEnable — see the body for side-effect notes.
Renders a screenshot of a target GameObject with configurable isolation, background, camera angle, and lighting. When isolated=true (default), only the target object is visible via layer-based culling and inactive children of the target are temporarily activated for the render (their OnEnable callbacks may fire — restored in finally, but side effects like audio/network/animation events are not undoable). When isolated=false, the existing scene state is rendered as-is without activating inactive objects. Supports custom multi-light setups via JSON. Returns a base64-encoded PNG.
`Front` (-Z), `Back` (+Z), `Left` (-X), `Right` (+X), `Top` (+Y), `Bottom` (-Y). `Composite` produces a single 2x2 image (Front, Right, Back, Top) where each sub-view uses the requested `resolution`, so the final image is `resolution*2 x resolution*2`.
`lights` is an optional JSON array of `IsolatedLightConfig` objects (type, color, intensity, rotation, position, range, spotAngle, innerSpotAngle, shadows, shadowStrength, bounceIntensity, colorTemperature, cookieSize, cullingMask, renderMode). When `null`, a default 1.0-intensity white directional light at rotation `(50, -30, 0)` is used. Empty array `[]` explicitly disables extra lights.
Isolation temporarily activates inactive child GameObjects so their renderers participate in the cull. Activation state is restored in `finally`, but OnEnable-triggered side effects (audio, networking, animation events) are not rewindable. Set `isolated=false` if your scene contains scripts that must not fire OnEnable during the capture.
unity-mcp-cli run-tool screenshot-isolated --input '{
"gameObjectRef": "string_value",
"includeChildren": "string_value",
"isolated": "string_value",
"backgroundMode": "string_value",
"backgroundColor": "string_value",
"cameraView": "string_value",
"fieldOfView": "string_value",
"nearClipPlane": "string_value",
"farClipPlane": "string_value",
"padding": "string_value",
"lights": "string_value",
"resolution": "string_value"
}'> For complex input (multi-line strings, code), save the JSON to a file and use: > ```bash > unity-mcp-cli run-tool screenshot-isolated --input-file args.json > ``` > > Or pipe via stdin (recommended): > ```bash > unity-mcp-cli run-tool screenshot-isolated --input-file - <<'EOF' > {"param": "value"} > EOF > ```
If `unity-mcp-cli` is not found, either install it globally (`npm install -g unity-mcp-cli`) or use `npx unity-mcp-cli` instead. Read the /unity-initial-setup skill for detailed installation instructions.
| Name | Type | Required | Description | |------|------|----------|-------------| | `gameObjectRef` | `any` | Yes | Reference to the target GameObject (by instanceId, path, or name). | | `includeChildren` | `any` | No | Include child GameObjects in the render. Default: true. | | `isolated` | `any` | No | When true, renders only the target object using layer-based culling. When false, renders the full scene from the computed camera position. Default: true. | | `backgroundMode` | `any` | No | Background mode. Default: SolidColor. | | `backgroundColor` | `string` | No | Hex background color (e.g. '#404040'). Only used when backgroundMode is SolidColor. | | `cameraView` | `any` | No | Camera angle relative to the target object's bounding box. Default: Front. | | `fieldOfView` | `any` | No | Camera vertical field of view in degrees. Default: 60. | | `nearClipPlane` | `any` | No | Camera near clip plane distance. Default: 0.01. | | `farClipPlane` | `any` | No | Camera far clip plane distance. Default: 1000. | | `padding` | `any` | No | Framing multiplier around the object. 1.0 = tight fit, 1.5 = 50% extra space. Default: 1.2. | | `lights` | `string` | No | JSON array of light configurations. Each object defines type, color, intensity, rotation, position, range, spotAngle, shadows, etc. When null, a default white directional light at rotation (50,-30,0) is used. Example: [{"type":"Directional","color":"#FFF4E5","intensity":1.2,"rotation":[45,-45,0]}] | | `resolution` | `any` | No | Output image resolution in pixels (width = height). Default: 512. |
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"includeChildren": {
"$ref": "#/$defs/System.Boolean"
},
"isolated": {
"$ref": "#/$defs/System.Boolean"
},
"backgroundMode": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-BackgroundMode"
},
"backgroundColor": {
"type": "string"
},
"cameraView": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-CameraView"
},
"fieldOfView": {
"$ref": "#/$defs/System.Single"
},
"nearClipPlane": {
"$ref": "#/$defs/System.Single"
},
"farClipPlane": {
"$ref": "#/$defs/System.Single"
},
"padding": {
"$ref": "#/$defs/System.Single"
},
"lights": {
"type": "string"
},
"resolution": {
"$ref": "#/$defs/System.Int32"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.GameObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"descriptGet up and running in three steps: Install plugin — download the .unitypackage installer or run openupm add com.ivanmurzak.unity.mcp Alternative: npx unity-mcp-cli install-plugin ./MyUnityProject — see CLI documentation Pick an AI agent — Claude Code, Claude
Repo: IvanMurzak/Unity-MCP
Build the unity-mcp-cli TypeScript CLI tool and link it globally for terminal use.
Review and resolve PR comments from GitHub. Validates each comment, fixes legitimate issues.
Copy assets at given paths and store them at new paths. Refreshes the AssetDatabase at the end. Use 'assets-find' to locate the source assets first.
Create a new folder under a parent folder inside 'Assets/'. The parent path must start with 'Assets/' and every intermediate folder in it must already exist.…
Delete the assets at the given project paths. Refreshes the AssetDatabase at the end. Use 'assets-find' to locate the assets first.
Search the built-in assets of the Unity Editor (located at Resources/unity_builtin_extra). Filters by name and/or type; built-in assets have no GUID so…