Install the "scene-get-data" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/scene-get-data into .claude/skills/scene-get-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scene-get-data", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "scene-get-data" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/scene-get-data into .agents/skills/scene-get-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scene-get-data", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "scene-get-data" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/scene-get-data into .cursor/skills/scene-get-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scene-get-data", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "scene-get-data" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/scene-get-data into .gemini/skills/scene-get-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scene-get-data", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "scene-get-data" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/scene-get-data into .github/skills/scene-get-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scene-get-data", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "scene-get-data" agent skill from https://github.com/IvanMurzak/Unity-MCP/tree/main/Unity-MCP-Plugin/.claude/skills/scene-get-data into .opencode/skills/scene-get-data/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "scene-get-data", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
scene-get-data
GitHub stars
4.4k
Token cost
~3.5k tokens
SKILL.md length
306 words
Files
1
Skills in repo
80
Repo updated
First seen
Licence
Apache-2.0
At a glance
Retrieve the list of root GameObjects in the specified opened scene (or the active scene when openedSceneName is empty).
Game Development work in your project
SKILL.md covers Toggles (all default false to…, Path-scoped reads (token-saving), Path syntax and How to Call, plus 2 more sections
Calls npm and npx
What it does
Scene Get Data is an agent skill from IvanMurzak/Unity-MCP. Retrieve the list of root GameObjects in the specified opened scene (or the active scene when openedSceneName is empty). Supports token-saving path-scoped reads over the root-GameObjects array via paths or viewQuery. Use 'scene-list-opened' to enumerate scenes.
Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development. It works with Model Context Protocol. The repository describes itself as: AI Skills, MCP Tools, and CLI for Unity Engine. Full AI develop and test loop. Use cli for quick setup. Efficient token usage, advanced tools. Any C method may be turned into a… The licence is Apache-2.0.
When your agent uses it
Game Development work in your project
Example prompts
“scene-list-opened”
“/scene-get-data”
Requirements
Node.js
What it can do on your machine
Read from SKILL.md and the folder at commit 4c8056f. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Runs code
Shell commands in SKILL.md call:
npm
npx
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md. Its commands use npm and npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Scene Get Data loads about 3.5k tokens when it runs. Until then it costs about 71 tokens; SKILL.md has 306 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~71
When it runs· the whole SKILL.md, loaded when a task matches
~3.5k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check passed
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
Download SKILL.mdSave it as .claude/skills/scene-get-data/SKILL.md (or your agent's skills folder).
name
scene-get-data
description
Retrieve the list of root GameObjects in the specified opened scene (or the active scene when `openedSceneName` is empty). Supports token-saving path-scoped reads over the root-GameObjects array via `paths` or `viewQuery`. Use 'scene-list-opened' to enumerate scenes.
Scene / Get Data
This tool retrieves the list of root GameObjects in the specified scene. Use 'scene-list-opened' tool to get the list of all opened scenes.
Toggles (all default false to keep responses small)
includeRootGameObjects — include root GameObjects in the scene data.
includeChildrenDepth (default 3) — depth of the hierarchy to include.
includeBounds — include 3D bounds for GameObjects.
includeData — include serialized component data for GameObjects.
Path-scoped reads (token-saving)
Supply paths to read only the listed fields/elements from the scene's root-GameObjects array via Reflector.TryReadAt, or viewQuery to navigate/filter the same array via Reflector.View. The result populates Data on the returned SceneData. These two parameters are mutually exclusive.
Path syntax
fieldName, nested/field, arrayField/[i], dictField/[key]. Leading #/ is stripped. Example: paths=['[0]/name'] reads the name of the first root GameObject.
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.
Input
Name
Type
Required
Description
openedSceneName
string
No
Name of the opened scene. If empty or null, the active scene will be used.
includeRootGameObjects
boolean
No
If true, includes root GameObjects in the scene data.
includeChildrenDepth
integer
No
Determines the depth of the hierarchy to include.
includeBounds
boolean
No
If true, includes bounding box information for GameObjects.
includeData
boolean
No
If true, includes component data for GameObjects.
paths
any
No
Optional. List of paths to read individually via Reflector.TryReadAt against the scene's root-GameObjects array. Path syntax: 'fieldName', '[i]/field', '[i]/component/[j]/property'. Mutually exclusive with 'viewQuery'.
viewQuery
any
No
Optional. View-query filter routed through Reflector.View on the scene's root-GameObjects array. Mutually exclusive with 'paths'.
Input JSON Schema
json
{
"type": "object",
"properties": {
"openedSceneName": {
"type": "string"
},
"includeRootGameObjects": {
"type": "boolean"
},
"includeChildrenDepth": {
"type": "integer"
},
"includeBounds": {
"type": "boolean"
},
"includeData": {
"type": "boolean"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"System.Type": {
"type": "string"
},
"com.IvanMurzak.ReflectorNet.Model.ViewQuery": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Navigate to this path first, then serialize only that subtree. Path segments are separated by '/'. Use '[i]' for array/list index (e.g. 'users/[2]/name') and '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Examples: 'admin/name', 'users/[0]/email', 'config/[timeout]'. Leave null to start from the root object."
},
"NamePattern": {
"type": "string",
"description": "Case-insensitive .NET regex pattern matched against field and property names. Only branches containing at least one match are kept in the result tree. Examples: 'orbitRadius' (exact name), 'orbit.*' (prefix match), 'radius|speed' (either name). When nothing matches, the root envelope is returned with empty fields/props. Leave null to return all fields and properties without filtering."
},
"MaxDepth": {
"type": "integer",
"description": "Maximum nesting depth of the returned serialized tree. 0 = root type name and value only — no nested fields or properties. 1 = one level of fields/props visible, their children stripped. 2 = two levels visible, and so on. Leave null (default) for unlimited depth."
},
"TypeFilter": {
"$ref": "#/$defs/System.Type",
"description": "When set, prunes the result tree to members whose runtime type is assignable to this type. Non-matching branches are removed; the root envelope is always preserved. Examples: typeof(float) keeps only float fields, typeof(IEnumerable) keeps only collections. Leave null to include members of any type."
}
}
}
}
}
Output
Output JSON Schema
json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneData",
"description": "Scene reference. Used to find a Scene."
}
},
"$defs": {
"System.Collections.Generic.List(AIGD.GameObjectData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectData"
}
},
"AIGD.GameObjectData": {
"type": "object",
"properties": {
"Reference": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "GameObject editable data (tag, layer, etc)."
},
"Bounds": {
"$ref": "#/$defs/UnityEngine.Bounds",
"description": "Bounds of the GameObject."
},
"Hierarchy": {
"$ref": "#/$defs/AIGD.GameObjectMetadata",
"description": "Hierarchy metadata of the GameObject."
},
"Components": {
"$ref": "#/$defs/AIGD.ComponentDataShallow-1",
"description": "Attached components shallow data of the GameObject (Read-only, use Component modification tool for modification)."
}
}
},
"AIGD.GameObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If it is '0' and 'path', 'name', 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'. Priority: 1 (Recommended)"
},
"path": {
"type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
},
"name": {
"type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3."
},
"assetType": {
"$ref": "#/$defs/System.Type",
"description": "Type of the asset."
},
"assetPath": {
"type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'"
},
"assetGuid": {
"type": "string",
"description": "Unique identifier for the asset."
}
},
"required": [
"instanceID"
],
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"System.Type": {
"type": "string"
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
},
"name": {
"type": "string",
"description": "Object name."
},
"value": {
"description": "Value of the object, serialized as a non stringified JSON element. Can be null if the value is not set. Can be default value if the value is an empty object or array json."
},
"fields": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value."
},
"description": "Fields of the object, serialized as a list of 'SerializedMember'."
},
"props": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value."
},
"description": "Properties of the object, serialized as a list of 'SerializedMember'."
}
},
"required": [
"typeName"
],
"additionalProperties": false
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"UnityEngine.Bounds": {
"type": "object",
"properties": {
"center": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
]
},
"size": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
]
}
},
"required": [
"center",
"size"
],
"additionalProperties": false
},
"AIGD.GameObjectMetadata": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer"
},
"path": {
"type": "string"
},
"name": {
"type": "string"
},
"sceneName": {
"type": "string"
},
"tag": {
"type": "string"
},
"activeSelf": {
"type": "boolean"
},
"activeInHierarchy": {
"type": "boolean"
},
"children": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectMetadata)"
}
},
"required": [
"instanceID",
"activeSelf",
"activeInHierarchy"
]
},
"System.Collections.Generic.List(AIGD.GameObjectMetadata)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectMetadata"
}
},
"AIGD.ComponentDataShallow-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentDataShallow"
}
},
"AIGD.ComponentDataShallow": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer"
},
"typeName": {
"type": "string"
},
"isEnabled": {
"type": "string",
"enum": [
"False",
"True",
"NA"
]
}
},
"required": [
"instanceID",
"isEnabled"
]
},
"AIGD.SceneData": {
"type": "object",
"properties": {
"RootGameObjects": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectData)"
},
"Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' is supplied to the scene-get-data tool. Null otherwise."
},
"Name": {
"type": "string"
},
"IsLoaded": {
"type": "boolean"
},
"IsDirty": {
"type": "boolean"
},
"IsSubScene": {
"type": "boolean"
},
"IsValidScene": {
"type": "boolean",
"description": "Whether this is a valid Scene. A Scene may be invalid if, for example, you tried to open a Scene that does not exist. In this case, the Scene returned from EditorSceneManager.OpenScene would return False for IsValid."
},
"RootCount": {
"type": "integer"
},
"path": {
"type": "string",
"description": "Path to the Scene within the project. Starts with 'Assets/'"
},
"buildIndex": {
"type": "integer",
"description": "Build index of the Scene in the Build Settings."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"IsLoaded",
"IsDirty",
"IsSubScene",
"IsValidScene",
"RootCount",
"buildIndex",
"instanceID"
],
"description": "Scene reference. Used to find a Scene."
}
},
"required": [
"result"
]
}
Scene Get Data next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
Verify that browser profiles are actually isolated from one another instead of assuming it - confirm each profile's timezone agrees with its own exit IP, that WebRTC exposes only the proxy, that…
A skill your agent uses when an agent needs to inspect or control a real Unity Editor through Locus, especially when Unity MCP is unavailable, named-pipe discovery is needed, C must be executed, or…
Walks an Unreal Engine MCP agent through building materials, Niagara particle systems, Chaos destruction, and curve assets with inspect-then-edit steps.
Retrieve the list of root GameObjects in the specified opened scene (or the active scene when openedSceneName is empty). Scene Get Data is an agent skill from IvanMurzak/Unity-MCP. Retrieve the list of root GameObjects in the specified opened scene (or the active scene when openedSceneName is empty).
When should I use Scene Get Data?
Scene Get Data fits situations like: game Development work in your project.
How do I install Scene Get Data in Claude Code?
Run `npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a claude-code`. Or copy the skill folder (Unity-MCP-Plugin/.claude/skills/scene-get-data in IvanMurzak/Unity-MCP) into .claude/skills/scene-get-data in your project. Claude Code loads it when a task matches its description.
How do I install Scene Get Data in Codex?
Run `npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a codex`. Or copy the skill folder (Unity-MCP-Plugin/.claude/skills/scene-get-data in IvanMurzak/Unity-MCP) into .agents/skills/scene-get-data in your project. Codex loads it when a task matches its description.
Can I use Scene Get Data in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add IvanMurzak/Unity-MCP --skill scene-get-data -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/scene-get-data, .gemini/skills/scene-get-data, .github/skills/scene-get-data and .opencode/skills/scene-get-data in your project.
What does Scene Get Data need to run?
Going by SKILL.md and its folder, Scene Get Data needs the command-line tools its instructions call (npm and npx). Our summary lists: Node.js.
Does Scene Get Data access the network?
SKILL.md contains no URLs. Its commands use npm and npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Is Scene Get Data safe to install?
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
What licence does Scene Get Data use?
Scene Get Data is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Scene Get Data use?
About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
What are the alternatives to Scene Get Data?
Skills that share tags, products or a category with Scene Get Data: Sprite Gen (aldegad/sprite-gen, 2.6k stars), Multi Account Isolation (antibrow/anti-detect-browser-skills, 932 stars), Blockbench Plugins (jasonjgardner/blockbench-mcp-plugin, 491 stars) and Unreal Blueprint Authoring (flopperam/unreal-engine-mcp, 1.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Scene Get Data?
IvanMurzak (a GitHub user) maintains it in IvanMurzak/Unity-MCP, which has 4,398 GitHub stars. The repository holds 80 skills in this directory. The repository was last updated on October 4, 2026.
Source: IvanMurzak/Unity-MCP on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.