Keep local version of files

This commit is contained in:
2026-10-08 00:49:10 +05:30
parent 7fa0621ff8
commit 053665c690
7343 changed files with 5470578 additions and 5470528 deletions
+7 -7
View File
@@ -1,8 +1,8 @@
{
"mcpServers": {
"ai-game-developer": {
"type": "http",
"url": "http://localhost:27722/p/0a4f1b33"
}
}
{
"mcpServers": {
"ai-game-developer": {
"type": "http",
"url": "http://localhost:27722/p/0a4f1b33"
}
}
}
+147 -147
View File
@@ -1,12 +1,12 @@
---
name: assets-copy
description: 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.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Copy
---
name: assets-copy
description: 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.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Copy
Copy assets at given paths and store them at new paths. Does AssetDatabase.Refresh() at the end. Use 'assets-find' tool to find assets before copying.
## Inputs
@@ -16,141 +16,141 @@ Copy assets at given paths and store them at new paths. Does AssetDatabase.Refre
## Behavior
Each source/destination pair is copied in order. Per-pair errors are accumulated in the response instead of throwing, so a single bad pair does not abort the whole batch.
## How to Call
```bash
unity-mcp-cli run-tool assets-copy --input '{
"sourcePaths": "string_value",
"destinationPaths": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-copy --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-copy --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sourcePaths` | `any` | Yes | The paths of the assets to copy. |
| `destinationPaths` | `any` | Yes | The paths to store the copied assets. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sourcePaths": {
"$ref": "#/$defs/System.String-1"
},
"destinationPaths": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"sourcePaths",
"destinationPaths"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.CopyAssetsResponse"
}
},
"$defs": {
"System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.CopyAssetsResponse": {
"type": "object",
"properties": {
"CopiedAssets": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)",
"description": "List of copied assets."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during copy operations."
}
}
}
},
"required": [
"result"
]
}
```
Each source/destination pair is copied in order. Per-pair errors are accumulated in the response instead of throwing, so a single bad pair does not abort the whole batch.
## How to Call
```bash
unity-mcp-cli run-tool assets-copy --input '{
"sourcePaths": "string_value",
"destinationPaths": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-copy --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-copy --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sourcePaths` | `any` | Yes | The paths of the assets to copy. |
| `destinationPaths` | `any` | Yes | The paths to store the copied assets. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sourcePaths": {
"$ref": "#/$defs/System.String-1"
},
"destinationPaths": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"sourcePaths",
"destinationPaths"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.CopyAssetsResponse"
}
},
"$defs": {
"System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.CopyAssetsResponse": {
"type": "object",
"properties": {
"CopiedAssets": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)",
"description": "List of copied assets."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during copy operations."
}
}
}
},
"required": [
"result"
]
}
```
+119 -119
View File
@@ -1,12 +1,12 @@
---
name: assets-create-folder
description: 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. Refreshes the AssetDatabase at the end and returns the GUID(s) of the created folder(s).
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Create Folder
---
name: assets-create-folder
description: 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. Refreshes the AssetDatabase at the end and returns the GUID(s) of the created folder(s).
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Create Folder
Creates a new folder in the specified parent folder. The parent folder string must start with the 'Assets' folder, and all folders within the parent folder string must already exist. For example, when specifying 'Assets/ParentFolder1/ParentFolder2/', the new folder will be created in 'ParentFolder2' only if ParentFolder1 and ParentFolder2 already exist. Use it to organize scripts and assets in the project. Does AssetDatabase.Refresh() at the end. Returns the GUID of the newly created folder, if successful.
## Inputs
@@ -17,113 +17,113 @@ Creates a new folder in the specified parent folder. The parent folder string mu
- `NewFolderName` must be non-empty and must not contain any of `/`, `\`, `<`, `>`, `:`, `"`, `|`, `?`, `*`, or control characters (these checks are cross-platform even on Linux/Mac).
- `ParentFolderPath` must already exist as an `AssetDatabase.IsValidFolder` path.
- A folder with the same target name must not already exist under the parent.
## How to Call
```bash
unity-mcp-cli run-tool assets-create-folder --input '{
"inputs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-create-folder --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-create-folder --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `inputs` | `any` | Yes | The paths for the folders to create. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"inputs": {
"$ref": "#/$defs/AIGD.CreateFolderInput-1"
}
},
"$defs": {
"AIGD.CreateFolderInput": {
"type": "object",
"properties": {
"ParentFolderPath": {
"type": "string",
"description": "The parent folder path where the new folder will be created."
},
"NewFolderName": {
"type": "string",
"description": "The name of the new folder to create."
}
}
},
"AIGD.CreateFolderInput-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.CreateFolderInput"
}
}
},
"required": [
"inputs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.CreateFolderResponse"
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.CreateFolderResponse": {
"type": "object",
"properties": {
"CreatedFolderGuids": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of GUIDs of created folders."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during folder creation."
}
}
}
},
"required": [
"result"
]
}
```
- A folder with the same target name must not already exist under the parent.
## How to Call
```bash
unity-mcp-cli run-tool assets-create-folder --input '{
"inputs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-create-folder --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-create-folder --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `inputs` | `any` | Yes | The paths for the folders to create. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"inputs": {
"$ref": "#/$defs/AIGD.CreateFolderInput-1"
}
},
"$defs": {
"AIGD.CreateFolderInput": {
"type": "object",
"properties": {
"ParentFolderPath": {
"type": "string",
"description": "The parent folder path where the new folder will be created."
},
"NewFolderName": {
"type": "string",
"description": "The name of the new folder to create."
}
}
},
"AIGD.CreateFolderInput-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.CreateFolderInput"
}
}
},
"required": [
"inputs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.CreateFolderResponse"
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.CreateFolderResponse": {
"type": "object",
"properties": {
"CreatedFolderGuids": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of GUIDs of created folders."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during folder creation."
}
}
}
},
"required": [
"result"
]
}
```
+106 -106
View File
@@ -1,12 +1,12 @@
---
name: assets-delete
description: Delete the assets at the given project paths. Refreshes the AssetDatabase at the end. Use 'assets-find' to locate the assets first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Delete
---
name: assets-delete
description: Delete the assets at the given project paths. Refreshes the AssetDatabase at the end. Use 'assets-find' to locate the assets first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Delete
Delete the assets at paths from the project. Does AssetDatabase.Refresh() at the end. Use 'assets-find' tool to find assets before deleting.
## Inputs
@@ -15,100 +15,100 @@ Delete the assets at paths from the project. Does AssetDatabase.Refresh() at the
## Behavior
Routes through `AssetDatabase.DeleteAssets`, which deletes the batch atomically. Paths Unity reports as failed are surfaced in `response.Errors`; successfully deleted paths are surfaced in `response.DeletedPaths`. The tool is destructive (removes files from disk).
## How to Call
```bash
unity-mcp-cli run-tool assets-delete --input '{
"paths": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-delete --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-delete --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `paths` | `any` | Yes | The paths of the assets |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"paths": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"paths"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.DeleteAssetsResponse"
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.DeleteAssetsResponse": {
"type": "object",
"properties": {
"DeletedPaths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of paths of deleted assets."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during delete operations."
}
}
}
},
"required": [
"result"
]
}
```
Routes through `AssetDatabase.DeleteAssets`, which deletes the batch atomically. Paths Unity reports as failed are surfaced in `response.Errors`; successfully deleted paths are surfaced in `response.DeletedPaths`. The tool is destructive (removes files from disk).
## How to Call
```bash
unity-mcp-cli run-tool assets-delete --input '{
"paths": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-delete --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-delete --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `paths` | `any` | Yes | The paths of the assets |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"paths": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"paths"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.DeleteAssetsResponse"
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.DeleteAssetsResponse": {
"type": "object",
"properties": {
"DeletedPaths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of paths of deleted assets."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during delete operations."
}
}
}
},
"required": [
"result"
]
}
```
+126 -126
View File
@@ -1,12 +1,12 @@
---
name: assets-find-built-in
description: 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 GUID-based lookups are not supported.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Find (Built-in)
---
name: assets-find-built-in
description: 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 GUID-based lookups are not supported.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Find (Built-in)
Search the built-in assets of the Unity Editor located in the built-in resources: Resources/unity_builtin_extra. Doesn't support GUIDs since built-in assets do not have them.
## Inputs
@@ -17,120 +17,120 @@ Search the built-in assets of the Unity Editor located in the built-in resources
## Ranking
Results are sorted by descending match quality: exact match → substring match → all-words match → partial-words match. Within a rank, results are sorted alphabetically by filename for stable ordering.
## How to Call
```bash
unity-mcp-cli run-tool assets-find-built-in --input '{
"name": "string_value",
"type": "string_value",
"maxResults": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-find-built-in --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-find-built-in --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `name` | `string` | No | The name of the asset to filter by. |
| `type` | `any` | No | The type of the asset to filter by. |
| `maxResults` | `integer` | No | Maximum number of assets to return. If the number of found assets exceeds this limit, the result will be truncated. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"$ref": "#/$defs/System.Type"
},
"maxResults": {
"type": "integer"
}
},
"$defs": {
"System.Type": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
}
},
"required": [
"result"
]
}
```
Results are sorted by descending match quality: exact match → substring match → all-words match → partial-words match. Within a rank, results are sorted alphabetically by filename for stable ordering.
## How to Call
```bash
unity-mcp-cli run-tool assets-find-built-in --input '{
"name": "string_value",
"type": "string_value",
"maxResults": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-find-built-in --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-find-built-in --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `name` | `string` | No | The name of the asset to filter by. |
| `type` | `any` | No | The type of the asset to filter by. |
| `maxResults` | `integer` | No | Maximum number of assets to return. If the number of found assets exceeds this limit, the result will be truncated. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"type": {
"$ref": "#/$defs/System.Type"
},
"maxResults": {
"type": "integer"
}
},
"$defs": {
"System.Type": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
}
},
"required": [
"result"
]
}
```
+129 -129
View File
@@ -1,12 +1,12 @@
---
name: assets-find
description: "Search the Unity asset database using a search filter string. The filter accepts names, labels (`l:`), types (`t:`), AssetBundles (`b:`), areas (`a:`), and globs (`glob:`). See the body for the full filter syntax."
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Find
---
name: assets-find
description: "Search the Unity asset database using a search filter string. The filter accepts names, labels (`l:`), types (`t:`), AssetBundles (`b:`), areas (`a:`), and globs (`glob:`). See the body for the full filter syntax."
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Find
Search the asset database using the search filter string. Allows you to search for Assets. The string argument can provide names, labels or types (classnames).
## Filter syntax
@@ -18,123 +18,123 @@ Search the asset database using the search filter string. Allows you to search f
- **Area (`a:`)** — find assets in a specific area. Valid values: `all`, `assets`, `packages`.
- **Globbing (`glob:`)** — use globbing to match specific rules.
Searching is case-insensitive. Use `searchInFolders` to restrict the search scope. `maxResults` caps the returned list (default 10) — results beyond it are truncated.
## How to Call
```bash
unity-mcp-cli run-tool assets-find --input '{
"filter": "string_value",
"searchInFolders": "string_value",
"maxResults": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-find --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-find --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filter` | `string` | No | The filter string can contain search data. Could be empty. Name: Filter assets by their filename (without extension). Words separated by whitespace are treated as separate name searches. Labels (l:): Assets can have labels attached to them. Use 'l:' before each label. Types (t:): Find assets based on explicitly identified types. Use 't:' keyword. Available types: AnimationClip, AudioClip, AudioMixer, ComputeShader, Font, GUISkin, Material, Mesh, Model, PhysicMaterial, Prefab, Scene, Script, Shader, Sprite, Texture, VideoClip, VisualEffectAsset, VisualEffectSubgraph. AssetBundles (b:): Find assets which are part of an Asset bundle. Area (a:): Find assets in a specific area. Valid values are 'all', 'assets', and 'packages'. Globbing (glob:): Use globbing to match specific rules. Note: Searching is case insensitive. |
| `searchInFolders` | `any` | No | The folders where the search will start. If null, the search will be performed in all folders. |
| `maxResults` | `integer` | No | Maximum number of assets to return. If the number of found assets exceeds this limit, the result will be truncated. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filter": {
"type": "string"
},
"searchInFolders": {
"$ref": "#/$defs/System.String-1"
},
"maxResults": {
"type": "integer"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
}
},
"required": [
"result"
]
}
```
Searching is case-insensitive. Use `searchInFolders` to restrict the search scope. `maxResults` caps the returned list (default 10) — results beyond it are truncated.
## How to Call
```bash
unity-mcp-cli run-tool assets-find --input '{
"filter": "string_value",
"searchInFolders": "string_value",
"maxResults": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-find --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-find --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filter` | `string` | No | The filter string can contain search data. Could be empty. Name: Filter assets by their filename (without extension). Words separated by whitespace are treated as separate name searches. Labels (l:): Assets can have labels attached to them. Use 'l:' before each label. Types (t:): Find assets based on explicitly identified types. Use 't:' keyword. Available types: AnimationClip, AudioClip, AudioMixer, ComputeShader, Font, GUISkin, Material, Mesh, Model, PhysicMaterial, Prefab, Scene, Script, Shader, Sprite, Texture, VideoClip, VisualEffectAsset, VisualEffectSubgraph. AssetBundles (b:): Find assets which are part of an Asset bundle. Area (a:): Find assets in a specific area. Valid values are 'all', 'assets', and 'packages'. Globbing (glob:): Use globbing to match specific rules. Note: Searching is case insensitive. |
| `searchInFolders` | `any` | No | The folders where the search will start. If null, the search will be performed in all folders. |
| `maxResults` | `integer` | No | Maximum number of assets to return. If the number of found assets exceeds this limit, the result will be truncated. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filter": {
"type": "string"
},
"searchInFolders": {
"$ref": "#/$defs/System.String-1"
},
"maxResults": {
"type": "integer"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
}
},
"required": [
"result"
]
}
```
+188 -188
View File
@@ -1,12 +1,12 @@
---
name: assets-get-data
description: Get asset data from the asset file in the Unity project — every serializable field and property. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'assets-find' to find the asset first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Get Data
---
name: assets-get-data
description: Get asset data from the asset file in the Unity project — every serializable field and property. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'assets-find' to find the asset first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Get Data
Get asset data from the asset file in the Unity project. It includes all serializable fields and properties of the asset. Use 'assets-find' tool to find asset before using this tool.
## Path-scoped reads (token-saving)
@@ -15,182 +15,182 @@ Supply `paths` (a list of paths) to read only the listed fields/elements via `Re
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool assets-get-data --input '{
"assetRef": "string_value",
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View — combines a starting Path, a case-insensitive NamePattern regex, MaxDepth, and an optional TypeFilter. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"assetRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool assets-get-data --input '{
"assetRef": "string_value",
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View — combines a starting Path, a case-insensitive NamePattern regex, MaxDepth, and an optional TypeFilter. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"assetRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
+114 -114
View File
@@ -1,12 +1,12 @@
---
name: assets-material-create
description: Create a new Material asset with default parameters at a given 'Assets/'-rooted path ending in '.mat'. Creates intermediate folders if missing. Use 'assets-shader-list-all' to find a valid `shaderName`.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Create Material
---
name: assets-material-create
description: Create a new Material asset with default parameters at a given 'Assets/'-rooted path ending in '.mat'. Creates intermediate folders if missing. Use 'assets-shader-list-all' to find a valid `shaderName`.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Create Material
Create new material asset with default parameters. Creates folders recursively if they do not exist. Provide proper 'shaderName' - use 'assets-shader-list-all' tool to find available shaders.
## Inputs
@@ -16,108 +16,108 @@ Create new material asset with default parameters. Creates folders recursively i
## Behavior
Throws if the path is empty, malformed, or the shader cannot be resolved. Creates a default Material from the resolved shader, saves it, refreshes the AssetDatabase, and returns an `AssetObjectRef` pointing at the new asset.
## How to Call
```bash
unity-mcp-cli run-tool assets-material-create --input '{
"assetPath": "string_value",
"shaderName": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-material-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-material-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetPath` | `string` | Yes | Asset path. Starts with 'Assets/'. Ends with '.mat'. |
| `shaderName` | `string` | Yes | Name of the shader that need to be used to create the material. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetPath": {
"type": "string"
},
"shaderName": {
"type": "string"
}
},
"required": [
"assetPath",
"shaderName"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
Throws if the path is empty, malformed, or the shader cannot be resolved. Creates a default Material from the resolved shader, saves it, refreshes the AssetDatabase, and returns an `AssetObjectRef` pointing at the new asset.
## How to Call
```bash
unity-mcp-cli run-tool assets-material-create --input '{
"assetPath": "string_value",
"shaderName": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-material-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-material-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetPath` | `string` | Yes | Asset path. Starts with 'Assets/'. Ends with '.mat'. |
| `shaderName` | `string` | Yes | Name of the shader that need to be used to create the material. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetPath": {
"type": "string"
},
"shaderName": {
"type": "string"
}
},
"required": [
"assetPath",
"shaderName"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
+199 -199
View File
@@ -1,12 +1,12 @@
---
name: assets-modify
description: Modify an asset file in the project. Use 'assets-get-data' first to inspect the asset structure before modifying. Not allowed to modify asset files in the 'Packages/' folder — modify them in 'Assets/'. Three modification surfaces are available (content, pathPatches, jsonPatch) — see the skill body for details.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Modify
---
name: assets-modify
description: Modify an asset file in the project. Use 'assets-get-data' first to inspect the asset structure before modifying. Not allowed to modify asset files in the 'Packages/' folder — modify them in 'Assets/'. Three modification surfaces are available (content, pathPatches, jsonPatch) — see the skill body for details.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Modify
## Three modification surfaces
Use whichever fits the task:
@@ -19,193 +19,193 @@ When more than one is supplied they run in this order: `jsonPatch` → `pathPatc
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool assets-modify --input '{
"assetRef": "string_value",
"content": "string_value",
"pathPatches": "string_value",
"jsonPatch": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `content` | `any` | No | Optional. The asset content. It overrides the existing asset content (legacy path). |
| `pathPatches` | `any` | No | Optional. List of path-scoped patches routed through Reflector.TryModifyAt. |
| `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"content": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
},
"jsonPatch": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
}
},
"required": [
"assetRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"result"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool assets-modify --input '{
"assetRef": "string_value",
"content": "string_value",
"pathPatches": "string_value",
"jsonPatch": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `content` | `any` | No | Optional. The asset content. It overrides the existing asset content (legacy path). |
| `pathPatches` | `any` | No | Optional. List of path-scoped patches routed through Reflector.TryModifyAt. |
| `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"content": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
},
"jsonPatch": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
}
},
"required": [
"assetRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"result"
]
}
```
+112 -112
View File
@@ -1,12 +1,12 @@
---
name: assets-move
description: Move or rename assets at the given project paths. Refreshes the AssetDatabase at the end. Use 'assets-find' to locate the assets first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Move
---
name: assets-move
description: Move or rename assets at the given project paths. Refreshes the AssetDatabase at the end. Use 'assets-find' to locate the assets first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Move
Move the assets at paths in the project. Should be used for asset rename. Does AssetDatabase.Refresh() at the end. Use 'assets-find' tool to find assets before moving.
## Inputs
@@ -16,106 +16,106 @@ Move the assets at paths in the project. Should be used for asset rename. Does A
## Behavior
Each pair is moved independently via `AssetDatabase.MoveAsset`. Per-pair failures (Unity's `MoveAsset` returns a non-empty error string) are surfaced in `response.Errors`; successful moves accumulate into `response.MovedPaths`.
## How to Call
```bash
unity-mcp-cli run-tool assets-move --input '{
"sourcePaths": "string_value",
"destinationPaths": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-move --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-move --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sourcePaths` | `any` | Yes | The paths of the assets to move. |
| `destinationPaths` | `any` | Yes | The paths of moved assets. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sourcePaths": {
"$ref": "#/$defs/System.String-1"
},
"destinationPaths": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"sourcePaths",
"destinationPaths"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.MoveAssetsResponse"
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.MoveAssetsResponse": {
"type": "object",
"properties": {
"MovedPaths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of destination paths of successfully moved assets."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during move operations."
}
}
}
},
"required": [
"result"
]
}
```
Each pair is moved independently via `AssetDatabase.MoveAsset`. Per-pair failures (Unity's `MoveAsset` returns a non-empty error string) are surfaced in `response.Errors`; successful moves accumulate into `response.MovedPaths`.
## How to Call
```bash
unity-mcp-cli run-tool assets-move --input '{
"sourcePaths": "string_value",
"destinationPaths": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-move --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-move --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sourcePaths` | `any` | Yes | The paths of the assets to move. |
| `destinationPaths` | `any` | Yes | The paths of moved assets. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sourcePaths": {
"$ref": "#/$defs/System.String-1"
},
"destinationPaths": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"sourcePaths",
"destinationPaths"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.MoveAssetsResponse"
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.MoveAssetsResponse": {
"type": "object",
"properties": {
"MovedPaths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of destination paths of successfully moved assets."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during move operations."
}
}
}
},
"required": [
"result"
]
}
```
+105 -105
View File
@@ -1,12 +1,12 @@
---
name: assets-prefab-close
description: Close the currently opened prefab edit stage. Optionally saves changes back to the prefab asset before closing. Pair with 'assets-prefab-open' to enter the edit mode first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Close
---
name: assets-prefab-close
description: Close the currently opened prefab edit stage. Optionally saves changes back to the prefab asset before closing. Pair with 'assets-prefab-open' to enter the edit mode first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Close
Close currently opened prefab. Use it when you are in prefab editing mode in Unity Editor. Use 'assets-prefab-open' tool to open a prefab first.
## Inputs
@@ -15,99 +15,99 @@ Close currently opened prefab. Use it when you are in prefab editing mode in Uni
## Behavior
Throws when no prefab stage is currently open. Returns an `AssetObjectRef` for the closed prefab asset.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-close --input '{
"save": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-close --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-close --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `save` | `boolean` | No | True to save prefab. False to discard changes. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"save": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
Throws when no prefab stage is currently open. Returns an `AssetObjectRef` for the closed prefab asset.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-close --input '{
"save": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-close --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-close --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `save` | `boolean` | No | True to save prefab. False to discard changes. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"save": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
+161 -161
View File
@@ -1,12 +1,12 @@
---
name: assets-prefab-create
description: Create a Prefab (or Prefab Variant) at a project asset path. Source can be a scene GameObject (`gameObjectRef`) or an existing prefab asset (`sourcePrefabAssetPath`). Creates intermediate folders if missing. Use 'gameobject-find' to locate the source GameObject first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Create
---
name: assets-prefab-create
description: Create a Prefab (or Prefab Variant) at a project asset path. Source can be a scene GameObject (`gameObjectRef`) or an existing prefab asset (`sourcePrefabAssetPath`). Creates intermediate folders if missing. Use 'gameobject-find' to locate the source GameObject first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Create
Create a prefab from a GameObject in the current active scene. The prefab will be saved in the project assets at the specified path. Creates folders recursively if they do not exist. If the source GameObject is already a prefab instance and 'connectGameObjectToPrefab' is true, a Prefab Variant is created automatically. To create a Prefab Variant from an existing prefab asset, provide 'sourcePrefabAssetPath' instead of 'gameObjectRef'. Use 'gameobject-find' tool to find the target GameObject first.
## Inputs (mutually exclusive sources)
@@ -18,155 +18,155 @@ Create a prefab from a GameObject in the current active scene. The prefab will b
## Behavior
Creates intermediate folders along `prefabAssetPath` if they don't already exist. Returns an `AssetObjectRef` pointing at the new prefab asset.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-create --input '{
"prefabAssetPath": "string_value",
"gameObjectRef": "string_value",
"sourcePrefabAssetPath": "string_value",
"connectGameObjectToPrefab": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `prefabAssetPath` | `string` | Yes | Prefab asset path. Should be in the format 'Assets/Path/To/Prefab.prefab'. |
| `gameObjectRef` | `any` | No | Reference to a scene GameObject to create the prefab from. If the GameObject is already a prefab instance, a Prefab Variant is created when 'connectGameObjectToPrefab' is true. Optional if 'sourcePrefabAssetPath' is provided. |
| `sourcePrefabAssetPath` | `string` | No | Path to an existing prefab asset to create a Prefab Variant from (e.g. 'Assets/Prefabs/Base.prefab'). When provided, a temporary instance is created, saved as a Prefab Variant, and cleaned up. Optional if 'gameObjectRef' is provided. |
| `connectGameObjectToPrefab` | `boolean` | No | If true, the scene GameObject will be connected to the new prefab (becoming a prefab instance). If the source is already a prefab instance, this creates a Prefab Variant. If false, the prefab asset is created but the scene GameObject remains unchanged. Ignored when 'sourcePrefabAssetPath' is used (always creates a variant). |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"prefabAssetPath": {
"type": "string"
},
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"sourcePrefabAssetPath": {
"type": "string"
},
"connectGameObjectToPrefab": {
"type": "boolean"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"prefabAssetPath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
Creates intermediate folders along `prefabAssetPath` if they don't already exist. Returns an `AssetObjectRef` pointing at the new prefab asset.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-create --input '{
"prefabAssetPath": "string_value",
"gameObjectRef": "string_value",
"sourcePrefabAssetPath": "string_value",
"connectGameObjectToPrefab": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `prefabAssetPath` | `string` | Yes | Prefab asset path. Should be in the format 'Assets/Path/To/Prefab.prefab'. |
| `gameObjectRef` | `any` | No | Reference to a scene GameObject to create the prefab from. If the GameObject is already a prefab instance, a Prefab Variant is created when 'connectGameObjectToPrefab' is true. Optional if 'sourcePrefabAssetPath' is provided. |
| `sourcePrefabAssetPath` | `string` | No | Path to an existing prefab asset to create a Prefab Variant from (e.g. 'Assets/Prefabs/Base.prefab'). When provided, a temporary instance is created, saved as a Prefab Variant, and cleaned up. Optional if 'gameObjectRef' is provided. |
| `connectGameObjectToPrefab` | `boolean` | No | If true, the scene GameObject will be connected to the new prefab (becoming a prefab instance). If the source is already a prefab instance, this creates a Prefab Variant. If false, the prefab asset is created but the scene GameObject remains unchanged. Ignored when 'sourcePrefabAssetPath' is used (always creates a variant). |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"prefabAssetPath": {
"type": "string"
},
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"sourcePrefabAssetPath": {
"type": "string"
},
"connectGameObjectToPrefab": {
"type": "boolean"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"prefabAssetPath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
+164 -164
View File
@@ -1,12 +1,12 @@
---
name: assets-prefab-instantiate
description: Instantiate a prefab into the currently active scene at an optional position/rotation/scale, parented under an optional scene GameObject path. Use 'assets-find' to locate the prefab asset first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Instantiate
---
name: assets-prefab-instantiate
description: Instantiate a prefab into the currently active scene at an optional position/rotation/scale, parented under an optional scene GameObject path. Use 'assets-find' to locate the prefab asset first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Instantiate
Instantiates prefab in the current active scene. Use 'assets-find' tool to find prefab assets in the project.
## Inputs
@@ -14,158 +14,158 @@ Instantiates prefab in the current active scene. Use 'assets-find' tool to find
- `prefabAssetPath` — project asset path of the prefab to instantiate.
- `gameObjectPath` — destination path in the scene; the last segment becomes the new GameObject's name, any prefix is looked up as the parent (must already exist).
- `position` / `rotation` / `scale` — optional transform; default to zero / zero / one.
- `isLocalSpace` — when `true`, applies the transform in local space relative to the parent.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-instantiate --input '{
"prefabAssetPath": "string_value",
"gameObjectPath": "string_value",
"position": "string_value",
"rotation": "string_value",
"scale": "string_value",
"isLocalSpace": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-instantiate --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-instantiate --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `prefabAssetPath` | `string` | Yes | Prefab asset path. |
| `gameObjectPath` | `string` | Yes | GameObject path in the current active scene. |
| `position` | `any` | No | Transform position of the GameObject. |
| `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. |
| `scale` | `any` | No | Transform scale of the GameObject. |
| `isLocalSpace` | `boolean` | No | World or Local space of transform. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"prefabAssetPath": {
"type": "string"
},
"gameObjectPath": {
"type": "string"
},
"position": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"rotation": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"scale": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"isLocalSpace": {
"type": "boolean"
}
},
"$defs": {
"UnityEngine.Vector3": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
}
},
"required": [
"prefabAssetPath",
"gameObjectPath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"result"
]
}
```
- `isLocalSpace` — when `true`, applies the transform in local space relative to the parent.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-instantiate --input '{
"prefabAssetPath": "string_value",
"gameObjectPath": "string_value",
"position": "string_value",
"rotation": "string_value",
"scale": "string_value",
"isLocalSpace": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-instantiate --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-instantiate --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `prefabAssetPath` | `string` | Yes | Prefab asset path. |
| `gameObjectPath` | `string` | Yes | GameObject path in the current active scene. |
| `position` | `any` | No | Transform position of the GameObject. |
| `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. |
| `scale` | `any` | No | Transform scale of the GameObject. |
| `isLocalSpace` | `boolean` | No | World or Local space of transform. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"prefabAssetPath": {
"type": "string"
},
"gameObjectPath": {
"type": "string"
},
"position": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"rotation": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"scale": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"isLocalSpace": {
"type": "boolean"
}
},
"$defs": {
"UnityEngine.Vector3": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
}
},
"required": [
"prefabAssetPath",
"gameObjectPath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"result"
]
}
```
+101 -101
View File
@@ -1,12 +1,12 @@
---
name: assets-prefab-open
description: Open the prefab edit stage for a prefab instance or prefab asset GameObject. Modifications inside the edit stage propagate to all instances. Pair with 'assets-prefab-close' to exit the stage when done.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Open
---
name: assets-prefab-open
description: Open the prefab edit stage for a prefab instance or prefab asset GameObject. Modifications inside the edit stage propagate to all instances. Pair with 'assets-prefab-close' to exit the stage when done.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Open
Open prefab edit mode for a specific GameObject. In the Edit mode you can modify the prefab. The modification will be applied to all instances of the prefab across the project. Note: Please use 'assets-prefab-close' tool later to exit prefab editing mode.
## Inputs
@@ -15,95 +15,95 @@ Open prefab edit mode for a specific GameObject. In the Edit mode you can modify
## Behavior
Asset-side GameObjects open via the simple `OpenPrefab(path)` overload. Scene-instance GameObjects open via `OpenPrefab(path, gameObject)` so the editor remembers which instance prompted the edit. Editor windows are repainted before returning. Throws when the GameObject cannot be resolved or the stage fails to open.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-open --input '{
"gameObjectRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-open --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-open --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | GameObject that represents prefab instance of an original prefab GameObject. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
This tool does not return structured output.
Asset-side GameObjects open via the simple `OpenPrefab(path)` overload. Scene-instance GameObjects open via `OpenPrefab(path, gameObject)` so the editor remembers which instance prompted the edit. Editor windows are repainted before returning. Throws when the GameObject cannot be resolved or the stage fails to open.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-open --input '{
"gameObjectRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-open --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-open --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | GameObject that represents prefab instance of an original prefab GameObject. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
This tool does not return structured output.
+105 -105
View File
@@ -1,109 +1,109 @@
---
name: assets-prefab-save
description: Save the currently opened prefab edit stage back to its prefab asset without exiting the stage. Pair with 'assets-prefab-open' to enter the edit mode first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Save
---
name: assets-prefab-save
description: Save the currently opened prefab edit stage back to its prefab asset without exiting the stage. Pair with 'assets-prefab-open' to enter the edit mode first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Prefab / Save
Save a prefab. Use it when you are in prefab editing mode in Unity Editor. Use 'assets-prefab-open' tool to open a prefab first.
## Behavior
Calls `PrefabUtility.SaveAsPrefabAsset` on the current prefab stage's contents root, clears the stage's dirtiness flag, repaints editor windows, and returns an `AssetObjectRef` to the saved prefab. Throws when no prefab stage is currently open.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-save --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-save --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-save --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
Calls `PrefabUtility.SaveAsPrefabAsset` on the current prefab stage's contents root, clears the stage's dirtiness flag, repaints editor windows, and returns an `AssetObjectRef` to the saved prefab. Throws when no prefab stage is currently open.
## How to Call
```bash
unity-mcp-cli run-tool assets-prefab-save --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-prefab-save --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-prefab-save --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"result"
]
}
```
+73 -73
View File
@@ -1,12 +1,12 @@
---
name: assets-refresh
description: Refresh the Unity AssetDatabase. Use after files were added or updated outside of the Unity API, or to force script recompilation when a '.cs' file changed. Returns a processing/success response and waits for compilation when triggered.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Refresh
---
name: assets-refresh
description: Refresh the Unity AssetDatabase. Use after files were added or updated outside of the Unity API, or to force script recompilation when a '.cs' file changed. Returns a processing/success response and waits for compilation when triggered.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Refresh
Refreshes the AssetDatabase. Use it if any file was added or updated in the project outside of Unity API. Use it if need to force scripts recompilation when '.cs' file changed.
## Inputs
@@ -16,67 +16,67 @@ Refreshes the AssetDatabase. Use it if any file was added or updated in the proj
## Behavior
Runs `AssetDatabase.Refresh(options)`. If `EditorApplication.isCompiling` is true after the refresh, schedules a post-compilation notification and returns a `Processing` response. If compilation already failed (`EditorUtility.scriptCompilationFailed`), returns `Success` with the compilation error details. Otherwise returns a plain `Success`.
## How to Call
```bash
unity-mcp-cli run-tool assets-refresh --input '{
"options": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-refresh --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-refresh --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `options` | `any` | No | Asset import options. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"options": {
"$ref": "#/$defs/UnityEditor.ImportAssetOptions"
}
},
"$defs": {
"UnityEditor.ImportAssetOptions": {
"type": "string",
"enum": [
"Default",
"ForceUpdate",
"ForceSynchronousImport",
"ImportRecursive",
"DontDownloadFromCacheServer",
"ForceUncompressedImport"
]
}
}
}
```
## Output
This tool does not return structured output.
Runs `AssetDatabase.Refresh(options)`. If `EditorApplication.isCompiling` is true after the refresh, schedules a post-compilation notification and returns a `Processing` response. If compilation already failed (`EditorUtility.scriptCompilationFailed`), returns `Success` with the compilation error details. Otherwise returns a plain `Success`.
## How to Call
```bash
unity-mcp-cli run-tool assets-refresh --input '{
"options": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-refresh --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-refresh --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `options` | `any` | No | Asset import options. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"options": {
"$ref": "#/$defs/UnityEditor.ImportAssetOptions"
}
},
"$defs": {
"UnityEditor.ImportAssetOptions": {
"type": "string",
"enum": [
"Default",
"ForceUpdate",
"ForceSynchronousImport",
"ImportRecursive",
"DontDownloadFromCacheServer",
"ForceUncompressedImport"
]
}
}
}
```
## Output
This tool does not return structured output.
+438 -438
View File
@@ -1,12 +1,12 @@
---
name: assets-shader-get-data
description: "Get detailed data about a shader asset — properties, subshaders, passes, compilation messages, and supported status. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'assets-find' with `t:Shader` or 'assets-shader-list-all' to locate the shader first."
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Shader / Get Data
---
name: assets-shader-get-data
description: "Get detailed data about a shader asset — properties, subshaders, passes, compilation messages, and supported status. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'assets-find' with `t:Shader` or 'assets-shader-list-all' to locate the shader first."
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / Shader / Get Data
Get detailed data about a shader asset in the Unity project. Returns shader properties, subshaders, passes, compilation errors, and supported status. Use 'assets-find' tool with filter 't:Shader' to find shaders, or 'assets-shader-list-all' tool to list all shader names.
## Toggles (most default off to keep responses small)
@@ -22,432 +22,432 @@ Supply `paths` (a list of paths) to read only the listed fields/elements via `Re
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool assets-shader-get-data --input '{
"assetRef": "string_value",
"includeMessages": "string_value",
"includeProperties": "string_value",
"includeSubshaders": "string_value",
"includeSourceCode": "string_value",
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-shader-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-shader-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `includeMessages` | `any` | No | Include compilation error and warning messages. Default: true |
| `includeProperties` | `any` | No | Include shader properties (uniforms) list. Default: false |
| `includeSubshaders` | `any` | No | Include subshader and pass structure. Default: false |
| `includeSourceCode` | `any` | No | Include pass source code in subshader data. Requires 'includeSubshaders' to be true. Can produce very large responses. Default: false |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt against the underlying Shader asset. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View against the underlying Shader asset. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"includeMessages": {
"$ref": "#/$defs/System.Boolean"
},
"includeProperties": {
"$ref": "#/$defs/System.Boolean"
},
"includeSubshaders": {
"$ref": "#/$defs/System.Boolean"
},
"includeSourceCode": {
"$ref": "#/$defs/System.Boolean"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Boolean": {
"type": "boolean"
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"assetRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ShaderData"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(AIGD.ShaderMessageData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ShaderMessageData"
}
},
"AIGD.ShaderMessageData": {
"type": "object",
"properties": {
"Message": {
"type": "string",
"description": "The error or warning message text."
},
"Line": {
"type": "integer",
"description": "The line number in the shader source where the issue occurs."
},
"Severity": {
"type": "string",
"description": "Severity level (e.g. 'Error', 'Warning')."
},
"Platform": {
"type": "string",
"description": "The platform on which the error occurs (e.g. 'OpenGLCore', 'D3D11')."
}
},
"required": [
"Line"
]
},
"System.Collections.Generic.List(AIGD.ShaderPropertyData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ShaderPropertyData"
}
},
"AIGD.ShaderPropertyData": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Property name as used in shader code (e.g. '_MainTex', '_Color')."
},
"Description": {
"type": "string",
"description": "Human-readable description/display name of the property."
},
"Type": {
"type": "string",
"description": "Property type (e.g. 'Color', 'Float', 'Range', 'Texture', 'Vector', 'Int')."
},
"Flags": {
"type": "string",
"description": "Property flags (e.g. 'None', 'HideInInspector', 'PerRendererData')."
},
"NameId": {
"type": "integer",
"description": "The unique name ID for this property."
},
"RangeMin": {
"type": "number",
"description": "Minimum value for Range properties. Null for non-range properties."
},
"RangeMax": {
"type": "number",
"description": "Maximum value for Range properties. Null for non-range properties."
},
"DefaultTextureName": {
"type": "string",
"description": "Default texture name for Texture properties. Null if not applicable."
},
"Attributes": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "Custom attributes applied to this property. Null if none."
}
},
"required": [
"NameId"
]
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"System.Collections.Generic.List(AIGD.SubshaderData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SubshaderData"
}
},
"AIGD.SubshaderData": {
"type": "object",
"properties": {
"Index": {
"type": "integer",
"description": "Index of this subshader within the shader."
},
"PassCount": {
"type": "integer",
"description": "Number of passes in this subshader."
},
"Passes": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PassData)",
"description": "List of passes in this subshader. Null if no passes."
}
},
"required": [
"Index",
"PassCount"
]
},
"System.Collections.Generic.List(AIGD.PassData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PassData"
}
},
"AIGD.PassData": {
"type": "object",
"properties": {
"Index": {
"type": "integer",
"description": "Index of this pass within the subshader."
},
"Name": {
"type": "string",
"description": "Name of the pass. Null if unnamed."
},
"SourceCode": {
"type": "string",
"description": "Source code of the pass. Null if unavailable."
}
},
"required": [
"Index"
]
},
"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"
}
},
"AIGD.ShaderData": {
"type": "object",
"properties": {
"Reference": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to the shader asset for future operations."
},
"Name": {
"type": "string",
"description": "Full name of the shader (e.g. 'Standard', 'Universal Render Pipeline/Lit')."
},
"IsSupported": {
"type": "boolean",
"description": "Whether the shader is supported on the current GPU and platform."
},
"RenderQueue": {
"type": "integer",
"description": "The render queue value of the shader."
},
"HasErrors": {
"type": "boolean",
"description": "Whether the shader has any compilation errors."
},
"PropertyCount": {
"type": "integer",
"description": "Number of properties exposed by the shader."
},
"PassCount": {
"type": "integer",
"description": "Total number of passes in the shader."
},
"RenderType": {
"type": "string",
"description": "The RenderType tag value from the first pass, if set."
},
"Messages": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderMessageData)",
"description": "Compilation messages including errors and warnings. Null if no messages."
},
"Properties": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderPropertyData)",
"description": "List of shader properties (uniforms). Null if the shader has no properties."
},
"Subshaders": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.SubshaderData)",
"description": "List of subshaders with their passes. Null if shader data is unavailable."
},
"View": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' is supplied. Null otherwise."
}
},
"required": [
"IsSupported",
"RenderQueue",
"HasErrors",
"PropertyCount",
"PassCount"
]
}
},
"required": [
"result"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool assets-shader-get-data --input '{
"assetRef": "string_value",
"includeMessages": "string_value",
"includeProperties": "string_value",
"includeSubshaders": "string_value",
"includeSourceCode": "string_value",
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-shader-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-shader-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `assetRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `includeMessages` | `any` | No | Include compilation error and warning messages. Default: true |
| `includeProperties` | `any` | No | Include shader properties (uniforms) list. Default: false |
| `includeSubshaders` | `any` | No | Include subshader and pass structure. Default: false |
| `includeSourceCode` | `any` | No | Include pass source code in subshader data. Requires 'includeSubshaders' to be true. Can produce very large responses. Default: false |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt against the underlying Shader asset. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View against the underlying Shader asset. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"includeMessages": {
"$ref": "#/$defs/System.Boolean"
},
"includeProperties": {
"$ref": "#/$defs/System.Boolean"
},
"includeSubshaders": {
"$ref": "#/$defs/System.Boolean"
},
"includeSourceCode": {
"$ref": "#/$defs/System.Boolean"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Boolean": {
"type": "boolean"
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"assetRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ShaderData"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"System.Collections.Generic.List(AIGD.ShaderMessageData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ShaderMessageData"
}
},
"AIGD.ShaderMessageData": {
"type": "object",
"properties": {
"Message": {
"type": "string",
"description": "The error or warning message text."
},
"Line": {
"type": "integer",
"description": "The line number in the shader source where the issue occurs."
},
"Severity": {
"type": "string",
"description": "Severity level (e.g. 'Error', 'Warning')."
},
"Platform": {
"type": "string",
"description": "The platform on which the error occurs (e.g. 'OpenGLCore', 'D3D11')."
}
},
"required": [
"Line"
]
},
"System.Collections.Generic.List(AIGD.ShaderPropertyData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ShaderPropertyData"
}
},
"AIGD.ShaderPropertyData": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Property name as used in shader code (e.g. '_MainTex', '_Color')."
},
"Description": {
"type": "string",
"description": "Human-readable description/display name of the property."
},
"Type": {
"type": "string",
"description": "Property type (e.g. 'Color', 'Float', 'Range', 'Texture', 'Vector', 'Int')."
},
"Flags": {
"type": "string",
"description": "Property flags (e.g. 'None', 'HideInInspector', 'PerRendererData')."
},
"NameId": {
"type": "integer",
"description": "The unique name ID for this property."
},
"RangeMin": {
"type": "number",
"description": "Minimum value for Range properties. Null for non-range properties."
},
"RangeMax": {
"type": "number",
"description": "Maximum value for Range properties. Null for non-range properties."
},
"DefaultTextureName": {
"type": "string",
"description": "Default texture name for Texture properties. Null if not applicable."
},
"Attributes": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "Custom attributes applied to this property. Null if none."
}
},
"required": [
"NameId"
]
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"System.Collections.Generic.List(AIGD.SubshaderData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SubshaderData"
}
},
"AIGD.SubshaderData": {
"type": "object",
"properties": {
"Index": {
"type": "integer",
"description": "Index of this subshader within the shader."
},
"PassCount": {
"type": "integer",
"description": "Number of passes in this subshader."
},
"Passes": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PassData)",
"description": "List of passes in this subshader. Null if no passes."
}
},
"required": [
"Index",
"PassCount"
]
},
"System.Collections.Generic.List(AIGD.PassData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PassData"
}
},
"AIGD.PassData": {
"type": "object",
"properties": {
"Index": {
"type": "integer",
"description": "Index of this pass within the subshader."
},
"Name": {
"type": "string",
"description": "Name of the pass. Null if unnamed."
},
"SourceCode": {
"type": "string",
"description": "Source code of the pass. Null if unavailable."
}
},
"required": [
"Index"
]
},
"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"
}
},
"AIGD.ShaderData": {
"type": "object",
"properties": {
"Reference": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to the shader asset for future operations."
},
"Name": {
"type": "string",
"description": "Full name of the shader (e.g. 'Standard', 'Universal Render Pipeline/Lit')."
},
"IsSupported": {
"type": "boolean",
"description": "Whether the shader is supported on the current GPU and platform."
},
"RenderQueue": {
"type": "integer",
"description": "The render queue value of the shader."
},
"HasErrors": {
"type": "boolean",
"description": "Whether the shader has any compilation errors."
},
"PropertyCount": {
"type": "integer",
"description": "Number of properties exposed by the shader."
},
"PassCount": {
"type": "integer",
"description": "Total number of passes in the shader."
},
"RenderType": {
"type": "string",
"description": "The RenderType tag value from the first pass, if set."
},
"Messages": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderMessageData)",
"description": "Compilation messages including errors and warnings. Null if no messages."
},
"Properties": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderPropertyData)",
"description": "List of shader properties (uniforms). Null if the shader has no properties."
},
"Subshaders": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.SubshaderData)",
"description": "List of subshaders with their passes. Null if shader data is unavailable."
},
"View": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' is supplied. Null otherwise."
}
},
"required": [
"IsSupported",
"RenderQueue",
"HasErrors",
"PropertyCount",
"PassCount"
]
}
},
"required": [
"result"
]
}
```
+82 -82
View File
@@ -1,86 +1,86 @@
---
name: assets-shader-list-all
description: List all shaders available in the project assets and packages, sorted by name. Use this to discover a valid `shaderName` for 'assets-material-create'.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / List Shaders
---
name: assets-shader-list-all
description: List all shaders available in the project assets and packages, sorted by name. Use this to discover a valid `shaderName` for 'assets-material-create'.
metadata:
generated-by: mcp-plugin-dotnet
---
# Assets / List Shaders
List all available shaders in the project assets and packages. Returns their names. Use this to find a shader name for 'assets-material-create' tool.
## Behavior
Enumerates shaders via `ShaderUtils.GetAllShaders`, filters out nulls, and returns the names alphabetically sorted.
## How to Call
```bash
unity-mcp-cli run-tool assets-shader-list-all --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-shader-list-all --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-shader-list-all --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"result"
]
}
```
Enumerates shaders via `ShaderUtils.GetAllShaders`, filters out nulls, and returns the names alphabetically sorted.
## How to Call
```bash
unity-mcp-cli run-tool assets-shader-list-all --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool assets-shader-list-all --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool assets-shader-list-all --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"result"
]
}
```
+60 -60
View File
@@ -1,64 +1,64 @@
---
name: console-clear-logs
description: Clear the MCP log cache (used by 'console-get-logs') and the Unity Editor Console window. Useful for isolating logs to a specific action by clearing the slate first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Console / Clear Logs
---
name: console-clear-logs
description: Clear the MCP log cache (used by 'console-get-logs') and the Unity Editor Console window. Useful for isolating logs to a specific action by clearing the slate first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Console / Clear Logs
Clears the MCP log cache (used by console-get-logs) and the Unity Editor Console window. Useful for isolating errors related to a specific action by clearing logs before performing the action.
## Behavior
Calls `Debug.ClearDeveloperConsole()` to wipe the Editor Console, then clears the MCP-side `LogCollector` cache so subsequent 'console-get-logs' calls only see new entries.
## How to Call
```bash
unity-mcp-cli run-tool console-clear-logs --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool console-clear-logs --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool console-clear-logs --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
Calls `Debug.ClearDeveloperConsole()` to wipe the Editor Console, then clears the MCP-side `LogCollector` cache so subsequent 'console-get-logs' calls only see new entries.
## How to Call
```bash
unity-mcp-cli run-tool console-clear-logs --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool console-clear-logs --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool console-clear-logs --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
+138 -138
View File
@@ -1,12 +1,12 @@
---
name: console-get-logs
description: Retrieve Unity Editor logs from the MCP plugin's `LogCollector`, optionally filtered by log type or time window. Useful for debugging and monitoring Editor activity.
metadata:
generated-by: mcp-plugin-dotnet
---
# Console / Get Logs
---
name: console-get-logs
description: Retrieve Unity Editor logs from the MCP plugin's `LogCollector`, optionally filtered by log type or time window. Useful for debugging and monitoring Editor activity.
metadata:
generated-by: mcp-plugin-dotnet
---
# Console / Get Logs
Retrieves Unity Editor logs. Useful for debugging and monitoring Unity Editor activity.
## Inputs
@@ -14,132 +14,132 @@ Retrieves Unity Editor logs. Useful for debugging and monitoring Unity Editor ac
- `maxEntries` (default 100, minimum 1) — caps the size of the returned array.
- `logTypeFilter` — Unity `LogType` filter; `null` returns all severities.
- `includeStackTrace` (default `false`) — include stack-trace strings in each entry.
- `lastMinutes` (default 0) — when non-zero, only logs from the last N minutes are returned.
## How to Call
```bash
unity-mcp-cli run-tool console-get-logs --input '{
"maxEntries": 0,
"logTypeFilter": "string_value",
"includeStackTrace": false,
"lastMinutes": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool console-get-logs --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool console-get-logs --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `maxEntries` | `integer` | No | Maximum number of log entries to return. Minimum: 1. Default: 100 |
| `logTypeFilter` | `any` | No | Filter by log type. 'null' means All. |
| `includeStackTrace` | `boolean` | No | Include stack traces in the output. Default: false |
| `lastMinutes` | `integer` | No | Return logs from the last N minutes. If 0, returns all available logs. Default: 0 |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"maxEntries": {
"type": "integer"
},
"logTypeFilter": {
"$ref": "#/$defs/UnityEngine.LogType"
},
"includeStackTrace": {
"type": "boolean"
},
"lastMinutes": {
"type": "integer"
}
},
"$defs": {
"UnityEngine.LogType": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry-1"
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.LogEntry": {
"type": "object",
"properties": {
"LogType": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
},
"Message": {
"type": "string"
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"StackTrace": {
"type": "string"
}
},
"required": [
"LogType",
"Timestamp"
]
},
"com.IvanMurzak.Unity.MCP.LogEntry-1": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry"
}
}
},
"required": [
"result"
]
}
```
- `lastMinutes` (default 0) — when non-zero, only logs from the last N minutes are returned.
## How to Call
```bash
unity-mcp-cli run-tool console-get-logs --input '{
"maxEntries": 0,
"logTypeFilter": "string_value",
"includeStackTrace": false,
"lastMinutes": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool console-get-logs --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool console-get-logs --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `maxEntries` | `integer` | No | Maximum number of log entries to return. Minimum: 1. Default: 100 |
| `logTypeFilter` | `any` | No | Filter by log type. 'null' means All. |
| `includeStackTrace` | `boolean` | No | Include stack traces in the output. Default: false |
| `lastMinutes` | `integer` | No | Return logs from the last N minutes. If 0, returns all available logs. Default: 0 |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"maxEntries": {
"type": "integer"
},
"logTypeFilter": {
"$ref": "#/$defs/UnityEngine.LogType"
},
"includeStackTrace": {
"type": "boolean"
},
"lastMinutes": {
"type": "integer"
}
},
"$defs": {
"UnityEngine.LogType": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry-1"
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.LogEntry": {
"type": "object",
"properties": {
"LogType": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
},
"Message": {
"type": "string"
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"StackTrace": {
"type": "string"
}
},
"required": [
"LogType",
"Timestamp"
]
},
"com.IvanMurzak.Unity.MCP.LogEntry-1": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry"
}
}
},
"required": [
"result"
]
}
```
@@ -1,127 +1,127 @@
---
name: editor-application-get-state
description: Return the current state of `UnityEditor.EditorApplication` — playmode, paused state, compilation state, and related flags.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Application / Get State
---
name: editor-application-get-state
description: Return the current state of `UnityEditor.EditorApplication` — playmode, paused state, compilation state, and related flags.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Application / Get State
Returns available information about 'UnityEditor.EditorApplication'. Use it to get information about the current state of the Unity Editor application. Such as: playmode, paused state, compilation state, etc.
## Behavior
Snapshots Editor state via `EditorStatsData.FromEditor()` on the main thread and returns the result.
## How to Call
```bash
unity-mcp-cli run-tool editor-application-get-state --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-application-get-state --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-application-get-state --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.EditorStatsData",
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"$defs": {
"AIGD.EditorStatsData": {
"type": "object",
"properties": {
"IsPlaying": {
"type": "boolean",
"description": "Whether the Editor is in Play mode."
},
"IsPaused": {
"type": "boolean",
"description": "Whether the Editor is paused."
},
"IsCompiling": {
"type": "boolean",
"description": "Is editor currently compiling scripts? (Read Only)"
},
"IsPlayingOrWillChangePlaymode": {
"type": "boolean",
"description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)"
},
"IsUpdating": {
"type": "boolean",
"description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)"
},
"ApplicationContentsPath": {
"type": "string",
"description": "Path to the Unity editor contents folder. (Read Only)"
},
"ApplicationPath": {
"type": "string",
"description": "Gets the path to the Unity Editor application. (Read Only)"
},
"TimeSinceStartup": {
"type": "number",
"description": "The time since the editor was started. (Read Only)"
}
},
"required": [
"IsPlaying",
"IsPaused",
"IsCompiling",
"IsPlayingOrWillChangePlaymode",
"IsUpdating",
"TimeSinceStartup"
],
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"required": [
"result"
]
}
```
Snapshots Editor state via `EditorStatsData.FromEditor()` on the main thread and returns the result.
## How to Call
```bash
unity-mcp-cli run-tool editor-application-get-state --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-application-get-state --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-application-get-state --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.EditorStatsData",
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"$defs": {
"AIGD.EditorStatsData": {
"type": "object",
"properties": {
"IsPlaying": {
"type": "boolean",
"description": "Whether the Editor is in Play mode."
},
"IsPaused": {
"type": "boolean",
"description": "Whether the Editor is paused."
},
"IsCompiling": {
"type": "boolean",
"description": "Is editor currently compiling scripts? (Read Only)"
},
"IsPlayingOrWillChangePlaymode": {
"type": "boolean",
"description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)"
},
"IsUpdating": {
"type": "boolean",
"description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)"
},
"ApplicationContentsPath": {
"type": "string",
"description": "Path to the Unity editor contents folder. (Read Only)"
},
"ApplicationPath": {
"type": "string",
"description": "Gets the path to the Unity Editor application. (Read Only)"
},
"TimeSinceStartup": {
"type": "number",
"description": "The time since the editor was started. (Read Only)"
}
},
"required": [
"IsPlaying",
"IsPaused",
"IsCompiling",
"IsPlayingOrWillChangePlaymode",
"IsUpdating",
"TimeSinceStartup"
],
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"required": [
"result"
]
}
```
@@ -1,12 +1,12 @@
---
name: editor-application-set-state
description: Start / stop / pause the Unity Editor 'playmode'. Use 'editor-application-get-state' to inspect the current state first. Throws if the project currently has compilation errors.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Application / Set State
---
name: editor-application-set-state
description: Start / stop / pause the Unity Editor 'playmode'. Use 'editor-application-get-state' to inspect the current state first. Throws if the project currently has compilation errors.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Application / Set State
Control the Unity Editor application state. You can start, stop, or pause the 'playmode'. Use 'editor-application-get-state' tool to get the current state first.
## Inputs
@@ -16,122 +16,122 @@ Control the Unity Editor application state. You can start, stop, or pause the 'p
## Behavior
Refuses any state change while `EditorUtility.scriptCompilationFailed` is true — instead throws with the compilation error details so the caller can fix them first. On success returns the post-change `EditorStatsData` snapshot.
## How to Call
```bash
unity-mcp-cli run-tool editor-application-set-state --input '{
"isPlaying": false,
"isPaused": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-application-set-state --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-application-set-state --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `isPlaying` | `boolean` | No | If true, the 'playmode' will be started. If false, the 'playmode' will be stopped. |
| `isPaused` | `boolean` | No | If true, the 'playmode' will be paused. If false, the 'playmode' will be resumed. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"isPlaying": {
"type": "boolean"
},
"isPaused": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.EditorStatsData",
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"$defs": {
"AIGD.EditorStatsData": {
"type": "object",
"properties": {
"IsPlaying": {
"type": "boolean",
"description": "Whether the Editor is in Play mode."
},
"IsPaused": {
"type": "boolean",
"description": "Whether the Editor is paused."
},
"IsCompiling": {
"type": "boolean",
"description": "Is editor currently compiling scripts? (Read Only)"
},
"IsPlayingOrWillChangePlaymode": {
"type": "boolean",
"description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)"
},
"IsUpdating": {
"type": "boolean",
"description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)"
},
"ApplicationContentsPath": {
"type": "string",
"description": "Path to the Unity editor contents folder. (Read Only)"
},
"ApplicationPath": {
"type": "string",
"description": "Gets the path to the Unity Editor application. (Read Only)"
},
"TimeSinceStartup": {
"type": "number",
"description": "The time since the editor was started. (Read Only)"
}
},
"required": [
"IsPlaying",
"IsPaused",
"IsCompiling",
"IsPlayingOrWillChangePlaymode",
"IsUpdating",
"TimeSinceStartup"
],
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"required": [
"result"
]
}
```
Refuses any state change while `EditorUtility.scriptCompilationFailed` is true — instead throws with the compilation error details so the caller can fix them first. On success returns the post-change `EditorStatsData` snapshot.
## How to Call
```bash
unity-mcp-cli run-tool editor-application-set-state --input '{
"isPlaying": false,
"isPaused": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-application-set-state --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-application-set-state --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `isPlaying` | `boolean` | No | If true, the 'playmode' will be started. If false, the 'playmode' will be stopped. |
| `isPaused` | `boolean` | No | If true, the 'playmode' will be paused. If false, the 'playmode' will be resumed. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"isPlaying": {
"type": "boolean"
},
"isPaused": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.EditorStatsData",
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"$defs": {
"AIGD.EditorStatsData": {
"type": "object",
"properties": {
"IsPlaying": {
"type": "boolean",
"description": "Whether the Editor is in Play mode."
},
"IsPaused": {
"type": "boolean",
"description": "Whether the Editor is paused."
},
"IsCompiling": {
"type": "boolean",
"description": "Is editor currently compiling scripts? (Read Only)"
},
"IsPlayingOrWillChangePlaymode": {
"type": "boolean",
"description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)"
},
"IsUpdating": {
"type": "boolean",
"description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)"
},
"ApplicationContentsPath": {
"type": "string",
"description": "Path to the Unity editor contents folder. (Read Only)"
},
"ApplicationPath": {
"type": "string",
"description": "Gets the path to the Unity Editor application. (Read Only)"
},
"TimeSinceStartup": {
"type": "number",
"description": "The time since the editor was started. (Read Only)"
}
},
"required": [
"IsPlaying",
"IsPaused",
"IsCompiling",
"IsPlayingOrWillChangePlaymode",
"IsUpdating",
"TimeSinceStartup"
],
"description": "Available information about 'UnityEditor.EditorApplication'."
}
},
"required": [
"result"
]
}
```
+238 -238
View File
@@ -1,12 +1,12 @@
---
name: editor-selection-get
description: Get information about the current Selection in the Unity Editor — active object, active transform, selected GameObjects, transforms, instance IDs, and asset GUIDs (each enrichment is opt-in). Pair with 'editor-selection-set' to change the selection.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Selection / Get
---
name: editor-selection-get
description: Get information about the current Selection in the Unity Editor — active object, active transform, selected GameObjects, transforms, instance IDs, and asset GUIDs (each enrichment is opt-in). Pair with 'editor-selection-set' to change the selection.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Selection / Get
Get information about the current Selection in the Unity Editor. Use 'editor-selection-set' tool to set the selection.
## Toggles (default off where indicated to keep responses small)
@@ -18,232 +18,232 @@ Get information about the current Selection in the Unity Editor. Use 'editor-sel
- `includeActiveObject` (default `true`) — populate `ActiveObject` as a generic `ObjectRef`.
- `includeActiveTransform` (default `true`) — populate `ActiveTransform` as a `ComponentRef`.
`ActiveGameObject` and `ActiveInstanceID` are always populated.
## How to Call
```bash
unity-mcp-cli run-tool editor-selection-get --input '{
"includeGameObjects": false,
"includeTransforms": false,
"includeInstanceIDs": false,
"includeAssetGUIDs": false,
"includeActiveObject": false,
"includeActiveTransform": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-selection-get --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-selection-get --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `includeGameObjects` | `boolean` | No | |
| `includeTransforms` | `boolean` | No | |
| `includeInstanceIDs` | `boolean` | No | |
| `includeAssetGUIDs` | `boolean` | No | |
| `includeActiveObject` | `boolean` | No | |
| `includeActiveTransform` | `boolean` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"includeGameObjects": {
"type": "boolean"
},
"includeTransforms": {
"type": "boolean"
},
"includeInstanceIDs": {
"type": "boolean"
},
"includeAssetGUIDs": {
"type": "boolean"
},
"includeActiveObject": {
"type": "boolean"
},
"includeActiveTransform": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SelectionData"
}
},
"$defs": {
"AIGD.GameObjectRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"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"
},
"AIGD.ComponentRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
}
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"System.Int32-1": {
"type": "array",
"items": {
"type": "integer"
}
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"AIGD.SelectionData": {
"type": "object",
"properties": {
"GameObjects": {
"$ref": "#/$defs/AIGD.GameObjectRef-1",
"description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects."
},
"Transforms": {
"$ref": "#/$defs/AIGD.ComponentRef-1",
"description": "Returns the top level selection, excluding Prefabs."
},
"InstanceIDs": {
"$ref": "#/$defs/System.Int32-1",
"description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects."
},
"AssetGUIDs": {
"$ref": "#/$defs/System.String-1",
"description": "Returns the guids of the selected assets."
},
"ActiveGameObject": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Returns the active game object. (The one shown in the inspector)."
},
"ActiveInstanceID": {
"type": "integer",
"description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects"
},
"ActiveObject": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects."
},
"ActiveTransform": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Returns the active transform. (The one shown in the inspector)."
}
},
"required": [
"ActiveInstanceID"
]
}
},
"required": [
"result"
]
}
```
`ActiveGameObject` and `ActiveInstanceID` are always populated.
## How to Call
```bash
unity-mcp-cli run-tool editor-selection-get --input '{
"includeGameObjects": false,
"includeTransforms": false,
"includeInstanceIDs": false,
"includeAssetGUIDs": false,
"includeActiveObject": false,
"includeActiveTransform": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-selection-get --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-selection-get --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `includeGameObjects` | `boolean` | No | |
| `includeTransforms` | `boolean` | No | |
| `includeInstanceIDs` | `boolean` | No | |
| `includeAssetGUIDs` | `boolean` | No | |
| `includeActiveObject` | `boolean` | No | |
| `includeActiveTransform` | `boolean` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"includeGameObjects": {
"type": "boolean"
},
"includeTransforms": {
"type": "boolean"
},
"includeInstanceIDs": {
"type": "boolean"
},
"includeAssetGUIDs": {
"type": "boolean"
},
"includeActiveObject": {
"type": "boolean"
},
"includeActiveTransform": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SelectionData"
}
},
"$defs": {
"AIGD.GameObjectRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"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"
},
"AIGD.ComponentRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
}
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"System.Int32-1": {
"type": "array",
"items": {
"type": "integer"
}
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"AIGD.SelectionData": {
"type": "object",
"properties": {
"GameObjects": {
"$ref": "#/$defs/AIGD.GameObjectRef-1",
"description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects."
},
"Transforms": {
"$ref": "#/$defs/AIGD.ComponentRef-1",
"description": "Returns the top level selection, excluding Prefabs."
},
"InstanceIDs": {
"$ref": "#/$defs/System.Int32-1",
"description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects."
},
"AssetGUIDs": {
"$ref": "#/$defs/System.String-1",
"description": "Returns the guids of the selected assets."
},
"ActiveGameObject": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Returns the active game object. (The one shown in the inspector)."
},
"ActiveInstanceID": {
"type": "integer",
"description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects"
},
"ActiveObject": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects."
},
"ActiveTransform": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Returns the active transform. (The one shown in the inspector)."
}
},
"required": [
"ActiveInstanceID"
]
}
},
"required": [
"result"
]
}
```
+238 -238
View File
@@ -1,12 +1,12 @@
---
name: editor-selection-set
description: Set the current Selection in the Unity Editor to the provided objects. All `ObjectRef`s must resolve to existing Unity objects; otherwise the call throws. Use 'editor-selection-get' to inspect the current selection first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Selection / Set
---
name: editor-selection-set
description: Set the current Selection in the Unity Editor to the provided objects. All `ObjectRef`s must resolve to existing Unity objects; otherwise the call throws. Use 'editor-selection-get' to inspect the current selection first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Editor / Selection / Set
Set the current Selection in the Unity Editor to the provided objects. Use 'editor-selection-get' tool to get the current selection first.
## Inputs
@@ -15,232 +15,232 @@ Set the current Selection in the Unity Editor to the provided objects. Use 'edit
## Behavior
Assigns the resolved array to `Selection.objects`, then calls `UnityEditorInternal.InternalEditorUtility.RepaintAllViews()` so Hierarchy/Inspector reflect the change. Returns the post-change `SelectionData` snapshot.
## How to Call
```bash
unity-mcp-cli run-tool editor-selection-set --input '{
"select": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-selection-set --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-selection-set --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `select` | `any` | Yes | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"select": {
"$ref": "#/$defs/AIGD.ObjectRef-1"
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"AIGD.ObjectRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}
}
},
"required": [
"select"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SelectionData"
}
},
"$defs": {
"AIGD.GameObjectRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"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"
},
"AIGD.ComponentRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
}
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"System.Int32-1": {
"type": "array",
"items": {
"type": "integer"
}
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"AIGD.SelectionData": {
"type": "object",
"properties": {
"GameObjects": {
"$ref": "#/$defs/AIGD.GameObjectRef-1",
"description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects."
},
"Transforms": {
"$ref": "#/$defs/AIGD.ComponentRef-1",
"description": "Returns the top level selection, excluding Prefabs."
},
"InstanceIDs": {
"$ref": "#/$defs/System.Int32-1",
"description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects."
},
"AssetGUIDs": {
"$ref": "#/$defs/System.String-1",
"description": "Returns the guids of the selected assets."
},
"ActiveGameObject": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Returns the active game object. (The one shown in the inspector)."
},
"ActiveInstanceID": {
"type": "integer",
"description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects"
},
"ActiveObject": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects."
},
"ActiveTransform": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Returns the active transform. (The one shown in the inspector)."
}
},
"required": [
"ActiveInstanceID"
]
}
},
"required": [
"result"
]
}
```
Assigns the resolved array to `Selection.objects`, then calls `UnityEditorInternal.InternalEditorUtility.RepaintAllViews()` so Hierarchy/Inspector reflect the change. Returns the post-change `SelectionData` snapshot.
## How to Call
```bash
unity-mcp-cli run-tool editor-selection-set --input '{
"select": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool editor-selection-set --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool editor-selection-set --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `select` | `any` | Yes | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"select": {
"$ref": "#/$defs/AIGD.ObjectRef-1"
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"AIGD.ObjectRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}
}
},
"required": [
"select"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SelectionData"
}
},
"$defs": {
"AIGD.GameObjectRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"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"
},
"AIGD.ComponentRef-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
}
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"System.Int32-1": {
"type": "array",
"items": {
"type": "integer"
}
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"AIGD.SelectionData": {
"type": "object",
"properties": {
"GameObjects": {
"$ref": "#/$defs/AIGD.GameObjectRef-1",
"description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects."
},
"Transforms": {
"$ref": "#/$defs/AIGD.ComponentRef-1",
"description": "Returns the top level selection, excluding Prefabs."
},
"InstanceIDs": {
"$ref": "#/$defs/System.Int32-1",
"description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects."
},
"AssetGUIDs": {
"$ref": "#/$defs/System.String-1",
"description": "Returns the guids of the selected assets."
},
"ActiveGameObject": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Returns the active game object. (The one shown in the inspector)."
},
"ActiveInstanceID": {
"type": "integer",
"description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects"
},
"ActiveObject": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects."
},
"ActiveTransform": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Returns the active transform. (The one shown in the inspector)."
}
},
"required": [
"ActiveInstanceID"
]
}
},
"required": [
"result"
]
}
```
+185 -185
View File
@@ -1,12 +1,12 @@
---
name: gameobject-component-add
description: Add one or more Components to a GameObject in the opened Prefab or active Scene. Component types are looked up by full name (with namespace) or by class-name fallback. Use 'gameobject-find' to locate the host GameObject and 'gameobject-component-list-all' to discover valid component type names.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Add
---
name: gameobject-component-add
description: Add one or more Components to a GameObject in the opened Prefab or active Scene. Component types are looked up by full name (with namespace) or by class-name fallback. Use 'gameobject-find' to locate the host GameObject and 'gameobject-component-list-all' to discover valid component type names.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Add
Add Component to GameObject in opened Prefab or in a Scene. Use 'gameobject-find' tool to find the target GameObject first. Use 'gameobject-component-list-all' tool to find the component type names to add.
## Inputs
@@ -16,179 +16,179 @@ Add Component to GameObject in opened Prefab or in a Scene. Use 'gameobject-find
## Behavior
Per-name errors (unknown type, type not assignable to `UnityEngine.Component`, add-failed/duplicate) are accumulated in `response.Errors` / `response.Warnings` instead of throwing, so a single bad name does not abort the whole batch. Successful additions populate `response.AddedComponents` with `ComponentDataShallow` snapshots.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-add --input '{
"componentNames": "string_value",
"gameObjectRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-add --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-add --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `componentNames` | `any` | Yes | Full name of the Component. It should include full namespace path and the class name. |
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"componentNames": {
"$ref": "#/$defs/System.String-1"
},
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"componentNames",
"gameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AddComponentResponse"
}
},
"$defs": {
"System.Collections.Generic.List(AIGD.ComponentDataShallow)": {
"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"
]
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.AddComponentResponse": {
"type": "object",
"properties": {
"AddedComponents": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ComponentDataShallow)",
"description": "List of successfully added components."
},
"Messages": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of success messages for added components."
},
"Warnings": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of warnings encountered during component addition."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during component addition."
}
}
}
},
"required": [
"result"
]
}
```
Per-name errors (unknown type, type not assignable to `UnityEngine.Component`, add-failed/duplicate) are accumulated in `response.Errors` / `response.Warnings` instead of throwing, so a single bad name does not abort the whole batch. Successful additions populate `response.AddedComponents` with `ComponentDataShallow` snapshots.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-add --input '{
"componentNames": "string_value",
"gameObjectRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-add --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-add --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `componentNames` | `any` | Yes | Full name of the Component. It should include full namespace path and the class name. |
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"componentNames": {
"$ref": "#/$defs/System.String-1"
},
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"componentNames",
"gameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.AddComponentResponse"
}
},
"$defs": {
"System.Collections.Generic.List(AIGD.ComponentDataShallow)": {
"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"
]
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.AddComponentResponse": {
"type": "object",
"properties": {
"AddedComponents": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ComponentDataShallow)",
"description": "List of successfully added components."
},
"Messages": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of success messages for added components."
},
"Warnings": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of warnings encountered during component addition."
},
"Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during component addition."
}
}
}
},
"required": [
"result"
]
}
```
@@ -1,12 +1,12 @@
---
name: gameobject-component-destroy
description: Destroy one or more Components from a target GameObject. Missing (null) components are skipped — they cannot be destroyed. Use 'gameobject-find' and 'gameobject-component-get' to identify the components first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Destroy
---
name: gameobject-component-destroy
description: Destroy one or more Components from a target GameObject. Missing (null) components are skipped — they cannot be destroyed. Use 'gameobject-find' and 'gameobject-component-get' to identify the components first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Destroy
Destroy one or many components from target GameObject. Can't destroy missed components. Use 'gameobject-find' tool to find the target GameObject and 'gameobject-component-get' to get component details first.
## Inputs
@@ -16,186 +16,186 @@ Destroy one or many components from target GameObject. Can't destroy missed comp
## Behavior
Iterates `go.GetComponents<Component>()`, skipping null entries (missing scripts). For each non-null component that matches one of `destroyComponentRefs`, the tool snapshots a `ComponentRef`, calls `Object.DestroyImmediate`, and records the destroyed reference. If no component matches at all, throws with the help text from `Error.NotFoundComponents` (which includes a preview of all available components on the GameObject).
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-destroy --input '{
"gameObjectRef": "string_value",
"destroyComponentRefs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-destroy --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-destroy --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `destroyComponentRefs` | `any` | Yes | Component reference array. Used to find Component at GameObject. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"destroyComponentRefs": {
"$ref": "#/$defs/AIGD.ComponentRefList"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.ComponentRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
},
"description": "Component reference array. Used to find Component at GameObject."
}
},
"required": [
"gameObjectRef",
"destroyComponentRefs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.DestroyComponentsResponse"
}
},
"$defs": {
"AIGD.ComponentRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
},
"description": "Component reference array. Used to find Component at GameObject."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.DestroyComponentsResponse": {
"type": "object",
"properties": {
"DestroyedComponents": {
"$ref": "#/$defs/AIGD.ComponentRefList",
"description": "List of destroyed components."
}
}
}
},
"required": [
"result"
]
}
```
Iterates `go.GetComponents<Component>()`, skipping null entries (missing scripts). For each non-null component that matches one of `destroyComponentRefs`, the tool snapshots a `ComponentRef`, calls `Object.DestroyImmediate`, and records the destroyed reference. If no component matches at all, throws with the help text from `Error.NotFoundComponents` (which includes a preview of all available components on the GameObject).
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-destroy --input '{
"gameObjectRef": "string_value",
"destroyComponentRefs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-destroy --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-destroy --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `destroyComponentRefs` | `any` | Yes | Component reference array. Used to find Component at GameObject. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"destroyComponentRefs": {
"$ref": "#/$defs/AIGD.ComponentRefList"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.ComponentRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
},
"description": "Component reference array. Used to find Component at GameObject."
}
},
"required": [
"gameObjectRef",
"destroyComponentRefs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.DestroyComponentsResponse"
}
},
"$defs": {
"AIGD.ComponentRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject."
},
"description": "Component reference array. Used to find Component at GameObject."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.DestroyComponentsResponse": {
"type": "object",
"properties": {
"DestroyedComponents": {
"$ref": "#/$defs/AIGD.ComponentRefList",
"description": "List of destroyed components."
}
}
}
},
"required": [
"result"
]
}
```
+322 -322
View File
@@ -1,12 +1,12 @@
---
name: gameobject-component-get
description: Get detailed information about a specific Component on a GameObject — type, enabled state, and (optionally) serialized fields and properties. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'gameobject-find' to list components first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Get
---
name: gameobject-component-get
description: Get detailed information about a specific Component on a GameObject — type, enabled state, and (optionally) serialized fields and properties. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Use 'gameobject-find' to list components first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Get
Get detailed information about a specific Component on a GameObject. Returns component type, enabled state, and optionally serialized fields and properties. Use this to inspect component data before modifying it. Use 'gameobject-find' tool to get the list of all components on the GameObject.
## Inputs
@@ -23,316 +23,316 @@ Supply `paths` (a list of paths) to read only the listed fields/elements via `Re
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-get --input '{
"gameObjectRef": "string_value",
"componentRef": "string_value",
"includeFields": false,
"includeProperties": false,
"deepSerialization": false,
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-get --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-get --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `componentRef` | `any` | Yes | Component reference. Used to find a Component at GameObject. |
| `includeFields` | `boolean` | No | Include serialized fields of the component. |
| `includeProperties` | `boolean` | No | Include serialized properties of the component. |
| `deepSerialization` | `boolean` | No | Performs deep serialization including all nested objects. Otherwise, only serializes top-level members. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. When supplied, the legacy 'Fields'/'Properties' lists are skipped and the result is returned in 'View'. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View. When supplied, the legacy 'Fields'/'Properties' lists are skipped and the filtered subtree is returned in 'View'. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef"
},
"includeFields": {
"type": "boolean"
},
"includeProperties": {
"type": "boolean"
},
"deepSerialization": {
"type": "boolean"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"gameObjectRef",
"componentRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GetComponentResponse"
}
},
"$defs": {
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.ComponentDataShallow": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer"
},
"typeName": {
"type": "string"
},
"isEnabled": {
"type": "string",
"enum": [
"False",
"True",
"NA"
]
}
},
"required": [
"instanceID",
"isEnabled"
]
},
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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"
}
},
"AIGD.GetComponentResponse": {
"type": "object",
"properties": {
"Reference": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Reference to the component for future operations."
},
"Index": {
"type": "integer",
"description": "Index of the component in the GameObject's component list."
},
"Component": {
"$ref": "#/$defs/AIGD.ComponentDataShallow",
"description": "Basic component information (type, enabled state)."
},
"Fields": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)",
"description": "Serialized fields of the component. Populated only on the legacy code path (no 'paths' / no 'viewQuery')."
},
"Properties": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)",
"description": "Serialized properties of the component. Populated only on the legacy code path (no 'paths' / no 'viewQuery')."
},
"View": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' was supplied. Null otherwise."
}
},
"required": [
"Index"
]
}
},
"required": [
"result"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-get --input '{
"gameObjectRef": "string_value",
"componentRef": "string_value",
"includeFields": false,
"includeProperties": false,
"deepSerialization": false,
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-get --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-get --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `componentRef` | `any` | Yes | Component reference. Used to find a Component at GameObject. |
| `includeFields` | `boolean` | No | Include serialized fields of the component. |
| `includeProperties` | `boolean` | No | Include serialized properties of the component. |
| `deepSerialization` | `boolean` | No | Performs deep serialization including all nested objects. Otherwise, only serializes top-level members. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. When supplied, the legacy 'Fields'/'Properties' lists are skipped and the result is returned in 'View'. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View. When supplied, the legacy 'Fields'/'Properties' lists are skipped and the filtered subtree is returned in 'View'. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef"
},
"includeFields": {
"type": "boolean"
},
"includeProperties": {
"type": "boolean"
},
"deepSerialization": {
"type": "boolean"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"gameObjectRef",
"componentRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GetComponentResponse"
}
},
"$defs": {
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.ComponentDataShallow": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer"
},
"typeName": {
"type": "string"
},
"isEnabled": {
"type": "string",
"enum": [
"False",
"True",
"NA"
]
}
},
"required": [
"instanceID",
"isEnabled"
]
},
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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"
}
},
"AIGD.GetComponentResponse": {
"type": "object",
"properties": {
"Reference": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Reference to the component for future operations."
},
"Index": {
"type": "integer",
"description": "Index of the component in the GameObject's component list."
},
"Component": {
"$ref": "#/$defs/AIGD.ComponentDataShallow",
"description": "Basic component information (type, enabled state)."
},
"Fields": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)",
"description": "Serialized fields of the component. Populated only on the legacy code path (no 'paths' / no 'viewQuery')."
},
"Properties": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)",
"description": "Serialized properties of the component. Populated only on the legacy code path (no 'paths' / no 'viewQuery')."
},
"View": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' was supplied. Null otherwise."
}
},
"required": [
"Index"
]
}
},
"required": [
"result"
]
}
```
@@ -1,12 +1,12 @@
---
name: gameobject-component-list-all
description: List the fully-qualified C# type names of every concrete `UnityEngine.Component` subclass available in the project. Paginated (default 5/page, max 500). Use this to find a valid `componentName` for 'gameobject-component-add'.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / List All
---
name: gameobject-component-list-all
description: List the fully-qualified C# type names of every concrete `UnityEngine.Component` subclass available in the project. Paginated (default 5/page, max 500). Use this to find a valid `componentName` for 'gameobject-component-add'.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / List All
List C# class names extended from UnityEngine.Component. Use this to find component type names for 'gameobject-component-add' tool. Results are paginated to avoid overwhelming responses.
## Inputs
@@ -17,117 +17,117 @@ List C# class names extended from UnityEngine.Component. Use this to find compon
## Behavior
Enumerates `AllComponentTypes` (every non-abstract subclass of `UnityEngine.Component`), filters by `search` if supplied, then returns a `ComponentListResult` containing the requested page plus `TotalCount` / `TotalPages` so the caller can iterate.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-list-all --input '{
"search": "string_value",
"page": 0,
"pageSize": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-list-all --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-list-all --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `search` | `string` | No | Substring for searching components. Could be empty. |
| `page` | `integer` | No | Page number (0-based). Default is 0. |
| `pageSize` | `integer` | No | Number of items per page. Default is 5. Max is 500. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"search": {
"type": "string"
},
"page": {
"type": "integer"
},
"pageSize": {
"type": "integer"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ComponentListResult"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ComponentListResult": {
"type": "object",
"properties": {
"Items": {
"$ref": "#/$defs/System.String-1",
"description": "Array of component type names for the current page."
},
"Page": {
"type": "integer",
"description": "Current page number (0-based)."
},
"PageSize": {
"type": "integer",
"description": "Number of items per page."
},
"TotalCount": {
"type": "integer",
"description": "Total number of matching components."
},
"TotalPages": {
"type": "integer",
"description": "Total number of pages available."
}
},
"required": [
"Page",
"PageSize",
"TotalCount",
"TotalPages"
]
}
},
"required": [
"result"
]
}
```
Enumerates `AllComponentTypes` (every non-abstract subclass of `UnityEngine.Component`), filters by `search` if supplied, then returns a `ComponentListResult` containing the requested page plus `TotalCount` / `TotalPages` so the caller can iterate.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-list-all --input '{
"search": "string_value",
"page": 0,
"pageSize": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-list-all --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-list-all --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `search` | `string` | No | Substring for searching components. Could be empty. |
| `page` | `integer` | No | Page number (0-based). Default is 0. |
| `pageSize` | `integer` | No | Number of items per page. Default is 5. Max is 500. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"search": {
"type": "string"
},
"page": {
"type": "integer"
},
"pageSize": {
"type": "integer"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ComponentListResult"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ComponentListResult": {
"type": "object",
"properties": {
"Items": {
"$ref": "#/$defs/System.String-1",
"description": "Array of component type names for the current page."
},
"Page": {
"type": "integer",
"description": "Current page number (0-based)."
},
"PageSize": {
"type": "integer",
"description": "Number of items per page."
},
"TotalCount": {
"type": "integer",
"description": "Total number of matching components."
},
"TotalPages": {
"type": "integer",
"description": "Total number of pages available."
}
},
"required": [
"Page",
"PageSize",
"TotalCount",
"TotalPages"
]
}
},
"required": [
"result"
]
}
```
@@ -1,12 +1,12 @@
---
name: gameobject-component-modify
description: Modify a specific Component on a GameObject in opened Prefab or in a Scene. Allows direct modification of component fields and properties without wrapping in GameObject structure. Use 'gameobject-component-get' first to inspect the component structure before modifying. Three modification surfaces are available (componentDiff, pathPatches, jsonPatch) — see the skill body for details.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Modify
---
name: gameobject-component-modify
description: Modify a specific Component on a GameObject in opened Prefab or in a Scene. Allows direct modification of component fields and properties without wrapping in GameObject structure. Use 'gameobject-component-get' first to inspect the component structure before modifying. Three modification surfaces are available (componentDiff, pathPatches, jsonPatch) — see the skill body for details.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Component / Modify
## Three modification surfaces
Use whichever fits the task:
@@ -19,305 +19,305 @@ When more than one is supplied they run in this order: `jsonPatch` → `pathPatc
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-modify --input '{
"gameObjectRef": "string_value",
"componentRef": "string_value",
"componentDiff": "string_value",
"pathPatches": "string_value",
"jsonPatch": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `componentRef` | `any` | Yes | Component reference. Used to find a Component at GameObject. |
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-component-modify --input '{
"gameObjectRef": "string_value",
"componentRef": "string_value",
"componentDiff": "string_value",
"pathPatches": "string_value",
"jsonPatch": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-component-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-component-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `componentRef` | `any` | Yes | Component reference. Used to find a Component at GameObject. |
| `componentDiff` | `any` | No | Optional. The full component data to apply (legacy path). Should contain 'fields' and/or 'props' with the values to modify.
Only include the fields/properties you want to change.
Any unknown or invalid fields and properties will be reported in the response. |
| `pathPatches` | `any` | No | Optional. List of path-scoped patches routed through Reflector.TryModifyAt. Each entry targets one field/element/entry by path. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. |
| `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. Allows multiple fields at any depth to be updated in a single call. Use '$type' for compatible-subtype replacement. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef"
},
"componentDiff": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
},
"jsonPatch": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
}
},
"required": [
"gameObjectRef",
"componentRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ModifyComponentResponse"
}
},
"$defs": {
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.ComponentDataShallow": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer"
},
"typeName": {
"type": "string"
},
"isEnabled": {
"type": "string",
"enum": [
"False",
"True",
"NA"
]
}
},
"required": [
"instanceID",
"isEnabled"
]
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ModifyComponentResponse": {
"type": "object",
"properties": {
"Success": {
"type": "boolean",
"description": "Whether the modification was successful."
},
"Reference": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Reference to the modified component."
},
"Index": {
"type": "integer",
"description": "Index of the component in the GameObject's component list."
},
"Component": {
"$ref": "#/$defs/AIGD.ComponentDataShallow",
"description": "Updated component information after modification."
},
"Logs": {
"$ref": "#/$defs/System.String-1",
"description": "Log of modifications made and any warnings/errors encountered."
}
},
"required": [
"Success",
"Index"
]
}
},
"required": [
"result"
]
}
```
Any unknown or invalid fields and properties will be reported in the response. |
| `pathPatches` | `any` | No | Optional. List of path-scoped patches routed through Reflector.TryModifyAt. Each entry targets one field/element/entry by path. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. |
| `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. Allows multiple fields at any depth to be updated in a single call. Use '$type' for compatible-subtype replacement. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef"
},
"componentDiff": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
},
"jsonPatch": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
}
},
"required": [
"gameObjectRef",
"componentRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ModifyComponentResponse"
}
},
"$defs": {
"AIGD.ComponentRef": {
"type": "object",
"properties": {
"index": {
"type": "integer",
"description": "Component 'index' attached to a gameObject. The first index is '0' and that is usually Transform or RectTransform. Priority: 2. Default value is -1."
},
"typeName": {
"type": "string",
"description": "Component type full name. Sample 'UnityEngine.Transform'. If the gameObject has two components of the same type, the output component is unpredictable. Priority: 3. Default value is null."
},
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"index",
"instanceID"
],
"description": "Component reference. Used to find a Component at GameObject."
},
"AIGD.ComponentDataShallow": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer"
},
"typeName": {
"type": "string"
},
"isEnabled": {
"type": "string",
"enum": [
"False",
"True",
"NA"
]
}
},
"required": [
"instanceID",
"isEnabled"
]
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ModifyComponentResponse": {
"type": "object",
"properties": {
"Success": {
"type": "boolean",
"description": "Whether the modification was successful."
},
"Reference": {
"$ref": "#/$defs/AIGD.ComponentRef",
"description": "Reference to the modified component."
},
"Index": {
"type": "integer",
"description": "Index of the component in the GameObject's component list."
},
"Component": {
"$ref": "#/$defs/AIGD.ComponentDataShallow",
"description": "Updated component information after modification."
},
"Logs": {
"$ref": "#/$defs/System.String-1",
"description": "Log of modifications made and any warnings/errors encountered."
}
},
"required": [
"Success",
"Index"
]
}
},
"required": [
"result"
]
}
```
+215 -215
View File
@@ -1,12 +1,12 @@
---
name: gameobject-create
description: Create a new GameObject in the currently opened Prefab or active Scene, optionally parented under another GameObject and pre-positioned. Pass `primitiveType` to spawn a Unity primitive (Cube, Sphere, etc.) instead of an empty GameObject.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Create
---
name: gameobject-create
description: Create a new GameObject in the currently opened Prefab or active Scene, optionally parented under another GameObject and pre-positioned. Pass `primitiveType` to spawn a Unity primitive (Cube, Sphere, etc.) instead of an empty GameObject.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Create
Create a new GameObject in opened Prefab or in a Scene. If needed - provide proper 'position', 'rotation' and 'scale' to reduce amount of operations.
## Inputs
@@ -15,209 +15,209 @@ Create a new GameObject in opened Prefab or in a Scene. If needed - provide prop
- `parentGameObjectRef` (optional) — when provided, the new GameObject is parented under this one (`SetParent(parent, worldPositionStays: false)`); otherwise it's created at scene/prefab root.
- `position` / `rotation` / `scale` — optional transform; default to zero / zero / one.
- `isLocalSpace` — when `true`, applies the transform in local space relative to the parent.
- `primitiveType` (optional) — when set, the GameObject is created via `GameObject.CreatePrimitive` (adds the appropriate renderer/collider for the primitive shape).
## How to Call
```bash
unity-mcp-cli run-tool gameobject-create --input '{
"name": "string_value",
"parentGameObjectRef": "string_value",
"position": "string_value",
"rotation": "string_value",
"scale": "string_value",
"isLocalSpace": false,
"primitiveType": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `name` | `string` | Yes | Name of the new GameObject. |
| `parentGameObjectRef` | `any` | No | Parent GameObject reference. If not provided, the GameObject will be created at the root of the scene or prefab. |
| `position` | `any` | No | Transform position of the GameObject. |
| `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. |
| `scale` | `any` | No | Transform scale of the GameObject. |
| `isLocalSpace` | `boolean` | No | World or Local space of transform. |
| `primitiveType` | `any` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"parentGameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"position": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"rotation": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"scale": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"isLocalSpace": {
"type": "boolean"
},
"primitiveType": {
"$ref": "#/$defs/UnityEngine.PrimitiveType"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"UnityEngine.Vector3": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
},
"UnityEngine.PrimitiveType": {
"type": "string",
"enum": [
"Sphere",
"Capsule",
"Cylinder",
"Cube",
"Plane",
"Quad"
]
}
},
"required": [
"name"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"result"
]
}
```
- `primitiveType` (optional) — when set, the GameObject is created via `GameObject.CreatePrimitive` (adds the appropriate renderer/collider for the primitive shape).
## How to Call
```bash
unity-mcp-cli run-tool gameobject-create --input '{
"name": "string_value",
"parentGameObjectRef": "string_value",
"position": "string_value",
"rotation": "string_value",
"scale": "string_value",
"isLocalSpace": false,
"primitiveType": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `name` | `string` | Yes | Name of the new GameObject. |
| `parentGameObjectRef` | `any` | No | Parent GameObject reference. If not provided, the GameObject will be created at the root of the scene or prefab. |
| `position` | `any` | No | Transform position of the GameObject. |
| `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. |
| `scale` | `any` | No | Transform scale of the GameObject. |
| `isLocalSpace` | `boolean` | No | World or Local space of transform. |
| `primitiveType` | `any` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"name": {
"type": "string"
},
"parentGameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"position": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"rotation": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"scale": {
"$ref": "#/$defs/UnityEngine.Vector3"
},
"isLocalSpace": {
"type": "boolean"
},
"primitiveType": {
"$ref": "#/$defs/UnityEngine.PrimitiveType"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
},
"UnityEngine.Vector3": {
"type": "object",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
},
"z": {
"type": "number"
}
},
"required": [
"x",
"y",
"z"
],
"additionalProperties": false
},
"UnityEngine.PrimitiveType": {
"type": "string",
"enum": [
"Sphere",
"Capsule",
"Cylinder",
"Cube",
"Plane",
"Quad"
]
}
},
"required": [
"name"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"result"
]
}
```
+137 -137
View File
@@ -1,141 +1,141 @@
---
name: gameobject-destroy
description: Destroy a GameObject (and all nested children) in the currently opened Prefab or active Scene. Returns the destroyed GameObject's name, path, and instance ID for confirmation. Use 'gameobject-find' to locate the target first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Destroy
---
name: gameobject-destroy
description: Destroy a GameObject (and all nested children) in the currently opened Prefab or active Scene. Returns the destroyed GameObject's name, path, and instance ID for confirmation. Use 'gameobject-find' to locate the target first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Destroy
Destroy GameObject and all nested GameObjects recursively in opened Prefab or in a Scene. Use 'gameobject-find' tool to find the target GameObject first.
## Behavior
Validates the `gameObjectRef`, resolves it on the main thread, then calls `Object.DestroyImmediate` (the immediate variant is required for Editor-mode operations). Returns a `DestroyGameObjectResult` containing `DestroyedName`, `DestroyedPath`, and `DestroyedInstanceId` so the caller has a record of what was removed.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-destroy --input '{
"gameObjectRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-destroy --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-destroy --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.DestroyGameObjectResult"
}
},
"$defs": {
"AIGD.DestroyGameObjectResult": {
"type": "object",
"properties": {
"DestroyedName": {
"type": "string",
"description": "Name of the destroyed GameObject."
},
"DestroyedPath": {
"type": "string",
"description": "Hierarchy path of the destroyed GameObject."
},
"DestroyedInstanceId": {
"type": "integer",
"description": "Instance ID of the destroyed GameObject."
}
},
"required": [
"DestroyedInstanceId"
]
}
},
"required": [
"result"
]
}
```
Validates the `gameObjectRef`, resolves it on the main thread, then calls `Object.DestroyImmediate` (the immediate variant is required for Editor-mode operations). Returns a `DestroyGameObjectResult` containing `DestroyedName`, `DestroyedPath`, and `DestroyedInstanceId` so the caller has a record of what was removed.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-destroy --input '{
"gameObjectRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-destroy --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-destroy --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.DestroyGameObjectResult"
}
},
"$defs": {
"AIGD.DestroyGameObjectResult": {
"type": "object",
"properties": {
"DestroyedName": {
"type": "string",
"description": "Name of the destroyed GameObject."
},
"DestroyedPath": {
"type": "string",
"description": "Hierarchy path of the destroyed GameObject."
},
"DestroyedInstanceId": {
"type": "integer",
"description": "Instance ID of the destroyed GameObject."
}
},
"required": [
"DestroyedInstanceId"
]
}
},
"required": [
"result"
]
}
```
+168 -168
View File
@@ -1,12 +1,12 @@
---
name: gameobject-duplicate
description: Duplicate a batch of GameObjects in the currently opened Prefab or active Scene. Marks each affected scene as dirty after duplication. Use 'gameobject-find' to locate the source GameObjects first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Duplicate
---
name: gameobject-duplicate
description: Duplicate a batch of GameObjects in the currently opened Prefab or active Scene. Marks each affected scene as dirty after duplication. Use 'gameobject-find' to locate the source GameObjects first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Duplicate
Duplicate GameObjects in opened Prefab or in a Scene. Use 'gameobject-find' tool to find the target GameObjects first.
## Inputs
@@ -15,162 +15,162 @@ Duplicate GameObjects in opened Prefab or in a Scene. Use 'gameobject-find' tool
## Behavior
Resolves every input ref on the main thread (throwing on any unresolved entry to keep the batch atomic). Sets `Selection.entityIds`/`instanceIDs` to the sources and invokes `Unsupported.DuplicateGameObjectsUsingPasteboard()` (Unity's canonical duplicate routine). Marks every distinct affected scene dirty so the duplicated objects are saved with the scene. Returns refs to the sources (the duplicates are reachable via the post-call `Selection`).
## How to Call
```bash
unity-mcp-cli run-tool gameobject-duplicate --input '{
"gameObjectRefs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-duplicate --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-duplicate --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | Array of GameObjects in opened Prefab or in the active Scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList"
}
},
"$defs": {
"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"
},
"AIGD.GameObjectRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"description": "Array of GameObjects in opened Prefab or in the active Scene."
}
},
"required": [
"gameObjectRefs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectRef)"
}
},
"$defs": {
"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"
},
"System.Collections.Generic.List(AIGD.GameObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
}
},
"required": [
"result"
]
}
```
Resolves every input ref on the main thread (throwing on any unresolved entry to keep the batch atomic). Sets `Selection.entityIds`/`instanceIDs` to the sources and invokes `Unsupported.DuplicateGameObjectsUsingPasteboard()` (Unity's canonical duplicate routine). Marks every distinct affected scene dirty so the duplicated objects are saved with the scene. Returns refs to the sources (the duplicates are reachable via the post-call `Selection`).
## How to Call
```bash
unity-mcp-cli run-tool gameobject-duplicate --input '{
"gameObjectRefs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-duplicate --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-duplicate --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | Array of GameObjects in opened Prefab or in the active Scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList"
}
},
"$defs": {
"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"
},
"AIGD.GameObjectRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"description": "Array of GameObjects in opened Prefab or in the active Scene."
}
},
"required": [
"gameObjectRefs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectRef)"
}
},
"$defs": {
"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"
},
"System.Collections.Generic.List(AIGD.GameObjectRef)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
}
}
},
"required": [
"result"
]
}
```
+399 -399
View File
@@ -1,12 +1,12 @@
---
name: gameobject-find
description: Find a specific GameObject in the opened Prefab (preferred when present) or the active Scene. Optionally include editable data, components preview, bounds, and limited hierarchy. Supports token-saving path-scoped reads via `paths` or `viewQuery`.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Find
---
name: gameobject-find
description: Find a specific GameObject in the opened Prefab (preferred when present) or the active Scene. Optionally include editable data, components preview, bounds, and limited hierarchy. Supports token-saving path-scoped reads via `paths` or `viewQuery`.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Find
Finds specific GameObject by provided information in opened Prefab or in a Scene. First it looks for the opened Prefab, if any Prefab is opened it looks only there ignoring a scene. If no opened Prefab it looks into current active scene. Returns GameObject information and its children. Also, it returns Components preview just for the target GameObject.
## Toggles (all default `false` to keep responses small)
@@ -23,393 +23,393 @@ Supply `paths` (a list of paths) to read only the listed fields/elements via `Re
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-find --input '{
"gameObjectRef": "string_value",
"includeData": false,
"includeComponents": false,
"includeBounds": false,
"includeHierarchy": false,
"hierarchyDepth": 0,
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-find --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-find --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `includeData` | `boolean` | No | Include editable GameObject data (tag, layer, etc). |
| `includeComponents` | `boolean` | No | Include attached components references. |
| `includeBounds` | `boolean` | No | Include 3D bounds of the GameObject. |
| `includeHierarchy` | `boolean` | No | Include hierarchy metadata. |
| `hierarchyDepth` | `integer` | No | Determines the depth of the hierarchy to include. 0 - means only the target GameObject. 1 - means to include one layer below. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. When supplied, replaces 'includeData'-style full serialization with a path-scoped aggregate. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View. When supplied, replaces 'includeData'-style full serialization with the filtered subtree. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"includeData": {
"type": "boolean"
},
"includeComponents": {
"type": "boolean"
},
"includeBounds": {
"type": "boolean"
},
"includeHierarchy": {
"type": "boolean"
},
"hierarchyDepth": {
"type": "integer"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GameObjectData"
}
},
"$defs": {
"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.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)."
}
}
}
},
"required": [
"result"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-find --input '{
"gameObjectRef": "string_value",
"includeData": false,
"includeComponents": false,
"includeBounds": false,
"includeHierarchy": false,
"hierarchyDepth": 0,
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-find --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-find --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `includeData` | `boolean` | No | Include editable GameObject data (tag, layer, etc). |
| `includeComponents` | `boolean` | No | Include attached components references. |
| `includeBounds` | `boolean` | No | Include 3D bounds of the GameObject. |
| `includeHierarchy` | `boolean` | No | Include hierarchy metadata. |
| `hierarchyDepth` | `integer` | No | Determines the depth of the hierarchy to include. 0 - means only the target GameObject. 1 - means to include one layer below. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. When supplied, replaces 'includeData'-style full serialization with a path-scoped aggregate. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View. When supplied, replaces 'includeData'-style full serialization with the filtered subtree. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"includeData": {
"type": "boolean"
},
"includeComponents": {
"type": "boolean"
},
"includeBounds": {
"type": "boolean"
},
"includeHierarchy": {
"type": "boolean"
},
"hierarchyDepth": {
"type": "integer"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"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."
}
}
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.GameObjectData"
}
},
"$defs": {
"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.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)."
}
}
}
},
"required": [
"result"
]
}
```
+246 -246
View File
@@ -1,12 +1,12 @@
---
name: gameobject-modify
description: Modify GameObject fields and properties in opened Prefab or in a Scene. You can modify multiple GameObjects at once. Just provide the same number of GameObject references and SerializedMember objects. Three modification surfaces are available per GameObject (gameObjectDiffs, pathPatchesPerGameObject, jsonPatchesPerGameObject) — see the skill body for details.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Modify
---
name: gameobject-modify
description: Modify GameObject fields and properties in opened Prefab or in a Scene. You can modify multiple GameObjects at once. Just provide the same number of GameObject references and SerializedMember objects. Three modification surfaces are available per GameObject (gameObjectDiffs, pathPatchesPerGameObject, jsonPatchesPerGameObject) — see the skill body for details.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Modify
## Three modification surfaces
Per GameObject — parallel arrays must have the same length as `gameObjectRefs`:
@@ -19,240 +19,240 @@ When more than one is supplied for the same GameObject they run in this order: `
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-modify --input '{
"gameObjectRefs": "string_value",
"gameObjectDiffs": "string_value",
"pathPatchesPerGameObject": "string_value",
"jsonPatchesPerGameObject": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | Array of GameObjects in opened Prefab or in the active Scene. |
| `gameObjectDiffs` | `any` | No | Optional. Each item in the array represents a GameObject modification of the 'gameObjectRefs' at the same index. Usually a GameObject is a container for components. Each component may have fields and properties for modification. If you need to modify components of a GameObject, please use 'gameobject-component-modify' tool. Ignore values that should not be modified. Any unknown or wrong located fields and properties will be ignored. Check the result of this command to see what was changed. The ignored fields and properties will be listed. |
| `pathPatchesPerGameObject` | `any` | No | Optional. Per-GameObject list of path-scoped patches routed through Reflector.TryModifyAt. Outer index aligns with 'gameObjectRefs'; inner list contains {path, value} entries. Pass null or omit for GameObjects that should not receive path patches. |
| `jsonPatchesPerGameObject` | `any` | No | Optional. Per-GameObject JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. Outer index aligns with 'gameObjectRefs'. Pass null or omit for GameObjects that should not receive a JSON patch. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList"
},
"gameObjectDiffs": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
},
"pathPatchesPerGameObject": {
"$ref": "#/$defs/System.Collections.Generic.List(System.Collections.Generic.List(AIGD.PathPatch))"
},
"jsonPatchesPerGameObject": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}
},
"$defs": {
"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"
},
"AIGD.GameObjectRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"description": "Array of GameObjects in opened Prefab or in the active Scene."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(System.Collections.Generic.List(AIGD.PathPatch))": {
"type": "array",
"items": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
}
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"gameObjectRefs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.LogEntry": {
"type": "object",
"properties": {
"Depth": {
"type": "integer"
},
"Message": {
"type": "string"
},
"Type": {
"type": "string",
"enum": [
"Trace",
"Debug",
"Info",
"Success",
"Warning",
"Error",
"Critical"
]
}
},
"required": [
"Depth",
"Type"
]
},
"com.IvanMurzak.ReflectorNet.Model.Logs": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry"
}
}
},
"required": [
"result"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-modify --input '{
"gameObjectRefs": "string_value",
"gameObjectDiffs": "string_value",
"pathPatchesPerGameObject": "string_value",
"jsonPatchesPerGameObject": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | Array of GameObjects in opened Prefab or in the active Scene. |
| `gameObjectDiffs` | `any` | No | Optional. Each item in the array represents a GameObject modification of the 'gameObjectRefs' at the same index. Usually a GameObject is a container for components. Each component may have fields and properties for modification. If you need to modify components of a GameObject, please use 'gameobject-component-modify' tool. Ignore values that should not be modified. Any unknown or wrong located fields and properties will be ignored. Check the result of this command to see what was changed. The ignored fields and properties will be listed. |
| `pathPatchesPerGameObject` | `any` | No | Optional. Per-GameObject list of path-scoped patches routed through Reflector.TryModifyAt. Outer index aligns with 'gameObjectRefs'; inner list contains {path, value} entries. Pass null or omit for GameObjects that should not receive path patches. |
| `jsonPatchesPerGameObject` | `any` | No | Optional. Per-GameObject JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. Outer index aligns with 'gameObjectRefs'. Pass null or omit for GameObjects that should not receive a JSON patch. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList"
},
"gameObjectDiffs": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
},
"pathPatchesPerGameObject": {
"$ref": "#/$defs/System.Collections.Generic.List(System.Collections.Generic.List(AIGD.PathPatch))"
},
"jsonPatchesPerGameObject": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}
},
"$defs": {
"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"
},
"AIGD.GameObjectRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"description": "Array of GameObjects in opened Prefab or in the active Scene."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(System.Collections.Generic.List(AIGD.PathPatch))": {
"type": "array",
"items": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
}
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"gameObjectRefs"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.LogEntry": {
"type": "object",
"properties": {
"Depth": {
"type": "integer"
},
"Message": {
"type": "string"
},
"Type": {
"type": "string",
"enum": [
"Trace",
"Debug",
"Info",
"Success",
"Warning",
"Error",
"Critical"
]
}
},
"required": [
"Depth",
"Type"
]
},
"com.IvanMurzak.ReflectorNet.Model.Logs": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry"
}
}
},
"required": [
"result"
]
}
```
+134 -134
View File
@@ -1,12 +1,12 @@
---
name: gameobject-set-parent
description: Reparent a batch of GameObjects under a new parent in the currently opened Prefab or active Scene. Per-item failures are reported in the returned status string instead of aborting the batch. Use 'gameobject-find' to locate the GameObjects first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Set Parent
---
name: gameobject-set-parent
description: Reparent a batch of GameObjects under a new parent in the currently opened Prefab or active Scene. Per-item failures are reported in the returned status string instead of aborting the batch. Use 'gameobject-find' to locate the GameObjects first.
metadata:
generated-by: mcp-plugin-dotnet
---
# GameObject / Set Parent
Set parent GameObject to list of GameObjects in opened Prefab or in a Scene. Use 'gameobject-find' tool to find the target GameObjects first.
## Inputs
@@ -17,128 +17,128 @@ Set parent GameObject to list of GameObjects in opened Prefab or in a Scene. Use
## Behavior
Iterates `gameObjectRefs` and reparents each one independently; per-item resolve errors are appended to the returned status string instead of throwing. After the loop, if at least one reparent succeeded, marks the active scene dirty and repaints editor windows.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-set-parent --input '{
"gameObjectRefs": "string_value",
"parentGameObjectRef": "string_value",
"worldPositionStays": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-set-parent --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-set-parent --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | List of references to the GameObjects to set new parent. |
| `parentGameObjectRef` | `any` | Yes | Reference to the parent GameObject. |
| `worldPositionStays` | `boolean` | No | A boolean flag indicating whether the GameObject's world position should remain unchanged when setting its parent. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList"
},
"parentGameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"worldPositionStays": {
"type": "boolean"
}
},
"$defs": {
"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"
},
"AIGD.GameObjectRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"description": "Array of GameObjects in opened Prefab or in the active Scene."
}
},
"required": [
"gameObjectRefs",
"parentGameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
Iterates `gameObjectRefs` and reparents each one independently; per-item resolve errors are appended to the returned status string instead of throwing. After the loop, if at least one reparent succeeded, marks the active scene dirty and repaints editor windows.
## How to Call
```bash
unity-mcp-cli run-tool gameobject-set-parent --input '{
"gameObjectRefs": "string_value",
"parentGameObjectRef": "string_value",
"worldPositionStays": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool gameobject-set-parent --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool gameobject-set-parent --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | List of references to the GameObjects to set new parent. |
| `parentGameObjectRef` | `any` | Yes | Reference to the parent GameObject. |
| `worldPositionStays` | `boolean` | No | A boolean flag indicating whether the GameObject's world position should remain unchanged when setting its parent. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList"
},
"parentGameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"worldPositionStays": {
"type": "boolean"
}
},
"$defs": {
"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"
},
"AIGD.GameObjectRefList": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene."
},
"description": "Array of GameObjects in opened Prefab or in the active Scene."
}
},
"required": [
"gameObjectRefs",
"parentGameObjectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+176 -176
View File
@@ -1,12 +1,12 @@
---
name: object-get-data
description: Get serialized data for a Unity `UnityEngine.Object` — all serializable fields and properties. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Pair with 'object-modify' when you need to write back.
metadata:
generated-by: mcp-plugin-dotnet
---
# Object / Get Data
---
name: object-get-data
description: Get serialized data for a Unity `UnityEngine.Object` — all serializable fields and properties. Supports token-saving path-scoped reads via `paths` or `viewQuery`. Pair with 'object-modify' when you need to write back.
metadata:
generated-by: mcp-plugin-dotnet
---
# Object / Get Data
Get data of the specified Unity Object. Returns serialized data of the object including its properties and fields. If need to modify the data use 'object-modify' tool.
## Path-scoped reads (token-saving)
@@ -15,170 +15,170 @@ Supply `paths` (a list of paths) to read only the listed fields/elements via `Re
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool object-get-data --input '{
"objectRef": "string_value",
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool object-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool object-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `objectRef` | `any` | Yes | Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. Each path may target a different depth. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View — combines a starting Path, a case-insensitive NamePattern regex, MaxDepth, and an optional TypeFilter. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"objectRef": {
"$ref": "#/$defs/AIGD.ObjectRef"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"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."
}
}
}
},
"required": [
"objectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool object-get-data --input '{
"objectRef": "string_value",
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool object-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool object-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `objectRef` | `any` | Yes | Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object. |
| `paths` | `any` | No | Optional. List of paths to read individually via Reflector.TryReadAt. Each path may target a different depth. Path syntax: 'fieldName', 'nested/field', 'arrayField/[i]', 'dictField/[key]'. Mutually exclusive with 'viewQuery'. |
| `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View — combines a starting Path, a case-insensitive NamePattern regex, MaxDepth, and an optional TypeFilter. Mutually exclusive with 'paths'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"objectRef": {
"$ref": "#/$defs/AIGD.ObjectRef"
},
"paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)"
},
"viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"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."
}
}
}
},
"required": [
"objectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
+263 -263
View File
@@ -1,12 +1,12 @@
---
name: object-modify
description: Modify a Unity `UnityEngine.Object`'s serializable fields/properties. Three modification surfaces are available (`objectDiff`, `pathPatches`, `jsonPatch`) — see the skill body. Use 'object-get-data' first to inspect the object structure.
metadata:
generated-by: mcp-plugin-dotnet
---
# Object / Modify
---
name: object-modify
description: Modify a Unity `UnityEngine.Object`'s serializable fields/properties. Three modification surfaces are available (`objectDiff`, `pathPatches`, `jsonPatch`) — see the skill body. Use 'object-get-data' first to inspect the object structure.
metadata:
generated-by: mcp-plugin-dotnet
---
# Object / Modify
Modify the specified Unity Object. Allows direct modification of object fields and properties. Use 'object-get-data' first to inspect the object structure before modifying.
## Three modification surfaces
@@ -21,259 +21,259 @@ When more than one is supplied they run in this order: `jsonPatch` → `pathPatc
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool object-modify --input '{
"objectRef": "string_value",
"objectDiff": "string_value",
"pathPatches": "string_value",
"jsonPatch": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool object-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool object-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `objectRef` | `any` | Yes | Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object. |
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call
```bash
unity-mcp-cli run-tool object-modify --input '{
"objectRef": "string_value",
"objectDiff": "string_value",
"pathPatches": "string_value",
"jsonPatch": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool object-modify --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool object-modify --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `objectRef` | `any` | Yes | Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object. |
| `objectDiff` | `any` | No | Optional. The full object data to apply (legacy path). Should contain 'fields' and/or 'props' with the values to modify.
Only include the fields/properties you want to change.
Any unknown or invalid fields and properties will be reported in the response. |
| `pathPatches` | `any` | No | Optional. List of path-scoped patches routed through Reflector.TryModifyAt. |
| `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"objectRef": {
"$ref": "#/$defs/AIGD.ObjectRef"
},
"objectDiff": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
},
"jsonPatch": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
}
},
"required": [
"objectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ModifyObjectResponse"
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"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"
}
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ModifyObjectResponse": {
"type": "object",
"properties": {
"Success": {
"type": "boolean",
"description": "Whether the modification was successful."
},
"Reference": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Reference to the modified object."
},
"Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Updated object data after modification."
},
"Logs": {
"$ref": "#/$defs/System.String-1",
"description": "Log of modifications made and any warnings/errors encountered."
}
},
"required": [
"Success"
]
}
},
"required": [
"result"
]
}
```
Any unknown or invalid fields and properties will be reported in the response. |
| `pathPatches` | `any` | No | Optional. List of path-scoped patches routed through Reflector.TryModifyAt. |
| `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"objectRef": {
"$ref": "#/$defs/AIGD.ObjectRef"
},
"objectDiff": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
},
"jsonPatch": {
"anyOf": [
{
"type": "string"
},
{
"type": "object",
"additionalProperties": true
}
]
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
},
"AIGD.PathPatch": {
"type": "object",
"properties": {
"Path": {
"type": "string",
"description": "Slash-delimited path to the target field/element/entry. Plain segment navigates a field or property (e.g. 'admin' or 'admin/name'). Use '[i]' for array/list index (e.g. 'planets/[0]/orbitRadius'). Use '[key]' for dictionary entry (e.g. 'config/[timeout]'). A leading '#/' is stripped automatically. Required."
},
"Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "The new value to write at the path. Use the standard SerializedMember envelope: 'typeName' + 'value' for primitives, or nested 'fields'/'props' for complex types. Required — omitting it overwrites the target with a default empty SerializedMember."
}
}
},
"System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PathPatch"
}
}
},
"required": [
"objectRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ModifyObjectResponse"
}
},
"$defs": {
"AIGD.ObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
}
},
"required": [
"instanceID"
],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
},
"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"
}
},
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
},
"AIGD.ModifyObjectResponse": {
"type": "object",
"properties": {
"Success": {
"type": "boolean",
"description": "Whether the modification was successful."
},
"Reference": {
"$ref": "#/$defs/AIGD.ObjectRef",
"description": "Reference to the modified object."
},
"Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Updated object data after modification."
},
"Logs": {
"$ref": "#/$defs/System.String-1",
"description": "Log of modifications made and any warnings/errors encountered."
}
},
"required": [
"Success"
]
}
},
"required": [
"result"
]
}
```
+63 -63
View File
@@ -1,12 +1,12 @@
---
name: package-add
description: Install a Unity package from the registry, a Git URL, or a local path. Modifies `manifest.json` and triggers package resolution; may also trigger a domain reload — the final result is delivered after the reload via the request's `requestId`. Use 'package-search' / 'package-list' for discovery first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / Add
---
name: package-add
description: Install a Unity package from the registry, a Git URL, or a local path. Modifies `manifest.json` and triggers package resolution; may also trigger a domain reload — the final result is delivered after the reload via the request's `requestId`. Use 'package-search' / 'package-list' for discovery first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / Add
Install a package from the Unity Package Manager registry, Git URL, or local path. This operation modifies the project's manifest.json and triggers package resolution. Note: Package installation may trigger a domain reload. The result will be sent after the reload completes. Use 'package-search' tool to search for packages and 'package-list' to list installed packages.
## `packageId` formats
@@ -19,57 +19,57 @@ Install a package from the Unity Package Manager registry, Git URL, or local pat
## Processing model
Returns `Processing` immediately with the supplied `requestId`. Once `Client.Add` completes, a follow-up result is delivered: success → `SchedulePostDomainReloadNotification` (delivers after the reload finishes), failure → an immediate error notification with the underlying Unity error message.
## How to Call
```bash
unity-mcp-cli run-tool package-add --input '{
"packageId": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-add --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-add --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `packageId` | `string` | Yes | The package ID to install. Formats: Package ID 'com.unity.textmeshpro' (installs latest compatible version), Package ID with version 'com.unity.textmeshpro@3.0.6', Git URL 'https://github.com/user/repo.git', Git URL with branch/tag 'https://github.com/user/repo.git#v1.0.0', Local path 'file:../MyPackage'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"packageId": {
"type": "string"
}
},
"required": [
"packageId"
]
}
```
## Output
This tool does not return structured output.
Returns `Processing` immediately with the supplied `requestId`. Once `Client.Add` completes, a follow-up result is delivered: success → `SchedulePostDomainReloadNotification` (delivers after the reload finishes), failure → an immediate error notification with the underlying Unity error message.
## How to Call
```bash
unity-mcp-cli run-tool package-add --input '{
"packageId": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-add --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-add --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `packageId` | `string` | Yes | The package ID to install. Formats: Package ID 'com.unity.textmeshpro' (installs latest compatible version), Package ID with version 'com.unity.textmeshpro@3.0.6', Git URL 'https://github.com/user/repo.git', Git URL with branch/tag 'https://github.com/user/repo.git#v1.0.0', Local path 'file:../MyPackage'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"packageId": {
"type": "string"
}
},
"required": [
"packageId"
]
}
```
## Output
This tool does not return structured output.
+132 -132
View File
@@ -1,138 +1,138 @@
---
name: package-list
description: List all UPM packages installed in the Unity project — name, version, source, description. Optionally filter by source (registry, embedded, local, git, built-in, local tarball), by name/display/description substring, and by direct-dependency-only.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / List Installed
---
name: package-list
description: List all UPM packages installed in the Unity project — name, version, source, description. Optionally filter by source (registry, embedded, local, git, built-in, local tarball), by name/display/description substring, and by direct-dependency-only.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / List Installed
List all packages installed in the Unity project (UPM packages). Returns information about each installed package including name, version, source, and description. Use this to check which packages are currently installed before adding or removing packages.
## Inputs
- `sourceFilter` (default `All`) — restrict by Unity `PackageSource`: `All`, `Registry`, `Embedded`, `Local`, `Git`, `BuiltIn`, `LocalTarball`.
- `nameFilter` (optional) — case-insensitive substring filter over name / displayName / description. Results are prioritized: exact name → exact displayName → name substring → displayName substring → description substring.
- `directDependenciesOnly` (default `false`) — when true, return only packages listed in `manifest.json` (no transitive dependencies).
## How to Call
```bash
unity-mcp-cli run-tool package-list --input '{
"sourceFilter": "string_value",
"nameFilter": "string_value",
"directDependenciesOnly": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-list --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-list --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sourceFilter` | `string` | No | Filter packages by source. |
| `nameFilter` | `string` | No | Filter packages by name, display name, or description (case-insensitive). Results are prioritized: exact name match, exact display name match, name substring, display name substring, description substring. |
| `directDependenciesOnly` | `boolean` | No | Include only direct dependencies (packages in manifest.json). If false, includes all resolved packages. Default: false |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sourceFilter": {
"type": "string",
"enum": [
"All",
"Registry",
"Embedded",
"Local",
"Git",
"BuiltIn",
"LocalTarball"
]
},
"nameFilter": {
"type": "string"
},
"directDependenciesOnly": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageData)"
}
},
"$defs": {
"AIGD.PackageData": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "The official Unity name of the package used as the package ID."
},
"DisplayName": {
"type": "string",
"description": "The display name of the package."
},
"Version": {
"type": "string",
"description": "The version of the package."
},
"Description": {
"type": "string",
"description": "A brief description of the package."
},
"Source": {
"type": "string",
"description": "The source of the package (Registry, Embedded, Local, Git, etc.)."
},
"Category": {
"type": "string",
"description": "The category of the package."
}
},
"description": "Package information returned from package list operation."
},
"System.Collections.Generic.List(AIGD.PackageData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PackageData",
"description": "Package information returned from package list operation."
}
}
},
"required": [
"result"
]
}
```
- `directDependenciesOnly` (default `false`) — when true, return only packages listed in `manifest.json` (no transitive dependencies).
## How to Call
```bash
unity-mcp-cli run-tool package-list --input '{
"sourceFilter": "string_value",
"nameFilter": "string_value",
"directDependenciesOnly": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-list --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-list --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sourceFilter` | `string` | No | Filter packages by source. |
| `nameFilter` | `string` | No | Filter packages by name, display name, or description (case-insensitive). Results are prioritized: exact name match, exact display name match, name substring, display name substring, description substring. |
| `directDependenciesOnly` | `boolean` | No | Include only direct dependencies (packages in manifest.json). If false, includes all resolved packages. Default: false |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sourceFilter": {
"type": "string",
"enum": [
"All",
"Registry",
"Embedded",
"Local",
"Git",
"BuiltIn",
"LocalTarball"
]
},
"nameFilter": {
"type": "string"
},
"directDependenciesOnly": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageData)"
}
},
"$defs": {
"AIGD.PackageData": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "The official Unity name of the package used as the package ID."
},
"DisplayName": {
"type": "string",
"description": "The display name of the package."
},
"Version": {
"type": "string",
"description": "The version of the package."
},
"Description": {
"type": "string",
"description": "A brief description of the package."
},
"Source": {
"type": "string",
"description": "The source of the package (Registry, Embedded, Local, Git, etc.)."
},
"Category": {
"type": "string",
"description": "The category of the package."
}
},
"description": "Package information returned from package list operation."
},
"System.Collections.Generic.List(AIGD.PackageData)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PackageData",
"description": "Package information returned from package list operation."
}
}
},
"required": [
"result"
]
}
```
+63 -63
View File
@@ -1,12 +1,12 @@
---
name: package-remove
description: Uninstall a UPM package from the Unity project. Modifies `manifest.json` and may trigger a domain reload — the final result is delivered after the reload via the request's `requestId`. Built-in packages and packages that are dependencies of others cannot be removed. Use 'package-list' to list installed packages first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / Remove
---
name: package-remove
description: Uninstall a UPM package from the Unity project. Modifies `manifest.json` and may trigger a domain reload — the final result is delivered after the reload via the request's `requestId`. Built-in packages and packages that are dependencies of others cannot be removed. Use 'package-list' to list installed packages first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / Remove
Remove (uninstall) a package from the Unity project. This removes the package from the project's manifest.json and triggers package resolution. Note: Built-in packages and packages that are dependencies of other installed packages cannot be removed. Note: Package removal may trigger a domain reload. The result will be sent after the reload completes. Use 'package-list' tool to list installed packages first.
## Inputs
@@ -15,57 +15,57 @@ Remove (uninstall) a package from the Unity project. This removes the package fr
## Behavior
First verifies the package is installed via an offline `Client.List` — returns a clear `PackageNotFound` error if not. On removal failure, surfaces Unity's error message. On success, schedules a post-domain-reload notification so the response is delivered after Unity finishes the resolution.
## How to Call
```bash
unity-mcp-cli run-tool package-remove --input '{
"packageId": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-remove --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-remove --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `packageId` | `string` | Yes | The ID of the package to remove. Example: 'com.unity.textmeshpro'. Do not include version number. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"packageId": {
"type": "string"
}
},
"required": [
"packageId"
]
}
```
## Output
This tool does not return structured output.
First verifies the package is installed via an offline `Client.List` — returns a clear `PackageNotFound` error if not. On removal failure, surfaces Unity's error message. On success, schedules a post-domain-reload notification so the response is delivered after Unity finishes the resolution.
## How to Call
```bash
unity-mcp-cli run-tool package-remove --input '{
"packageId": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-remove --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-remove --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `packageId` | `string` | Yes | The ID of the package to remove. Example: 'com.unity.textmeshpro'. Do not include version number. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"packageId": {
"type": "string"
}
},
"required": [
"packageId"
]
}
```
## Output
This tool does not return structured output.
+139 -139
View File
@@ -1,12 +1,12 @@
---
name: package-search
description: Search Unity's package registry plus locally installed packages (Git, local, embedded sources) by query string. Returns available versions and installation status. Online mode fetches exact matches from the live registry then supplements with cached substring matches.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / Search
---
name: package-search
description: Search Unity's package registry plus locally installed packages (Git, local, embedded sources) by query string. Returns available versions and installation status. Online mode fetches exact matches from the live registry then supplements with cached substring matches.
metadata:
generated-by: mcp-plugin-dotnet
---
# Package Manager / Search
Search for packages in both Unity Package Manager registry and installed packages. Use this to find packages by name before installing them. Returns available versions and installation status. Searches both the Unity registry and locally installed packages (including Git, local, and embedded sources). Results are prioritized: exact name match, exact display name match, name substring, display name substring, description substring. Note: Online mode fetches exact matches from live registry, then supplements with cached substring matches.
## Inputs
@@ -17,133 +17,133 @@ Search for packages in both Unity Package Manager registry and installed package
## Result composition
Each entry includes name, display name, latest version, truncated description, install status, installed version (if any), and the top-5 compatible versions.
## How to Call
```bash
unity-mcp-cli run-tool package-search --input '{
"query": "string_value",
"maxResults": 0,
"offlineMode": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-search --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-search --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `query` | `string` | Yes | The package id, name, or description. Can be: Full package id 'com.unity.textmeshpro', Full package name 'TextMesh Pro', Partial name 'TextMesh' (will search in Unity registry and installed packages), Description keyword 'rendering' (searches in package descriptions). |
| `maxResults` | `integer` | No | Maximum number of results to return. Default: 10 |
| `offlineMode` | `boolean` | No | Whether to perform the search in offline mode (uses cached registry data only). Default: true. Set to false to fetch latest exact matches from Unity registry. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"offlineMode": {
"type": "boolean"
}
},
"required": [
"query"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageSearchResult)"
}
},
"$defs": {
"AIGD.PackageSearchResult": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "The official Unity name of the package used as the package ID."
},
"DisplayName": {
"type": "string",
"description": "The display name of the package."
},
"LatestVersion": {
"type": "string",
"description": "The latest version available in the registry."
},
"Description": {
"type": "string",
"description": "A brief description of the package."
},
"IsInstalled": {
"type": "boolean",
"description": "Whether this package is already installed in the project."
},
"InstalledVersion": {
"type": "string",
"description": "The currently installed version (if installed)."
},
"AvailableVersions": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "Available versions of this package (up to 5 most recent)."
}
},
"required": [
"IsInstalled"
],
"description": "Package search result with available versions."
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"System.Collections.Generic.List(AIGD.PackageSearchResult)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PackageSearchResult",
"description": "Package search result with available versions."
}
}
},
"required": [
"result"
]
}
```
Each entry includes name, display name, latest version, truncated description, install status, installed version (if any), and the top-5 compatible versions.
## How to Call
```bash
unity-mcp-cli run-tool package-search --input '{
"query": "string_value",
"maxResults": 0,
"offlineMode": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool package-search --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool package-search --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `query` | `string` | Yes | The package id, name, or description. Can be: Full package id 'com.unity.textmeshpro', Full package name 'TextMesh Pro', Partial name 'TextMesh' (will search in Unity registry and installed packages), Description keyword 'rendering' (searches in package descriptions). |
| `maxResults` | `integer` | No | Maximum number of results to return. Default: 10 |
| `offlineMode` | `boolean` | No | Whether to perform the search in offline mode (uses cached registry data only). Default: true. Set to false to fetch latest exact matches from Unity registry. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"maxResults": {
"type": "integer"
},
"offlineMode": {
"type": "boolean"
}
},
"required": [
"query"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageSearchResult)"
}
},
"$defs": {
"AIGD.PackageSearchResult": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "The official Unity name of the package used as the package ID."
},
"DisplayName": {
"type": "string",
"description": "The display name of the package."
},
"LatestVersion": {
"type": "string",
"description": "The latest version available in the registry."
},
"Description": {
"type": "string",
"description": "A brief description of the package."
},
"IsInstalled": {
"type": "boolean",
"description": "Whether this package is already installed in the project."
},
"InstalledVersion": {
"type": "string",
"description": "The currently installed version (if installed)."
},
"AvailableVersions": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "Available versions of this package (up to 5 most recent)."
}
},
"required": [
"IsInstalled"
],
"description": "Package search result with available versions."
},
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"System.Collections.Generic.List(AIGD.PackageSearchResult)": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.PackageSearchResult",
"description": "Package search result with available versions."
}
}
},
"required": [
"result"
]
}
```
+74 -74
View File
@@ -1,12 +1,12 @@
---
name: ping
description: Lightweight readiness probe. Returns the input `message` echoed back, or `'pong'` when omitted. Useful for CLI health checks and SignalR connectivity smoke tests.
metadata:
generated-by: mcp-plugin-dotnet
---
# Ping
---
name: ping
description: Lightweight readiness probe. Returns the input `message` echoed back, or `'pong'` when omitted. Useful for CLI health checks and SignalR connectivity smoke tests.
metadata:
generated-by: mcp-plugin-dotnet
---
# Ping
Lightweight readiness probe. Returns the input message or 'pong' if omitted.
## Inputs
@@ -15,68 +15,68 @@ Lightweight readiness probe. Returns the input message or 'pong' if omitted.
## Behavior
No I/O, no Unity API calls — pure echo. Ideal for measuring round-trip latency or confirming the MCP transport is alive before invoking a heavier tool.
## How to Call
```bash
unity-mcp-cli run-system-tool ping --input '{
"message": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-system-tool ping --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-system-tool ping --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `message` | `string` | No | Optional message to echo back. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
No I/O, no Unity API calls — pure echo. Ideal for measuring round-trip latency or confirming the MCP transport is alive before invoking a heavier tool.
## How to Call
```bash
unity-mcp-cli run-system-tool ping --input '{
"message": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-system-tool ping --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-system-tool ping --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `message` | `string` | No | Optional message to echo back. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"message": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+110 -110
View File
@@ -1,12 +1,12 @@
---
name: profiler-capture-frame
description: Capture the current frame's timing info (delta time, FPS, frame counts, runtime). Snapshot only — historical frames live in Unity's Profiler window.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Capture Frame
---
name: profiler-capture-frame
description: Capture the current frame's timing info (delta time, FPS, frame counts, runtime). Snapshot only — historical frames live in Unity's Profiler window.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Capture Frame
Reads `UnityEngine.Time` fields and returns them in a single struct. This tool is intentionally a single-frame snapshot — Unity's runtime API does not expose historical frame-data outside the Profiler window.
## Fields
@@ -19,104 +19,104 @@ Reads `UnityEngine.Time` fields and returns them in a single struct. This tool i
## Behavior
Uses only built-in Unity APIs (`UnityEngine.Time`). No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-capture-frame --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-capture-frame --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-capture-frame --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-FrameCaptureData",
"description": "Single-frame snapshot of timing information from UnityEngine.Time. No historical frame data; use the Profiler window for that."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-FrameCaptureData": {
"type": "object",
"properties": {
"FrameTimeMs": {
"type": "number",
"description": "Time.deltaTime in milliseconds at the moment of capture."
},
"Fps": {
"type": "number",
"description": "Frames per second derived from Time.deltaTime."
},
"TotalFrameCount": {
"type": "integer",
"description": "Total frame count since application start (Time.frameCount). May include skipped renders."
},
"RealtimeSinceStartup": {
"type": "number",
"description": "Time.realtimeSinceStartup, in seconds."
},
"RenderedFrameCount": {
"type": "integer",
"description": "Frames actually rendered (Time.renderedFrameCount)."
}
},
"required": [
"FrameTimeMs",
"Fps",
"TotalFrameCount",
"RealtimeSinceStartup",
"RenderedFrameCount"
],
"description": "Single-frame snapshot of timing information from UnityEngine.Time. No historical frame data; use the Profiler window for that."
}
},
"required": [
"result"
]
}
```
Uses only built-in Unity APIs (`UnityEngine.Time`). No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-capture-frame --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-capture-frame --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-capture-frame --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-FrameCaptureData",
"description": "Single-frame snapshot of timing information from UnityEngine.Time. No historical frame data; use the Profiler window for that."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-FrameCaptureData": {
"type": "object",
"properties": {
"FrameTimeMs": {
"type": "number",
"description": "Time.deltaTime in milliseconds at the moment of capture."
},
"Fps": {
"type": "number",
"description": "Frames per second derived from Time.deltaTime."
},
"TotalFrameCount": {
"type": "integer",
"description": "Total frame count since application start (Time.frameCount). May include skipped renders."
},
"RealtimeSinceStartup": {
"type": "number",
"description": "Time.realtimeSinceStartup, in seconds."
},
"RenderedFrameCount": {
"type": "integer",
"description": "Frames actually rendered (Time.renderedFrameCount)."
}
},
"required": [
"FrameTimeMs",
"Fps",
"TotalFrameCount",
"RealtimeSinceStartup",
"RenderedFrameCount"
],
"description": "Single-frame snapshot of timing information from UnityEngine.Time. No historical frame data; use the Profiler window for that."
}
},
"required": [
"result"
]
}
```
+74 -74
View File
@@ -1,78 +1,78 @@
---
name: profiler-clear-data
description: Discard all frames currently held by the Editor Profiler (UnityEditorInternal.ProfilerDriver.ClearAllFrames). Cannot be undone.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Clear Data
---
name: profiler-clear-data
description: Discard all frames currently held by the Editor Profiler (UnityEditorInternal.ProfilerDriver.ClearAllFrames). Cannot be undone.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Clear Data
Invokes `UnityEditorInternal.ProfilerDriver.ClearAllFrames()` on the main thread. `UnityEditorInternal` is a built-in editor namespace — no external Unity package is required.
## Behavior
After this call, the Profiler window's frame history is empty; subsequent recording starts from frame 0. Returns `true` on success.
## How to Call
```bash
unity-mcp-cli run-tool profiler-clear-data --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-clear-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-clear-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "boolean"
}
},
"required": [
"result"
]
}
```
After this call, the Profiler window's frame history is empty; subsequent recording starts from frame 0. Returns `true` on success.
## How to Call
```bash
unity-mcp-cli run-tool profiler-clear-data --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-clear-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-clear-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "boolean"
}
},
"required": [
"result"
]
}
```
+82 -82
View File
@@ -1,12 +1,12 @@
---
name: profiler-enable-module
description: Toggle the wrapper's local 'enabled' flag for a named profiler module. Bookkeeping only — Unity's runtime API does not expose direct module control; for real module visibility use the Profiler window.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Enable Module
---
name: profiler-enable-module
description: Toggle the wrapper's local 'enabled' flag for a named profiler module. Bookkeeping only — Unity's runtime API does not expose direct module control; for real module visibility use the Profiler window.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Enable Module
Adds or removes the given module name from the wrapper's `EnabledModules` set. This is local bookkeeping consumed by `profiler-get-status` and `profiler-list-modules`; Unity's runtime API does not allow programmatic toggling of Profiler-window modules from a built-in namespace, so this tool intentionally does not pretend to.
## Inputs
@@ -16,76 +16,76 @@ Adds or removes the given module name from the wrapper's `EnabledModules` set. T
## Errors
- Returns an `[Error]` string when `moduleName` is empty or unknown.
## How to Call
```bash
unity-mcp-cli run-tool profiler-enable-module --input '{
"moduleName": "string_value",
"enabled": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-enable-module --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-enable-module --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `moduleName` | `string` | Yes | Profiler module name (e.g. 'CPU', 'GPU', 'Memory'). |
| `enabled` | `boolean` | No | True to mark the module enabled in local bookkeeping; false to mark disabled. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"moduleName": {
"type": "string"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"moduleName"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
- Returns an `[Error]` string when `moduleName` is empty or unknown.
## How to Call
```bash
unity-mcp-cli run-tool profiler-enable-module --input '{
"moduleName": "string_value",
"enabled": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-enable-module --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-enable-module --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `moduleName` | `string` | Yes | Profiler module name (e.g. 'CPU', 'GPU', 'Memory'). |
| `enabled` | `boolean` | No | True to mark the module enabled in local bookkeeping; false to mark disabled. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"moduleName": {
"type": "string"
},
"enabled": {
"type": "boolean"
}
},
"required": [
"moduleName"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+130 -130
View File
@@ -1,12 +1,12 @@
---
name: profiler-get-memory-stats
description: Return memory statistics snapshot from UnityEngine.Profiling.Profiler — reserved, allocated, mono heap, graphics, etc. (in MB).
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Memory Stats
---
name: profiler-get-memory-stats
description: Return memory statistics snapshot from UnityEngine.Profiling.Profiler — reserved, allocated, mono heap, graphics, etc. (in MB).
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Memory Stats
Reads UnityEngine.Profiling.Profiler scalar memory counters and converts each from bytes to megabytes (`/1048576f`).
## Fields
@@ -23,124 +23,124 @@ Reads UnityEngine.Profiling.Profiler scalar memory counters and converts each fr
## Behavior
Uses only built-in Unity APIs (`UnityEngine.Profiling.Profiler`). No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-memory-stats --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-memory-stats --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-memory-stats --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-MemoryStatsData",
"description": "Memory statistics from the Unity Profiler. All values in megabytes unless otherwise noted."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-MemoryStatsData": {
"type": "object",
"properties": {
"TotalReservedMemoryMB": {
"type": "number",
"description": "Total reserved memory (UnityEngine.Profiling.Profiler.GetTotalReservedMemoryLong / 1048576)."
},
"TotalAllocatedMemoryMB": {
"type": "number",
"description": "Total allocated memory (UnityEngine.Profiling.Profiler.GetTotalAllocatedMemoryLong / 1048576)."
},
"TotalUnusedReservedMemoryMB": {
"type": "number",
"description": "Total unused reserved memory (UnityEngine.Profiling.Profiler.GetTotalUnusedReservedMemoryLong / 1048576)."
},
"MonoHeapSizeMB": {
"type": "number",
"description": "Mono heap size (UnityEngine.Profiling.Profiler.GetMonoHeapSizeLong / 1048576)."
},
"MonoUsedSizeMB": {
"type": "number",
"description": "Mono used size (UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong / 1048576)."
},
"TempAllocatorSizeMB": {
"type": "number",
"description": "Temp allocator size (UnityEngine.Profiling.Profiler.GetTempAllocatorSize / 1048576)."
},
"GraphicsMemoryMB": {
"type": "number",
"description": "Graphics memory reserved by the driver (UnityEngine.Profiling.Profiler.GetAllocatedMemoryForGraphicsDriver / 1048576)."
},
"MaxUsedMemoryMB": {
"type": "number",
"description": "Maximum used memory observed (UnityEngine.Profiling.Profiler.maxUsedMemory / 1048576)."
},
"UsedHeapSizeMB": {
"type": "number",
"description": "Used heap size (UnityEngine.Profiling.Profiler.usedHeapSizeLong / 1048576)."
}
},
"required": [
"TotalReservedMemoryMB",
"TotalAllocatedMemoryMB",
"TotalUnusedReservedMemoryMB",
"MonoHeapSizeMB",
"MonoUsedSizeMB",
"TempAllocatorSizeMB",
"GraphicsMemoryMB",
"MaxUsedMemoryMB",
"UsedHeapSizeMB"
],
"description": "Memory statistics from the Unity Profiler. All values in megabytes unless otherwise noted."
}
},
"required": [
"result"
]
}
```
Uses only built-in Unity APIs (`UnityEngine.Profiling.Profiler`). No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-memory-stats --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-memory-stats --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-memory-stats --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-MemoryStatsData",
"description": "Memory statistics from the Unity Profiler. All values in megabytes unless otherwise noted."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-MemoryStatsData": {
"type": "object",
"properties": {
"TotalReservedMemoryMB": {
"type": "number",
"description": "Total reserved memory (UnityEngine.Profiling.Profiler.GetTotalReservedMemoryLong / 1048576)."
},
"TotalAllocatedMemoryMB": {
"type": "number",
"description": "Total allocated memory (UnityEngine.Profiling.Profiler.GetTotalAllocatedMemoryLong / 1048576)."
},
"TotalUnusedReservedMemoryMB": {
"type": "number",
"description": "Total unused reserved memory (UnityEngine.Profiling.Profiler.GetTotalUnusedReservedMemoryLong / 1048576)."
},
"MonoHeapSizeMB": {
"type": "number",
"description": "Mono heap size (UnityEngine.Profiling.Profiler.GetMonoHeapSizeLong / 1048576)."
},
"MonoUsedSizeMB": {
"type": "number",
"description": "Mono used size (UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong / 1048576)."
},
"TempAllocatorSizeMB": {
"type": "number",
"description": "Temp allocator size (UnityEngine.Profiling.Profiler.GetTempAllocatorSize / 1048576)."
},
"GraphicsMemoryMB": {
"type": "number",
"description": "Graphics memory reserved by the driver (UnityEngine.Profiling.Profiler.GetAllocatedMemoryForGraphicsDriver / 1048576)."
},
"MaxUsedMemoryMB": {
"type": "number",
"description": "Maximum used memory observed (UnityEngine.Profiling.Profiler.maxUsedMemory / 1048576)."
},
"UsedHeapSizeMB": {
"type": "number",
"description": "Used heap size (UnityEngine.Profiling.Profiler.usedHeapSizeLong / 1048576)."
}
},
"required": [
"TotalReservedMemoryMB",
"TotalAllocatedMemoryMB",
"TotalUnusedReservedMemoryMB",
"MonoHeapSizeMB",
"MonoUsedSizeMB",
"TempAllocatorSizeMB",
"GraphicsMemoryMB",
"MaxUsedMemoryMB",
"UsedHeapSizeMB"
],
"description": "Memory statistics from the Unity Profiler. All values in megabytes unless otherwise noted."
}
},
"required": [
"result"
]
}
```
@@ -1,12 +1,12 @@
---
name: profiler-get-rendering-stats
description: Return current frame timing, FPS, vsync, target frame rate, threading mode, and graphics device type from Unity Time / QualitySettings / SystemInfo.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Rendering Stats
---
name: profiler-get-rendering-stats
description: Return current frame timing, FPS, vsync, target frame rate, threading mode, and graphics device type from Unity Time / QualitySettings / SystemInfo.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Rendering Stats
Snapshots rendering-related fields from `UnityEngine.Time`, `UnityEngine.QualitySettings`, `UnityEngine.Application` and `UnityEngine.SystemInfo`. All values are read from built-in Unity APIs so no external Unity package is required.
## Fields
@@ -16,107 +16,107 @@ Snapshots rendering-related fields from `UnityEngine.Time`, `UnityEngine.Quality
- `VSyncCount` — `QualitySettings.vSyncCount`.
- `TargetFrameRate` — `Application.targetFrameRate`.
- `RenderingThreadingMode` — `SystemInfo.renderingThreadingMode.ToString()`.
- `GraphicsDeviceType` — `SystemInfo.graphicsDeviceType.ToString()`.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-rendering-stats --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-rendering-stats --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-rendering-stats --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData",
"description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData": {
"type": "object",
"properties": {
"FrameTimeMs": {
"type": "number",
"description": "Last reported frame time (Time.deltaTime * 1000) in milliseconds."
},
"Fps": {
"type": "number",
"description": "Frames per second derived from Time.deltaTime."
},
"VSyncCount": {
"type": "integer",
"description": "QualitySettings.vSyncCount."
},
"TargetFrameRate": {
"type": "integer",
"description": "Application.targetFrameRate."
},
"RenderingThreadingMode": {
"type": "string",
"description": "SystemInfo.renderingThreadingMode."
},
"GraphicsDeviceType": {
"type": "string",
"description": "SystemInfo.graphicsDeviceType."
}
},
"required": [
"FrameTimeMs",
"Fps",
"VSyncCount",
"TargetFrameRate"
],
"description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required."
}
},
"required": [
"result"
]
}
```
- `GraphicsDeviceType` — `SystemInfo.graphicsDeviceType.ToString()`.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-rendering-stats --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-rendering-stats --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-rendering-stats --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData",
"description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData": {
"type": "object",
"properties": {
"FrameTimeMs": {
"type": "number",
"description": "Last reported frame time (Time.deltaTime * 1000) in milliseconds."
},
"Fps": {
"type": "number",
"description": "Frames per second derived from Time.deltaTime."
},
"VSyncCount": {
"type": "integer",
"description": "QualitySettings.vSyncCount."
},
"TargetFrameRate": {
"type": "integer",
"description": "Application.targetFrameRate."
},
"RenderingThreadingMode": {
"type": "string",
"description": "SystemInfo.renderingThreadingMode."
},
"GraphicsDeviceType": {
"type": "string",
"description": "SystemInfo.graphicsDeviceType."
}
},
"required": [
"FrameTimeMs",
"Fps",
"VSyncCount",
"TargetFrameRate"
],
"description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required."
}
},
"required": [
"result"
]
}
```
+120 -120
View File
@@ -1,12 +1,12 @@
---
name: profiler-get-script-stats
description: Return script execution timing (frame time, fixed dt, time scale, frame count, runtime) plus Mono / GC memory usage in MB.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Script Stats
---
name: profiler-get-script-stats
description: Return script execution timing (frame time, fixed dt, time scale, frame count, runtime) plus Mono / GC memory usage in MB.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Script Stats
Snapshots fields from `UnityEngine.Time`, `UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong()` and `System.GC.GetTotalMemory(false)`. All values are produced by built-in Unity APIs.
## Fields
@@ -17,114 +17,114 @@ Snapshots fields from `UnityEngine.Time`, `UnityEngine.Profiling.Profiler.GetMon
- `TotalFrameCount` — `Time.frameCount`.
- `RealtimeSinceStartup` — `Time.realtimeSinceStartup`.
- `MonoMemoryUsageMB` — `Profiler.GetMonoUsedSizeLong() / 1048576f`.
- `GCMemoryUsageMB` — `GC.GetTotalMemory(false) / 1048576f`.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-script-stats --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-script-stats --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-script-stats --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData",
"description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData": {
"type": "object",
"properties": {
"FrameTimeMs": {
"type": "number",
"description": "Time.deltaTime in milliseconds."
},
"FixedDeltaTimeMs": {
"type": "number",
"description": "Time.fixedDeltaTime in milliseconds."
},
"TimeScale": {
"type": "number",
"description": "Time.timeScale."
},
"TotalFrameCount": {
"type": "integer",
"description": "Total frame count since application start (Time.frameCount)."
},
"RealtimeSinceStartup": {
"type": "number",
"description": "Time.realtimeSinceStartup, in seconds."
},
"MonoMemoryUsageMB": {
"type": "number",
"description": "Mono used size (Profiler.GetMonoUsedSizeLong / 1048576), in megabytes."
},
"GCMemoryUsageMB": {
"type": "number",
"description": "System.GC.GetTotalMemory(false) / 1048576, in megabytes."
}
},
"required": [
"FrameTimeMs",
"FixedDeltaTimeMs",
"TimeScale",
"TotalFrameCount",
"RealtimeSinceStartup",
"MonoMemoryUsageMB",
"GCMemoryUsageMB"
],
"description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler."
}
},
"required": [
"result"
]
}
```
- `GCMemoryUsageMB` — `GC.GetTotalMemory(false) / 1048576f`.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-script-stats --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-script-stats --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-script-stats --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData",
"description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler."
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData": {
"type": "object",
"properties": {
"FrameTimeMs": {
"type": "number",
"description": "Time.deltaTime in milliseconds."
},
"FixedDeltaTimeMs": {
"type": "number",
"description": "Time.fixedDeltaTime in milliseconds."
},
"TimeScale": {
"type": "number",
"description": "Time.timeScale."
},
"TotalFrameCount": {
"type": "integer",
"description": "Total frame count since application start (Time.frameCount)."
},
"RealtimeSinceStartup": {
"type": "number",
"description": "Time.realtimeSinceStartup, in seconds."
},
"MonoMemoryUsageMB": {
"type": "number",
"description": "Mono used size (Profiler.GetMonoUsedSizeLong / 1048576), in megabytes."
},
"GCMemoryUsageMB": {
"type": "number",
"description": "System.GC.GetTotalMemory(false) / 1048576, in megabytes."
}
},
"required": [
"FrameTimeMs",
"FixedDeltaTimeMs",
"TimeScale",
"TotalFrameCount",
"RealtimeSinceStartup",
"MonoMemoryUsageMB",
"GCMemoryUsageMB"
],
"description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler."
}
},
"required": [
"result"
]
}
```
+110 -110
View File
@@ -1,12 +1,12 @@
---
name: profiler-get-status
description: Return the Unity profiler's current enabled state, active modules, max-used memory, and platform support flag. Read-only.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Status
---
name: profiler-get-status
description: Return the Unity profiler's current enabled state, active modules, max-used memory, and platform support flag. Read-only.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Get Status
Snapshots `UnityEngine.Profiling.Profiler` state and returns it in a single response.
## Fields
@@ -18,104 +18,104 @@ Snapshots `UnityEngine.Profiling.Profiler` state and returns it in a single resp
## Behavior
Uses only built-in Unity APIs. No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-status --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-status --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-status --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData",
"description": "Profiler status data including memory and module information."
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData": {
"type": "object",
"properties": {
"ProfilerEnabled": {
"type": "boolean",
"description": "Whether Unity's runtime profiler is currently enabled (UnityEngine.Profiling.Profiler.enabled)."
},
"ActiveModules": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of profiler modules this wrapper considers active. Local bookkeeping only."
},
"MaxUsedMemoryMB": {
"type": "number",
"description": "Maximum used memory recorded by the profiler, in megabytes."
},
"Supported": {
"type": "boolean",
"description": "Whether profiling is supported on this platform (UnityEngine.Profiling.Profiler.supported)."
}
},
"required": [
"ProfilerEnabled",
"MaxUsedMemoryMB",
"Supported"
],
"description": "Profiler status data including memory and module information."
}
},
"required": [
"result"
]
}
```
Uses only built-in Unity APIs. No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-get-status --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-get-status --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-get-status --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData",
"description": "Profiler status data including memory and module information."
}
},
"$defs": {
"System.Collections.Generic.List(System.String)": {
"type": "array",
"items": {
"type": "string"
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData": {
"type": "object",
"properties": {
"ProfilerEnabled": {
"type": "boolean",
"description": "Whether Unity's runtime profiler is currently enabled (UnityEngine.Profiling.Profiler.enabled)."
},
"ActiveModules": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of profiler modules this wrapper considers active. Local bookkeeping only."
},
"MaxUsedMemoryMB": {
"type": "number",
"description": "Maximum used memory recorded by the profiler, in megabytes."
},
"Supported": {
"type": "boolean",
"description": "Whether profiling is supported on this platform (UnityEngine.Profiling.Profiler.supported)."
}
},
"required": [
"ProfilerEnabled",
"MaxUsedMemoryMB",
"Supported"
],
"description": "Profiler status data including memory and module information."
}
},
"required": [
"result"
]
}
```
+111 -111
View File
@@ -1,115 +1,115 @@
---
name: profiler-list-modules
description: List all known profiler module names with their local 'enabled' bookkeeping flag.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / List Modules
---
name: profiler-list-modules
description: List all known profiler module names with their local 'enabled' bookkeeping flag.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / List Modules
Returns `Tool_Profiler.AvailableModules` projected into a `ProfilerModulesData` list, with each entry's `Enabled` field reflecting the wrapper's local bookkeeping.
## Behavior
Uses only built-in Unity APIs and in-process state. No external Unity package is required. Pair with `profiler-enable-module` to flip the bookkeeping flag.
## How to Call
```bash
unity-mcp-cli run-tool profiler-list-modules --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-list-modules --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-list-modules --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData",
"description": "Container for 'profiler-list-modules' output."
}
},
"$defs": {
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo",
"description": "Profiler module entry returned by 'profiler-list-modules'."
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Module name (e.g. 'CPU', 'Memory')."
},
"Enabled": {
"type": "boolean",
"description": "Whether the wrapper considers this module enabled. Local bookkeeping only."
}
},
"required": [
"Enabled"
],
"description": "Profiler module entry returned by 'profiler-list-modules'."
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData": {
"type": "object",
"properties": {
"Modules": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo)",
"description": "All known profiler modules and their wrapper-side enabled flag."
}
},
"description": "Container for 'profiler-list-modules' output."
}
},
"required": [
"result"
]
}
```
Uses only built-in Unity APIs and in-process state. No external Unity package is required. Pair with `profiler-enable-module` to flip the bookkeeping flag.
## How to Call
```bash
unity-mcp-cli run-tool profiler-list-modules --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-list-modules --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-list-modules --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData",
"description": "Container for 'profiler-list-modules' output."
}
},
"$defs": {
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo",
"description": "Profiler module entry returned by 'profiler-list-modules'."
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Module name (e.g. 'CPU', 'Memory')."
},
"Enabled": {
"type": "boolean",
"description": "Whether the wrapper considers this module enabled. Local bookkeeping only."
}
},
"required": [
"Enabled"
],
"description": "Profiler module entry returned by 'profiler-list-modules'."
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData": {
"type": "object",
"properties": {
"Modules": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo)",
"description": "All known profiler modules and their wrapper-side enabled flag."
}
},
"description": "Container for 'profiler-list-modules' output."
}
},
"required": [
"result"
]
}
```
+77 -77
View File
@@ -1,12 +1,12 @@
---
name: profiler-load-data
description: Read back a previously-saved JSON snapshot from `profiler-save-data` and return its raw text.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Load Data
---
name: profiler-load-data
description: Read back a previously-saved JSON snapshot from `profiler-save-data` and return its raw text.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Load Data
Reads `filePath` as UTF-8 text and returns the file body unchanged. Caller is responsible for parsing.
## Inputs
@@ -19,71 +19,71 @@ Reads `filePath` as UTF-8 text and returns the file body unchanged. Caller is re
## Behavior
Uses `System.IO.File.ReadAllText` (BCL) — no external Unity package is required. Files larger than 10 MB are rejected up-front to avoid OOM on a stray call.
## How to Call
```bash
unity-mcp-cli run-tool profiler-load-data --input '{
"filePath": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-load-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-load-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | Path to a profiler snapshot file previously written by 'profiler-save-data'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
}
},
"required": [
"filePath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
Uses `System.IO.File.ReadAllText` (BCL) — no external Unity package is required. Files larger than 10 MB are rejected up-front to avoid OOM on a stray call.
## How to Call
```bash
unity-mcp-cli run-tool profiler-load-data --input '{
"filePath": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-load-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-load-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | Path to a profiler snapshot file previously written by 'profiler-save-data'. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
}
},
"required": [
"filePath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+77 -77
View File
@@ -1,12 +1,12 @@
---
name: profiler-save-data
description: Save a snapshot of profiler-derived stats (status + memory + rendering + script + frame capture) to a JSON file. Built-in Unity APIs only.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Save Data
---
name: profiler-save-data
description: Save a snapshot of profiler-derived stats (status + memory + rendering + script + frame capture) to a JSON file. Built-in Unity APIs only.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Save Data
Composes the outputs of `profiler-get-status`, `profiler-get-memory-stats`, `profiler-get-rendering-stats`, `profiler-get-script-stats` and `profiler-capture-frame` into a single JSON document and writes it to `filePath`. Creates any missing parent directories.
## Inputs
@@ -19,71 +19,71 @@ Composes the outputs of `profiler-get-status`, `profiler-get-memory-stats`, `pro
## Behavior
Uses `System.Text.Json` (BCL) for serialization and `System.IO.File.WriteAllText` for the write. No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-save-data --input '{
"filePath": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-save-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-save-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | Absolute or workspace-relative output file path. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
}
},
"required": [
"filePath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
Uses `System.Text.Json` (BCL) for serialization and `System.IO.File.WriteAllText` for the write. No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-save-data --input '{
"filePath": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-save-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-save-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | Absolute or workspace-relative output file path. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
}
},
"required": [
"filePath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+74 -74
View File
@@ -1,80 +1,80 @@
---
name: profiler-start
description: "Enable Unity's runtime profiler and open the Profiler window. Idempotent: calling when already enabled returns the current enabled state without error."
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Start
---
name: profiler-start
description: "Enable Unity's runtime profiler and open the Profiler window. Idempotent: calling when already enabled returns the current enabled state without error."
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Start
Enables `UnityEngine.Profiling.Profiler.enabled = true` and opens `Window > Analysis > Profiler` via `EditorApplication.ExecuteMenuItem`. Returns `true` once the profiler is enabled.
## Behavior
Uses only built-in Unity APIs (`UnityEngine.Profiling`, `UnityEditor.EditorApplication`). No external Unity package is required.
Snapshot-based: this tool does not stream historical frame data — use Unity's Profiler window directly for that.
## How to Call
```bash
unity-mcp-cli run-tool profiler-start --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-start --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-start --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "boolean"
}
},
"required": [
"result"
]
}
```
Snapshot-based: this tool does not stream historical frame data — use Unity's Profiler window directly for that.
## How to Call
```bash
unity-mcp-cli run-tool profiler-start --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-start --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-start --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "boolean"
}
},
"required": [
"result"
]
}
```
+74 -74
View File
@@ -1,78 +1,78 @@
---
name: profiler-stop
description: Disable Unity's runtime profiler. Idempotent — calling when already disabled returns the current disabled state.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Stop
---
name: profiler-stop
description: Disable Unity's runtime profiler. Idempotent — calling when already disabled returns the current disabled state.
metadata:
generated-by: mcp-plugin-dotnet
---
# Profiler / Stop
Sets `UnityEngine.Profiling.Profiler.enabled = false`. Returns the post-call value of `Profiler.enabled` (expected `false`).
## Behavior
Uses only built-in Unity APIs (`UnityEngine.Profiling`). No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-stop --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-stop --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-stop --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "boolean"
}
},
"required": [
"result"
]
}
```
Uses only built-in Unity APIs (`UnityEngine.Profiling`). No external Unity package is required.
## How to Call
```bash
unity-mcp-cli run-tool profiler-stop --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool profiler-stop --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool profiler-stop --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "boolean"
}
},
"required": [
"result"
]
}
```
+243 -243
View File
@@ -1,12 +1,12 @@
---
name: reflection-method-call
description: Call a C# method by reflection — including private methods. Requires a method schema obtained via 'reflection-method-find'. Supports static methods, instance methods (with optional target deserialization), and main-thread / off-thread execution.
metadata:
generated-by: mcp-plugin-dotnet
---
# Method C# / Call
---
name: reflection-method-call
description: Call a C# method by reflection — including private methods. Requires a method schema obtained via 'reflection-method-find'. Supports static methods, instance methods (with optional target deserialization), and main-thread / off-thread execution.
metadata:
generated-by: mcp-plugin-dotnet
---
# Method C# / Call
Call C# method. Any method could be called, even private methods. It requires to receive proper method schema. Use 'reflection-method-find' to find available method before using it. Receives input parameters and returns result.
## Match levels (apply to `typeName`, `MethodName`, `Parameters`)
@@ -18,237 +18,237 @@ Call C# method. Any method could be called, even private methods. It requires to
- `targetObject` (optional) — for instance methods. When null, a new instance is created from the declaring type. Required shape: `{ type, value }` (value is deserialized to `type`).
- `inputParameters` (optional) — list of `{ type, name, value }`. Names are enhanced against the resolved method signature if omitted.
- `executeInMainThread` (default `true`) — Unity API calls should keep this true; set false only for thread-safe pure logic.
## How to Call
```bash
unity-mcp-cli run-tool reflection-method-call --input '{
"filter": "string_value",
"knownNamespace": false,
"typeNameMatchLevel": 0,
"methodNameMatchLevel": 0,
"parametersMatchLevel": 0,
"targetObject": "string_value",
"inputParameters": "string_value",
"executeInMainThread": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool reflection-method-call --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool reflection-method-call --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filter` | `any` | Yes | Method reference. Used to find method in codebase of the project. |
| `knownNamespace` | `boolean` | No | Set to true if 'Namespace' is known and full namespace name is specified in the 'filter.Namespace' property. Otherwise, set to false. |
| `typeNameMatchLevel` | `integer` | No | Minimal match level for 'typeName'. 0 - ignore 'filter.typeName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `methodNameMatchLevel` | `integer` | No | Minimal match level for 'MethodName'. 0 - ignore 'filter.MethodName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `parametersMatchLevel` | `integer` | No | Minimal match level for 'Parameters'. 0 - ignore 'filter.Parameters', 1 - parameters count is the same, 2 - equals (default value). |
| `targetObject` | `any` | No | Specify target object to call method on. Should be null if the method is static or if there is no specific target instance. New instance of the specified class will be created if the method is instance method and the targetObject is null. Required: type - full type name of the object to call method on, value - serialized object value (it will be deserialized to the specified type). |
| `inputParameters` | `any` | No | Method input parameters. Per each parameter specify: type - full type name of the object to call method on, name - parameter name, value - serialized object value (it will be deserialized to the specified type). |
| `executeInMainThread` | `boolean` | No | Set to true if the method should be executed in the main thread. Otherwise, set to false. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filter": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef"
},
"knownNamespace": {
"type": "boolean"
},
"typeNameMatchLevel": {
"type": "integer"
},
"methodNameMatchLevel": {
"type": "integer"
},
"parametersMatchLevel": {
"type": "integer"
},
"targetObject": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"inputParameters": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
},
"executeInMainThread": {
"type": "boolean"
}
},
"$defs": {
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter",
"description": "Parameter of a method. Contains type and name of the parameter."
}
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc."
},
"name": {
"type": "string",
"description": "Name of the parameter. It may be empty if the name is unknown."
}
},
"description": "Parameter of a method. Contains type and name of the parameter."
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef": {
"type": "object",
"properties": {
"namespace": {
"type": "string",
"description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown."
},
"typeName": {
"type": "string",
"description": "Class name, or substring a class name. It may be empty if the class is unknown."
},
"methodName": {
"type": "string",
"description": "Method name, or substring of the method name. It may be empty if the method is unknown."
},
"inputParameters": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)",
"description": "List of input parameters. Can be null if the method has no parameters or the parameters are unknown."
}
},
"description": "Method reference. Used to find method in codebase of the project."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"filter"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
- `executeInMainThread` (default `true`) — Unity API calls should keep this true; set false only for thread-safe pure logic.
## How to Call
```bash
unity-mcp-cli run-tool reflection-method-call --input '{
"filter": "string_value",
"knownNamespace": false,
"typeNameMatchLevel": 0,
"methodNameMatchLevel": 0,
"parametersMatchLevel": 0,
"targetObject": "string_value",
"inputParameters": "string_value",
"executeInMainThread": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool reflection-method-call --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool reflection-method-call --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filter` | `any` | Yes | Method reference. Used to find method in codebase of the project. |
| `knownNamespace` | `boolean` | No | Set to true if 'Namespace' is known and full namespace name is specified in the 'filter.Namespace' property. Otherwise, set to false. |
| `typeNameMatchLevel` | `integer` | No | Minimal match level for 'typeName'. 0 - ignore 'filter.typeName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `methodNameMatchLevel` | `integer` | No | Minimal match level for 'MethodName'. 0 - ignore 'filter.MethodName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `parametersMatchLevel` | `integer` | No | Minimal match level for 'Parameters'. 0 - ignore 'filter.Parameters', 1 - parameters count is the same, 2 - equals (default value). |
| `targetObject` | `any` | No | Specify target object to call method on. Should be null if the method is static or if there is no specific target instance. New instance of the specified class will be created if the method is instance method and the targetObject is null. Required: type - full type name of the object to call method on, value - serialized object value (it will be deserialized to the specified type). |
| `inputParameters` | `any` | No | Method input parameters. Per each parameter specify: type - full type name of the object to call method on, name - parameter name, value - serialized object value (it will be deserialized to the specified type). |
| `executeInMainThread` | `boolean` | No | Set to true if the method should be executed in the main thread. Otherwise, set to false. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filter": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef"
},
"knownNamespace": {
"type": "boolean"
},
"typeNameMatchLevel": {
"type": "integer"
},
"methodNameMatchLevel": {
"type": "integer"
},
"parametersMatchLevel": {
"type": "integer"
},
"targetObject": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
},
"inputParameters": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
},
"executeInMainThread": {
"type": "boolean"
}
},
"$defs": {
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter",
"description": "Parameter of a method. Contains type and name of the parameter."
}
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc."
},
"name": {
"type": "string",
"description": "Name of the parameter. It may be empty if the name is unknown."
}
},
"description": "Parameter of a method. Contains type and name of the parameter."
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef": {
"type": "object",
"properties": {
"namespace": {
"type": "string",
"description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown."
},
"typeName": {
"type": "string",
"description": "Class name, or substring a class name. It may be empty if the class is unknown."
},
"methodName": {
"type": "string",
"description": "Method name, or substring of the method name. It may be empty if the method is unknown."
},
"inputParameters": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)",
"description": "List of input parameters. Can be null if the method has no parameters or the parameters are unknown."
}
},
"description": "Method reference. Used to find method in codebase of the project."
},
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"filter"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
+142 -142
View File
@@ -1,12 +1,12 @@
---
name: reflection-method-find
description: Find C# methods across every loaded assembly by name / type / parameters — including private methods. Returns serialized `MethodData` entries usable as schemas for 'reflection-method-call'.
metadata:
generated-by: mcp-plugin-dotnet
---
# Method C# / Find
---
name: reflection-method-find
description: Find C# methods across every loaded assembly by name / type / parameters — including private methods. Returns serialized `MethodData` entries usable as schemas for 'reflection-method-call'.
metadata:
generated-by: mcp-plugin-dotnet
---
# Method C# / Find
Find method in the project using C# Reflection. It looks for all assemblies in the project and finds method by its name, class name and parameters. Even private methods are available. Use 'reflection-method-call' to call the method after finding it.
## Match levels (apply to `typeName`, `MethodName`, `Parameters`)
@@ -16,136 +16,136 @@ Find method in the project using C# Reflection. It looks for all assemblies in t
## Output
On match, returns a `[Success] Found N method(s):` line followed by a JSON dump of every method's `MethodData`. Pass any single entry to 'reflection-method-call' as its `filter`.
## How to Call
```bash
unity-mcp-cli run-tool reflection-method-find --input '{
"filter": "string_value",
"knownNamespace": false,
"typeNameMatchLevel": 0,
"methodNameMatchLevel": 0,
"parametersMatchLevel": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool reflection-method-find --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool reflection-method-find --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filter` | `any` | Yes | Method reference. Used to find method in codebase of the project. |
| `knownNamespace` | `boolean` | No | Set to true if 'Namespace' is known and full namespace name is specified in the 'filter.Namespace' property. Otherwise, set to false. |
| `typeNameMatchLevel` | `integer` | No | Minimal match level for 'typeName'. 0 - ignore 'filter.typeName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `methodNameMatchLevel` | `integer` | No | Minimal match level for 'MethodName'. 0 - ignore 'filter.MethodName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `parametersMatchLevel` | `integer` | No | Minimal match level for 'Parameters'. 0 - ignore 'filter.Parameters' (default value), 1 - parameters count is the same, 2 - equals. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filter": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef"
},
"knownNamespace": {
"type": "boolean"
},
"typeNameMatchLevel": {
"type": "integer"
},
"methodNameMatchLevel": {
"type": "integer"
},
"parametersMatchLevel": {
"type": "integer"
}
},
"$defs": {
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter",
"description": "Parameter of a method. Contains type and name of the parameter."
}
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc."
},
"name": {
"type": "string",
"description": "Name of the parameter. It may be empty if the name is unknown."
}
},
"description": "Parameter of a method. Contains type and name of the parameter."
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef": {
"type": "object",
"properties": {
"namespace": {
"type": "string",
"description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown."
},
"typeName": {
"type": "string",
"description": "Class name, or substring a class name. It may be empty if the class is unknown."
},
"methodName": {
"type": "string",
"description": "Method name, or substring of the method name. It may be empty if the method is unknown."
},
"inputParameters": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)",
"description": "List of input parameters. Can be null if the method has no parameters or the parameters are unknown."
}
},
"description": "Method reference. Used to find method in codebase of the project."
}
},
"required": [
"filter"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
On match, returns a `[Success] Found N method(s):` line followed by a JSON dump of every method's `MethodData`. Pass any single entry to 'reflection-method-call' as its `filter`.
## How to Call
```bash
unity-mcp-cli run-tool reflection-method-find --input '{
"filter": "string_value",
"knownNamespace": false,
"typeNameMatchLevel": 0,
"methodNameMatchLevel": 0,
"parametersMatchLevel": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool reflection-method-find --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool reflection-method-find --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filter` | `any` | Yes | Method reference. Used to find method in codebase of the project. |
| `knownNamespace` | `boolean` | No | Set to true if 'Namespace' is known and full namespace name is specified in the 'filter.Namespace' property. Otherwise, set to false. |
| `typeNameMatchLevel` | `integer` | No | Minimal match level for 'typeName'. 0 - ignore 'filter.typeName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `methodNameMatchLevel` | `integer` | No | Minimal match level for 'MethodName'. 0 - ignore 'filter.MethodName', 1 - contains ignoring case (default value), 2 - contains case sensitive, 3 - starts with ignoring case, 4 - starts with case sensitive, 5 - equals ignoring case, 6 - equals case sensitive. |
| `parametersMatchLevel` | `integer` | No | Minimal match level for 'Parameters'. 0 - ignore 'filter.Parameters' (default value), 1 - parameters count is the same, 2 - equals. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filter": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef"
},
"knownNamespace": {
"type": "boolean"
},
"typeNameMatchLevel": {
"type": "integer"
},
"methodNameMatchLevel": {
"type": "integer"
},
"parametersMatchLevel": {
"type": "integer"
}
},
"$defs": {
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter",
"description": "Parameter of a method. Contains type and name of the parameter."
}
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": {
"type": "object",
"properties": {
"typeName": {
"type": "string",
"description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc."
},
"name": {
"type": "string",
"description": "Name of the parameter. It may be empty if the name is unknown."
}
},
"description": "Parameter of a method. Contains type and name of the parameter."
},
"com.IvanMurzak.ReflectorNet.Model.MethodRef": {
"type": "object",
"properties": {
"namespace": {
"type": "string",
"description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown."
},
"typeName": {
"type": "string",
"description": "Class name, or substring a class name. It may be empty if the class is unknown."
},
"methodName": {
"type": "string",
"description": "Method name, or substring of the method name. It may be empty if the method is unknown."
},
"inputParameters": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)",
"description": "List of input parameters. Can be null if the method has no parameters or the parameters are unknown."
}
},
"description": "Method reference. Used to find method in codebase of the project."
}
},
"required": [
"filter"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+152 -152
View File
@@ -1,12 +1,12 @@
---
name: scene-create
description: Create a new Unity scene asset and save it at the given `.unity` path. Use 'scene-list-opened' to inspect the resulting opened-scene set afterwards.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Create
---
name: scene-create
description: Create a new Unity scene asset and save it at the given `.unity` path. Use 'scene-list-opened' to inspect the resulting opened-scene set afterwards.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Create
Create new scene in the project assets. Use 'scene-list-opened' tool to list all opened scenes after creation.
## Inputs
@@ -17,146 +17,146 @@ Create new scene in the project assets. Use 'scene-list-opened' tool to list all
## Behavior
Calls `EditorSceneManager.NewScene` + `SaveScene(path)` on the main thread, repaints editor windows, and returns a `SceneDataShallow` for the newly created scene.
## How to Call
```bash
unity-mcp-cli run-tool scene-create --input '{
"path": "string_value",
"newSceneSetup": "string_value",
"newSceneMode": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `path` | `string` | Yes | Path to the scene file. Should end with ".unity" extension. |
| `newSceneSetup` | `any` | No | |
| `newSceneMode` | `any` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"path": {
"type": "string"
},
"newSceneSetup": {
"$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneSetup"
},
"newSceneMode": {
"$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneMode"
}
},
"$defs": {
"UnityEditor.SceneManagement.NewSceneSetup": {
"type": "string",
"enum": [
"EmptyScene",
"DefaultGameObjects"
]
},
"UnityEditor.SceneManagement.NewSceneMode": {
"type": "string",
"enum": [
"Single",
"Additive"
]
}
},
"required": [
"path"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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"
]
}
```
Calls `EditorSceneManager.NewScene` + `SaveScene(path)` on the main thread, repaints editor windows, and returns a `SceneDataShallow` for the newly created scene.
## How to Call
```bash
unity-mcp-cli run-tool scene-create --input '{
"path": "string_value",
"newSceneSetup": "string_value",
"newSceneMode": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `path` | `string` | Yes | Path to the scene file. Should end with ".unity" extension. |
| `newSceneSetup` | `any` | No | |
| `newSceneMode` | `any` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"path": {
"type": "string"
},
"newSceneSetup": {
"$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneSetup"
},
"newSceneMode": {
"$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneMode"
}
},
"$defs": {
"UnityEditor.SceneManagement.NewSceneSetup": {
"type": "string",
"enum": [
"EmptyScene",
"DefaultGameObjects"
]
},
"UnityEditor.SceneManagement.NewSceneMode": {
"type": "string",
"enum": [
"Single",
"Additive"
]
}
},
"required": [
"path"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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"
]
}
```
+418 -418
View File
@@ -1,12 +1,12 @@
---
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.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Get Data
---
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.
metadata:
generated-by: mcp-plugin-dotnet
---
# 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)
@@ -22,412 +22,412 @@ Supply `paths` to read only the listed fields/elements from the scene's root-Gam
## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. Example: `paths=['[0]/name']` reads the name of the first root GameObject.
## How to Call
```bash
unity-mcp-cli run-tool scene-get-data --input '{
"openedSceneName": "string_value",
"includeRootGameObjects": false,
"includeChildrenDepth": 0,
"includeBounds": false,
"includeData": false,
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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"
]
}
```
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. Example: `paths=['[0]/name']` reads the name of the first root GameObject.
## How to Call
```bash
unity-mcp-cli run-tool scene-get-data --input '{
"openedSceneName": "string_value",
"includeRootGameObjects": false,
"includeChildrenDepth": 0,
"includeBounds": false,
"includeData": false,
"paths": "string_value",
"viewQuery": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-get-data --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-get-data --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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"
]
}
```
+129 -129
View File
@@ -1,133 +1,133 @@
---
name: scene-list-opened
description: List every scene currently opened in the Unity Editor as a shallow snapshot (name, path, build flags). Use 'scene-get-data' for the deep view of a specific scene.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / List Opened
---
name: scene-list-opened
description: List every scene currently opened in the Unity Editor as a shallow snapshot (name, path, build flags). Use 'scene-get-data' for the deep view of a specific scene.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / List Opened
Returns the list of currently opened scenes in Unity Editor. Use 'scene-get-data' tool to get detailed information about a specific scene.
## Behavior
Maps `OpenedScenes` through `ToSceneDataShallow()` on the main thread and returns the resulting array. No filtering or pagination — every opened scene is included.
## How to Call
```bash
unity-mcp-cli run-tool scene-list-opened --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-list-opened --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-list-opened --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1"
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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."
},
"AIGD.SceneDataShallow-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
}
},
"required": [
"result"
]
}
```
Maps `OpenedScenes` through `ToSceneDataShallow()` on the main thread and returns the resulting array. No filtering or pagination — every opened scene is included.
## How to Call
```bash
unity-mcp-cli run-tool scene-list-opened --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-list-opened --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-list-opened --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1"
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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."
},
"AIGD.SceneDataShallow-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
}
},
"required": [
"result"
]
}
```
+172 -172
View File
@@ -1,12 +1,12 @@
---
name: scene-open
description: Open a Unity scene asset in Single or Additive mode. Returns the post-open list of all opened scenes. Use 'assets-find' to locate the scene asset first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Open
---
name: scene-open
description: Open a Unity scene asset in Single or Additive mode. Returns the post-open list of all opened scenes. Use 'assets-find' to locate the scene asset first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Open
Open scene from the project asset file. Use 'assets-find' tool to find the scene asset first.
## Inputs
@@ -14,166 +14,166 @@ Open scene from the project asset file. Use 'assets-find' tool to find the scene
- `sceneRef` — `AssetObjectRef` pointing at a `SceneAsset`. Throws if the asset cannot be resolved or is not a `SceneAsset`.
- `loadSceneMode` (default `Single`):
- `Single` — closes the currently opened scenes and opens this one.
- `Additive` — keeps the currently opened scenes and opens this one alongside them.
## How to Call
```bash
unity-mcp-cli run-tool scene-open --input '{
"sceneRef": "string_value",
"loadSceneMode": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-open --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-open --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sceneRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `loadSceneMode` | `string` | No | Open scene mode. Single: closes the current scenes and opens a new one. Additive: keeps the current scene and opens additional one. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sceneRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"loadSceneMode": {
"type": "string",
"enum": [
"Single",
"Additive",
"AdditiveWithoutLoading"
]
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"sceneRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1"
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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."
},
"AIGD.SceneDataShallow-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
}
},
"required": [
"result"
]
}
```
- `Additive` — keeps the currently opened scenes and opens this one alongside them.
## How to Call
```bash
unity-mcp-cli run-tool scene-open --input '{
"sceneRef": "string_value",
"loadSceneMode": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-open --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-open --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sceneRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
| `loadSceneMode` | `string` | No | Open scene mode. Single: closes the current scenes and opens a new one. Additive: keeps the current scene and opens additional one. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sceneRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
},
"loadSceneMode": {
"type": "string",
"enum": [
"Single",
"Additive",
"AdditiveWithoutLoading"
]
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"sceneRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1"
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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."
},
"AIGD.SceneDataShallow-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
}
},
"required": [
"result"
]
}
```
+65 -65
View File
@@ -1,12 +1,12 @@
---
name: scene-save
description: Save an opened scene back to its asset file (or to a new path when `path` is provided). When `openedSceneName` is empty, saves the currently active scene. Use 'scene-list-opened' to find the scene name first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Save
---
name: scene-save
description: Save an opened scene back to its asset file (or to a new path when `path` is provided). When `openedSceneName` is empty, saves the currently active scene. Use 'scene-list-opened' to find the scene name first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Save
Save Opened scene to the asset file. Use 'scene-list-opened' tool to get the list of all opened scenes.
## Inputs
@@ -16,59 +16,59 @@ Save Opened scene to the asset file. Use 'scene-list-opened' tool to get the lis
## Validation
Throws if the scene cannot be resolved, has no existing path AND no override path was supplied, or the supplied path does not end with `.unity`. On `EditorSceneManager.SaveScene` failure, surfaces an error with the current opened-scenes list for diagnosis.
## How to Call
```bash
unity-mcp-cli run-tool scene-save --input '{
"openedSceneName": "string_value",
"path": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-save --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-save --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 that should be saved. Could be empty if need to save the current active scene. |
| `path` | `string` | No | Path to the scene file. Should end with ".unity". If null or empty save to the existed scene asset file. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"openedSceneName": {
"type": "string"
},
"path": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
Throws if the scene cannot be resolved, has no existing path AND no override path was supplied, or the supplied path does not end with `.unity`. On `EditorSceneManager.SaveScene` failure, surfaces an error with the current opened-scenes list for diagnosis.
## How to Call
```bash
unity-mcp-cli run-tool scene-save --input '{
"openedSceneName": "string_value",
"path": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-save --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-save --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 that should be saved. Could be empty if need to save the current active scene. |
| `path` | `string` | No | Path to the scene file. Should end with ".unity". If null or empty save to the existed scene asset file. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"openedSceneName": {
"type": "string"
},
"path": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
+162 -162
View File
@@ -1,12 +1,12 @@
---
name: scene-set-active
description: Mark an opened scene as the Editor's active scene (the one new GameObjects are added to and that's used as the default for many operations). Use 'scene-list-opened' to enumerate opened scenes first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Set Active
---
name: scene-set-active
description: Mark an opened scene as the Editor's active scene (the one new GameObjects are added to and that's used as the default for many operations). Use 'scene-list-opened' to enumerate opened scenes first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Set Active
Set the specified opened scene as the active scene. Use 'scene-list-opened' tool to get the list of all opened scenes.
## Inputs
@@ -15,156 +15,156 @@ Set the specified opened scene as the active scene. Use 'scene-list-opened' tool
## Behavior
Resolves the `SceneAsset`, finds the matching opened scene (by name then by path), and calls `EditorSceneManager.SetActiveScene`. No-op if the scene is already active. Returns the post-call snapshot of opened scenes.
## How to Call
```bash
unity-mcp-cli run-tool scene-set-active --input '{
"sceneRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-set-active --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-set-active --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sceneRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sceneRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"sceneRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1"
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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."
},
"AIGD.SceneDataShallow-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
}
},
"required": [
"result"
]
}
```
Resolves the `SceneAsset`, finds the matching opened scene (by name then by path), and calls `EditorSceneManager.SetActiveScene`. No-op if the scene is already active. Returns the post-call snapshot of opened scenes.
## How to Call
```bash
unity-mcp-cli run-tool scene-set-active --input '{
"sceneRef": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-set-active --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-set-active --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `sceneRef` | `any` | Yes | Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"sceneRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
}
},
"required": [
"sceneRef"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1"
}
},
"$defs": {
"AIGD.SceneDataShallow": {
"type": "object",
"properties": {
"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."
},
"AIGD.SceneDataShallow-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene."
}
}
},
"required": [
"result"
]
}
```
+120 -120
View File
@@ -1,12 +1,12 @@
---
name: scene-unload
description: Unload an opened scene from the Unity Editor (asynchronously via `SceneManager.UnloadSceneAsync`). Use 'scene-list-opened' to find the scene name first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Unload
---
name: scene-unload
description: Unload an opened scene from the Unity Editor (asynchronously via `SceneManager.UnloadSceneAsync`). Use 'scene-list-opened' to find the scene name first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Scene / Unload
Unload scene from the Opened scenes in Unity Editor. Use 'scene-list-opened' tool to get the list of all opened scenes.
## Inputs
@@ -15,114 +15,114 @@ Unload scene from the Opened scenes in Unity Editor. Use 'scene-list-opened' too
## Behavior
Runs `SceneManager.UnloadSceneAsync` on the main thread and awaits completion. Returns an `UnloadSceneResult` containing the scene name and an `AssetObjectRef` to its asset (or `null` if the scene was not backed by an asset on disk).
## How to Call
```bash
unity-mcp-cli run-tool scene-unload --input '{
"name": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-unload --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-unload --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `name` | `string` | Yes | Name of the loaded scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.UnloadSceneResult"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"AIGD.UnloadSceneResult": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Name of the unloaded scene."
},
"AssetObjectRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to the unloaded scene asset."
}
}
}
},
"required": [
"result"
]
}
```
Runs `SceneManager.UnloadSceneAsync` on the main thread and awaits completion. Returns an `UnloadSceneResult` containing the scene name and an `AssetObjectRef` to its asset (or `null` if the scene was not backed by an asset on disk).
## How to Call
```bash
unity-mcp-cli run-tool scene-unload --input '{
"name": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool scene-unload --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool scene-unload --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `name` | `string` | Yes | Name of the loaded scene. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"name": {
"type": "string"
}
},
"required": [
"name"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.UnloadSceneResult"
}
},
"$defs": {
"AIGD.AssetObjectRef": {
"type": "object",
"properties": {
"instanceID": {
"type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0' and 'assetPath' and 'assetGuid' is not provided, empty or null, then it will be used as 'null'."
},
"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": "Reference to UnityEngine.Object asset instance. It could be Material, ScriptableObject, Prefab, and any other Asset. Anything located in the Assets and Packages folders."
},
"System.Type": {
"type": "string"
},
"AIGD.UnloadSceneResult": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Name of the unloaded scene."
},
"AssetObjectRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to the unloaded scene asset."
}
}
}
},
"required": [
"result"
]
}
```
+108 -108
View File
@@ -1,12 +1,12 @@
---
name: screenshot-camera
description: Capture a screenshot from a Unity `Camera` and return it as a PNG image for direct LLM inspection. Falls back to `Camera.main` (then any active camera) when `cameraRef` is null. Width and height are capped to keep response size manageable.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Camera
---
name: screenshot-camera
description: Capture a screenshot from a Unity `Camera` and return it as a PNG image for direct LLM inspection. Falls back to `Camera.main` (then any active camera) when `cameraRef` is null. Width and height are capped to keep response size manageable.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Camera
Captures a screenshot from a camera and returns it as an image. If no camera is specified, uses the Main Camera. Returns the image directly for visual inspection by the LLM.
## Inputs
@@ -16,102 +16,102 @@ Captures a screenshot from a camera and returns it as an image. If no camera is
## Behavior
Allocates a temporary `RenderTexture`, swaps it onto the chosen camera, calls `Camera.Render`, reads back via `Texture2D.ReadPixels`, encodes as PNG, and restores the camera's prior `targetTexture`. Returns a `ResponseCallTool.Image` with `image/png` MIME and a descriptive caption.
## How to Call
```bash
unity-mcp-cli run-tool screenshot-camera --input '{
"cameraRef": "string_value",
"width": 0,
"height": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool screenshot-camera --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool screenshot-camera --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `cameraRef` | `any` | No | Reference to the camera GameObject. If not specified, uses the Main Camera. |
| `width` | `integer` | No | Width of the screenshot in pixels. |
| `height` | `integer` | No | Height of the screenshot in pixels. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"cameraRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
}
}
```
## Output
This tool does not return structured output.
Allocates a temporary `RenderTexture`, swaps it onto the chosen camera, calls `Camera.Render`, reads back via `Texture2D.ReadPixels`, encodes as PNG, and restores the camera's prior `targetTexture`. Returns a `ResponseCallTool.Image` with `image/png` MIME and a descriptive caption.
## How to Call
```bash
unity-mcp-cli run-tool screenshot-camera --input '{
"cameraRef": "string_value",
"width": 0,
"height": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool screenshot-camera --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool screenshot-camera --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `cameraRef` | `any` | No | Reference to the camera GameObject. If not specified, uses the Main Camera. |
| `width` | `integer` | No | Width of the screenshot in pixels. |
| `height` | `integer` | No | Height of the screenshot in pixels. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"cameraRef": {
"$ref": "#/$defs/AIGD.GameObjectRef"
},
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
},
"$defs": {
"System.Type": {
"type": "string"
},
"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."
}
}
}
```
## Output
This tool does not return structured output.
+60 -60
View File
@@ -1,64 +1,64 @@
---
name: screenshot-game-view
description: Capture a screenshot of the Unity Editor's Game View by reading its internal render texture directly. Image size matches the current Game View resolution; the tool corrects Y-flip on DirectX / Metal so the output is always upright. Requires an open Game View window.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Game View
---
name: screenshot-game-view
description: Capture a screenshot of the Unity Editor's Game View by reading its internal render texture directly. Image size matches the current Game View resolution; the tool corrects Y-flip on DirectX / Metal so the output is always upright. Requires an open Game View window.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Game View
Captures a screenshot from the Unity Editor Game View and returns it as an image. Reads the Game View's own render texture directly via the Unity Editor API. The image size matches the current Game View resolution. Returns the image directly for visual inspection by the LLM.
## Behavior
Locates `UnityEditor.GameView`, repaints it, then reflects the `m_RenderTexture` field and reads back via `Texture2D.ReadPixels`. On graphics APIs whose UV origin is top-left (`SystemInfo.graphicsUVStartsAtTop`), the read-back pixels are vertically flipped before encoding so the orientation matches what the user sees. Returns a PNG image with the resolution baked into the caption.
## How to Call
```bash
unity-mcp-cli run-tool screenshot-game-view --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool screenshot-game-view --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool screenshot-game-view --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
Locates `UnityEditor.GameView`, repaints it, then reflects the `m_RenderTexture` field and reads back via `Texture2D.ReadPixels`. On graphics APIs whose UV origin is top-left (`SystemInfo.graphicsUVStartsAtTop`), the read-back pixels are vertically flipped before encoding so the orientation matches what the user sees. Returns a PNG image with the resolution baked into the caption.
## How to Call
```bash
unity-mcp-cli run-tool screenshot-game-view --input '{
"nothing": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool screenshot-game-view --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool screenshot-game-view --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `nothing` | `string` | No | |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"nothing": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
+185 -185
View File
@@ -1,12 +1,12 @@
---
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.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Isolated GameObject
---
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.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Isolated GameObject
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.
## Camera views
@@ -25,179 +25,179 @@ Renders a screenshot of a target GameObject with configurable isolation, backgro
## Side-effect caveat
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.
## How to Call
```bash
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
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `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. |
### Input JSON Schema
```json
{
"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",
"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.Boolean": {
"type": "boolean"
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-BackgroundMode": {
"type": "string",
"enum": [
"SolidColor",
"Skybox",
"Transparent"
]
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-CameraView": {
"type": "string",
"enum": [
"Front",
"Back",
"Left",
"Right",
"Top",
"Bottom",
"Composite"
]
},
"System.Single": {
"type": "number"
},
"System.Int32": {
"type": "integer"
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
This tool does not return structured output.
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.
## How to Call
```bash
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
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `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. |
### Input JSON Schema
```json
{
"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",
"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.Boolean": {
"type": "boolean"
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-BackgroundMode": {
"type": "string",
"enum": [
"SolidColor",
"Skybox",
"Transparent"
]
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-CameraView": {
"type": "string",
"enum": [
"Front",
"Back",
"Left",
"Right",
"Top",
"Bottom",
"Composite"
]
},
"System.Single": {
"type": "number"
},
"System.Int32": {
"type": "integer"
}
},
"required": [
"gameObjectRef"
]
}
```
## Output
This tool does not return structured output.
+65 -65
View File
@@ -1,12 +1,12 @@
---
name: screenshot-scene-view
description: Capture a screenshot from the Unity Editor Scene View at the requested size. Renders via the Scene View's active camera onto a temporary `RenderTexture`. Requires an open Scene View.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Scene View
---
name: screenshot-scene-view
description: Capture a screenshot from the Unity Editor Scene View at the requested size. Renders via the Scene View's active camera onto a temporary `RenderTexture`. Requires an open Scene View.
metadata:
generated-by: mcp-plugin-dotnet
---
# Screenshot / Scene View
Captures a screenshot from the Unity Editor Scene View and returns it as an image. Returns the image directly for visual inspection by the LLM.
## Inputs
@@ -15,59 +15,59 @@ Captures a screenshot from the Unity Editor Scene View and returns it as an imag
## Behavior
Uses `SceneView.lastActiveSceneView` (falls back to the first window in `SceneView.sceneViews`). Allocates a temporary `RenderTexture`, swaps it onto the Scene View's camera, calls `Render`, reads back with `Texture2D.ReadPixels`, encodes PNG, and restores the camera's prior `targetTexture`. Throws/errors when no Scene View is open or the Scene View camera is null.
## How to Call
```bash
unity-mcp-cli run-tool screenshot-scene-view --input '{
"width": 0,
"height": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool screenshot-scene-view --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool screenshot-scene-view --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `width` | `integer` | No | Width of the screenshot in pixels. |
| `height` | `integer` | No | Height of the screenshot in pixels. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
}
}
```
## Output
This tool does not return structured output.
Uses `SceneView.lastActiveSceneView` (falls back to the first window in `SceneView.sceneViews`). Allocates a temporary `RenderTexture`, swaps it onto the Scene View's camera, calls `Render`, reads back with `Texture2D.ReadPixels`, encodes PNG, and restores the camera's prior `targetTexture`. Throws/errors when no Scene View is open or the Scene View camera is null.
## How to Call
```bash
unity-mcp-cli run-tool screenshot-scene-view --input '{
"width": 0,
"height": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool screenshot-scene-view --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool screenshot-scene-view --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `width` | `integer` | No | Width of the screenshot in pixels. |
| `height` | `integer` | No | Height of the screenshot in pixels. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"width": {
"type": "integer"
},
"height": {
"type": "integer"
}
}
}
```
## Output
This tool does not return structured output.
+71 -71
View File
@@ -1,12 +1,12 @@
---
name: script-delete
description: Delete one or more `.cs` script files from disk, refresh the AssetDatabase, and wait for Unity compilation to settle before delivering the final result via the request's `requestId`. Pair with 'script-read' to inspect files before deletion.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Delete
---
name: script-delete
description: Delete one or more `.cs` script files from disk, refresh the AssetDatabase, and wait for Unity compilation to settle before delivering the final result via the request's `requestId`. Pair with 'script-read' to inspect files before deletion.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Delete
Delete the script file(s). Does AssetDatabase.Refresh() and waits for Unity compilation to complete before reporting results. Use 'script-read' tool to read existing script files first.
## Inputs
@@ -16,65 +16,65 @@ Delete the script file(s). Does AssetDatabase.Refresh() and waits for Unity comp
## Behavior
Validates the array (non-empty, every entry ends with `.cs`, every entry exists). Deletes each file plus its sibling `.meta` (when present). Calls `AssetDatabase.Refresh` and schedules a post-compilation notification — the final response is delivered after Unity finishes the recompile triggered by the delete.
## How to Call
```bash
unity-mcp-cli run-tool script-delete --input '{
"files": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-delete --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-delete --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `files` | `any` | Yes | File paths to the files. Sample: "Assets/Scripts/MyScript.cs". |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"files": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"files"
]
}
```
## Output
This tool does not return structured output.
Validates the array (non-empty, every entry ends with `.cs`, every entry exists). Deletes each file plus its sibling `.meta` (when present). Calls `AssetDatabase.Refresh` and schedules a post-compilation notification — the final response is delivered after Unity finishes the recompile triggered by the delete.
## How to Call
```bash
unity-mcp-cli run-tool script-delete --input '{
"files": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-delete --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-delete --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `files` | `any` | Yes | File paths to the files. Sample: "Assets/Scripts/MyScript.cs". |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"files": {
"$ref": "#/$defs/System.String-1"
}
},
"$defs": {
"System.String-1": {
"type": "array",
"items": {
"type": "string"
}
}
},
"required": [
"files"
]
}
```
## Output
This tool does not return structured output.
+185 -185
View File
@@ -1,12 +1,12 @@
---
name: script-execute
description: Compiles and executes C# code dynamically using Roslyn. Supports a full-code mode (default) and a body-only mode — see the skill body for the difference and for how to pass Unity object references as parameters.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Execute
---
name: script-execute
description: Compiles and executes C# code dynamically using Roslyn. Supports a full-code mode (default) and a body-only mode — see the skill body for the difference and for how to pass Unity object references as parameters.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Execute
## Modes
- **Full code mode** (default, `isMethodBody=false`): the `csharpCode` argument must define a complete class with a static method (no top-level statements).
@@ -20,179 +20,179 @@ Unity objects (`GameObject`, `Component`, etc.) can be passed as parameters usin
- `UnityEngine.Component` (or any component subtype) — resolves from `{"instanceID": N}`.
- `AIGD.GameObjectRef` — passes a `GameObjectRef` POCO directly; the method body calls `goRef.FindGameObject()` to resolve it.
- `AIGD.ComponentRef` — passes a `ComponentRef` POCO.
- `AIGD.ObjectRef` — passes a base `ObjectRef` POCO.
## How to Call
```bash
unity-mcp-cli run-tool script-execute --input '{
"csharpCode": "string_value",
"className": "string_value",
"methodName": "string_value",
"parameters": "string_value",
"isMethodBody": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-execute --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-execute --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `csharpCode` | `string` | Yes | C# code to compile and execute. In full code mode (default, isMethodBody=false): must define a complete class with a static method. Example: 'using UnityEngine; public class Script { public static void Main() { Debug.Log("Hello"); } }'. Do NOT use top-level statements. In body-only mode (isMethodBody=true): provide only the method body statements. The tool auto-generates usings, class, and method header. Example body: 'go.SetActive(false);'. Custom helper classes can still be defined inline in the body-only string after the main logic, but for complex additional class definitions use full code mode instead. |
| `className` | `string` | No | The name of the class containing the method to execute. In body-only mode this becomes the generated class name. |
| `methodName` | `string` | No | The name of the method to execute. Must be a static method. In body-only mode this becomes the generated method name. |
| `parameters` | `any` | No | Serialized parameters to pass to the method. Each entry must specify 'name' and 'typeName'. Supported parameter types include primitives, strings, and Unity object references: - 'UnityEngine.GameObject': resolves an actual GameObject from value '{"instanceID": N}', '{"name": "..."}', or '{"path": "..."}'. - 'UnityEngine.Component' (or any component subtype): resolves from '{"instanceID": N}'. - 'AIGD.GameObjectRef': passes a GameObjectRef POCO directly; the method body calls goRef.FindGameObject() to resolve it. - 'AIGD.ComponentRef': passes a ComponentRef POCO. - 'AIGD.ObjectRef': passes a base ObjectRef POCO. If the method does not require parameters, leave this empty. |
| `isMethodBody` | `boolean` | No | When true, 'csharpCode' is treated as just the method body. The tool auto-generates standard using directives (System, UnityEngine, AIGD, com.IvanMurzak.Unity.MCP.Runtime.Extensions, UnityEditor), the class definition, and the method signature (void return type). Parameters from the 'parameters' list are automatically added to the method signature using their typeName and name. When false (default), 'csharpCode' must be a complete C# compilation unit with class and method definitions. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"csharpCode": {
"type": "string"
},
"className": {
"type": "string"
},
"methodName": {
"type": "string"
},
"parameters": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
},
"isMethodBody": {
"type": "boolean"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"csharpCode"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
- `AIGD.ObjectRef` — passes a base `ObjectRef` POCO.
## How to Call
```bash
unity-mcp-cli run-tool script-execute --input '{
"csharpCode": "string_value",
"className": "string_value",
"methodName": "string_value",
"parameters": "string_value",
"isMethodBody": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-execute --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-execute --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `csharpCode` | `string` | Yes | C# code to compile and execute. In full code mode (default, isMethodBody=false): must define a complete class with a static method. Example: 'using UnityEngine; public class Script { public static void Main() { Debug.Log("Hello"); } }'. Do NOT use top-level statements. In body-only mode (isMethodBody=true): provide only the method body statements. The tool auto-generates usings, class, and method header. Example body: 'go.SetActive(false);'. Custom helper classes can still be defined inline in the body-only string after the main logic, but for complex additional class definitions use full code mode instead. |
| `className` | `string` | No | The name of the class containing the method to execute. In body-only mode this becomes the generated class name. |
| `methodName` | `string` | No | The name of the method to execute. Must be a static method. In body-only mode this becomes the generated method name. |
| `parameters` | `any` | No | Serialized parameters to pass to the method. Each entry must specify 'name' and 'typeName'. Supported parameter types include primitives, strings, and Unity object references: - 'UnityEngine.GameObject': resolves an actual GameObject from value '{"instanceID": N}', '{"name": "..."}', or '{"path": "..."}'. - 'UnityEngine.Component' (or any component subtype): resolves from '{"instanceID": N}'. - 'AIGD.GameObjectRef': passes a GameObjectRef POCO directly; the method body calls goRef.FindGameObject() to resolve it. - 'AIGD.ComponentRef': passes a ComponentRef POCO. - 'AIGD.ObjectRef': passes a base ObjectRef POCO. If the method does not require parameters, leave this empty. |
| `isMethodBody` | `boolean` | No | When true, 'csharpCode' is treated as just the method body. The tool auto-generates standard using directives (System, UnityEngine, AIGD, com.IvanMurzak.Unity.MCP.Runtime.Extensions, UnityEditor), the class definition, and the method signature (void return type). Parameters from the 'parameters' list are automatically added to the method signature using their typeName and name. When false (default), 'csharpCode' must be a complete C# compilation unit with class and method definitions. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"csharpCode": {
"type": "string"
},
"className": {
"type": "string"
},
"methodName": {
"type": "string"
},
"parameters": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
},
"isMethodBody": {
"type": "boolean"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"csharpCode"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}
},
"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
}
},
"required": [
"result"
]
}
```
+87 -87
View File
@@ -1,12 +1,12 @@
---
name: script-read
description: Read a `.cs` script file and return its content as a string. Supports a 1-based `lineFrom`/`lineTo` slice for partial reads. Pair with 'script-update-or-create' to write back.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Read
---
name: script-read
description: Read a `.cs` script file and return its content as a string. Supports a 1-based `lineFrom`/`lineTo` slice for partial reads. Pair with 'script-update-or-create' to write back.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Read
Reads the content of a script file and returns it as a string. Use 'script-update-or-create' tool to update or create script files.
## Inputs
@@ -17,81 +17,81 @@ Reads the content of a script file and returns it as a string. Use 'script-updat
## Behavior
Reads the file with `File.ReadAllLines` and slices `[lineFrom..lineTo]` (inclusive). The slice indices are clamped — passing out-of-range `lineFrom`/`lineTo` is forgiving (read returns at-most the whole file).
## How to Call
```bash
unity-mcp-cli run-tool script-read --input '{
"filePath": "string_value",
"lineFrom": 0,
"lineTo": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-read --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-read --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | The path to the file. Sample: "Assets/Scripts/MyScript.cs". |
| `lineFrom` | `integer` | No | The line number to start reading from (1-based). |
| `lineTo` | `integer` | No | The line number to stop reading at (1-based, -1 for all lines). |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
},
"lineFrom": {
"type": "integer"
},
"lineTo": {
"type": "integer"
}
},
"required": [
"filePath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
Reads the file with `File.ReadAllLines` and slices `[lineFrom..lineTo]` (inclusive). The slice indices are clamped — passing out-of-range `lineFrom`/`lineTo` is forgiving (read returns at-most the whole file).
## How to Call
```bash
unity-mcp-cli run-tool script-read --input '{
"filePath": "string_value",
"lineFrom": 0,
"lineTo": 0
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-read --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-read --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | The path to the file. Sample: "Assets/Scripts/MyScript.cs". |
| `lineFrom` | `integer` | No | The line number to start reading from (1-based). |
| `lineTo` | `integer` | No | The line number to stop reading at (1-based, -1 for all lines). |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
},
"lineFrom": {
"type": "integer"
},
"lineTo": {
"type": "integer"
}
},
"required": [
"filePath"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+69 -69
View File
@@ -1,12 +1,12 @@
---
name: script-update-or-create
description: Write a `.cs` script file (create or overwrite) with the provided C# code. Validates syntax via Roslyn before write — invalid code is rejected with error details and the file is left untouched. Refreshes the AssetDatabase and delivers the final result via `requestId` after Unity finishes the triggered compilation. Use 'script-read' to inspect existing content first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Update or Create
---
name: script-update-or-create
description: Write a `.cs` script file (create or overwrite) with the provided C# code. Validates syntax via Roslyn before write — invalid code is rejected with error details and the file is left untouched. Refreshes the AssetDatabase and delivers the final result via `requestId` after Unity finishes the triggered compilation. Use 'script-read' to inspect existing content first.
metadata:
generated-by: mcp-plugin-dotnet
---
# Script / Update or Create
Updates or creates script file with the provided C# code. Does AssetDatabase.Refresh() at the end. Provides compilation error details if the code has syntax errors. Use 'script-read' tool to read existing script files first.
## Inputs
@@ -17,63 +17,63 @@ Updates or creates script file with the provided C# code. Does AssetDatabase.Ref
## Behavior
Creates any missing parent directories, writes the file, then calls `AssetDatabase.Refresh` and schedules a post-compilation notification so the final response is delivered after Unity finishes the recompile.
## How to Call
```bash
unity-mcp-cli run-tool script-update-or-create --input '{
"filePath": "string_value",
"content": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-update-or-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-update-or-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | The path to the file. Sample: "Assets/Scripts/MyScript.cs". |
| `content` | `string` | Yes | C# code - content of the file. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"filePath",
"content"
]
}
```
## Output
This tool does not return structured output.
Creates any missing parent directories, writes the file, then calls `AssetDatabase.Refresh` and schedules a post-compilation notification so the final response is delivered after Unity finishes the recompile.
## How to Call
```bash
unity-mcp-cli run-tool script-update-or-create --input '{
"filePath": "string_value",
"content": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool script-update-or-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool script-update-or-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `filePath` | `string` | Yes | The path to the file. Sample: "Assets/Scripts/MyScript.cs". |
| `content` | `string` | Yes | C# code - content of the file. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"filePath": {
"type": "string"
},
"content": {
"type": "string"
}
},
"required": [
"filePath",
"content"
]
}
```
## Output
This tool does not return structured output.
+263 -263
View File
@@ -1,12 +1,12 @@
---
name: tests-run
description: "Execute Unity tests (`EditMode` or `PlayMode`) and return per-test results. Supports filtering by test assembly, namespace, class, and method. Refreshes the AssetDatabase first; defers execution across domain reloads if scripts changed. Precondition: every open scene must be saved — dirty scenes abort the run."
metadata:
generated-by: mcp-plugin-dotnet
---
# Tests / Run
---
name: tests-run
description: "Execute Unity tests (`EditMode` or `PlayMode`) and return per-test results. Supports filtering by test assembly, namespace, class, and method. Refreshes the AssetDatabase first; defers execution across domain reloads if scripts changed. Precondition: every open scene must be saved — dirty scenes abort the run."
metadata:
generated-by: mcp-plugin-dotnet
---
# Tests / Run
Execute Unity tests and return detailed results. Supports filtering by test mode, assembly, namespace, class, and method. Recommended to use 'EditMode' for faster iteration during development. Precondition: every open scene MUST be saved (no unsaved changes). If any open scene is dirty, this tool throws an InvalidOperationException listing the dirty scenes; save them and retry.
## Filters
@@ -25,257 +25,257 @@ Execute Unity tests and return detailed results. Supports filtering by test mode
## Domain reloads
If the AssetDatabase refresh triggers compilation, the tool persists the run parameters to `SessionState`, returns `Processing`, and resumes the run automatically after the reload completes. Pre-existing compilation errors short-circuit the run and return the error details so the caller can fix the project first.
## How to Call
```bash
unity-mcp-cli run-tool tests-run --input '{
"testMode": "string_value",
"testAssembly": "string_value",
"testNamespace": "string_value",
"testClass": "string_value",
"testMethod": "string_value",
"includePassingTests": false,
"includeMessages": false,
"includeStacktrace": false,
"includeLogs": false,
"logType": "string_value",
"includeLogsStacktrace": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool tests-run --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool tests-run --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `testMode` | `string` | No | Test mode to run. Options: 'EditMode', 'PlayMode'. Default: 'EditMode' |
| `testAssembly` | `string` | No | Specific test assembly name to run (optional). Example: 'Assembly-CSharp-Editor-testable' |
| `testNamespace` | `string` | No | Specific test namespace to run (optional). Example: 'MyTestNamespace' |
| `testClass` | `string` | No | Specific test class name to run (optional). Example: 'MyTestClass' |
| `testMethod` | `string` | No | Specific fully qualified test method to run (optional). Example: 'MyTestNamespace.FixtureName.TestName' |
| `includePassingTests` | `boolean` | No | Include details for all tests, both passing and failing (default: false). If you just need details for failing tests, set to false. |
| `includeMessages` | `boolean` | No | Include test result messages in the test results (default: true). If you just need pass/fail status, set to false. |
| `includeStacktrace` | `boolean` | No | Include stack traces in the test results (default: false). |
| `includeLogs` | `boolean` | No | Include console logs in the test results (default: false). |
| `logType` | `string` | No | Log type filter for console logs. Options: 'Log', 'Warning', 'Assert', 'Error', 'Exception'. (default: 'Warning') |
| `includeLogsStacktrace` | `boolean` | No | Include stack traces for console logs in the test results (default: false). This is huge amount of data, use only if really needed. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"testMode": {
"type": "string",
"enum": [
"EditMode",
"PlayMode"
]
},
"testAssembly": {
"type": "string"
},
"testNamespace": {
"type": "string"
},
"testClass": {
"type": "string"
},
"testMethod": {
"type": "string"
},
"includePassingTests": {
"type": "boolean"
},
"includeMessages": {
"type": "boolean"
},
"includeStacktrace": {
"type": "boolean"
},
"includeLogs": {
"type": "boolean"
},
"logType": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
},
"includeLogsStacktrace": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse"
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData": {
"type": "object",
"properties": {
"Status": {
"type": "string",
"enum": [
"Unknown",
"Passed",
"Failed"
]
},
"TotalTests": {
"type": "integer"
},
"PassedTests": {
"type": "integer"
},
"FailedTests": {
"type": "integer"
},
"SkippedTests": {
"type": "integer"
},
"Duration": {
"type": "string"
}
},
"required": [
"Status",
"TotalTests",
"PassedTests",
"FailedTests",
"SkippedTests",
"Duration"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData"
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData": {
"type": "object",
"properties": {
"Name": {
"type": "string"
},
"Status": {
"type": "string",
"enum": [
"Passed",
"Failed",
"Skipped"
]
},
"Duration": {
"type": "string"
},
"Message": {
"type": "string"
},
"StackTrace": {
"type": "string"
}
},
"required": [
"Status",
"Duration"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry"
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry": {
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"StackTrace": {
"type": "string"
},
"Type": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"LogLevel": {
"type": "integer"
}
},
"required": [
"Type",
"Timestamp"
]
},
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse": {
"type": "object",
"properties": {
"Summary": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData",
"description": "Summary of the test run including total, passed, failed, and skipped counts."
},
"Results": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData)",
"description": "List of individual test results with details about each test."
},
"Logs": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)",
"description": "Log entries captured during test execution."
}
}
}
},
"required": [
"result"
]
}
```
If the AssetDatabase refresh triggers compilation, the tool persists the run parameters to `SessionState`, returns `Processing`, and resumes the run automatically after the reload completes. Pre-existing compilation errors short-circuit the run and return the error details so the caller can fix the project first.
## How to Call
```bash
unity-mcp-cli run-tool tests-run --input '{
"testMode": "string_value",
"testAssembly": "string_value",
"testNamespace": "string_value",
"testClass": "string_value",
"testMethod": "string_value",
"includePassingTests": false,
"includeMessages": false,
"includeStacktrace": false,
"includeLogs": false,
"logType": "string_value",
"includeLogsStacktrace": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool tests-run --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool tests-run --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `testMode` | `string` | No | Test mode to run. Options: 'EditMode', 'PlayMode'. Default: 'EditMode' |
| `testAssembly` | `string` | No | Specific test assembly name to run (optional). Example: 'Assembly-CSharp-Editor-testable' |
| `testNamespace` | `string` | No | Specific test namespace to run (optional). Example: 'MyTestNamespace' |
| `testClass` | `string` | No | Specific test class name to run (optional). Example: 'MyTestClass' |
| `testMethod` | `string` | No | Specific fully qualified test method to run (optional). Example: 'MyTestNamespace.FixtureName.TestName' |
| `includePassingTests` | `boolean` | No | Include details for all tests, both passing and failing (default: false). If you just need details for failing tests, set to false. |
| `includeMessages` | `boolean` | No | Include test result messages in the test results (default: true). If you just need pass/fail status, set to false. |
| `includeStacktrace` | `boolean` | No | Include stack traces in the test results (default: false). |
| `includeLogs` | `boolean` | No | Include console logs in the test results (default: false). |
| `logType` | `string` | No | Log type filter for console logs. Options: 'Log', 'Warning', 'Assert', 'Error', 'Exception'. (default: 'Warning') |
| `includeLogsStacktrace` | `boolean` | No | Include stack traces for console logs in the test results (default: false). This is huge amount of data, use only if really needed. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"testMode": {
"type": "string",
"enum": [
"EditMode",
"PlayMode"
]
},
"testAssembly": {
"type": "string"
},
"testNamespace": {
"type": "string"
},
"testClass": {
"type": "string"
},
"testMethod": {
"type": "string"
},
"includePassingTests": {
"type": "boolean"
},
"includeMessages": {
"type": "boolean"
},
"includeStacktrace": {
"type": "boolean"
},
"includeLogs": {
"type": "boolean"
},
"logType": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
},
"includeLogsStacktrace": {
"type": "boolean"
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse"
}
},
"$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData": {
"type": "object",
"properties": {
"Status": {
"type": "string",
"enum": [
"Unknown",
"Passed",
"Failed"
]
},
"TotalTests": {
"type": "integer"
},
"PassedTests": {
"type": "integer"
},
"FailedTests": {
"type": "integer"
},
"SkippedTests": {
"type": "integer"
},
"Duration": {
"type": "string"
}
},
"required": [
"Status",
"TotalTests",
"PassedTests",
"FailedTests",
"SkippedTests",
"Duration"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData"
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData": {
"type": "object",
"properties": {
"Name": {
"type": "string"
},
"Status": {
"type": "string",
"enum": [
"Passed",
"Failed",
"Skipped"
]
},
"Duration": {
"type": "string"
},
"Message": {
"type": "string"
},
"StackTrace": {
"type": "string"
}
},
"required": [
"Status",
"Duration"
]
},
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry"
}
},
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry": {
"type": "object",
"properties": {
"Condition": {
"type": "string"
},
"StackTrace": {
"type": "string"
},
"Type": {
"type": "string",
"enum": [
"Error",
"Assert",
"Warning",
"Log",
"Exception"
]
},
"Timestamp": {
"type": "string",
"format": "date-time"
},
"LogLevel": {
"type": "integer"
}
},
"required": [
"Type",
"Timestamp"
]
},
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse": {
"type": "object",
"properties": {
"Summary": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData",
"description": "Summary of the test run including total, passed, failed, and skipped counts."
},
"Results": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData)",
"description": "List of individual test results with details about each test."
},
"Logs": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)",
"description": "Log entries captured during test execution."
}
}
}
},
"required": [
"result"
]
}
```
+163 -163
View File
@@ -1,12 +1,12 @@
---
name: tool-set-enabled-state
description: Enable or disable MCP tools by name in batch. Persists the change via `UnityMcpPluginEditor.Instance.Save()` only when at least one tool actually flipped. Returns per-input success flags plus optional operation logs.
metadata:
generated-by: mcp-plugin-dotnet
---
# Tool / Set Enabled State
---
name: tool-set-enabled-state
description: Enable or disable MCP tools by name in batch. Persists the change via `UnityMcpPluginEditor.Instance.Save()` only when at least one tool actually flipped. Returns per-input success flags plus optional operation logs.
metadata:
generated-by: mcp-plugin-dotnet
---
# Tool / Set Enabled State
Enable or disable MCP tools by name. Allows controlling which tools are available for the AI agent.
## Inputs
@@ -16,157 +16,157 @@ Enable or disable MCP tools by name. Allows controlling which tools are availabl
## Behavior
Each entry is resolved against the tool manager's exact-name and case-insensitive lookups. Already-correct state short-circuits as success without writing. The plugin's config is saved once at the end iff at least one tool actually changed state.
## How to Call
```bash
unity-mcp-cli run-tool tool-set-enabled-state --input '{
"tools": "string_value",
"includeLogs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool tool-set-enabled-state --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool tool-set-enabled-state --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `tools` | `any` | Yes | Array of tools with their desired enabled state. |
| `includeLogs` | `any` | No | Include operation logs in the result. Default: false |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"tools": {
"$ref": "#/$defs/AIGD.ToolToggleInput-1"
},
"includeLogs": {
"$ref": "#/$defs/System.Boolean"
}
},
"$defs": {
"AIGD.ToolToggleInput": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Name of the MCP tool to enable or disable."
},
"Enabled": {
"type": "boolean",
"description": "Whether the tool should be enabled (true) or disabled (false)."
}
},
"required": [
"Enabled"
]
},
"AIGD.ToolToggleInput-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ToolToggleInput"
}
},
"System.Boolean": {
"type": "boolean"
}
},
"required": [
"tools"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ToolToggleResult"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.Logs": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry"
}
},
"com.IvanMurzak.ReflectorNet.Model.LogEntry": {
"type": "object",
"properties": {
"Depth": {
"type": "integer"
},
"Message": {
"type": "string"
},
"Type": {
"type": "string",
"enum": [
"Trace",
"Debug",
"Info",
"Success",
"Warning",
"Error",
"Critical"
]
}
},
"required": [
"Depth",
"Type"
]
},
"System.Collections.Generic.Dictionary(System.String,System.Boolean)": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
"AIGD.ToolToggleResult": {
"type": "object",
"properties": {
"Logs": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs",
"description": "Optional operation logs. Only included when 'includeLogs' is true."
},
"Success": {
"$ref": "#/$defs/System.Collections.Generic.Dictionary(System.String,System.Boolean)",
"description": "Result of each tool operation. Key: original input name as provided by the caller (case preserved as-is). Value: true if the enable/disable operation completed successfully, false if the name was unknown, ambiguous, or empty."
}
}
}
},
"required": [
"result"
]
}
```
Each entry is resolved against the tool manager's exact-name and case-insensitive lookups. Already-correct state short-circuits as success without writing. The plugin's config is saved once at the end iff at least one tool actually changed state.
## How to Call
```bash
unity-mcp-cli run-tool tool-set-enabled-state --input '{
"tools": "string_value",
"includeLogs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool tool-set-enabled-state --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool tool-set-enabled-state --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `tools` | `any` | Yes | Array of tools with their desired enabled state. |
| `includeLogs` | `any` | No | Include operation logs in the result. Default: false |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"tools": {
"$ref": "#/$defs/AIGD.ToolToggleInput-1"
},
"includeLogs": {
"$ref": "#/$defs/System.Boolean"
}
},
"$defs": {
"AIGD.ToolToggleInput": {
"type": "object",
"properties": {
"Name": {
"type": "string",
"description": "Name of the MCP tool to enable or disable."
},
"Enabled": {
"type": "boolean",
"description": "Whether the tool should be enabled (true) or disabled (false)."
}
},
"required": [
"Enabled"
]
},
"AIGD.ToolToggleInput-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ToolToggleInput"
}
},
"System.Boolean": {
"type": "boolean"
}
},
"required": [
"tools"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ToolToggleResult"
}
},
"$defs": {
"com.IvanMurzak.ReflectorNet.Model.Logs": {
"type": "array",
"items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry"
}
},
"com.IvanMurzak.ReflectorNet.Model.LogEntry": {
"type": "object",
"properties": {
"Depth": {
"type": "integer"
},
"Message": {
"type": "string"
},
"Type": {
"type": "string",
"enum": [
"Trace",
"Debug",
"Info",
"Success",
"Warning",
"Error",
"Critical"
]
}
},
"required": [
"Depth",
"Type"
]
},
"System.Collections.Generic.Dictionary(System.String,System.Boolean)": {
"type": "object",
"additionalProperties": {
"type": "boolean"
}
},
"AIGD.ToolToggleResult": {
"type": "object",
"properties": {
"Logs": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs",
"description": "Optional operation logs. Only included when 'includeLogs' is true."
},
"Success": {
"$ref": "#/$defs/System.Collections.Generic.Dictionary(System.String,System.Boolean)",
"description": "Result of each tool operation. Key: original input name as provided by the caller (case preserved as-is). Value: true if the enable/disable operation completed successfully, false if the name was unknown, ambiguous, or empty."
}
}
}
},
"required": [
"result"
]
}
```
+107 -107
View File
@@ -1,12 +1,12 @@
---
name: type-get-json-schema
description: Generate a JSON Schema for a C# type name via reflection. Supports primitives, enums, arrays, generic collections, dictionaries, and complex objects. Knobs control inclusion of nested `$defs` and whether type-level / property-level descriptions are emitted.
metadata:
generated-by: mcp-plugin-dotnet
---
# Type / Get Json Schema
---
name: type-get-json-schema
description: Generate a JSON Schema for a C# type name via reflection. Supports primitives, enums, arrays, generic collections, dictionaries, and complex objects. Knobs control inclusion of nested `$defs` and whether type-level / property-level descriptions are emitted.
metadata:
generated-by: mcp-plugin-dotnet
---
# Type / Get Json Schema
Generates a JSON Schema for a given C# type name using reflection. Supports primitives, enums, arrays, generic collections, dictionaries, and complex objects. The type must be present in any loaded assembly. Use the full type name (e.g. 'UnityEngine.Vector3') for best results.
## Inputs
@@ -15,101 +15,101 @@ Generates a JSON Schema for a given C# type name using reflection. Supports prim
- `descriptionMode` (default `Ignore`) — controls type-level `description`: `Include` keeps it on the target only, `IncludeRecursively` also keeps it inside `$defs`, `Ignore` strips all.
- `propertyDescriptionMode` (default `Ignore`) — controls property/field/item `description`: `Include` keeps on the target's own properties/items only, `IncludeRecursively` also keeps inside `$defs`, `Ignore` strips all.
- `includeNestedTypes` (default `false`) — when true, complex nested types are extracted into `$defs` and referenced via `$ref`. Useful for recursive or large types.
- `writeIndented` (default `false`) — pretty-print the output JSON.
## How to Call
```bash
unity-mcp-cli run-tool type-get-json-schema --input '{
"typeName": "string_value",
"descriptionMode": "string_value",
"propertyDescriptionMode": "string_value",
"includeNestedTypes": false,
"writeIndented": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool type-get-json-schema --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool type-get-json-schema --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `typeName` | `string` | Yes | Full C# type name to generate the schema for. Examples: 'System.String', 'UnityEngine.Vector3', 'System.Collections.Generic.List<System.Int32>'. Simple names like 'Vector3' are also accepted when unambiguous. |
| `descriptionMode` | `string` | No | Controls the type-level 'description' field. Include: keep on the target type only. IncludeRecursively: keep on the target type and inside $defs entries. Ignore: strip all type-level descriptions. Default: Ignore. |
| `propertyDescriptionMode` | `string` | No | Controls 'description' fields on properties, fields, and array items. Include: keep on the target type's own properties/items only. IncludeRecursively: keep on all properties/items including those inside $defs entries. Ignore: strip all property/item descriptions. Default: Ignore. |
| `includeNestedTypes` | `boolean` | No | When true, complex nested types are extracted into '$defs' and referenced via '$ref' instead of being inlined. Useful for large or recursive types. Default: false. |
| `writeIndented` | `boolean` | No | Whether to format the output JSON with indentation for readability. Default: false. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"typeName": {
"type": "string"
},
"descriptionMode": {
"type": "string",
"enum": [
"Include",
"IncludeRecursively",
"Ignore"
]
},
"propertyDescriptionMode": {
"type": "string",
"enum": [
"Include",
"IncludeRecursively",
"Ignore"
]
},
"includeNestedTypes": {
"type": "boolean"
},
"writeIndented": {
"type": "boolean"
}
},
"required": [
"typeName"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
- `writeIndented` (default `false`) — pretty-print the output JSON.
## How to Call
```bash
unity-mcp-cli run-tool type-get-json-schema --input '{
"typeName": "string_value",
"descriptionMode": "string_value",
"propertyDescriptionMode": "string_value",
"includeNestedTypes": false,
"writeIndented": false
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool type-get-json-schema --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool type-get-json-schema --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `typeName` | `string` | Yes | Full C# type name to generate the schema for. Examples: 'System.String', 'UnityEngine.Vector3', 'System.Collections.Generic.List<System.Int32>'. Simple names like 'Vector3' are also accepted when unambiguous. |
| `descriptionMode` | `string` | No | Controls the type-level 'description' field. Include: keep on the target type only. IncludeRecursively: keep on the target type and inside $defs entries. Ignore: strip all type-level descriptions. Default: Ignore. |
| `propertyDescriptionMode` | `string` | No | Controls 'description' fields on properties, fields, and array items. Include: keep on the target type's own properties/items only. IncludeRecursively: keep on all properties/items including those inside $defs entries. Ignore: strip all property/item descriptions. Default: Ignore. |
| `includeNestedTypes` | `boolean` | No | When true, complex nested types are extracted into '$defs' and referenced via '$ref' instead of being inlined. Useful for large or recursive types. Default: false. |
| `writeIndented` | `boolean` | No | Whether to format the output JSON with indentation for readability. Default: false. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"typeName": {
"type": "string"
},
"descriptionMode": {
"type": "string",
"enum": [
"Include",
"IncludeRecursively",
"Ignore"
]
},
"propertyDescriptionMode": {
"type": "string",
"enum": [
"Include",
"IncludeRecursively",
"Ignore"
]
},
"includeNestedTypes": {
"type": "boolean"
},
"writeIndented": {
"type": "boolean"
}
},
"required": [
"typeName"
]
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"type": "string"
}
},
"required": [
"result"
]
}
```
+6 -6
View File
@@ -1,12 +1,12 @@
---
name: unity-initial-setup
---
name: unity-initial-setup
description: |-
Provides an initial setup for AI Skills, `unity-mcp-cli` command line tool installation
and everything else that is helpful to set up at the start of the project. Essential packages,
and basic configurations.
metadata:
generated-by: mcp-plugin-dotnet
---
and basic configurations.
metadata:
generated-by: mcp-plugin-dotnet
---
# AI Game Developer — Initial Setup
+69 -69
View File
@@ -1,12 +1,12 @@
---
name: unity-skill-create
description: Create a new skill (MCP tool) for the Unity Editor by writing a C# (.cs) file that Unity compiles into the project. After compilation the new tool becomes callable through MCP. The file must be a partial class decorated with [AiToolType], each tool method must be decorated with [AiTool], the class name should match the file name, all Unity API calls must run via com.IvanMurzak.ReflectorNet.Utils.MainThread.Instance.Run(), and the method should either return a structured data model (for parseable output) or void (for side-effect-only operations). See the body of this skill for a full sample and best-practice notes.
metadata:
generated-by: mcp-plugin-dotnet
---
# Skill (Tool) / Create
---
name: unity-skill-create
description: Create a new skill (MCP tool) for the Unity Editor by writing a C# (.cs) file that Unity compiles into the project. After compilation the new tool becomes callable through MCP. The file must be a partial class decorated with [AiToolType], each tool method must be decorated with [AiTool], the class name should match the file name, all Unity API calls must run via com.IvanMurzak.ReflectorNet.Utils.MainThread.Instance.Run(), and the method should either return a structured data model (for parseable output) or void (for side-effect-only operations). See the body of this skill for a full sample and best-practice notes.
metadata:
generated-by: mcp-plugin-dotnet
---
# Skill (Tool) / Create
## Full sample
```csharp
@@ -145,64 +145,64 @@ if (string.IsNullOrEmpty(name))
```
### Always use MainThread for Unity API calls
All Unity API calls (including `GameObject.Find`, `AssetDatabase`, `EditorUtility`, etc.) MUST run on the main thread. Wrap them in `MainThread.Instance.Run(() => { ... })` for synchronous operations, or `MainThread.Instance.RunAsync(async () => { ... })` when you need to await inside.
## How to Call
```bash
unity-mcp-cli run-system-tool unity-skill-create --input '{
"path": "string_value",
"code": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-system-tool unity-skill-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-system-tool unity-skill-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
All Unity API calls (including `GameObject.Find`, `AssetDatabase`, `EditorUtility`, etc.) MUST run on the main thread. Wrap them in `MainThread.Instance.Run(() => { ... })` for synchronous operations, or `MainThread.Instance.RunAsync(async () => { ... })` when you need to await inside.
## How to Call
```bash
unity-mcp-cli run-system-tool unity-skill-create --input '{
"path": "string_value",
"code": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-system-tool unity-skill-create --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-system-tool unity-skill-create --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `path` | `string` | Yes | Path for the C# (.cs) file to be created. Sample: "Assets/Skills/MySkill.cs".
CRITICAL — Assembly Definition placement: If the project uses Assembly Definition files (.asmdef), you MUST place the script inside a folder that belongs to an assembly definition which already references all required dependencies (e.g. com.IvanMurzak.McpPlugin, UnityEditor, UnityEngine). Placing the file in the wrong assembly will cause compile errors due to missing type references. Before choosing a path, inspect existing .asmdef files with the assets-find tool to identify the correct assembly folder. |
| `code` | `string` | Yes | C# code for the skill tool. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"path": {
"type": "string"
},
"code": {
"type": "string"
}
},
"required": [
"path",
"code"
]
}
```
## Output
This tool does not return structured output.
CRITICAL — Assembly Definition placement: If the project uses Assembly Definition files (.asmdef), you MUST place the script inside a folder that belongs to an assembly definition which already references all required dependencies (e.g. com.IvanMurzak.McpPlugin, UnityEditor, UnityEngine). Placing the file in the wrong assembly will cause compile errors due to missing type references. Before choosing a path, inspect existing .asmdef files with the assets-find tool to identify the correct assembly folder. |
| `code` | `string` | Yes | C# code for the skill tool. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"path": {
"type": "string"
},
"code": {
"type": "string"
}
},
"required": [
"path",
"code"
]
}
```
## Output
This tool does not return structured output.
+60 -60
View File
@@ -1,12 +1,12 @@
---
name: unity-skill-generate
description: "Regenerate every `SKILL.md` from the project's currently-registered MCP tools into the configured skills folder (or a project-relative override path). Writes the YAML `description:` from `[AiSkillDescription]` and the body from `[AiSkillBody]`."
metadata:
generated-by: mcp-plugin-dotnet
---
# Skill (Tool) / Generate All
---
name: unity-skill-generate
description: "Regenerate every `SKILL.md` from the project's currently-registered MCP tools into the configured skills folder (or a project-relative override path). Writes the YAML `description:` from `[AiSkillDescription]` and the body from `[AiSkillBody]`."
metadata:
generated-by: mcp-plugin-dotnet
---
# Skill (Tool) / Generate All
Generate all skills from the existed Tools in the Unity Project.
## Inputs
@@ -15,54 +15,54 @@ Generate all skills from the existed Tools in the Unity Project.
## Behavior
Creates the destination folder if missing, then invokes `McpPluginInstance.GenerateSkillFiles(...)` to emit a `SKILL.md` per registered MCP tool. The plugin's `SkillsPath` is temporarily swapped to the target folder and restored in `finally` so the on-disk configuration is unchanged after the call returns.
## How to Call
```bash
unity-mcp-cli run-system-tool unity-skill-generate --input '{
"path": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-system-tool unity-skill-generate --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-system-tool unity-skill-generate --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `path` | `string` | No | Path to the skills folder. If null or empty, the default path will be used. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"path": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
Creates the destination folder if missing, then invokes `McpPluginInstance.GenerateSkillFiles(...)` to emit a `SKILL.md` per registered MCP tool. The plugin's `SkillsPath` is temporarily swapped to the target folder and restored in `finally` so the on-disk configuration is unchanged after the call returns.
## How to Call
```bash
unity-mcp-cli run-system-tool unity-skill-generate --input '{
"path": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-system-tool unity-skill-generate --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-system-tool unity-skill-generate --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `path` | `string` | No | Path to the skills folder. If null or empty, the default path will be used. |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"path": {
"type": "string"
}
}
}
```
## Output
This tool does not return structured output.
+146 -146
View File
@@ -1,12 +1,12 @@
---
name: unity-tool-list
description: List all Unity-MCP tools registered in the connected Unity Editor instance. Optional regex filter matches against tool name, description, and argument names/descriptions. Use the `includeDescription` / `includeInputs` toggles to control the response size.
metadata:
generated-by: mcp-plugin-dotnet
---
# Tool / List
---
name: unity-tool-list
description: List all Unity-MCP tools registered in the connected Unity Editor instance. Optional regex filter matches against tool name, description, and argument names/descriptions. Use the `includeDescription` / `includeInputs` toggles to control the response size.
metadata:
generated-by: mcp-plugin-dotnet
---
# Tool / List
List all Unity-MCP tools registered in the connected Unity Editor instance. Optionally filter by regex across tool names, descriptions, and arguments.
## Inputs
@@ -17,140 +17,140 @@ List all Unity-MCP tools registered in the connected Unity Editor instance. Opti
## Behavior
Iterates `UnityMcpPluginEditor.Instance.Tools.GetAllTools()`, evaluates the filter (if any), and projects each surviving tool into a `ToolInfoData` honoring the verbosity toggles.
## How to Call
```bash
unity-mcp-cli run-tool unity-tool-list --input '{
"regexSearch": "string_value",
"includeDescription": "string_value",
"includeInputs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool unity-tool-list --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool unity-tool-list --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `regexSearch` | `string` | No | Regex pattern to filter tools. Matches against tool name, description, and argument names and descriptions. |
| `includeDescription` | `any` | No | Include tool descriptions in the result. Default: false |
| `includeInputs` | `any` | No | Include input arguments in the result. Default: None |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"regexSearch": {
"type": "string"
},
"includeDescription": {
"$ref": "#/$defs/System.Boolean"
},
"includeInputs": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest"
}
},
"$defs": {
"System.Boolean": {
"type": "boolean"
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest": {
"type": "string",
"enum": [
"None",
"Inputs",
"InputsWithDescription"
],
"description": "Specifies what to include for tool input arguments."
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ToolInfoData-1"
}
},
"$defs": {
"AIGD.ToolInfoData": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Tool name."
},
"description": {
"type": "string",
"description": "Tool description."
},
"inputs": {
"$ref": "#/$defs/AIGD.ToolInputData-1",
"description": "Tool input arguments."
}
},
"description": "MCP tool information."
},
"AIGD.ToolInputData-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ToolInputData",
"description": "MCP tool input argument."
}
},
"AIGD.ToolInputData": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Argument name."
},
"description": {
"type": "string",
"description": "Argument description."
}
},
"description": "MCP tool input argument."
},
"AIGD.ToolInfoData-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ToolInfoData",
"description": "MCP tool information."
}
}
},
"required": [
"result"
]
}
```
Iterates `UnityMcpPluginEditor.Instance.Tools.GetAllTools()`, evaluates the filter (if any), and projects each surviving tool into a `ToolInfoData` honoring the verbosity toggles.
## How to Call
```bash
unity-mcp-cli run-tool unity-tool-list --input '{
"regexSearch": "string_value",
"includeDescription": "string_value",
"includeInputs": "string_value"
}'
```
> For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash
> unity-mcp-cli run-tool unity-tool-list --input-file args.json
> ```
>
> Or pipe via stdin (recommended):
> ```bash
> unity-mcp-cli run-tool unity-tool-list --input-file - <<'EOF'
> {"param": "value"}
> EOF
> ```
### Troubleshooting
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 |
|------|------|----------|-------------|
| `regexSearch` | `string` | No | Regex pattern to filter tools. Matches against tool name, description, and argument names and descriptions. |
| `includeDescription` | `any` | No | Include tool descriptions in the result. Default: false |
| `includeInputs` | `any` | No | Include input arguments in the result. Default: None |
### Input JSON Schema
```json
{
"type": "object",
"properties": {
"regexSearch": {
"type": "string"
},
"includeDescription": {
"$ref": "#/$defs/System.Boolean"
},
"includeInputs": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest"
}
},
"$defs": {
"System.Boolean": {
"type": "boolean"
},
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest": {
"type": "string",
"enum": [
"None",
"Inputs",
"InputsWithDescription"
],
"description": "Specifies what to include for tool input arguments."
}
}
}
```
## Output
### Output JSON Schema
```json
{
"type": "object",
"properties": {
"result": {
"$ref": "#/$defs/AIGD.ToolInfoData-1"
}
},
"$defs": {
"AIGD.ToolInfoData": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Tool name."
},
"description": {
"type": "string",
"description": "Tool description."
},
"inputs": {
"$ref": "#/$defs/AIGD.ToolInputData-1",
"description": "Tool input arguments."
}
},
"description": "MCP tool information."
},
"AIGD.ToolInputData-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ToolInputData",
"description": "MCP tool input argument."
}
},
"AIGD.ToolInputData": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "Argument name."
},
"description": {
"type": "string",
"description": "Argument description."
}
},
"description": "MCP tool input argument."
},
"AIGD.ToolInfoData-1": {
"type": "array",
"items": {
"$ref": "#/$defs/AIGD.ToolInfoData",
"description": "MCP tool information."
}
}
},
"required": [
"result"
]
}
```
+99 -99
View File
@@ -1,99 +1,99 @@
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
.utmp/
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
*.log
# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.
*.blend1
*.blend1.meta
# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/
# Recordings can get excessive in size
/[Rr]ecordings/
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*
# Jetbrains Rider personal-layer settings
*.DotSettings.user
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Mono auto generated files
mono_crash.*
# Builds
*.apk
*.aab
*.unitypackage
*.unitypackage.meta
*.app
# Crashlytics generated file
crashlytics-build.properties
# TestRunner generated files
InitTestScene*.unity*
# Addressables default ignores, before user customizations
/ServerData
/[Aa]ssets/StreamingAssets/aa*
/[Aa]ssets/AddressableAssetsData/link.xml*
/[Aa]ssets/Addressables_Temp*
# By default, Addressables content builds will generate addressables_content_state.bin
# files in platform-specific subfolders, for example:
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/*.bin*
# Visual Scripting auto-generated files
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
# Auto-generated scenes by play mode tests
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
# This .gitignore file should be placed at the root of your Unity project directory
#
# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
#
.utmp/
/[Ll]ibrary/
/[Tt]emp/
/[Oo]bj/
/[Bb]uild/
/[Bb]uilds/
/[Ll]ogs/
/[Uu]ser[Ss]ettings/
*.log
# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.
*.blend1
*.blend1.meta
# MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data
/[Mm]emoryCaptures/
# Recordings can get excessive in size
/[Rr]ecordings/
# Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains*
# Jetbrains Rider personal-layer settings
*.DotSettings.user
# Visual Studio cache directory
.vs/
# Gradle cache directory
.gradle/
# Autogenerated VS/MD/Consulo solution and project files
ExportedObj/
.consulo/
*.csproj
*.unityproj
*.sln
*.suo
*.tmp
*.user
*.userprefs
*.pidb
*.booproj
*.svd
*.pdb
*.mdb
*.opendb
*.VC.db
# Unity3D generated meta files
*.pidb.meta
*.pdb.meta
*.mdb.meta
# Unity3D generated file on crash reports
sysinfo.txt
# Mono auto generated files
mono_crash.*
# Builds
*.apk
*.aab
*.unitypackage
*.unitypackage.meta
*.app
# Crashlytics generated file
crashlytics-build.properties
# TestRunner generated files
InitTestScene*.unity*
# Addressables default ignores, before user customizations
/ServerData
/[Aa]ssets/StreamingAssets/aa*
/[Aa]ssets/AddressableAssetsData/link.xml*
/[Aa]ssets/Addressables_Temp*
# By default, Addressables content builds will generate addressables_content_state.bin
# files in platform-specific subfolders, for example:
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/*.bin*
# Visual Scripting auto-generated files
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db.meta
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
# Auto-generated scenes by play mode tests
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
+5 -5
View File
@@ -1,5 +1,5 @@
{
"recommendations": [
"visualstudiotoolsforunity.vstuc"
]
}
{
"recommendations": [
"visualstudiotoolsforunity.vstuc"
]
}
+9 -9
View File
@@ -1,10 +1,10 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Unity",
"type": "vstuc",
"request": "attach"
}
]
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Unity",
"type": "vstuc",
"request": "attach"
}
]
}
+69 -69
View File
@@ -1,70 +1,70 @@
{
"files.exclude": {
"**/.DS_Store": true,
"**/.git": true,
"**/.vs": true,
"**/.gitmodules": true,
"**/.vsconfig": true,
"**/*.booproj": true,
"**/*.pidb": true,
"**/*.suo": true,
"**/*.user": true,
"**/*.userprefs": true,
"**/*.unityproj": true,
"**/*.dll": true,
"**/*.exe": true,
"**/*.pdf": true,
"**/*.mid": true,
"**/*.midi": true,
"**/*.wav": true,
"**/*.gif": true,
"**/*.ico": true,
"**/*.jpg": true,
"**/*.jpeg": true,
"**/*.png": true,
"**/*.psd": true,
"**/*.tga": true,
"**/*.tif": true,
"**/*.tiff": true,
"**/*.3ds": true,
"**/*.3DS": true,
"**/*.fbx": true,
"**/*.FBX": true,
"**/*.lxo": true,
"**/*.LXO": true,
"**/*.ma": true,
"**/*.MA": true,
"**/*.obj": true,
"**/*.OBJ": true,
"**/*.asset": true,
"**/*.cubemap": true,
"**/*.flare": true,
"**/*.mat": true,
"**/*.meta": true,
"**/*.prefab": true,
"**/*.unity": true,
"build/": true,
"Build/": true,
"Library/": true,
"library/": true,
"obj/": true,
"Obj/": true,
"Logs/": true,
"logs/": true,
"ProjectSettings/": true,
"UserSettings/": true,
"temp/": true,
"Temp/": true
},
"files.associations": {
"*.asset": "yaml",
"*.meta": "yaml",
"*.prefab": "yaml",
"*.unity": "yaml"
},
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.sln": "*.csproj"
},
"dotnet.defaultSolution": "soccar2d.sln"
{
"files.exclude": {
"**/.DS_Store": true,
"**/.git": true,
"**/.vs": true,
"**/.gitmodules": true,
"**/.vsconfig": true,
"**/*.booproj": true,
"**/*.pidb": true,
"**/*.suo": true,
"**/*.user": true,
"**/*.userprefs": true,
"**/*.unityproj": true,
"**/*.dll": true,
"**/*.exe": true,
"**/*.pdf": true,
"**/*.mid": true,
"**/*.midi": true,
"**/*.wav": true,
"**/*.gif": true,
"**/*.ico": true,
"**/*.jpg": true,
"**/*.jpeg": true,
"**/*.png": true,
"**/*.psd": true,
"**/*.tga": true,
"**/*.tif": true,
"**/*.tiff": true,
"**/*.3ds": true,
"**/*.3DS": true,
"**/*.fbx": true,
"**/*.FBX": true,
"**/*.lxo": true,
"**/*.LXO": true,
"**/*.ma": true,
"**/*.MA": true,
"**/*.obj": true,
"**/*.OBJ": true,
"**/*.asset": true,
"**/*.cubemap": true,
"**/*.flare": true,
"**/*.mat": true,
"**/*.meta": true,
"**/*.prefab": true,
"**/*.unity": true,
"build/": true,
"Build/": true,
"Library/": true,
"library/": true,
"obj/": true,
"Obj/": true,
"Logs/": true,
"logs/": true,
"ProjectSettings/": true,
"UserSettings/": true,
"temp/": true,
"Temp/": true
},
"files.associations": {
"*.asset": "yaml",
"*.meta": "yaml",
"*.prefab": "yaml",
"*.unity": "yaml"
},
"explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": {
"*.sln": "*.csproj"
},
"dotnet.defaultSolution": "soccar2d.sln"
}
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: cc121dbf16e5f694cb193e62de4fd54c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: cc121dbf16e5f694cb193e62de4fd54c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: d775453210d0c3d4aae7bee013d92a54
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d775453210d0c3d4aae7bee013d92a54
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+23 -23
View File
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: 40c3654169239df42aac74005ba8757f
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 40c3654169239df42aac74005ba8757f
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 0
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 0
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
+23 -23
View File
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: d0dfd1dd9f429a64ab99b9f176bb16da
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 2
sampleRateOverride: 22050
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: d0dfd1dd9f429a64ab99b9f176bb16da
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 2
sampleRateOverride: 22050
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 7c7e2b4c4b68dd045b5e6d1a41344f4d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 7c7e2b4c4b68dd045b5e6d1a41344f4d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 4807619965968f544b8197be4db31bbd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 4807619965968f544b8197be4db31bbd
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: c572f8d5ffe74384c8ec1c134589aa73
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: c572f8d5ffe74384c8ec1c134589aa73
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: 77972becab89af64f8a6870a1f0e57e4
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 77972becab89af64f8a6870a1f0e57e4
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: 7e204709980caf843864af6afc300c83
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 7e204709980caf843864af6afc300c83
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: a1040460c5bc7ab41bf77fbd4216ee2c
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: a1040460c5bc7ab41bf77fbd4216ee2c
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: 310bea9e65ddfcb4c8edb3a346c56c9d
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 310bea9e65ddfcb4c8edb3a346c56c9d
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: eea8b6e9a51070e4d8f6af29c22a93e6
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: eea8b6e9a51070e4d8f6af29c22a93e6
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: e0a741dde6e76ac4dbcde3bdc8f3ae6e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: e0a741dde6e76ac4dbcde3bdc8f3ae6e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: f85928b3e1030554782cce85a1fecac2
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: f85928b3e1030554782cce85a1fecac2
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: 79f985d218394484fa6cfff0c2af9195
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 79f985d218394484fa6cfff0c2af9195
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: ae7267cfa8b4a174a995ca4cae5995e5
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: ae7267cfa8b4a174a995ca4cae5995e5
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2
guid: 23cc7236a672ae842bf086e385b49495
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 23cc7236a672ae842bf086e385b49495
AudioImporter:
externalObjects: {}
serializedVersion: 8
defaultSettings:
serializedVersion: 2
loadType: 0
sampleRateSetting: 1
sampleRateOverride: 44100
compressionFormat: 1
quality: 1
conversionMode: 0
preloadAudioData: 0
platformSettingOverrides: {}
forceToMono: 1
normalize: 0
loadInBackground: 0
ambisonic: 0
3D: 1
userData:
assetBundleName:
assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2
guid: 7c8c3b2b2505ffb46ba8d5c65ee66e10
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
fileFormatVersion: 2
guid: 7c8c3b2b2505ffb46ba8d5c65ee66e10
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

Some files were not shown because too many files have changed in this diff Show More