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": { "mcpServers": {
"ai-game-developer": { "ai-game-developer": {
"type": "http", "type": "http",
"url": "http://localhost:27722/p/0a4f1b33" "url": "http://localhost:27722/p/0a4f1b33"
} }
} }
} }
+147 -147
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Copy # 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. 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 ## Inputs
@@ -16,141 +16,141 @@ Copy assets at given paths and store them at new paths. Does AssetDatabase.Refre
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-copy --input '{ unity-mcp-cli run-tool assets-copy --input '{
"sourcePaths": "string_value", "sourcePaths": "string_value",
"destinationPaths": "string_value" "destinationPaths": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-copy --input-file args.json > unity-mcp-cli run-tool assets-copy --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-copy --input-file - <<'EOF' > unity-mcp-cli run-tool assets-copy --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `sourcePaths` | `any` | Yes | The paths of the assets to copy. | | `sourcePaths` | `any` | Yes | The paths of the assets to copy. |
| `destinationPaths` | `any` | Yes | The paths to store the copied assets. | | `destinationPaths` | `any` | Yes | The paths to store the copied assets. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"sourcePaths": { "sourcePaths": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
}, },
"destinationPaths": { "destinationPaths": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
}, },
"required": [ "required": [
"sourcePaths", "sourcePaths",
"destinationPaths" "destinationPaths"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.CopyAssetsResponse" "$ref": "#/$defs/AIGD.CopyAssetsResponse"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(AIGD.AssetObjectRef)": { "System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$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." "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": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": { "System.Type": {
"type": "string" "type": "string"
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.CopyAssetsResponse": { "AIGD.CopyAssetsResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"CopiedAssets": { "CopiedAssets": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)", "$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)",
"description": "List of copied assets." "description": "List of copied assets."
}, },
"Errors": { "Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during copy operations." "description": "List of errors encountered during copy operations."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+119 -119
View File
@@ -1,12 +1,12 @@
--- ---
name: 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). 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Create Folder # 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. 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 ## 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). - `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. - `ParentFolderPath` must already exist as an `AssetDatabase.IsValidFolder` path.
- A folder with the same target name must not already exist under the parent. - A folder with the same target name must not already exist under the parent.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-create-folder --input '{ unity-mcp-cli run-tool assets-create-folder --input '{
"inputs": "string_value" "inputs": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-create-folder --input-file args.json > unity-mcp-cli run-tool assets-create-folder --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-create-folder --input-file - <<'EOF' > unity-mcp-cli run-tool assets-create-folder --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `inputs` | `any` | Yes | The paths for the folders to create. | | `inputs` | `any` | Yes | The paths for the folders to create. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"inputs": { "inputs": {
"$ref": "#/$defs/AIGD.CreateFolderInput-1" "$ref": "#/$defs/AIGD.CreateFolderInput-1"
} }
}, },
"$defs": { "$defs": {
"AIGD.CreateFolderInput": { "AIGD.CreateFolderInput": {
"type": "object", "type": "object",
"properties": { "properties": {
"ParentFolderPath": { "ParentFolderPath": {
"type": "string", "type": "string",
"description": "The parent folder path where the new folder will be created." "description": "The parent folder path where the new folder will be created."
}, },
"NewFolderName": { "NewFolderName": {
"type": "string", "type": "string",
"description": "The name of the new folder to create." "description": "The name of the new folder to create."
} }
} }
}, },
"AIGD.CreateFolderInput-1": { "AIGD.CreateFolderInput-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.CreateFolderInput" "$ref": "#/$defs/AIGD.CreateFolderInput"
} }
} }
}, },
"required": [ "required": [
"inputs" "inputs"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.CreateFolderResponse" "$ref": "#/$defs/AIGD.CreateFolderResponse"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.CreateFolderResponse": { "AIGD.CreateFolderResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"CreatedFolderGuids": { "CreatedFolderGuids": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of GUIDs of created folders." "description": "List of GUIDs of created folders."
}, },
"Errors": { "Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during folder creation." "description": "List of errors encountered during folder creation."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+106 -106
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. description: Delete the assets at the given project paths. Refreshes the AssetDatabase at the end. Use 'assets-find' to locate the assets first.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Delete # 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. Delete the assets at paths from the project. Does AssetDatabase.Refresh() at the end. Use 'assets-find' tool to find assets before deleting.
## Inputs ## Inputs
@@ -15,100 +15,100 @@ Delete the assets at paths from the project. Does AssetDatabase.Refresh() at the
## Behavior ## 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). 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-delete --input '{ unity-mcp-cli run-tool assets-delete --input '{
"paths": "string_value" "paths": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-delete --input-file args.json > unity-mcp-cli run-tool assets-delete --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-delete --input-file - <<'EOF' > unity-mcp-cli run-tool assets-delete --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `paths` | `any` | Yes | The paths of the assets | | `paths` | `any` | Yes | The paths of the assets |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"paths": { "paths": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
}, },
"required": [ "required": [
"paths" "paths"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.DeleteAssetsResponse" "$ref": "#/$defs/AIGD.DeleteAssetsResponse"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.DeleteAssetsResponse": { "AIGD.DeleteAssetsResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"DeletedPaths": { "DeletedPaths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of paths of deleted assets." "description": "List of paths of deleted assets."
}, },
"Errors": { "Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during delete operations." "description": "List of errors encountered during delete operations."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+126 -126
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Find (Built-in) # 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. 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 ## Inputs
@@ -17,120 +17,120 @@ Search the built-in assets of the Unity Editor located in the built-in resources
## Ranking ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-find-built-in --input '{ unity-mcp-cli run-tool assets-find-built-in --input '{
"name": "string_value", "name": "string_value",
"type": "string_value", "type": "string_value",
"maxResults": 0 "maxResults": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-find-built-in --input-file args.json > unity-mcp-cli run-tool assets-find-built-in --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-find-built-in --input-file - <<'EOF' > unity-mcp-cli run-tool assets-find-built-in --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `name` | `string` | No | The name of the asset to filter by. | | `name` | `string` | No | The name of the asset to filter by. |
| `type` | `any` | No | The type 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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"name": { "name": {
"type": "string" "type": "string"
}, },
"type": { "type": {
"$ref": "#/$defs/System.Type" "$ref": "#/$defs/System.Type"
}, },
"maxResults": { "maxResults": {
"type": "integer" "type": "integer"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)"
} }
}, },
"$defs": { "$defs": {
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": { "System.Type": {
"type": "string" "type": "string"
}, },
"System.Collections.Generic.List(AIGD.AssetObjectRef)": { "System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$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." "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": [ "required": [
"result" "result"
] ]
} }
``` ```
+129 -129
View File
@@ -1,12 +1,12 @@
--- ---
name: 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." 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Find # 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). 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 ## 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`. - **Area (`a:`)** — find assets in a specific area. Valid values: `all`, `assets`, `packages`.
- **Globbing (`glob:`)** — use globbing to match specific rules. - **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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-find --input '{ unity-mcp-cli run-tool assets-find --input '{
"filter": "string_value", "filter": "string_value",
"searchInFolders": "string_value", "searchInFolders": "string_value",
"maxResults": 0 "maxResults": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-find --input-file args.json > unity-mcp-cli run-tool assets-find --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-find --input-file - <<'EOF' > unity-mcp-cli run-tool assets-find --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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. | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"filter": { "filter": {
"type": "string" "type": "string"
}, },
"searchInFolders": { "searchInFolders": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
}, },
"maxResults": { "maxResults": {
"type": "integer" "type": "integer"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.AssetObjectRef)"
} }
}, },
"$defs": { "$defs": {
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": { "System.Type": {
"type": "string" "type": "string"
}, },
"System.Collections.Generic.List(AIGD.AssetObjectRef)": { "System.Collections.Generic.List(AIGD.AssetObjectRef)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$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." "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": [ "required": [
"result" "result"
] ]
} }
``` ```
+188 -188
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Get Data # 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. 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) ## 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 ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-get-data --input '{ unity-mcp-cli run-tool assets-get-data --input '{
"assetRef": "string_value", "assetRef": "string_value",
"paths": "string_value", "paths": "string_value",
"viewQuery": "string_value" "viewQuery": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-get-data --input-file args.json > unity-mcp-cli run-tool assets-get-data --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-get-data --input-file - <<'EOF' > unity-mcp-cli run-tool assets-get-data --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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'. | | `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'. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"assetRef": { "assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef" "$ref": "#/$defs/AIGD.AssetObjectRef"
}, },
"paths": { "paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)" "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}, },
"viewQuery": { "viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.ViewQuery": { "com.IvanMurzak.ReflectorNet.Model.ViewQuery": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "NamePattern": {
"type": "string", "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." "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": { "MaxDepth": {
"type": "integer", "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." "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": { "TypeFilter": {
"$ref": "#/$defs/System.Type", "$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." "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": [ "required": [
"assetRef" "assetRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+114 -114
View File
@@ -1,12 +1,12 @@
--- ---
name: assets-material-create 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`. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Create Material # 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. 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 ## Inputs
@@ -16,108 +16,108 @@ Create new material asset with default parameters. Creates folders recursively i
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-material-create --input '{ unity-mcp-cli run-tool assets-material-create --input '{
"assetPath": "string_value", "assetPath": "string_value",
"shaderName": "string_value" "shaderName": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-material-create --input-file args.json > unity-mcp-cli run-tool assets-material-create --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-material-create --input-file - <<'EOF' > unity-mcp-cli run-tool assets-material-create --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `assetPath` | `string` | Yes | Asset path. Starts with 'Assets/'. Ends with '.mat'. | | `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. | | `shaderName` | `string` | Yes | Name of the shader that need to be used to create the material. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"assetPath": { "assetPath": {
"type": "string" "type": "string"
}, },
"shaderName": { "shaderName": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"assetPath", "assetPath",
"shaderName" "shaderName"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$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." "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": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": [ "required": [
"result" "result"
] ]
} }
``` ```
+199 -199
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Modify # Assets / Modify
## Three modification surfaces ## Three modification surfaces
Use whichever fits the task: Use whichever fits the task:
@@ -19,193 +19,193 @@ When more than one is supplied they run in this order: `jsonPatch` → `pathPatc
## Path syntax ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-modify --input '{ unity-mcp-cli run-tool assets-modify --input '{
"assetRef": "string_value", "assetRef": "string_value",
"content": "string_value", "content": "string_value",
"pathPatches": "string_value", "pathPatches": "string_value",
"jsonPatch": "string_value" "jsonPatch": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-modify --input-file args.json > unity-mcp-cli run-tool assets-modify --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-modify --input-file - <<'EOF' > unity-mcp-cli run-tool assets-modify --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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). | | `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. | | `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. | | `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"assetRef": { "assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef" "$ref": "#/$defs/AIGD.AssetObjectRef"
}, },
"content": { "content": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}, },
"pathPatches": { "pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
}, },
"jsonPatch": { "jsonPatch": {
"anyOf": [ "anyOf": [
{ {
"type": "string" "type": "string"
}, },
{ {
"type": "object", "type": "object",
"additionalProperties": true "additionalProperties": true
} }
] ]
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"AIGD.PathPatch": { "AIGD.PathPatch": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$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." "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)": { "System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.PathPatch" "$ref": "#/$defs/AIGD.PathPatch"
} }
} }
}, },
"required": [ "required": [
"assetRef" "assetRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+112 -112
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Move # 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. 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 ## Inputs
@@ -16,106 +16,106 @@ Move the assets at paths in the project. Should be used for asset rename. Does A
## Behavior ## 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`. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-move --input '{ unity-mcp-cli run-tool assets-move --input '{
"sourcePaths": "string_value", "sourcePaths": "string_value",
"destinationPaths": "string_value" "destinationPaths": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-move --input-file args.json > unity-mcp-cli run-tool assets-move --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-move --input-file - <<'EOF' > unity-mcp-cli run-tool assets-move --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `sourcePaths` | `any` | Yes | The paths of the assets to move. | | `sourcePaths` | `any` | Yes | The paths of the assets to move. |
| `destinationPaths` | `any` | Yes | The paths of moved assets. | | `destinationPaths` | `any` | Yes | The paths of moved assets. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"sourcePaths": { "sourcePaths": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
}, },
"destinationPaths": { "destinationPaths": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
}, },
"required": [ "required": [
"sourcePaths", "sourcePaths",
"destinationPaths" "destinationPaths"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.MoveAssetsResponse" "$ref": "#/$defs/AIGD.MoveAssetsResponse"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.MoveAssetsResponse": { "AIGD.MoveAssetsResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"MovedPaths": { "MovedPaths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of destination paths of successfully moved assets." "description": "List of destination paths of successfully moved assets."
}, },
"Errors": { "Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during move operations." "description": "List of errors encountered during move operations."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+105 -105
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Prefab / Close # 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. 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 ## Inputs
@@ -15,99 +15,99 @@ Close currently opened prefab. Use it when you are in prefab editing mode in Uni
## Behavior ## Behavior
Throws when no prefab stage is currently open. Returns an `AssetObjectRef` for the closed prefab asset. Throws when no prefab stage is currently open. Returns an `AssetObjectRef` for the closed prefab asset.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-prefab-close --input '{ unity-mcp-cli run-tool assets-prefab-close --input '{
"save": false "save": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-close --input-file args.json > unity-mcp-cli run-tool assets-prefab-close --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-close --input-file - <<'EOF' > unity-mcp-cli run-tool assets-prefab-close --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `save` | `boolean` | No | True to save prefab. False to discard changes. | | `save` | `boolean` | No | True to save prefab. False to discard changes. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"save": { "save": {
"type": "boolean" "type": "boolean"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$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." "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": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": [ "required": [
"result" "result"
] ]
} }
``` ```
+161 -161
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Prefab / Create # 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. 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) ## Inputs (mutually exclusive sources)
@@ -18,155 +18,155 @@ Create a prefab from a GameObject in the current active scene. The prefab will b
## Behavior ## Behavior
Creates intermediate folders along `prefabAssetPath` if they don't already exist. Returns an `AssetObjectRef` pointing at the new prefab asset. Creates intermediate folders along `prefabAssetPath` if they don't already exist. Returns an `AssetObjectRef` pointing at the new prefab asset.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-prefab-create --input '{ unity-mcp-cli run-tool assets-prefab-create --input '{
"prefabAssetPath": "string_value", "prefabAssetPath": "string_value",
"gameObjectRef": "string_value", "gameObjectRef": "string_value",
"sourcePrefabAssetPath": "string_value", "sourcePrefabAssetPath": "string_value",
"connectGameObjectToPrefab": false "connectGameObjectToPrefab": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-create --input-file args.json > unity-mcp-cli run-tool assets-prefab-create --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-create --input-file - <<'EOF' > unity-mcp-cli run-tool assets-prefab-create --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `prefabAssetPath` | `string` | Yes | Prefab asset path. Should be in the format 'Assets/Path/To/Prefab.prefab'. | | `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. | | `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. | | `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). | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"prefabAssetPath": { "prefabAssetPath": {
"type": "string" "type": "string"
}, },
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"sourcePrefabAssetPath": { "sourcePrefabAssetPath": {
"type": "string" "type": "string"
}, },
"connectGameObjectToPrefab": { "connectGameObjectToPrefab": {
"type": "boolean" "type": "boolean"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"prefabAssetPath" "prefabAssetPath"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$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." "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": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": [ "required": [
"result" "result"
] ]
} }
``` ```
+164 -164
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Prefab / Instantiate # Assets / Prefab / Instantiate
Instantiates prefab in the current active scene. Use 'assets-find' tool to find prefab assets in the project. Instantiates prefab in the current active scene. Use 'assets-find' tool to find prefab assets in the project.
## Inputs ## 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. - `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). - `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. - `position` / `rotation` / `scale` — optional transform; default to zero / zero / one.
- `isLocalSpace` — when `true`, applies the transform in local space relative to the parent. - `isLocalSpace` — when `true`, applies the transform in local space relative to the parent.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-prefab-instantiate --input '{ unity-mcp-cli run-tool assets-prefab-instantiate --input '{
"prefabAssetPath": "string_value", "prefabAssetPath": "string_value",
"gameObjectPath": "string_value", "gameObjectPath": "string_value",
"position": "string_value", "position": "string_value",
"rotation": "string_value", "rotation": "string_value",
"scale": "string_value", "scale": "string_value",
"isLocalSpace": false "isLocalSpace": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-instantiate --input-file args.json > unity-mcp-cli run-tool assets-prefab-instantiate --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-instantiate --input-file - <<'EOF' > unity-mcp-cli run-tool assets-prefab-instantiate --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `prefabAssetPath` | `string` | Yes | Prefab asset path. | | `prefabAssetPath` | `string` | Yes | Prefab asset path. |
| `gameObjectPath` | `string` | Yes | GameObject path in the current active scene. | | `gameObjectPath` | `string` | Yes | GameObject path in the current active scene. |
| `position` | `any` | No | Transform position of the GameObject. | | `position` | `any` | No | Transform position of the GameObject. |
| `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. | | `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. |
| `scale` | `any` | No | Transform scale of the GameObject. | | `scale` | `any` | No | Transform scale of the GameObject. |
| `isLocalSpace` | `boolean` | No | World or Local space of transform. | | `isLocalSpace` | `boolean` | No | World or Local space of transform. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"prefabAssetPath": { "prefabAssetPath": {
"type": "string" "type": "string"
}, },
"gameObjectPath": { "gameObjectPath": {
"type": "string" "type": "string"
}, },
"position": { "position": {
"$ref": "#/$defs/UnityEngine.Vector3" "$ref": "#/$defs/UnityEngine.Vector3"
}, },
"rotation": { "rotation": {
"$ref": "#/$defs/UnityEngine.Vector3" "$ref": "#/$defs/UnityEngine.Vector3"
}, },
"scale": { "scale": {
"$ref": "#/$defs/UnityEngine.Vector3" "$ref": "#/$defs/UnityEngine.Vector3"
}, },
"isLocalSpace": { "isLocalSpace": {
"type": "boolean" "type": "boolean"
} }
}, },
"$defs": { "$defs": {
"UnityEngine.Vector3": { "UnityEngine.Vector3": {
"type": "object", "type": "object",
"properties": { "properties": {
"x": { "x": {
"type": "number" "type": "number"
}, },
"y": { "y": {
"type": "number" "type": "number"
}, },
"z": { "z": {
"type": "number" "type": "number"
} }
}, },
"required": [ "required": [
"x", "x",
"y", "y",
"z" "z"
], ],
"additionalProperties": false "additionalProperties": false
} }
}, },
"required": [ "required": [
"prefabAssetPath", "prefabAssetPath",
"gameObjectPath" "gameObjectPath"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+101 -101
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Prefab / Open # 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. 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 ## Inputs
@@ -15,95 +15,95 @@ Open prefab edit mode for a specific GameObject. In the Edit mode you can modify
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-prefab-open --input '{ unity-mcp-cli run-tool assets-prefab-open --input '{
"gameObjectRef": "string_value" "gameObjectRef": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-open --input-file args.json > unity-mcp-cli run-tool assets-prefab-open --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-open --input-file - <<'EOF' > unity-mcp-cli run-tool assets-prefab-open --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | GameObject that represents prefab instance of an original prefab GameObject. | | `gameObjectRef` | `any` | Yes | GameObject that represents prefab instance of an original prefab GameObject. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"gameObjectRef" "gameObjectRef"
] ]
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+105 -105
View File
@@ -1,109 +1,109 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Prefab / Save # 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. 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 ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-prefab-save --input '{ unity-mcp-cli run-tool assets-prefab-save --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-save --input-file args.json > unity-mcp-cli run-tool assets-prefab-save --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-prefab-save --input-file - <<'EOF' > unity-mcp-cli run-tool assets-prefab-save --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$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." "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": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": [ "required": [
"result" "result"
] ]
} }
``` ```
+73 -73
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Refresh # 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. 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 ## Inputs
@@ -16,67 +16,67 @@ Refreshes the AssetDatabase. Use it if any file was added or updated in the proj
## Behavior ## 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`. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-refresh --input '{ unity-mcp-cli run-tool assets-refresh --input '{
"options": "string_value" "options": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-refresh --input-file args.json > unity-mcp-cli run-tool assets-refresh --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-refresh --input-file - <<'EOF' > unity-mcp-cli run-tool assets-refresh --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `options` | `any` | No | Asset import options. | | `options` | `any` | No | Asset import options. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"options": { "options": {
"$ref": "#/$defs/UnityEditor.ImportAssetOptions" "$ref": "#/$defs/UnityEditor.ImportAssetOptions"
} }
}, },
"$defs": { "$defs": {
"UnityEditor.ImportAssetOptions": { "UnityEditor.ImportAssetOptions": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Default", "Default",
"ForceUpdate", "ForceUpdate",
"ForceSynchronousImport", "ForceSynchronousImport",
"ImportRecursive", "ImportRecursive",
"DontDownloadFromCacheServer", "DontDownloadFromCacheServer",
"ForceUncompressedImport" "ForceUncompressedImport"
] ]
} }
} }
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+438 -438
View File
@@ -1,12 +1,12 @@
--- ---
name: 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." 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / Shader / Get Data # 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. 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) ## 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 ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-shader-get-data --input '{ unity-mcp-cli run-tool assets-shader-get-data --input '{
"assetRef": "string_value", "assetRef": "string_value",
"includeMessages": "string_value", "includeMessages": "string_value",
"includeProperties": "string_value", "includeProperties": "string_value",
"includeSubshaders": "string_value", "includeSubshaders": "string_value",
"includeSourceCode": "string_value", "includeSourceCode": "string_value",
"paths": "string_value", "paths": "string_value",
"viewQuery": "string_value" "viewQuery": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-shader-get-data --input-file args.json > unity-mcp-cli run-tool assets-shader-get-data --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-shader-get-data --input-file - <<'EOF' > unity-mcp-cli run-tool assets-shader-get-data --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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 | | `includeMessages` | `any` | No | Include compilation error and warning messages. Default: true |
| `includeProperties` | `any` | No | Include shader properties (uniforms) list. Default: false | | `includeProperties` | `any` | No | Include shader properties (uniforms) list. Default: false |
| `includeSubshaders` | `any` | No | Include subshader and pass structure. 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 | | `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'. | | `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'. | | `viewQuery` | `any` | No | Optional. View-query filter routed through Reflector.View against the underlying Shader asset. Mutually exclusive with 'paths'. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"assetRef": { "assetRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef" "$ref": "#/$defs/AIGD.AssetObjectRef"
}, },
"includeMessages": { "includeMessages": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
}, },
"includeProperties": { "includeProperties": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
}, },
"includeSubshaders": { "includeSubshaders": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
}, },
"includeSourceCode": { "includeSourceCode": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
}, },
"paths": { "paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)" "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}, },
"viewQuery": { "viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": { "System.Boolean": {
"type": "boolean" "type": "boolean"
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.ViewQuery": { "com.IvanMurzak.ReflectorNet.Model.ViewQuery": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "NamePattern": {
"type": "string", "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." "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": { "MaxDepth": {
"type": "integer", "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." "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": { "TypeFilter": {
"$ref": "#/$defs/System.Type", "$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." "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": [ "required": [
"assetRef" "assetRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.ShaderData" "$ref": "#/$defs/AIGD.ShaderData"
} }
}, },
"$defs": { "$defs": {
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": { "System.Type": {
"type": "string" "type": "string"
}, },
"System.Collections.Generic.List(AIGD.ShaderMessageData)": { "System.Collections.Generic.List(AIGD.ShaderMessageData)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ShaderMessageData" "$ref": "#/$defs/AIGD.ShaderMessageData"
} }
}, },
"AIGD.ShaderMessageData": { "AIGD.ShaderMessageData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Message": { "Message": {
"type": "string", "type": "string",
"description": "The error or warning message text." "description": "The error or warning message text."
}, },
"Line": { "Line": {
"type": "integer", "type": "integer",
"description": "The line number in the shader source where the issue occurs." "description": "The line number in the shader source where the issue occurs."
}, },
"Severity": { "Severity": {
"type": "string", "type": "string",
"description": "Severity level (e.g. 'Error', 'Warning')." "description": "Severity level (e.g. 'Error', 'Warning')."
}, },
"Platform": { "Platform": {
"type": "string", "type": "string",
"description": "The platform on which the error occurs (e.g. 'OpenGLCore', 'D3D11')." "description": "The platform on which the error occurs (e.g. 'OpenGLCore', 'D3D11')."
} }
}, },
"required": [ "required": [
"Line" "Line"
] ]
}, },
"System.Collections.Generic.List(AIGD.ShaderPropertyData)": { "System.Collections.Generic.List(AIGD.ShaderPropertyData)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ShaderPropertyData" "$ref": "#/$defs/AIGD.ShaderPropertyData"
} }
}, },
"AIGD.ShaderPropertyData": { "AIGD.ShaderPropertyData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string", "type": "string",
"description": "Property name as used in shader code (e.g. '_MainTex', '_Color')." "description": "Property name as used in shader code (e.g. '_MainTex', '_Color')."
}, },
"Description": { "Description": {
"type": "string", "type": "string",
"description": "Human-readable description/display name of the property." "description": "Human-readable description/display name of the property."
}, },
"Type": { "Type": {
"type": "string", "type": "string",
"description": "Property type (e.g. 'Color', 'Float', 'Range', 'Texture', 'Vector', 'Int')." "description": "Property type (e.g. 'Color', 'Float', 'Range', 'Texture', 'Vector', 'Int')."
}, },
"Flags": { "Flags": {
"type": "string", "type": "string",
"description": "Property flags (e.g. 'None', 'HideInInspector', 'PerRendererData')." "description": "Property flags (e.g. 'None', 'HideInInspector', 'PerRendererData')."
}, },
"NameId": { "NameId": {
"type": "integer", "type": "integer",
"description": "The unique name ID for this property." "description": "The unique name ID for this property."
}, },
"RangeMin": { "RangeMin": {
"type": "number", "type": "number",
"description": "Minimum value for Range properties. Null for non-range properties." "description": "Minimum value for Range properties. Null for non-range properties."
}, },
"RangeMax": { "RangeMax": {
"type": "number", "type": "number",
"description": "Maximum value for Range properties. Null for non-range properties." "description": "Maximum value for Range properties. Null for non-range properties."
}, },
"DefaultTextureName": { "DefaultTextureName": {
"type": "string", "type": "string",
"description": "Default texture name for Texture properties. Null if not applicable." "description": "Default texture name for Texture properties. Null if not applicable."
}, },
"Attributes": { "Attributes": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "Custom attributes applied to this property. Null if none." "description": "Custom attributes applied to this property. Null if none."
} }
}, },
"required": [ "required": [
"NameId" "NameId"
] ]
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"System.Collections.Generic.List(AIGD.SubshaderData)": { "System.Collections.Generic.List(AIGD.SubshaderData)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.SubshaderData" "$ref": "#/$defs/AIGD.SubshaderData"
} }
}, },
"AIGD.SubshaderData": { "AIGD.SubshaderData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Index": { "Index": {
"type": "integer", "type": "integer",
"description": "Index of this subshader within the shader." "description": "Index of this subshader within the shader."
}, },
"PassCount": { "PassCount": {
"type": "integer", "type": "integer",
"description": "Number of passes in this subshader." "description": "Number of passes in this subshader."
}, },
"Passes": { "Passes": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PassData)", "$ref": "#/$defs/System.Collections.Generic.List(AIGD.PassData)",
"description": "List of passes in this subshader. Null if no passes." "description": "List of passes in this subshader. Null if no passes."
} }
}, },
"required": [ "required": [
"Index", "Index",
"PassCount" "PassCount"
] ]
}, },
"System.Collections.Generic.List(AIGD.PassData)": { "System.Collections.Generic.List(AIGD.PassData)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.PassData" "$ref": "#/$defs/AIGD.PassData"
} }
}, },
"AIGD.PassData": { "AIGD.PassData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Index": { "Index": {
"type": "integer", "type": "integer",
"description": "Index of this pass within the subshader." "description": "Index of this pass within the subshader."
}, },
"Name": { "Name": {
"type": "string", "type": "string",
"description": "Name of the pass. Null if unnamed." "description": "Name of the pass. Null if unnamed."
}, },
"SourceCode": { "SourceCode": {
"type": "string", "type": "string",
"description": "Source code of the pass. Null if unavailable." "description": "Source code of the pass. Null if unavailable."
} }
}, },
"required": [ "required": [
"Index" "Index"
] ]
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"AIGD.ShaderData": { "AIGD.ShaderData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Reference": { "Reference": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to the shader asset for future operations." "description": "Reference to the shader asset for future operations."
}, },
"Name": { "Name": {
"type": "string", "type": "string",
"description": "Full name of the shader (e.g. 'Standard', 'Universal Render Pipeline/Lit')." "description": "Full name of the shader (e.g. 'Standard', 'Universal Render Pipeline/Lit')."
}, },
"IsSupported": { "IsSupported": {
"type": "boolean", "type": "boolean",
"description": "Whether the shader is supported on the current GPU and platform." "description": "Whether the shader is supported on the current GPU and platform."
}, },
"RenderQueue": { "RenderQueue": {
"type": "integer", "type": "integer",
"description": "The render queue value of the shader." "description": "The render queue value of the shader."
}, },
"HasErrors": { "HasErrors": {
"type": "boolean", "type": "boolean",
"description": "Whether the shader has any compilation errors." "description": "Whether the shader has any compilation errors."
}, },
"PropertyCount": { "PropertyCount": {
"type": "integer", "type": "integer",
"description": "Number of properties exposed by the shader." "description": "Number of properties exposed by the shader."
}, },
"PassCount": { "PassCount": {
"type": "integer", "type": "integer",
"description": "Total number of passes in the shader." "description": "Total number of passes in the shader."
}, },
"RenderType": { "RenderType": {
"type": "string", "type": "string",
"description": "The RenderType tag value from the first pass, if set." "description": "The RenderType tag value from the first pass, if set."
}, },
"Messages": { "Messages": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderMessageData)", "$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderMessageData)",
"description": "Compilation messages including errors and warnings. Null if no messages." "description": "Compilation messages including errors and warnings. Null if no messages."
}, },
"Properties": { "Properties": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderPropertyData)", "$ref": "#/$defs/System.Collections.Generic.List(AIGD.ShaderPropertyData)",
"description": "List of shader properties (uniforms). Null if the shader has no properties." "description": "List of shader properties (uniforms). Null if the shader has no properties."
}, },
"Subshaders": { "Subshaders": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.SubshaderData)", "$ref": "#/$defs/System.Collections.Generic.List(AIGD.SubshaderData)",
"description": "List of subshaders with their passes. Null if shader data is unavailable." "description": "List of subshaders with their passes. Null if shader data is unavailable."
}, },
"View": { "View": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' is supplied. Null otherwise." "description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' is supplied. Null otherwise."
} }
}, },
"required": [ "required": [
"IsSupported", "IsSupported",
"RenderQueue", "RenderQueue",
"HasErrors", "HasErrors",
"PropertyCount", "PropertyCount",
"PassCount" "PassCount"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+82 -82
View File
@@ -1,86 +1,86 @@
--- ---
name: assets-shader-list-all 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'. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Assets / List Shaders # 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. 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 ## Behavior
Enumerates shaders via `ShaderUtils.GetAllShaders`, filters out nulls, and returns the names alphabetically sorted. Enumerates shaders via `ShaderUtils.GetAllShaders`, filters out nulls, and returns the names alphabetically sorted.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool assets-shader-list-all --input '{ unity-mcp-cli run-tool assets-shader-list-all --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool assets-shader-list-all --input-file args.json > unity-mcp-cli run-tool assets-shader-list-all --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool assets-shader-list-all --input-file - <<'EOF' > unity-mcp-cli run-tool assets-shader-list-all --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+60 -60
View File
@@ -1,64 +1,64 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Console / Clear Logs # 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. 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 ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool console-clear-logs --input '{ unity-mcp-cli run-tool console-clear-logs --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool console-clear-logs --input-file args.json > unity-mcp-cli run-tool console-clear-logs --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool console-clear-logs --input-file - <<'EOF' > unity-mcp-cli run-tool console-clear-logs --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+138 -138
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Console / Get Logs # Console / Get Logs
Retrieves Unity Editor logs. Useful for debugging and monitoring Unity Editor activity. Retrieves Unity Editor logs. Useful for debugging and monitoring Unity Editor activity.
## Inputs ## 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. - `maxEntries` (default 100, minimum 1) — caps the size of the returned array.
- `logTypeFilter` — Unity `LogType` filter; `null` returns all severities. - `logTypeFilter` — Unity `LogType` filter; `null` returns all severities.
- `includeStackTrace` (default `false`) — include stack-trace strings in each entry. - `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. - `lastMinutes` (default 0) — when non-zero, only logs from the last N minutes are returned.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool console-get-logs --input '{ unity-mcp-cli run-tool console-get-logs --input '{
"maxEntries": 0, "maxEntries": 0,
"logTypeFilter": "string_value", "logTypeFilter": "string_value",
"includeStackTrace": false, "includeStackTrace": false,
"lastMinutes": 0 "lastMinutes": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool console-get-logs --input-file args.json > unity-mcp-cli run-tool console-get-logs --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool console-get-logs --input-file - <<'EOF' > unity-mcp-cli run-tool console-get-logs --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `maxEntries` | `integer` | No | Maximum number of log entries to return. Minimum: 1. Default: 100 | | `maxEntries` | `integer` | No | Maximum number of log entries to return. Minimum: 1. Default: 100 |
| `logTypeFilter` | `any` | No | Filter by log type. 'null' means All. | | `logTypeFilter` | `any` | No | Filter by log type. 'null' means All. |
| `includeStackTrace` | `boolean` | No | Include stack traces in the output. Default: false | | `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 | | `lastMinutes` | `integer` | No | Return logs from the last N minutes. If 0, returns all available logs. Default: 0 |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"maxEntries": { "maxEntries": {
"type": "integer" "type": "integer"
}, },
"logTypeFilter": { "logTypeFilter": {
"$ref": "#/$defs/UnityEngine.LogType" "$ref": "#/$defs/UnityEngine.LogType"
}, },
"includeStackTrace": { "includeStackTrace": {
"type": "boolean" "type": "boolean"
}, },
"lastMinutes": { "lastMinutes": {
"type": "integer" "type": "integer"
} }
}, },
"$defs": { "$defs": {
"UnityEngine.LogType": { "UnityEngine.LogType": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Error", "Error",
"Assert", "Assert",
"Warning", "Warning",
"Log", "Log",
"Exception" "Exception"
] ]
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry-1" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry-1"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.Unity.MCP.LogEntry": { "com.IvanMurzak.Unity.MCP.LogEntry": {
"type": "object", "type": "object",
"properties": { "properties": {
"LogType": { "LogType": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Error", "Error",
"Assert", "Assert",
"Warning", "Warning",
"Log", "Log",
"Exception" "Exception"
] ]
}, },
"Message": { "Message": {
"type": "string" "type": "string"
}, },
"Timestamp": { "Timestamp": {
"type": "string", "type": "string",
"format": "date-time" "format": "date-time"
}, },
"StackTrace": { "StackTrace": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"LogType", "LogType",
"Timestamp" "Timestamp"
] ]
}, },
"com.IvanMurzak.Unity.MCP.LogEntry-1": { "com.IvanMurzak.Unity.MCP.LogEntry-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.LogEntry"
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
@@ -1,127 +1,127 @@
--- ---
name: 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. description: Return the current state of `UnityEditor.EditorApplication` — playmode, paused state, compilation state, and related flags.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Editor / Application / Get State # 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. 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 ## Behavior
Snapshots Editor state via `EditorStatsData.FromEditor()` on the main thread and returns the result. Snapshots Editor state via `EditorStatsData.FromEditor()` on the main thread and returns the result.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool editor-application-get-state --input '{ unity-mcp-cli run-tool editor-application-get-state --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool editor-application-get-state --input-file args.json > unity-mcp-cli run-tool editor-application-get-state --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool editor-application-get-state --input-file - <<'EOF' > unity-mcp-cli run-tool editor-application-get-state --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.EditorStatsData", "$ref": "#/$defs/AIGD.EditorStatsData",
"description": "Available information about 'UnityEditor.EditorApplication'." "description": "Available information about 'UnityEditor.EditorApplication'."
} }
}, },
"$defs": { "$defs": {
"AIGD.EditorStatsData": { "AIGD.EditorStatsData": {
"type": "object", "type": "object",
"properties": { "properties": {
"IsPlaying": { "IsPlaying": {
"type": "boolean", "type": "boolean",
"description": "Whether the Editor is in Play mode." "description": "Whether the Editor is in Play mode."
}, },
"IsPaused": { "IsPaused": {
"type": "boolean", "type": "boolean",
"description": "Whether the Editor is paused." "description": "Whether the Editor is paused."
}, },
"IsCompiling": { "IsCompiling": {
"type": "boolean", "type": "boolean",
"description": "Is editor currently compiling scripts? (Read Only)" "description": "Is editor currently compiling scripts? (Read Only)"
}, },
"IsPlayingOrWillChangePlaymode": { "IsPlayingOrWillChangePlaymode": {
"type": "boolean", "type": "boolean",
"description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)" "description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)"
}, },
"IsUpdating": { "IsUpdating": {
"type": "boolean", "type": "boolean",
"description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)" "description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)"
}, },
"ApplicationContentsPath": { "ApplicationContentsPath": {
"type": "string", "type": "string",
"description": "Path to the Unity editor contents folder. (Read Only)" "description": "Path to the Unity editor contents folder. (Read Only)"
}, },
"ApplicationPath": { "ApplicationPath": {
"type": "string", "type": "string",
"description": "Gets the path to the Unity Editor application. (Read Only)" "description": "Gets the path to the Unity Editor application. (Read Only)"
}, },
"TimeSinceStartup": { "TimeSinceStartup": {
"type": "number", "type": "number",
"description": "The time since the editor was started. (Read Only)" "description": "The time since the editor was started. (Read Only)"
} }
}, },
"required": [ "required": [
"IsPlaying", "IsPlaying",
"IsPaused", "IsPaused",
"IsCompiling", "IsCompiling",
"IsPlayingOrWillChangePlaymode", "IsPlayingOrWillChangePlaymode",
"IsUpdating", "IsUpdating",
"TimeSinceStartup" "TimeSinceStartup"
], ],
"description": "Available information about 'UnityEditor.EditorApplication'." "description": "Available information about 'UnityEditor.EditorApplication'."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Editor / Application / Set State # 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. 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 ## Inputs
@@ -16,122 +16,122 @@ Control the Unity Editor application state. You can start, stop, or pause the 'p
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool editor-application-set-state --input '{ unity-mcp-cli run-tool editor-application-set-state --input '{
"isPlaying": false, "isPlaying": false,
"isPaused": false "isPaused": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool editor-application-set-state --input-file args.json > unity-mcp-cli run-tool editor-application-set-state --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool editor-application-set-state --input-file - <<'EOF' > unity-mcp-cli run-tool editor-application-set-state --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `isPlaying` | `boolean` | No | If true, the 'playmode' will be started. If false, the 'playmode' will be stopped. | | `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. | | `isPaused` | `boolean` | No | If true, the 'playmode' will be paused. If false, the 'playmode' will be resumed. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"isPlaying": { "isPlaying": {
"type": "boolean" "type": "boolean"
}, },
"isPaused": { "isPaused": {
"type": "boolean" "type": "boolean"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.EditorStatsData", "$ref": "#/$defs/AIGD.EditorStatsData",
"description": "Available information about 'UnityEditor.EditorApplication'." "description": "Available information about 'UnityEditor.EditorApplication'."
} }
}, },
"$defs": { "$defs": {
"AIGD.EditorStatsData": { "AIGD.EditorStatsData": {
"type": "object", "type": "object",
"properties": { "properties": {
"IsPlaying": { "IsPlaying": {
"type": "boolean", "type": "boolean",
"description": "Whether the Editor is in Play mode." "description": "Whether the Editor is in Play mode."
}, },
"IsPaused": { "IsPaused": {
"type": "boolean", "type": "boolean",
"description": "Whether the Editor is paused." "description": "Whether the Editor is paused."
}, },
"IsCompiling": { "IsCompiling": {
"type": "boolean", "type": "boolean",
"description": "Is editor currently compiling scripts? (Read Only)" "description": "Is editor currently compiling scripts? (Read Only)"
}, },
"IsPlayingOrWillChangePlaymode": { "IsPlayingOrWillChangePlaymode": {
"type": "boolean", "type": "boolean",
"description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)" "description": "Editor application state which is true only when the Editor is currently in or about to enter Play mode. (Read Only)"
}, },
"IsUpdating": { "IsUpdating": {
"type": "boolean", "type": "boolean",
"description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)" "description": "True if the Editor is currently refreshing the AssetDatabase. (Read Only)"
}, },
"ApplicationContentsPath": { "ApplicationContentsPath": {
"type": "string", "type": "string",
"description": "Path to the Unity editor contents folder. (Read Only)" "description": "Path to the Unity editor contents folder. (Read Only)"
}, },
"ApplicationPath": { "ApplicationPath": {
"type": "string", "type": "string",
"description": "Gets the path to the Unity Editor application. (Read Only)" "description": "Gets the path to the Unity Editor application. (Read Only)"
}, },
"TimeSinceStartup": { "TimeSinceStartup": {
"type": "number", "type": "number",
"description": "The time since the editor was started. (Read Only)" "description": "The time since the editor was started. (Read Only)"
} }
}, },
"required": [ "required": [
"IsPlaying", "IsPlaying",
"IsPaused", "IsPaused",
"IsCompiling", "IsCompiling",
"IsPlayingOrWillChangePlaymode", "IsPlayingOrWillChangePlaymode",
"IsUpdating", "IsUpdating",
"TimeSinceStartup" "TimeSinceStartup"
], ],
"description": "Available information about 'UnityEditor.EditorApplication'." "description": "Available information about 'UnityEditor.EditorApplication'."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+238 -238
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Editor / Selection / Get # Editor / Selection / Get
Get information about the current Selection in the Unity Editor. Use 'editor-selection-set' tool to set the selection. 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) ## 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`. - `includeActiveObject` (default `true`) — populate `ActiveObject` as a generic `ObjectRef`.
- `includeActiveTransform` (default `true`) — populate `ActiveTransform` as a `ComponentRef`. - `includeActiveTransform` (default `true`) — populate `ActiveTransform` as a `ComponentRef`.
`ActiveGameObject` and `ActiveInstanceID` are always populated. `ActiveGameObject` and `ActiveInstanceID` are always populated.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool editor-selection-get --input '{ unity-mcp-cli run-tool editor-selection-get --input '{
"includeGameObjects": false, "includeGameObjects": false,
"includeTransforms": false, "includeTransforms": false,
"includeInstanceIDs": false, "includeInstanceIDs": false,
"includeAssetGUIDs": false, "includeAssetGUIDs": false,
"includeActiveObject": false, "includeActiveObject": false,
"includeActiveTransform": false "includeActiveTransform": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool editor-selection-get --input-file args.json > unity-mcp-cli run-tool editor-selection-get --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool editor-selection-get --input-file - <<'EOF' > unity-mcp-cli run-tool editor-selection-get --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `includeGameObjects` | `boolean` | No | | | `includeGameObjects` | `boolean` | No | |
| `includeTransforms` | `boolean` | No | | | `includeTransforms` | `boolean` | No | |
| `includeInstanceIDs` | `boolean` | No | | | `includeInstanceIDs` | `boolean` | No | |
| `includeAssetGUIDs` | `boolean` | No | | | `includeAssetGUIDs` | `boolean` | No | |
| `includeActiveObject` | `boolean` | No | | | `includeActiveObject` | `boolean` | No | |
| `includeActiveTransform` | `boolean` | No | | | `includeActiveTransform` | `boolean` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"includeGameObjects": { "includeGameObjects": {
"type": "boolean" "type": "boolean"
}, },
"includeTransforms": { "includeTransforms": {
"type": "boolean" "type": "boolean"
}, },
"includeInstanceIDs": { "includeInstanceIDs": {
"type": "boolean" "type": "boolean"
}, },
"includeAssetGUIDs": { "includeAssetGUIDs": {
"type": "boolean" "type": "boolean"
}, },
"includeActiveObject": { "includeActiveObject": {
"type": "boolean" "type": "boolean"
}, },
"includeActiveTransform": { "includeActiveTransform": {
"type": "boolean" "type": "boolean"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.SelectionData" "$ref": "#/$defs/AIGD.SelectionData"
} }
}, },
"$defs": { "$defs": {
"AIGD.GameObjectRef-1": { "AIGD.GameObjectRef-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.ComponentRef-1": { "AIGD.ComponentRef-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
} }
}, },
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"System.Int32-1": { "System.Int32-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "integer" "type": "integer"
} }
}, },
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.ObjectRef": { "AIGD.ObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object." "description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}, },
"AIGD.SelectionData": { "AIGD.SelectionData": {
"type": "object", "type": "object",
"properties": { "properties": {
"GameObjects": { "GameObjects": {
"$ref": "#/$defs/AIGD.GameObjectRef-1", "$ref": "#/$defs/AIGD.GameObjectRef-1",
"description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects." "description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects."
}, },
"Transforms": { "Transforms": {
"$ref": "#/$defs/AIGD.ComponentRef-1", "$ref": "#/$defs/AIGD.ComponentRef-1",
"description": "Returns the top level selection, excluding Prefabs." "description": "Returns the top level selection, excluding Prefabs."
}, },
"InstanceIDs": { "InstanceIDs": {
"$ref": "#/$defs/System.Int32-1", "$ref": "#/$defs/System.Int32-1",
"description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects." "description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects."
}, },
"AssetGUIDs": { "AssetGUIDs": {
"$ref": "#/$defs/System.String-1", "$ref": "#/$defs/System.String-1",
"description": "Returns the guids of the selected assets." "description": "Returns the guids of the selected assets."
}, },
"ActiveGameObject": { "ActiveGameObject": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Returns the active game object. (The one shown in the inspector)." "description": "Returns the active game object. (The one shown in the inspector)."
}, },
"ActiveInstanceID": { "ActiveInstanceID": {
"type": "integer", "type": "integer",
"description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects" "description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects"
}, },
"ActiveObject": { "ActiveObject": {
"$ref": "#/$defs/AIGD.ObjectRef", "$ref": "#/$defs/AIGD.ObjectRef",
"description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects." "description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects."
}, },
"ActiveTransform": { "ActiveTransform": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Returns the active transform. (The one shown in the inspector)." "description": "Returns the active transform. (The one shown in the inspector)."
} }
}, },
"required": [ "required": [
"ActiveInstanceID" "ActiveInstanceID"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+238 -238
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Editor / Selection / Set # 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. Set the current Selection in the Unity Editor to the provided objects. Use 'editor-selection-get' tool to get the current selection first.
## Inputs ## Inputs
@@ -15,232 +15,232 @@ Set the current Selection in the Unity Editor to the provided objects. Use 'edit
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool editor-selection-set --input '{ unity-mcp-cli run-tool editor-selection-set --input '{
"select": "string_value" "select": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool editor-selection-set --input-file args.json > unity-mcp-cli run-tool editor-selection-set --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool editor-selection-set --input-file - <<'EOF' > unity-mcp-cli run-tool editor-selection-set --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `select` | `any` | Yes | | | `select` | `any` | Yes | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"select": { "select": {
"$ref": "#/$defs/AIGD.ObjectRef-1" "$ref": "#/$defs/AIGD.ObjectRef-1"
} }
}, },
"$defs": { "$defs": {
"AIGD.ObjectRef": { "AIGD.ObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object." "description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}, },
"AIGD.ObjectRef-1": { "AIGD.ObjectRef-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ObjectRef", "$ref": "#/$defs/AIGD.ObjectRef",
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object." "description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
} }
} }
}, },
"required": [ "required": [
"select" "select"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.SelectionData" "$ref": "#/$defs/AIGD.SelectionData"
} }
}, },
"$defs": { "$defs": {
"AIGD.GameObjectRef-1": { "AIGD.GameObjectRef-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.ComponentRef-1": { "AIGD.ComponentRef-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
} }
}, },
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"System.Int32-1": { "System.Int32-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "integer" "type": "integer"
} }
}, },
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.ObjectRef": { "AIGD.ObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object." "description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}, },
"AIGD.SelectionData": { "AIGD.SelectionData": {
"type": "object", "type": "object",
"properties": { "properties": {
"GameObjects": { "GameObjects": {
"$ref": "#/$defs/AIGD.GameObjectRef-1", "$ref": "#/$defs/AIGD.GameObjectRef-1",
"description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects." "description": "Returns the actual game object selection. Includes Prefabs, non-modifiable objects."
}, },
"Transforms": { "Transforms": {
"$ref": "#/$defs/AIGD.ComponentRef-1", "$ref": "#/$defs/AIGD.ComponentRef-1",
"description": "Returns the top level selection, excluding Prefabs." "description": "Returns the top level selection, excluding Prefabs."
}, },
"InstanceIDs": { "InstanceIDs": {
"$ref": "#/$defs/System.Int32-1", "$ref": "#/$defs/System.Int32-1",
"description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects." "description": "The actual unfiltered selection from the Scene returned as instance ids instead of objects."
}, },
"AssetGUIDs": { "AssetGUIDs": {
"$ref": "#/$defs/System.String-1", "$ref": "#/$defs/System.String-1",
"description": "Returns the guids of the selected assets." "description": "Returns the guids of the selected assets."
}, },
"ActiveGameObject": { "ActiveGameObject": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Returns the active game object. (The one shown in the inspector)." "description": "Returns the active game object. (The one shown in the inspector)."
}, },
"ActiveInstanceID": { "ActiveInstanceID": {
"type": "integer", "type": "integer",
"description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects" "description": "Returns the instanceID of the actual object selection. Includes Prefabs, non-modifiable objects"
}, },
"ActiveObject": { "ActiveObject": {
"$ref": "#/$defs/AIGD.ObjectRef", "$ref": "#/$defs/AIGD.ObjectRef",
"description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects." "description": "Returns the actual object selection. Includes Prefabs, non-modifiable objects."
}, },
"ActiveTransform": { "ActiveTransform": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Returns the active transform. (The one shown in the inspector)." "description": "Returns the active transform. (The one shown in the inspector)."
} }
}, },
"required": [ "required": [
"ActiveInstanceID" "ActiveInstanceID"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+185 -185
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Component / Add # 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. 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 ## Inputs
@@ -16,179 +16,179 @@ Add Component to GameObject in opened Prefab or in a Scene. Use 'gameobject-find
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-component-add --input '{ unity-mcp-cli run-tool gameobject-component-add --input '{
"componentNames": "string_value", "componentNames": "string_value",
"gameObjectRef": "string_value" "gameObjectRef": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-add --input-file args.json > unity-mcp-cli run-tool gameobject-component-add --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-add --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-component-add --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `componentNames` | `any` | Yes | Full name of the Component. It should include full namespace path and the class name. | | `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. | | `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"componentNames": { "componentNames": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
}, },
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"componentNames", "componentNames",
"gameObjectRef" "gameObjectRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.AddComponentResponse" "$ref": "#/$defs/AIGD.AddComponentResponse"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(AIGD.ComponentDataShallow)": { "System.Collections.Generic.List(AIGD.ComponentDataShallow)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ComponentDataShallow" "$ref": "#/$defs/AIGD.ComponentDataShallow"
} }
}, },
"AIGD.ComponentDataShallow": { "AIGD.ComponentDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer" "type": "integer"
}, },
"typeName": { "typeName": {
"type": "string" "type": "string"
}, },
"isEnabled": { "isEnabled": {
"type": "string", "type": "string",
"enum": [ "enum": [
"False", "False",
"True", "True",
"NA" "NA"
] ]
} }
}, },
"required": [ "required": [
"instanceID", "instanceID",
"isEnabled" "isEnabled"
] ]
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.AddComponentResponse": { "AIGD.AddComponentResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"AddedComponents": { "AddedComponents": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.ComponentDataShallow)", "$ref": "#/$defs/System.Collections.Generic.List(AIGD.ComponentDataShallow)",
"description": "List of successfully added components." "description": "List of successfully added components."
}, },
"Messages": { "Messages": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of success messages for added components." "description": "List of success messages for added components."
}, },
"Warnings": { "Warnings": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of warnings encountered during component addition." "description": "List of warnings encountered during component addition."
}, },
"Errors": { "Errors": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of errors encountered during component addition." "description": "List of errors encountered during component addition."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Component / Destroy # 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. 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 ## Inputs
@@ -16,186 +16,186 @@ Destroy one or many components from target GameObject. Can't destroy missed comp
## Behavior ## 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). 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-component-destroy --input '{ unity-mcp-cli run-tool gameobject-component-destroy --input '{
"gameObjectRef": "string_value", "gameObjectRef": "string_value",
"destroyComponentRefs": "string_value" "destroyComponentRefs": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-destroy --input-file args.json > unity-mcp-cli run-tool gameobject-component-destroy --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-destroy --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-component-destroy --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. | | `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. | | `destroyComponentRefs` | `any` | Yes | Component reference array. Used to find Component at GameObject. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"destroyComponentRefs": { "destroyComponentRefs": {
"$ref": "#/$defs/AIGD.ComponentRefList" "$ref": "#/$defs/AIGD.ComponentRefList"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"AIGD.ComponentRefList": { "AIGD.ComponentRefList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"description": "Component reference array. Used to find Component at GameObject." "description": "Component reference array. Used to find Component at GameObject."
} }
}, },
"required": [ "required": [
"gameObjectRef", "gameObjectRef",
"destroyComponentRefs" "destroyComponentRefs"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.DestroyComponentsResponse" "$ref": "#/$defs/AIGD.DestroyComponentsResponse"
} }
}, },
"$defs": { "$defs": {
"AIGD.ComponentRefList": { "AIGD.ComponentRefList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"description": "Component reference array. Used to find Component at GameObject." "description": "Component reference array. Used to find Component at GameObject."
}, },
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"AIGD.DestroyComponentsResponse": { "AIGD.DestroyComponentsResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"DestroyedComponents": { "DestroyedComponents": {
"$ref": "#/$defs/AIGD.ComponentRefList", "$ref": "#/$defs/AIGD.ComponentRefList",
"description": "List of destroyed components." "description": "List of destroyed components."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+322 -322
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Component / Get # 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. 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 ## Inputs
@@ -23,316 +23,316 @@ Supply `paths` (a list of paths) to read only the listed fields/elements via `Re
## Path syntax ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-component-get --input '{ unity-mcp-cli run-tool gameobject-component-get --input '{
"gameObjectRef": "string_value", "gameObjectRef": "string_value",
"componentRef": "string_value", "componentRef": "string_value",
"includeFields": false, "includeFields": false,
"includeProperties": false, "includeProperties": false,
"deepSerialization": false, "deepSerialization": false,
"paths": "string_value", "paths": "string_value",
"viewQuery": "string_value" "viewQuery": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-get --input-file args.json > unity-mcp-cli run-tool gameobject-component-get --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-get --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-component-get --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. | | `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. | | `componentRef` | `any` | Yes | Component reference. Used to find a Component at GameObject. |
| `includeFields` | `boolean` | No | Include serialized fields of the component. | | `includeFields` | `boolean` | No | Include serialized fields of the component. |
| `includeProperties` | `boolean` | No | Include serialized properties 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. | | `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'. | | `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'. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"componentRef": { "componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef" "$ref": "#/$defs/AIGD.ComponentRef"
}, },
"includeFields": { "includeFields": {
"type": "boolean" "type": "boolean"
}, },
"includeProperties": { "includeProperties": {
"type": "boolean" "type": "boolean"
}, },
"deepSerialization": { "deepSerialization": {
"type": "boolean" "type": "boolean"
}, },
"paths": { "paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)" "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}, },
"viewQuery": { "viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.ViewQuery": { "com.IvanMurzak.ReflectorNet.Model.ViewQuery": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "NamePattern": {
"type": "string", "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." "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": { "MaxDepth": {
"type": "integer", "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." "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": { "TypeFilter": {
"$ref": "#/$defs/System.Type", "$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." "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": [ "required": [
"gameObjectRef", "gameObjectRef",
"componentRef" "componentRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.GetComponentResponse" "$ref": "#/$defs/AIGD.GetComponentResponse"
} }
}, },
"$defs": { "$defs": {
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"AIGD.ComponentDataShallow": { "AIGD.ComponentDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer" "type": "integer"
}, },
"typeName": { "typeName": {
"type": "string" "type": "string"
}, },
"isEnabled": { "isEnabled": {
"type": "string", "type": "string",
"enum": [ "enum": [
"False", "False",
"True", "True",
"NA" "NA"
] ]
} }
}, },
"required": [ "required": [
"instanceID", "instanceID",
"isEnabled" "isEnabled"
] ]
}, },
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)": { "System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"AIGD.GetComponentResponse": { "AIGD.GetComponentResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"Reference": { "Reference": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Reference to the component for future operations." "description": "Reference to the component for future operations."
}, },
"Index": { "Index": {
"type": "integer", "type": "integer",
"description": "Index of the component in the GameObject's component list." "description": "Index of the component in the GameObject's component list."
}, },
"Component": { "Component": {
"$ref": "#/$defs/AIGD.ComponentDataShallow", "$ref": "#/$defs/AIGD.ComponentDataShallow",
"description": "Basic component information (type, enabled state)." "description": "Basic component information (type, enabled state)."
}, },
"Fields": { "Fields": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)", "$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')." "description": "Serialized fields of the component. Populated only on the legacy code path (no 'paths' / no 'viewQuery')."
}, },
"Properties": { "Properties": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.SerializedMember)", "$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')." "description": "Serialized properties of the component. Populated only on the legacy code path (no 'paths' / no 'viewQuery')."
}, },
"View": { "View": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' was supplied. Null otherwise." "description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' was supplied. Null otherwise."
} }
}, },
"required": [ "required": [
"Index" "Index"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
@@ -1,12 +1,12 @@
--- ---
name: 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'. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Component / List All # 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. 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 ## Inputs
@@ -17,117 +17,117 @@ List C# class names extended from UnityEngine.Component. Use this to find compon
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-component-list-all --input '{ unity-mcp-cli run-tool gameobject-component-list-all --input '{
"search": "string_value", "search": "string_value",
"page": 0, "page": 0,
"pageSize": 0 "pageSize": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-list-all --input-file args.json > unity-mcp-cli run-tool gameobject-component-list-all --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-list-all --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-component-list-all --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `search` | `string` | No | Substring for searching components. Could be empty. | | `search` | `string` | No | Substring for searching components. Could be empty. |
| `page` | `integer` | No | Page number (0-based). Default is 0. | | `page` | `integer` | No | Page number (0-based). Default is 0. |
| `pageSize` | `integer` | No | Number of items per page. Default is 5. Max is 500. | | `pageSize` | `integer` | No | Number of items per page. Default is 5. Max is 500. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"search": { "search": {
"type": "string" "type": "string"
}, },
"page": { "page": {
"type": "integer" "type": "integer"
}, },
"pageSize": { "pageSize": {
"type": "integer" "type": "integer"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.ComponentListResult" "$ref": "#/$defs/AIGD.ComponentListResult"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.ComponentListResult": { "AIGD.ComponentListResult": {
"type": "object", "type": "object",
"properties": { "properties": {
"Items": { "Items": {
"$ref": "#/$defs/System.String-1", "$ref": "#/$defs/System.String-1",
"description": "Array of component type names for the current page." "description": "Array of component type names for the current page."
}, },
"Page": { "Page": {
"type": "integer", "type": "integer",
"description": "Current page number (0-based)." "description": "Current page number (0-based)."
}, },
"PageSize": { "PageSize": {
"type": "integer", "type": "integer",
"description": "Number of items per page." "description": "Number of items per page."
}, },
"TotalCount": { "TotalCount": {
"type": "integer", "type": "integer",
"description": "Total number of matching components." "description": "Total number of matching components."
}, },
"TotalPages": { "TotalPages": {
"type": "integer", "type": "integer",
"description": "Total number of pages available." "description": "Total number of pages available."
} }
}, },
"required": [ "required": [
"Page", "Page",
"PageSize", "PageSize",
"TotalCount", "TotalCount",
"TotalPages" "TotalPages"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Component / Modify # GameObject / Component / Modify
## Three modification surfaces ## Three modification surfaces
Use whichever fits the task: Use whichever fits the task:
@@ -19,305 +19,305 @@ When more than one is supplied they run in this order: `jsonPatch` → `pathPatc
## Path syntax ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-component-modify --input '{ unity-mcp-cli run-tool gameobject-component-modify --input '{
"gameObjectRef": "string_value", "gameObjectRef": "string_value",
"componentRef": "string_value", "componentRef": "string_value",
"componentDiff": "string_value", "componentDiff": "string_value",
"pathPatches": "string_value", "pathPatches": "string_value",
"jsonPatch": "string_value" "jsonPatch": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-modify --input-file args.json > unity-mcp-cli run-tool gameobject-component-modify --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-component-modify --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-component-modify --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. | | `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. | | `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. | `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. Only include the fields/properties you want to change.
Any unknown or invalid fields and properties will be reported in the response. | 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]'. | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"componentRef": { "componentRef": {
"$ref": "#/$defs/AIGD.ComponentRef" "$ref": "#/$defs/AIGD.ComponentRef"
}, },
"componentDiff": { "componentDiff": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}, },
"pathPatches": { "pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
}, },
"jsonPatch": { "jsonPatch": {
"anyOf": [ "anyOf": [
{ {
"type": "string" "type": "string"
}, },
{ {
"type": "object", "type": "object",
"additionalProperties": true "additionalProperties": true
} }
] ]
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"AIGD.PathPatch": { "AIGD.PathPatch": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$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." "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)": { "System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.PathPatch" "$ref": "#/$defs/AIGD.PathPatch"
} }
} }
}, },
"required": [ "required": [
"gameObjectRef", "gameObjectRef",
"componentRef" "componentRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.ModifyComponentResponse" "$ref": "#/$defs/AIGD.ModifyComponentResponse"
} }
}, },
"$defs": { "$defs": {
"AIGD.ComponentRef": { "AIGD.ComponentRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"index": { "index": {
"type": "integer", "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." "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": { "typeName": {
"type": "string", "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." "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": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"index", "index",
"instanceID" "instanceID"
], ],
"description": "Component reference. Used to find a Component at GameObject." "description": "Component reference. Used to find a Component at GameObject."
}, },
"AIGD.ComponentDataShallow": { "AIGD.ComponentDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer" "type": "integer"
}, },
"typeName": { "typeName": {
"type": "string" "type": "string"
}, },
"isEnabled": { "isEnabled": {
"type": "string", "type": "string",
"enum": [ "enum": [
"False", "False",
"True", "True",
"NA" "NA"
] ]
} }
}, },
"required": [ "required": [
"instanceID", "instanceID",
"isEnabled" "isEnabled"
] ]
}, },
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.ModifyComponentResponse": { "AIGD.ModifyComponentResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"Success": { "Success": {
"type": "boolean", "type": "boolean",
"description": "Whether the modification was successful." "description": "Whether the modification was successful."
}, },
"Reference": { "Reference": {
"$ref": "#/$defs/AIGD.ComponentRef", "$ref": "#/$defs/AIGD.ComponentRef",
"description": "Reference to the modified component." "description": "Reference to the modified component."
}, },
"Index": { "Index": {
"type": "integer", "type": "integer",
"description": "Index of the component in the GameObject's component list." "description": "Index of the component in the GameObject's component list."
}, },
"Component": { "Component": {
"$ref": "#/$defs/AIGD.ComponentDataShallow", "$ref": "#/$defs/AIGD.ComponentDataShallow",
"description": "Updated component information after modification." "description": "Updated component information after modification."
}, },
"Logs": { "Logs": {
"$ref": "#/$defs/System.String-1", "$ref": "#/$defs/System.String-1",
"description": "Log of modifications made and any warnings/errors encountered." "description": "Log of modifications made and any warnings/errors encountered."
} }
}, },
"required": [ "required": [
"Success", "Success",
"Index" "Index"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+215 -215
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Create # 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. 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 ## 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. - `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. - `position` / `rotation` / `scale` — optional transform; default to zero / zero / one.
- `isLocalSpace` — when `true`, applies the transform in local space relative to the parent. - `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). - `primitiveType` (optional) — when set, the GameObject is created via `GameObject.CreatePrimitive` (adds the appropriate renderer/collider for the primitive shape).
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-create --input '{ unity-mcp-cli run-tool gameobject-create --input '{
"name": "string_value", "name": "string_value",
"parentGameObjectRef": "string_value", "parentGameObjectRef": "string_value",
"position": "string_value", "position": "string_value",
"rotation": "string_value", "rotation": "string_value",
"scale": "string_value", "scale": "string_value",
"isLocalSpace": false, "isLocalSpace": false,
"primitiveType": "string_value" "primitiveType": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-create --input-file args.json > unity-mcp-cli run-tool gameobject-create --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-create --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-create --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `name` | `string` | Yes | Name of the new GameObject. | | `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. | | `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. | | `position` | `any` | No | Transform position of the GameObject. |
| `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. | | `rotation` | `any` | No | Transform rotation of the GameObject. Euler angles in degrees. |
| `scale` | `any` | No | Transform scale of the GameObject. | | `scale` | `any` | No | Transform scale of the GameObject. |
| `isLocalSpace` | `boolean` | No | World or Local space of transform. | | `isLocalSpace` | `boolean` | No | World or Local space of transform. |
| `primitiveType` | `any` | No | | | `primitiveType` | `any` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"name": { "name": {
"type": "string" "type": "string"
}, },
"parentGameObjectRef": { "parentGameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"position": { "position": {
"$ref": "#/$defs/UnityEngine.Vector3" "$ref": "#/$defs/UnityEngine.Vector3"
}, },
"rotation": { "rotation": {
"$ref": "#/$defs/UnityEngine.Vector3" "$ref": "#/$defs/UnityEngine.Vector3"
}, },
"scale": { "scale": {
"$ref": "#/$defs/UnityEngine.Vector3" "$ref": "#/$defs/UnityEngine.Vector3"
}, },
"isLocalSpace": { "isLocalSpace": {
"type": "boolean" "type": "boolean"
}, },
"primitiveType": { "primitiveType": {
"$ref": "#/$defs/UnityEngine.PrimitiveType" "$ref": "#/$defs/UnityEngine.PrimitiveType"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"UnityEngine.Vector3": { "UnityEngine.Vector3": {
"type": "object", "type": "object",
"properties": { "properties": {
"x": { "x": {
"type": "number" "type": "number"
}, },
"y": { "y": {
"type": "number" "type": "number"
}, },
"z": { "z": {
"type": "number" "type": "number"
} }
}, },
"required": [ "required": [
"x", "x",
"y", "y",
"z" "z"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"UnityEngine.PrimitiveType": { "UnityEngine.PrimitiveType": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Sphere", "Sphere",
"Capsule", "Capsule",
"Cylinder", "Cylinder",
"Cube", "Cube",
"Plane", "Plane",
"Quad" "Quad"
] ]
} }
}, },
"required": [ "required": [
"name" "name"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+137 -137
View File
@@ -1,141 +1,141 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Destroy # 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. 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 ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-destroy --input '{ unity-mcp-cli run-tool gameobject-destroy --input '{
"gameObjectRef": "string_value" "gameObjectRef": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-destroy --input-file args.json > unity-mcp-cli run-tool gameobject-destroy --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-destroy --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-destroy --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. | | `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"gameObjectRef" "gameObjectRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.DestroyGameObjectResult" "$ref": "#/$defs/AIGD.DestroyGameObjectResult"
} }
}, },
"$defs": { "$defs": {
"AIGD.DestroyGameObjectResult": { "AIGD.DestroyGameObjectResult": {
"type": "object", "type": "object",
"properties": { "properties": {
"DestroyedName": { "DestroyedName": {
"type": "string", "type": "string",
"description": "Name of the destroyed GameObject." "description": "Name of the destroyed GameObject."
}, },
"DestroyedPath": { "DestroyedPath": {
"type": "string", "type": "string",
"description": "Hierarchy path of the destroyed GameObject." "description": "Hierarchy path of the destroyed GameObject."
}, },
"DestroyedInstanceId": { "DestroyedInstanceId": {
"type": "integer", "type": "integer",
"description": "Instance ID of the destroyed GameObject." "description": "Instance ID of the destroyed GameObject."
} }
}, },
"required": [ "required": [
"DestroyedInstanceId" "DestroyedInstanceId"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+168 -168
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Duplicate # GameObject / Duplicate
Duplicate GameObjects in opened Prefab or in a Scene. Use 'gameobject-find' tool to find the target GameObjects first. Duplicate GameObjects in opened Prefab or in a Scene. Use 'gameobject-find' tool to find the target GameObjects first.
## Inputs ## Inputs
@@ -15,162 +15,162 @@ Duplicate GameObjects in opened Prefab or in a Scene. Use 'gameobject-find' tool
## Behavior ## 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`). 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-duplicate --input '{ unity-mcp-cli run-tool gameobject-duplicate --input '{
"gameObjectRefs": "string_value" "gameObjectRefs": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-duplicate --input-file args.json > unity-mcp-cli run-tool gameobject-duplicate --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-duplicate --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-duplicate --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | Array of GameObjects in opened Prefab or in the active Scene. | | `gameObjectRefs` | `any` | Yes | Array of GameObjects in opened Prefab or in the active Scene. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRefs": { "gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList" "$ref": "#/$defs/AIGD.GameObjectRefList"
} }
}, },
"$defs": { "$defs": {
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRefList": { "AIGD.GameObjectRefList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"description": "Array of GameObjects in opened Prefab or in the active Scene." "description": "Array of GameObjects in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"gameObjectRefs" "gameObjectRefs"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectRef)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectRef)"
} }
}, },
"$defs": { "$defs": {
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"System.Collections.Generic.List(AIGD.GameObjectRef)": { "System.Collections.Generic.List(AIGD.GameObjectRef)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+399 -399
View File
@@ -1,12 +1,12 @@
--- ---
name: 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`. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Find # 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. 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) ## 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 ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-find --input '{ unity-mcp-cli run-tool gameobject-find --input '{
"gameObjectRef": "string_value", "gameObjectRef": "string_value",
"includeData": false, "includeData": false,
"includeComponents": false, "includeComponents": false,
"includeBounds": false, "includeBounds": false,
"includeHierarchy": false, "includeHierarchy": false,
"hierarchyDepth": 0, "hierarchyDepth": 0,
"paths": "string_value", "paths": "string_value",
"viewQuery": "string_value" "viewQuery": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-find --input-file args.json > unity-mcp-cli run-tool gameobject-find --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-find --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-find --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. | | `gameObjectRef` | `any` | Yes | Find GameObject in opened Prefab or in the active Scene. |
| `includeData` | `boolean` | No | Include editable GameObject data (tag, layer, etc). | | `includeData` | `boolean` | No | Include editable GameObject data (tag, layer, etc). |
| `includeComponents` | `boolean` | No | Include attached components references. | | `includeComponents` | `boolean` | No | Include attached components references. |
| `includeBounds` | `boolean` | No | Include 3D bounds of the GameObject. | | `includeBounds` | `boolean` | No | Include 3D bounds of the GameObject. |
| `includeHierarchy` | `boolean` | No | Include hierarchy metadata. | | `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. | | `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'. | | `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'. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"includeData": { "includeData": {
"type": "boolean" "type": "boolean"
}, },
"includeComponents": { "includeComponents": {
"type": "boolean" "type": "boolean"
}, },
"includeBounds": { "includeBounds": {
"type": "boolean" "type": "boolean"
}, },
"includeHierarchy": { "includeHierarchy": {
"type": "boolean" "type": "boolean"
}, },
"hierarchyDepth": { "hierarchyDepth": {
"type": "integer" "type": "integer"
}, },
"paths": { "paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)" "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}, },
"viewQuery": { "viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.ViewQuery": { "com.IvanMurzak.ReflectorNet.Model.ViewQuery": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "NamePattern": {
"type": "string", "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." "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": { "MaxDepth": {
"type": "integer", "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." "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": { "TypeFilter": {
"$ref": "#/$defs/System.Type", "$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." "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": [ "required": [
"gameObjectRef" "gameObjectRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.GameObjectData" "$ref": "#/$defs/AIGD.GameObjectData"
} }
}, },
"$defs": { "$defs": {
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"UnityEngine.Bounds": { "UnityEngine.Bounds": {
"type": "object", "type": "object",
"properties": { "properties": {
"center": { "center": {
"type": "object", "type": "object",
"properties": { "properties": {
"x": { "x": {
"type": "number" "type": "number"
}, },
"y": { "y": {
"type": "number" "type": "number"
}, },
"z": { "z": {
"type": "number" "type": "number"
} }
}, },
"required": [ "required": [
"x", "x",
"y", "y",
"z" "z"
] ]
}, },
"size": { "size": {
"type": "object", "type": "object",
"properties": { "properties": {
"x": { "x": {
"type": "number" "type": "number"
}, },
"y": { "y": {
"type": "number" "type": "number"
}, },
"z": { "z": {
"type": "number" "type": "number"
} }
}, },
"required": [ "required": [
"x", "x",
"y", "y",
"z" "z"
] ]
} }
}, },
"required": [ "required": [
"center", "center",
"size" "size"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"AIGD.GameObjectMetadata": { "AIGD.GameObjectMetadata": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer" "type": "integer"
}, },
"path": { "path": {
"type": "string" "type": "string"
}, },
"name": { "name": {
"type": "string" "type": "string"
}, },
"sceneName": { "sceneName": {
"type": "string" "type": "string"
}, },
"tag": { "tag": {
"type": "string" "type": "string"
}, },
"activeSelf": { "activeSelf": {
"type": "boolean" "type": "boolean"
}, },
"activeInHierarchy": { "activeInHierarchy": {
"type": "boolean" "type": "boolean"
}, },
"children": { "children": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectMetadata)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectMetadata)"
} }
}, },
"required": [ "required": [
"instanceID", "instanceID",
"activeSelf", "activeSelf",
"activeInHierarchy" "activeInHierarchy"
] ]
}, },
"System.Collections.Generic.List(AIGD.GameObjectMetadata)": { "System.Collections.Generic.List(AIGD.GameObjectMetadata)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectMetadata" "$ref": "#/$defs/AIGD.GameObjectMetadata"
} }
}, },
"AIGD.ComponentDataShallow-1": { "AIGD.ComponentDataShallow-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ComponentDataShallow" "$ref": "#/$defs/AIGD.ComponentDataShallow"
} }
}, },
"AIGD.ComponentDataShallow": { "AIGD.ComponentDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer" "type": "integer"
}, },
"typeName": { "typeName": {
"type": "string" "type": "string"
}, },
"isEnabled": { "isEnabled": {
"type": "string", "type": "string",
"enum": [ "enum": [
"False", "False",
"True", "True",
"NA" "NA"
] ]
} }
}, },
"required": [ "required": [
"instanceID", "instanceID",
"isEnabled" "isEnabled"
] ]
}, },
"AIGD.GameObjectData": { "AIGD.GameObjectData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Reference": { "Reference": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"Data": { "Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "GameObject editable data (tag, layer, etc)." "description": "GameObject editable data (tag, layer, etc)."
}, },
"Bounds": { "Bounds": {
"$ref": "#/$defs/UnityEngine.Bounds", "$ref": "#/$defs/UnityEngine.Bounds",
"description": "Bounds of the GameObject." "description": "Bounds of the GameObject."
}, },
"Hierarchy": { "Hierarchy": {
"$ref": "#/$defs/AIGD.GameObjectMetadata", "$ref": "#/$defs/AIGD.GameObjectMetadata",
"description": "Hierarchy metadata of the GameObject." "description": "Hierarchy metadata of the GameObject."
}, },
"Components": { "Components": {
"$ref": "#/$defs/AIGD.ComponentDataShallow-1", "$ref": "#/$defs/AIGD.ComponentDataShallow-1",
"description": "Attached components shallow data of the GameObject (Read-only, use Component modification tool for modification)." "description": "Attached components shallow data of the GameObject (Read-only, use Component modification tool for modification)."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+246 -246
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Modify # GameObject / Modify
## Three modification surfaces ## Three modification surfaces
Per GameObject — parallel arrays must have the same length as `gameObjectRefs`: 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 ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-modify --input '{ unity-mcp-cli run-tool gameobject-modify --input '{
"gameObjectRefs": "string_value", "gameObjectRefs": "string_value",
"gameObjectDiffs": "string_value", "gameObjectDiffs": "string_value",
"pathPatchesPerGameObject": "string_value", "pathPatchesPerGameObject": "string_value",
"jsonPatchesPerGameObject": "string_value" "jsonPatchesPerGameObject": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-modify --input-file args.json > unity-mcp-cli run-tool gameobject-modify --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-modify --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-modify --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | Array of GameObjects in opened Prefab or in the active Scene. | | `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. | | `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. | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRefs": { "gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList" "$ref": "#/$defs/AIGD.GameObjectRefList"
}, },
"gameObjectDiffs": { "gameObjectDiffs": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
}, },
"pathPatchesPerGameObject": { "pathPatchesPerGameObject": {
"$ref": "#/$defs/System.Collections.Generic.List(System.Collections.Generic.List(AIGD.PathPatch))" "$ref": "#/$defs/System.Collections.Generic.List(System.Collections.Generic.List(AIGD.PathPatch))"
}, },
"jsonPatchesPerGameObject": { "jsonPatchesPerGameObject": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)" "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
} }
}, },
"$defs": { "$defs": {
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRefList": { "AIGD.GameObjectRefList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"description": "Array of GameObjects 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": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"System.Collections.Generic.List(AIGD.PathPatch)": { "System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.PathPatch" "$ref": "#/$defs/AIGD.PathPatch"
} }
}, },
"AIGD.PathPatch": { "AIGD.PathPatch": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$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." "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))": { "System.Collections.Generic.List(System.Collections.Generic.List(AIGD.PathPatch))": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
} }
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
}, },
"required": [ "required": [
"gameObjectRefs" "gameObjectRefs"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.ReflectorNet.Model.LogEntry": { "com.IvanMurzak.ReflectorNet.Model.LogEntry": {
"type": "object", "type": "object",
"properties": { "properties": {
"Depth": { "Depth": {
"type": "integer" "type": "integer"
}, },
"Message": { "Message": {
"type": "string" "type": "string"
}, },
"Type": { "Type": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Trace", "Trace",
"Debug", "Debug",
"Info", "Info",
"Success", "Success",
"Warning", "Warning",
"Error", "Error",
"Critical" "Critical"
] ]
} }
}, },
"required": [ "required": [
"Depth", "Depth",
"Type" "Type"
] ]
}, },
"com.IvanMurzak.ReflectorNet.Model.Logs": { "com.IvanMurzak.ReflectorNet.Model.Logs": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry"
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+134 -134
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# GameObject / Set Parent # 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. 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 ## Inputs
@@ -17,128 +17,128 @@ Set parent GameObject to list of GameObjects in opened Prefab or in a Scene. Use
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool gameobject-set-parent --input '{ unity-mcp-cli run-tool gameobject-set-parent --input '{
"gameObjectRefs": "string_value", "gameObjectRefs": "string_value",
"parentGameObjectRef": "string_value", "parentGameObjectRef": "string_value",
"worldPositionStays": false "worldPositionStays": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-set-parent --input-file args.json > unity-mcp-cli run-tool gameobject-set-parent --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool gameobject-set-parent --input-file - <<'EOF' > unity-mcp-cli run-tool gameobject-set-parent --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRefs` | `any` | Yes | List of references to the GameObjects to set new parent. | | `gameObjectRefs` | `any` | Yes | List of references to the GameObjects to set new parent. |
| `parentGameObjectRef` | `any` | Yes | Reference to the parent GameObject. | | `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. | | `worldPositionStays` | `boolean` | No | A boolean flag indicating whether the GameObject's world position should remain unchanged when setting its parent. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRefs": { "gameObjectRefs": {
"$ref": "#/$defs/AIGD.GameObjectRefList" "$ref": "#/$defs/AIGD.GameObjectRefList"
}, },
"parentGameObjectRef": { "parentGameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"worldPositionStays": { "worldPositionStays": {
"type": "boolean" "type": "boolean"
} }
}, },
"$defs": { "$defs": {
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRefList": { "AIGD.GameObjectRefList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"description": "Array of GameObjects in opened Prefab or in the active Scene." "description": "Array of GameObjects in opened Prefab or in the active Scene."
} }
}, },
"required": [ "required": [
"gameObjectRefs", "gameObjectRefs",
"parentGameObjectRef" "parentGameObjectRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+176 -176
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Object / Get Data # 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. 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) ## 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 ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool object-get-data --input '{ unity-mcp-cli run-tool object-get-data --input '{
"objectRef": "string_value", "objectRef": "string_value",
"paths": "string_value", "paths": "string_value",
"viewQuery": "string_value" "viewQuery": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool object-get-data --input-file args.json > unity-mcp-cli run-tool object-get-data --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool object-get-data --input-file - <<'EOF' > unity-mcp-cli run-tool object-get-data --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `objectRef` | `any` | Yes | Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object. | | `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'. | | `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'. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"objectRef": { "objectRef": {
"$ref": "#/$defs/AIGD.ObjectRef" "$ref": "#/$defs/AIGD.ObjectRef"
}, },
"paths": { "paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)" "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}, },
"viewQuery": { "viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
} }
}, },
"$defs": { "$defs": {
"AIGD.ObjectRef": { "AIGD.ObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object." "description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"com.IvanMurzak.ReflectorNet.Model.ViewQuery": { "com.IvanMurzak.ReflectorNet.Model.ViewQuery": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "NamePattern": {
"type": "string", "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." "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": { "MaxDepth": {
"type": "integer", "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." "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": { "TypeFilter": {
"$ref": "#/$defs/System.Type", "$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." "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": [ "required": [
"objectRef" "objectRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+263 -263
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Object / Modify # 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. 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 ## Three modification surfaces
@@ -21,259 +21,259 @@ When more than one is supplied they run in this order: `jsonPatch` → `pathPatc
## Path syntax ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. `fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool object-modify --input '{ unity-mcp-cli run-tool object-modify --input '{
"objectRef": "string_value", "objectRef": "string_value",
"objectDiff": "string_value", "objectDiff": "string_value",
"pathPatches": "string_value", "pathPatches": "string_value",
"jsonPatch": "string_value" "jsonPatch": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool object-modify --input-file args.json > unity-mcp-cli run-tool object-modify --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool object-modify --input-file - <<'EOF' > unity-mcp-cli run-tool object-modify --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `objectRef` | `any` | Yes | Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object. | | `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. | `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. Only include the fields/properties you want to change.
Any unknown or invalid fields and properties will be reported in the response. | 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. | | `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. | | `jsonPatch` | `any` | No | Optional. JSON Merge Patch (RFC 7396, extended with [i]/[key] keys) routed through Reflector.TryPatch. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"objectRef": { "objectRef": {
"$ref": "#/$defs/AIGD.ObjectRef" "$ref": "#/$defs/AIGD.ObjectRef"
}, },
"objectDiff": { "objectDiff": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}, },
"pathPatches": { "pathPatches": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.PathPatch)"
}, },
"jsonPatch": { "jsonPatch": {
"anyOf": [ "anyOf": [
{ {
"type": "string" "type": "string"
}, },
{ {
"type": "object", "type": "object",
"additionalProperties": true "additionalProperties": true
} }
] ]
} }
}, },
"$defs": { "$defs": {
"AIGD.ObjectRef": { "AIGD.ObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object." "description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"AIGD.PathPatch": { "AIGD.PathPatch": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "Value": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$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." "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)": { "System.Collections.Generic.List(AIGD.PathPatch)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.PathPatch" "$ref": "#/$defs/AIGD.PathPatch"
} }
} }
}, },
"required": [ "required": [
"objectRef" "objectRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.ModifyObjectResponse" "$ref": "#/$defs/AIGD.ModifyObjectResponse"
} }
}, },
"$defs": { "$defs": {
"AIGD.ObjectRef": { "AIGD.ObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object." "description": "Reference to UnityEngine.Object instance. It could be GameObject, Component, Asset, etc. Anything extended from UnityEngine.Object."
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"AIGD.ModifyObjectResponse": { "AIGD.ModifyObjectResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"Success": { "Success": {
"type": "boolean", "type": "boolean",
"description": "Whether the modification was successful." "description": "Whether the modification was successful."
}, },
"Reference": { "Reference": {
"$ref": "#/$defs/AIGD.ObjectRef", "$ref": "#/$defs/AIGD.ObjectRef",
"description": "Reference to the modified object." "description": "Reference to the modified object."
}, },
"Data": { "Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Updated object data after modification." "description": "Updated object data after modification."
}, },
"Logs": { "Logs": {
"$ref": "#/$defs/System.String-1", "$ref": "#/$defs/System.String-1",
"description": "Log of modifications made and any warnings/errors encountered." "description": "Log of modifications made and any warnings/errors encountered."
} }
}, },
"required": [ "required": [
"Success" "Success"
] ]
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+63 -63
View File
@@ -1,12 +1,12 @@
--- ---
name: package-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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Package Manager / Add # 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. 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 ## `packageId` formats
@@ -19,57 +19,57 @@ Install a package from the Unity Package Manager registry, Git URL, or local pat
## Processing model ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool package-add --input '{ unity-mcp-cli run-tool package-add --input '{
"packageId": "string_value" "packageId": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool package-add --input-file args.json > unity-mcp-cli run-tool package-add --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool package-add --input-file - <<'EOF' > unity-mcp-cli run-tool package-add --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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'. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"packageId": { "packageId": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"packageId" "packageId"
] ]
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+132 -132
View File
@@ -1,138 +1,138 @@
--- ---
name: package-list 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Package Manager / List Installed # 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. 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 ## Inputs
- `sourceFilter` (default `All`) — restrict by Unity `PackageSource`: `All`, `Registry`, `Embedded`, `Local`, `Git`, `BuiltIn`, `LocalTarball`. - `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. - `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). - `directDependenciesOnly` (default `false`) — when true, return only packages listed in `manifest.json` (no transitive dependencies).
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool package-list --input '{ unity-mcp-cli run-tool package-list --input '{
"sourceFilter": "string_value", "sourceFilter": "string_value",
"nameFilter": "string_value", "nameFilter": "string_value",
"directDependenciesOnly": false "directDependenciesOnly": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool package-list --input-file args.json > unity-mcp-cli run-tool package-list --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool package-list --input-file - <<'EOF' > unity-mcp-cli run-tool package-list --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `sourceFilter` | `string` | No | Filter packages by source. | | `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. | | `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 | | `directDependenciesOnly` | `boolean` | No | Include only direct dependencies (packages in manifest.json). If false, includes all resolved packages. Default: false |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"sourceFilter": { "sourceFilter": {
"type": "string", "type": "string",
"enum": [ "enum": [
"All", "All",
"Registry", "Registry",
"Embedded", "Embedded",
"Local", "Local",
"Git", "Git",
"BuiltIn", "BuiltIn",
"LocalTarball" "LocalTarball"
] ]
}, },
"nameFilter": { "nameFilter": {
"type": "string" "type": "string"
}, },
"directDependenciesOnly": { "directDependenciesOnly": {
"type": "boolean" "type": "boolean"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageData)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageData)"
} }
}, },
"$defs": { "$defs": {
"AIGD.PackageData": { "AIGD.PackageData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string", "type": "string",
"description": "The official Unity name of the package used as the package ID." "description": "The official Unity name of the package used as the package ID."
}, },
"DisplayName": { "DisplayName": {
"type": "string", "type": "string",
"description": "The display name of the package." "description": "The display name of the package."
}, },
"Version": { "Version": {
"type": "string", "type": "string",
"description": "The version of the package." "description": "The version of the package."
}, },
"Description": { "Description": {
"type": "string", "type": "string",
"description": "A brief description of the package." "description": "A brief description of the package."
}, },
"Source": { "Source": {
"type": "string", "type": "string",
"description": "The source of the package (Registry, Embedded, Local, Git, etc.)." "description": "The source of the package (Registry, Embedded, Local, Git, etc.)."
}, },
"Category": { "Category": {
"type": "string", "type": "string",
"description": "The category of the package." "description": "The category of the package."
} }
}, },
"description": "Package information returned from package list operation." "description": "Package information returned from package list operation."
}, },
"System.Collections.Generic.List(AIGD.PackageData)": { "System.Collections.Generic.List(AIGD.PackageData)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.PackageData", "$ref": "#/$defs/AIGD.PackageData",
"description": "Package information returned from package list operation." "description": "Package information returned from package list operation."
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+63 -63
View File
@@ -1,12 +1,12 @@
--- ---
name: package-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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Package Manager / Remove # 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. 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 ## Inputs
@@ -15,57 +15,57 @@ Remove (uninstall) a package from the Unity project. This removes the package fr
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool package-remove --input '{ unity-mcp-cli run-tool package-remove --input '{
"packageId": "string_value" "packageId": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool package-remove --input-file args.json > unity-mcp-cli run-tool package-remove --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool package-remove --input-file - <<'EOF' > unity-mcp-cli run-tool package-remove --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `packageId` | `string` | Yes | The ID of the package to remove. Example: 'com.unity.textmeshpro'. Do not include version number. | | `packageId` | `string` | Yes | The ID of the package to remove. Example: 'com.unity.textmeshpro'. Do not include version number. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"packageId": { "packageId": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"packageId" "packageId"
] ]
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+139 -139
View File
@@ -1,12 +1,12 @@
--- ---
name: package-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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Package Manager / Search # 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. 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 ## Inputs
@@ -17,133 +17,133 @@ Search for packages in both Unity Package Manager registry and installed package
## Result composition ## Result composition
Each entry includes name, display name, latest version, truncated description, install status, installed version (if any), and the top-5 compatible versions. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool package-search --input '{ unity-mcp-cli run-tool package-search --input '{
"query": "string_value", "query": "string_value",
"maxResults": 0, "maxResults": 0,
"offlineMode": false "offlineMode": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool package-search --input-file args.json > unity-mcp-cli run-tool package-search --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool package-search --input-file - <<'EOF' > unity-mcp-cli run-tool package-search --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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). | | `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 | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"query": { "query": {
"type": "string" "type": "string"
}, },
"maxResults": { "maxResults": {
"type": "integer" "type": "integer"
}, },
"offlineMode": { "offlineMode": {
"type": "boolean" "type": "boolean"
} }
}, },
"required": [ "required": [
"query" "query"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageSearchResult)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.PackageSearchResult)"
} }
}, },
"$defs": { "$defs": {
"AIGD.PackageSearchResult": { "AIGD.PackageSearchResult": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string", "type": "string",
"description": "The official Unity name of the package used as the package ID." "description": "The official Unity name of the package used as the package ID."
}, },
"DisplayName": { "DisplayName": {
"type": "string", "type": "string",
"description": "The display name of the package." "description": "The display name of the package."
}, },
"LatestVersion": { "LatestVersion": {
"type": "string", "type": "string",
"description": "The latest version available in the registry." "description": "The latest version available in the registry."
}, },
"Description": { "Description": {
"type": "string", "type": "string",
"description": "A brief description of the package." "description": "A brief description of the package."
}, },
"IsInstalled": { "IsInstalled": {
"type": "boolean", "type": "boolean",
"description": "Whether this package is already installed in the project." "description": "Whether this package is already installed in the project."
}, },
"InstalledVersion": { "InstalledVersion": {
"type": "string", "type": "string",
"description": "The currently installed version (if installed)." "description": "The currently installed version (if installed)."
}, },
"AvailableVersions": { "AvailableVersions": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "Available versions of this package (up to 5 most recent)." "description": "Available versions of this package (up to 5 most recent)."
} }
}, },
"required": [ "required": [
"IsInstalled" "IsInstalled"
], ],
"description": "Package search result with available versions." "description": "Package search result with available versions."
}, },
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"System.Collections.Generic.List(AIGD.PackageSearchResult)": { "System.Collections.Generic.List(AIGD.PackageSearchResult)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.PackageSearchResult", "$ref": "#/$defs/AIGD.PackageSearchResult",
"description": "Package search result with available versions." "description": "Package search result with available versions."
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+74 -74
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Ping # Ping
Lightweight readiness probe. Returns the input message or 'pong' if omitted. Lightweight readiness probe. Returns the input message or 'pong' if omitted.
## Inputs ## Inputs
@@ -15,68 +15,68 @@ Lightweight readiness probe. Returns the input message or 'pong' if omitted.
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-system-tool ping --input '{ unity-mcp-cli run-system-tool ping --input '{
"message": "string_value" "message": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-system-tool ping --input-file args.json > unity-mcp-cli run-system-tool ping --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-system-tool ping --input-file - <<'EOF' > unity-mcp-cli run-system-tool ping --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `message` | `string` | No | Optional message to echo back. | | `message` | `string` | No | Optional message to echo back. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"message": { "message": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+110 -110
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Capture Frame # 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. 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 ## Fields
@@ -19,104 +19,104 @@ Reads `UnityEngine.Time` fields and returns them in a single struct. This tool i
## Behavior ## Behavior
Uses only built-in Unity APIs (`UnityEngine.Time`). No external Unity package is required. Uses only built-in Unity APIs (`UnityEngine.Time`). No external Unity package is required.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-capture-frame --input '{ unity-mcp-cli run-tool profiler-capture-frame --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-capture-frame --input-file args.json > unity-mcp-cli run-tool profiler-capture-frame --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-capture-frame --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-capture-frame --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-FrameCaptureData", "$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." "description": "Single-frame snapshot of timing information from UnityEngine.Time. No historical frame data; use the Profiler window for that."
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-FrameCaptureData": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-FrameCaptureData": {
"type": "object", "type": "object",
"properties": { "properties": {
"FrameTimeMs": { "FrameTimeMs": {
"type": "number", "type": "number",
"description": "Time.deltaTime in milliseconds at the moment of capture." "description": "Time.deltaTime in milliseconds at the moment of capture."
}, },
"Fps": { "Fps": {
"type": "number", "type": "number",
"description": "Frames per second derived from Time.deltaTime." "description": "Frames per second derived from Time.deltaTime."
}, },
"TotalFrameCount": { "TotalFrameCount": {
"type": "integer", "type": "integer",
"description": "Total frame count since application start (Time.frameCount). May include skipped renders." "description": "Total frame count since application start (Time.frameCount). May include skipped renders."
}, },
"RealtimeSinceStartup": { "RealtimeSinceStartup": {
"type": "number", "type": "number",
"description": "Time.realtimeSinceStartup, in seconds." "description": "Time.realtimeSinceStartup, in seconds."
}, },
"RenderedFrameCount": { "RenderedFrameCount": {
"type": "integer", "type": "integer",
"description": "Frames actually rendered (Time.renderedFrameCount)." "description": "Frames actually rendered (Time.renderedFrameCount)."
} }
}, },
"required": [ "required": [
"FrameTimeMs", "FrameTimeMs",
"Fps", "Fps",
"TotalFrameCount", "TotalFrameCount",
"RealtimeSinceStartup", "RealtimeSinceStartup",
"RenderedFrameCount" "RenderedFrameCount"
], ],
"description": "Single-frame snapshot of timing information from UnityEngine.Time. No historical frame data; use the Profiler window for that." "description": "Single-frame snapshot of timing information from UnityEngine.Time. No historical frame data; use the Profiler window for that."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+74 -74
View File
@@ -1,78 +1,78 @@
--- ---
name: profiler-clear-data name: profiler-clear-data
description: Discard all frames currently held by the Editor Profiler (UnityEditorInternal.ProfilerDriver.ClearAllFrames). Cannot be undone. description: Discard all frames currently held by the Editor Profiler (UnityEditorInternal.ProfilerDriver.ClearAllFrames). Cannot be undone.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Clear Data # Profiler / Clear Data
Invokes `UnityEditorInternal.ProfilerDriver.ClearAllFrames()` on the main thread. `UnityEditorInternal` is a built-in editor namespace — no external Unity package is required. Invokes `UnityEditorInternal.ProfilerDriver.ClearAllFrames()` on the main thread. `UnityEditorInternal` is a built-in editor namespace — no external Unity package is required.
## Behavior ## Behavior
After this call, the Profiler window's frame history is empty; subsequent recording starts from frame 0. Returns `true` on success. After this call, the Profiler window's frame history is empty; subsequent recording starts from frame 0. Returns `true` on success.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-clear-data --input '{ unity-mcp-cli run-tool profiler-clear-data --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-clear-data --input-file args.json > unity-mcp-cli run-tool profiler-clear-data --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-clear-data --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-clear-data --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "boolean" "type": "boolean"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+82 -82
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Enable Module # 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. 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 ## Inputs
@@ -16,76 +16,76 @@ Adds or removes the given module name from the wrapper's `EnabledModules` set. T
## Errors ## Errors
- Returns an `[Error]` string when `moduleName` is empty or unknown. - Returns an `[Error]` string when `moduleName` is empty or unknown.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-enable-module --input '{ unity-mcp-cli run-tool profiler-enable-module --input '{
"moduleName": "string_value", "moduleName": "string_value",
"enabled": false "enabled": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-enable-module --input-file args.json > unity-mcp-cli run-tool profiler-enable-module --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-enable-module --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-enable-module --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `moduleName` | `string` | Yes | Profiler module name (e.g. 'CPU', 'GPU', 'Memory'). | | `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. | | `enabled` | `boolean` | No | True to mark the module enabled in local bookkeeping; false to mark disabled. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"moduleName": { "moduleName": {
"type": "string" "type": "string"
}, },
"enabled": { "enabled": {
"type": "boolean" "type": "boolean"
} }
}, },
"required": [ "required": [
"moduleName" "moduleName"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+130 -130
View File
@@ -1,12 +1,12 @@
--- ---
name: 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). description: Return memory statistics snapshot from UnityEngine.Profiling.Profiler — reserved, allocated, mono heap, graphics, etc. (in MB).
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Get Memory Stats # Profiler / Get Memory Stats
Reads UnityEngine.Profiling.Profiler scalar memory counters and converts each from bytes to megabytes (`/1048576f`). Reads UnityEngine.Profiling.Profiler scalar memory counters and converts each from bytes to megabytes (`/1048576f`).
## Fields ## Fields
@@ -23,124 +23,124 @@ Reads UnityEngine.Profiling.Profiler scalar memory counters and converts each fr
## Behavior ## Behavior
Uses only built-in Unity APIs (`UnityEngine.Profiling.Profiler`). No external Unity package is required. Uses only built-in Unity APIs (`UnityEngine.Profiling.Profiler`). No external Unity package is required.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-get-memory-stats --input '{ unity-mcp-cli run-tool profiler-get-memory-stats --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-memory-stats --input-file args.json > unity-mcp-cli run-tool profiler-get-memory-stats --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-memory-stats --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-get-memory-stats --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-MemoryStatsData", "$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." "description": "Memory statistics from the Unity Profiler. All values in megabytes unless otherwise noted."
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-MemoryStatsData": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-MemoryStatsData": {
"type": "object", "type": "object",
"properties": { "properties": {
"TotalReservedMemoryMB": { "TotalReservedMemoryMB": {
"type": "number", "type": "number",
"description": "Total reserved memory (UnityEngine.Profiling.Profiler.GetTotalReservedMemoryLong / 1048576)." "description": "Total reserved memory (UnityEngine.Profiling.Profiler.GetTotalReservedMemoryLong / 1048576)."
}, },
"TotalAllocatedMemoryMB": { "TotalAllocatedMemoryMB": {
"type": "number", "type": "number",
"description": "Total allocated memory (UnityEngine.Profiling.Profiler.GetTotalAllocatedMemoryLong / 1048576)." "description": "Total allocated memory (UnityEngine.Profiling.Profiler.GetTotalAllocatedMemoryLong / 1048576)."
}, },
"TotalUnusedReservedMemoryMB": { "TotalUnusedReservedMemoryMB": {
"type": "number", "type": "number",
"description": "Total unused reserved memory (UnityEngine.Profiling.Profiler.GetTotalUnusedReservedMemoryLong / 1048576)." "description": "Total unused reserved memory (UnityEngine.Profiling.Profiler.GetTotalUnusedReservedMemoryLong / 1048576)."
}, },
"MonoHeapSizeMB": { "MonoHeapSizeMB": {
"type": "number", "type": "number",
"description": "Mono heap size (UnityEngine.Profiling.Profiler.GetMonoHeapSizeLong / 1048576)." "description": "Mono heap size (UnityEngine.Profiling.Profiler.GetMonoHeapSizeLong / 1048576)."
}, },
"MonoUsedSizeMB": { "MonoUsedSizeMB": {
"type": "number", "type": "number",
"description": "Mono used size (UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong / 1048576)." "description": "Mono used size (UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong / 1048576)."
}, },
"TempAllocatorSizeMB": { "TempAllocatorSizeMB": {
"type": "number", "type": "number",
"description": "Temp allocator size (UnityEngine.Profiling.Profiler.GetTempAllocatorSize / 1048576)." "description": "Temp allocator size (UnityEngine.Profiling.Profiler.GetTempAllocatorSize / 1048576)."
}, },
"GraphicsMemoryMB": { "GraphicsMemoryMB": {
"type": "number", "type": "number",
"description": "Graphics memory reserved by the driver (UnityEngine.Profiling.Profiler.GetAllocatedMemoryForGraphicsDriver / 1048576)." "description": "Graphics memory reserved by the driver (UnityEngine.Profiling.Profiler.GetAllocatedMemoryForGraphicsDriver / 1048576)."
}, },
"MaxUsedMemoryMB": { "MaxUsedMemoryMB": {
"type": "number", "type": "number",
"description": "Maximum used memory observed (UnityEngine.Profiling.Profiler.maxUsedMemory / 1048576)." "description": "Maximum used memory observed (UnityEngine.Profiling.Profiler.maxUsedMemory / 1048576)."
}, },
"UsedHeapSizeMB": { "UsedHeapSizeMB": {
"type": "number", "type": "number",
"description": "Used heap size (UnityEngine.Profiling.Profiler.usedHeapSizeLong / 1048576)." "description": "Used heap size (UnityEngine.Profiling.Profiler.usedHeapSizeLong / 1048576)."
} }
}, },
"required": [ "required": [
"TotalReservedMemoryMB", "TotalReservedMemoryMB",
"TotalAllocatedMemoryMB", "TotalAllocatedMemoryMB",
"TotalUnusedReservedMemoryMB", "TotalUnusedReservedMemoryMB",
"MonoHeapSizeMB", "MonoHeapSizeMB",
"MonoUsedSizeMB", "MonoUsedSizeMB",
"TempAllocatorSizeMB", "TempAllocatorSizeMB",
"GraphicsMemoryMB", "GraphicsMemoryMB",
"MaxUsedMemoryMB", "MaxUsedMemoryMB",
"UsedHeapSizeMB" "UsedHeapSizeMB"
], ],
"description": "Memory statistics from the Unity Profiler. All values in megabytes unless otherwise noted." "description": "Memory statistics from the Unity Profiler. All values in megabytes unless otherwise noted."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
@@ -1,12 +1,12 @@
--- ---
name: 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. description: Return current frame timing, FPS, vsync, target frame rate, threading mode, and graphics device type from Unity Time / QualitySettings / SystemInfo.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Get Rendering Stats # 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. 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 ## Fields
@@ -16,107 +16,107 @@ Snapshots rendering-related fields from `UnityEngine.Time`, `UnityEngine.Quality
- `VSyncCount` — `QualitySettings.vSyncCount`. - `VSyncCount` — `QualitySettings.vSyncCount`.
- `TargetFrameRate` — `Application.targetFrameRate`. - `TargetFrameRate` — `Application.targetFrameRate`.
- `RenderingThreadingMode` — `SystemInfo.renderingThreadingMode.ToString()`. - `RenderingThreadingMode` — `SystemInfo.renderingThreadingMode.ToString()`.
- `GraphicsDeviceType` — `SystemInfo.graphicsDeviceType.ToString()`. - `GraphicsDeviceType` — `SystemInfo.graphicsDeviceType.ToString()`.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-get-rendering-stats --input '{ unity-mcp-cli run-tool profiler-get-rendering-stats --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-rendering-stats --input-file args.json > unity-mcp-cli run-tool profiler-get-rendering-stats --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-rendering-stats --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-get-rendering-stats --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData", "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData",
"description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required." "description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required."
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-RenderingStatsData": {
"type": "object", "type": "object",
"properties": { "properties": {
"FrameTimeMs": { "FrameTimeMs": {
"type": "number", "type": "number",
"description": "Last reported frame time (Time.deltaTime * 1000) in milliseconds." "description": "Last reported frame time (Time.deltaTime * 1000) in milliseconds."
}, },
"Fps": { "Fps": {
"type": "number", "type": "number",
"description": "Frames per second derived from Time.deltaTime." "description": "Frames per second derived from Time.deltaTime."
}, },
"VSyncCount": { "VSyncCount": {
"type": "integer", "type": "integer",
"description": "QualitySettings.vSyncCount." "description": "QualitySettings.vSyncCount."
}, },
"TargetFrameRate": { "TargetFrameRate": {
"type": "integer", "type": "integer",
"description": "Application.targetFrameRate." "description": "Application.targetFrameRate."
}, },
"RenderingThreadingMode": { "RenderingThreadingMode": {
"type": "string", "type": "string",
"description": "SystemInfo.renderingThreadingMode." "description": "SystemInfo.renderingThreadingMode."
}, },
"GraphicsDeviceType": { "GraphicsDeviceType": {
"type": "string", "type": "string",
"description": "SystemInfo.graphicsDeviceType." "description": "SystemInfo.graphicsDeviceType."
} }
}, },
"required": [ "required": [
"FrameTimeMs", "FrameTimeMs",
"Fps", "Fps",
"VSyncCount", "VSyncCount",
"TargetFrameRate" "TargetFrameRate"
], ],
"description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required." "description": "Rendering statistics from Unity's Time / QualitySettings / SystemInfo. No external package required."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+120 -120
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. description: Return script execution timing (frame time, fixed dt, time scale, frame count, runtime) plus Mono / GC memory usage in MB.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Get Script Stats # 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. Snapshots fields from `UnityEngine.Time`, `UnityEngine.Profiling.Profiler.GetMonoUsedSizeLong()` and `System.GC.GetTotalMemory(false)`. All values are produced by built-in Unity APIs.
## Fields ## Fields
@@ -17,114 +17,114 @@ Snapshots fields from `UnityEngine.Time`, `UnityEngine.Profiling.Profiler.GetMon
- `TotalFrameCount` — `Time.frameCount`. - `TotalFrameCount` — `Time.frameCount`.
- `RealtimeSinceStartup` — `Time.realtimeSinceStartup`. - `RealtimeSinceStartup` — `Time.realtimeSinceStartup`.
- `MonoMemoryUsageMB` — `Profiler.GetMonoUsedSizeLong() / 1048576f`. - `MonoMemoryUsageMB` — `Profiler.GetMonoUsedSizeLong() / 1048576f`.
- `GCMemoryUsageMB` — `GC.GetTotalMemory(false) / 1048576f`. - `GCMemoryUsageMB` — `GC.GetTotalMemory(false) / 1048576f`.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-get-script-stats --input '{ unity-mcp-cli run-tool profiler-get-script-stats --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-script-stats --input-file args.json > unity-mcp-cli run-tool profiler-get-script-stats --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-script-stats --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-get-script-stats --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData", "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData",
"description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler." "description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler."
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ScriptStatsData": {
"type": "object", "type": "object",
"properties": { "properties": {
"FrameTimeMs": { "FrameTimeMs": {
"type": "number", "type": "number",
"description": "Time.deltaTime in milliseconds." "description": "Time.deltaTime in milliseconds."
}, },
"FixedDeltaTimeMs": { "FixedDeltaTimeMs": {
"type": "number", "type": "number",
"description": "Time.fixedDeltaTime in milliseconds." "description": "Time.fixedDeltaTime in milliseconds."
}, },
"TimeScale": { "TimeScale": {
"type": "number", "type": "number",
"description": "Time.timeScale." "description": "Time.timeScale."
}, },
"TotalFrameCount": { "TotalFrameCount": {
"type": "integer", "type": "integer",
"description": "Total frame count since application start (Time.frameCount)." "description": "Total frame count since application start (Time.frameCount)."
}, },
"RealtimeSinceStartup": { "RealtimeSinceStartup": {
"type": "number", "type": "number",
"description": "Time.realtimeSinceStartup, in seconds." "description": "Time.realtimeSinceStartup, in seconds."
}, },
"MonoMemoryUsageMB": { "MonoMemoryUsageMB": {
"type": "number", "type": "number",
"description": "Mono used size (Profiler.GetMonoUsedSizeLong / 1048576), in megabytes." "description": "Mono used size (Profiler.GetMonoUsedSizeLong / 1048576), in megabytes."
}, },
"GCMemoryUsageMB": { "GCMemoryUsageMB": {
"type": "number", "type": "number",
"description": "System.GC.GetTotalMemory(false) / 1048576, in megabytes." "description": "System.GC.GetTotalMemory(false) / 1048576, in megabytes."
} }
}, },
"required": [ "required": [
"FrameTimeMs", "FrameTimeMs",
"FixedDeltaTimeMs", "FixedDeltaTimeMs",
"TimeScale", "TimeScale",
"TotalFrameCount", "TotalFrameCount",
"RealtimeSinceStartup", "RealtimeSinceStartup",
"MonoMemoryUsageMB", "MonoMemoryUsageMB",
"GCMemoryUsageMB" "GCMemoryUsageMB"
], ],
"description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler." "description": "Script statistics derived from UnityEngine.Time + UnityEngine.Profiling.Profiler."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+110 -110
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. description: Return the Unity profiler's current enabled state, active modules, max-used memory, and platform support flag. Read-only.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Get Status # Profiler / Get Status
Snapshots `UnityEngine.Profiling.Profiler` state and returns it in a single response. Snapshots `UnityEngine.Profiling.Profiler` state and returns it in a single response.
## Fields ## Fields
@@ -18,104 +18,104 @@ Snapshots `UnityEngine.Profiling.Profiler` state and returns it in a single resp
## Behavior ## Behavior
Uses only built-in Unity APIs. No external Unity package is required. Uses only built-in Unity APIs. No external Unity package is required.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-get-status --input '{ unity-mcp-cli run-tool profiler-get-status --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-status --input-file args.json > unity-mcp-cli run-tool profiler-get-status --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-get-status --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-get-status --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData", "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData",
"description": "Profiler status data including memory and module information." "description": "Profiler status data including memory and module information."
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerStatusData": {
"type": "object", "type": "object",
"properties": { "properties": {
"ProfilerEnabled": { "ProfilerEnabled": {
"type": "boolean", "type": "boolean",
"description": "Whether Unity's runtime profiler is currently enabled (UnityEngine.Profiling.Profiler.enabled)." "description": "Whether Unity's runtime profiler is currently enabled (UnityEngine.Profiling.Profiler.enabled)."
}, },
"ActiveModules": { "ActiveModules": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)", "$ref": "#/$defs/System.Collections.Generic.List(System.String)",
"description": "List of profiler modules this wrapper considers active. Local bookkeeping only." "description": "List of profiler modules this wrapper considers active. Local bookkeeping only."
}, },
"MaxUsedMemoryMB": { "MaxUsedMemoryMB": {
"type": "number", "type": "number",
"description": "Maximum used memory recorded by the profiler, in megabytes." "description": "Maximum used memory recorded by the profiler, in megabytes."
}, },
"Supported": { "Supported": {
"type": "boolean", "type": "boolean",
"description": "Whether profiling is supported on this platform (UnityEngine.Profiling.Profiler.supported)." "description": "Whether profiling is supported on this platform (UnityEngine.Profiling.Profiler.supported)."
} }
}, },
"required": [ "required": [
"ProfilerEnabled", "ProfilerEnabled",
"MaxUsedMemoryMB", "MaxUsedMemoryMB",
"Supported" "Supported"
], ],
"description": "Profiler status data including memory and module information." "description": "Profiler status data including memory and module information."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+111 -111
View File
@@ -1,115 +1,115 @@
--- ---
name: profiler-list-modules name: profiler-list-modules
description: List all known profiler module names with their local 'enabled' bookkeeping flag. description: List all known profiler module names with their local 'enabled' bookkeeping flag.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / List Modules # Profiler / List Modules
Returns `Tool_Profiler.AvailableModules` projected into a `ProfilerModulesData` list, with each entry's `Enabled` field reflecting the wrapper's local bookkeeping. Returns `Tool_Profiler.AvailableModules` projected into a `ProfilerModulesData` list, with each entry's `Enabled` field reflecting the wrapper's local bookkeeping.
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-list-modules --input '{ unity-mcp-cli run-tool profiler-list-modules --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-list-modules --input-file args.json > unity-mcp-cli run-tool profiler-list-modules --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-list-modules --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-list-modules --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData", "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData",
"description": "Container for 'profiler-list-modules' output." "description": "Container for 'profiler-list-modules' output."
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo)": { "System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo", "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo",
"description": "Profiler module entry returned by 'profiler-list-modules'." "description": "Profiler module entry returned by 'profiler-list-modules'."
} }
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string", "type": "string",
"description": "Module name (e.g. 'CPU', 'Memory')." "description": "Module name (e.g. 'CPU', 'Memory')."
}, },
"Enabled": { "Enabled": {
"type": "boolean", "type": "boolean",
"description": "Whether the wrapper considers this module enabled. Local bookkeeping only." "description": "Whether the wrapper considers this module enabled. Local bookkeeping only."
} }
}, },
"required": [ "required": [
"Enabled" "Enabled"
], ],
"description": "Profiler module entry returned by 'profiler-list-modules'." "description": "Profiler module entry returned by 'profiler-list-modules'."
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModulesData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Modules": { "Modules": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.Tool_Profiler-ProfilerModuleInfo)", "$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": "All known profiler modules and their wrapper-side enabled flag."
} }
}, },
"description": "Container for 'profiler-list-modules' output." "description": "Container for 'profiler-list-modules' output."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+77 -77
View File
@@ -1,12 +1,12 @@
--- ---
name: profiler-load-data name: profiler-load-data
description: Read back a previously-saved JSON snapshot from `profiler-save-data` and return its raw text. description: Read back a previously-saved JSON snapshot from `profiler-save-data` and return its raw text.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Load Data # Profiler / Load Data
Reads `filePath` as UTF-8 text and returns the file body unchanged. Caller is responsible for parsing. Reads `filePath` as UTF-8 text and returns the file body unchanged. Caller is responsible for parsing.
## Inputs ## Inputs
@@ -19,71 +19,71 @@ Reads `filePath` as UTF-8 text and returns the file body unchanged. Caller is re
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-load-data --input '{ unity-mcp-cli run-tool profiler-load-data --input '{
"filePath": "string_value" "filePath": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-load-data --input-file args.json > unity-mcp-cli run-tool profiler-load-data --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-load-data --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-load-data --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `filePath` | `string` | Yes | Path to a profiler snapshot file previously written by 'profiler-save-data'. | | `filePath` | `string` | Yes | Path to a profiler snapshot file previously written by 'profiler-save-data'. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"filePath": { "filePath": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"filePath" "filePath"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+77 -77
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. description: Save a snapshot of profiler-derived stats (status + memory + rendering + script + frame capture) to a JSON file. Built-in Unity APIs only.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Save Data # 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. 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 ## Inputs
@@ -19,71 +19,71 @@ Composes the outputs of `profiler-get-status`, `profiler-get-memory-stats`, `pro
## Behavior ## Behavior
Uses `System.Text.Json` (BCL) for serialization and `System.IO.File.WriteAllText` for the write. No external Unity package is required. Uses `System.Text.Json` (BCL) for serialization and `System.IO.File.WriteAllText` for the write. No external Unity package is required.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-save-data --input '{ unity-mcp-cli run-tool profiler-save-data --input '{
"filePath": "string_value" "filePath": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-save-data --input-file args.json > unity-mcp-cli run-tool profiler-save-data --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-save-data --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-save-data --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `filePath` | `string` | Yes | Absolute or workspace-relative output file path. | | `filePath` | `string` | Yes | Absolute or workspace-relative output file path. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"filePath": { "filePath": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"filePath" "filePath"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+74 -74
View File
@@ -1,80 +1,80 @@
--- ---
name: 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." description: "Enable Unity's runtime profiler and open the Profiler window. Idempotent: calling when already enabled returns the current enabled state without error."
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Start # Profiler / Start
Enables `UnityEngine.Profiling.Profiler.enabled = true` and opens `Window > Analysis > Profiler` via `EditorApplication.ExecuteMenuItem`. Returns `true` once the profiler is enabled. Enables `UnityEngine.Profiling.Profiler.enabled = true` and opens `Window > Analysis > Profiler` via `EditorApplication.ExecuteMenuItem`. Returns `true` once the profiler is enabled.
## Behavior ## Behavior
Uses only built-in Unity APIs (`UnityEngine.Profiling`, `UnityEditor.EditorApplication`). No external Unity package is required. 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. Snapshot-based: this tool does not stream historical frame data — use Unity's Profiler window directly for that.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-start --input '{ unity-mcp-cli run-tool profiler-start --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-start --input-file args.json > unity-mcp-cli run-tool profiler-start --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-start --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-start --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "boolean" "type": "boolean"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+74 -74
View File
@@ -1,78 +1,78 @@
--- ---
name: profiler-stop name: profiler-stop
description: Disable Unity's runtime profiler. Idempotent — calling when already disabled returns the current disabled state. description: Disable Unity's runtime profiler. Idempotent — calling when already disabled returns the current disabled state.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Profiler / Stop # Profiler / Stop
Sets `UnityEngine.Profiling.Profiler.enabled = false`. Returns the post-call value of `Profiler.enabled` (expected `false`). Sets `UnityEngine.Profiling.Profiler.enabled = false`. Returns the post-call value of `Profiler.enabled` (expected `false`).
## Behavior ## Behavior
Uses only built-in Unity APIs (`UnityEngine.Profiling`). No external Unity package is required. Uses only built-in Unity APIs (`UnityEngine.Profiling`). No external Unity package is required.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool profiler-stop --input '{ unity-mcp-cli run-tool profiler-stop --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-stop --input-file args.json > unity-mcp-cli run-tool profiler-stop --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool profiler-stop --input-file - <<'EOF' > unity-mcp-cli run-tool profiler-stop --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "boolean" "type": "boolean"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+243 -243
View File
@@ -1,12 +1,12 @@
--- ---
name: reflection-method-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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Method C# / Call # 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. 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`) ## 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`). - `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. - `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. - `executeInMainThread` (default `true`) — Unity API calls should keep this true; set false only for thread-safe pure logic.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool reflection-method-call --input '{ unity-mcp-cli run-tool reflection-method-call --input '{
"filter": "string_value", "filter": "string_value",
"knownNamespace": false, "knownNamespace": false,
"typeNameMatchLevel": 0, "typeNameMatchLevel": 0,
"methodNameMatchLevel": 0, "methodNameMatchLevel": 0,
"parametersMatchLevel": 0, "parametersMatchLevel": 0,
"targetObject": "string_value", "targetObject": "string_value",
"inputParameters": "string_value", "inputParameters": "string_value",
"executeInMainThread": false "executeInMainThread": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool reflection-method-call --input-file args.json > unity-mcp-cli run-tool reflection-method-call --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool reflection-method-call --input-file - <<'EOF' > unity-mcp-cli run-tool reflection-method-call --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `filter` | `any` | Yes | Method reference. Used to find method in codebase of the project. | | `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. | | `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. | | `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. | | `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). | | `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). | | `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). | | `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. | | `executeInMainThread` | `boolean` | No | Set to true if the method should be executed in the main thread. Otherwise, set to false. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"filter": { "filter": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef"
}, },
"knownNamespace": { "knownNamespace": {
"type": "boolean" "type": "boolean"
}, },
"typeNameMatchLevel": { "typeNameMatchLevel": {
"type": "integer" "type": "integer"
}, },
"methodNameMatchLevel": { "methodNameMatchLevel": {
"type": "integer" "type": "integer"
}, },
"parametersMatchLevel": { "parametersMatchLevel": {
"type": "integer" "type": "integer"
}, },
"targetObject": { "targetObject": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
}, },
"inputParameters": { "inputParameters": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
}, },
"executeInMainThread": { "executeInMainThread": {
"type": "boolean" "type": "boolean"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": { "System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter",
"description": "Parameter of a method. Contains type and name of the parameter." "description": "Parameter of a method. Contains type and name of the parameter."
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": { "com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc." "description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of the parameter. It may be empty if the name is unknown." "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." "description": "Parameter of a method. Contains type and name of the parameter."
}, },
"com.IvanMurzak.ReflectorNet.Model.MethodRef": { "com.IvanMurzak.ReflectorNet.Model.MethodRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"namespace": { "namespace": {
"type": "string", "type": "string",
"description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown." "description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown."
}, },
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Class name, or substring a class name. It may be empty if the class is unknown." "description": "Class name, or substring a class name. It may be empty if the class is unknown."
}, },
"methodName": { "methodName": {
"type": "string", "type": "string",
"description": "Method name, or substring of the method name. It may be empty if the method is unknown." "description": "Method name, or substring of the method name. It may be empty if the method is unknown."
}, },
"inputParameters": { "inputParameters": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)", "$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": "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." "description": "Method reference. Used to find method in codebase of the project."
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
} }
}, },
"required": [ "required": [
"filter" "filter"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+142 -142
View File
@@ -1,12 +1,12 @@
--- ---
name: reflection-method-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'. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Method C# / Find # 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. 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`) ## 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 ## 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`. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool reflection-method-find --input '{ unity-mcp-cli run-tool reflection-method-find --input '{
"filter": "string_value", "filter": "string_value",
"knownNamespace": false, "knownNamespace": false,
"typeNameMatchLevel": 0, "typeNameMatchLevel": 0,
"methodNameMatchLevel": 0, "methodNameMatchLevel": 0,
"parametersMatchLevel": 0 "parametersMatchLevel": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool reflection-method-find --input-file args.json > unity-mcp-cli run-tool reflection-method-find --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool reflection-method-find --input-file - <<'EOF' > unity-mcp-cli run-tool reflection-method-find --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `filter` | `any` | Yes | Method reference. Used to find method in codebase of the project. | | `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. | | `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. | | `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. | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"filter": { "filter": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef"
}, },
"knownNamespace": { "knownNamespace": {
"type": "boolean" "type": "boolean"
}, },
"typeNameMatchLevel": { "typeNameMatchLevel": {
"type": "integer" "type": "integer"
}, },
"methodNameMatchLevel": { "methodNameMatchLevel": {
"type": "integer" "type": "integer"
}, },
"parametersMatchLevel": { "parametersMatchLevel": {
"type": "integer" "type": "integer"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": { "System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter",
"description": "Parameter of a method. Contains type and name of the parameter." "description": "Parameter of a method. Contains type and name of the parameter."
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": { "com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc." "description": "Type of the parameter including namespace. Sample: 'System.String', 'System.Int32', 'UnityEngine.GameObject', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of the parameter. It may be empty if the name is unknown." "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." "description": "Parameter of a method. Contains type and name of the parameter."
}, },
"com.IvanMurzak.ReflectorNet.Model.MethodRef": { "com.IvanMurzak.ReflectorNet.Model.MethodRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"namespace": { "namespace": {
"type": "string", "type": "string",
"description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown." "description": "Namespace of the class. It may be empty if the class is in the global namespace or the namespace is unknown."
}, },
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Class name, or substring a class name. It may be empty if the class is unknown." "description": "Class name, or substring a class name. It may be empty if the class is unknown."
}, },
"methodName": { "methodName": {
"type": "string", "type": "string",
"description": "Method name, or substring of the method name. It may be empty if the method is unknown." "description": "Method name, or substring of the method name. It may be empty if the method is unknown."
}, },
"inputParameters": { "inputParameters": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.ReflectorNet.Model.MethodRef-Parameter)", "$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": "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." "description": "Method reference. Used to find method in codebase of the project."
} }
}, },
"required": [ "required": [
"filter" "filter"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+152 -152
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Scene / Create # Scene / Create
Create new scene in the project assets. Use 'scene-list-opened' tool to list all opened scenes after creation. Create new scene in the project assets. Use 'scene-list-opened' tool to list all opened scenes after creation.
## Inputs ## Inputs
@@ -17,146 +17,146 @@ Create new scene in the project assets. Use 'scene-list-opened' tool to list all
## Behavior ## Behavior
Calls `EditorSceneManager.NewScene` + `SaveScene(path)` on the main thread, repaints editor windows, and returns a `SceneDataShallow` for the newly created scene. Calls `EditorSceneManager.NewScene` + `SaveScene(path)` on the main thread, repaints editor windows, and returns a `SceneDataShallow` for the newly created scene.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool scene-create --input '{ unity-mcp-cli run-tool scene-create --input '{
"path": "string_value", "path": "string_value",
"newSceneSetup": "string_value", "newSceneSetup": "string_value",
"newSceneMode": "string_value" "newSceneMode": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool scene-create --input-file args.json > unity-mcp-cli run-tool scene-create --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool scene-create --input-file - <<'EOF' > unity-mcp-cli run-tool scene-create --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `path` | `string` | Yes | Path to the scene file. Should end with ".unity" extension. | | `path` | `string` | Yes | Path to the scene file. Should end with ".unity" extension. |
| `newSceneSetup` | `any` | No | | | `newSceneSetup` | `any` | No | |
| `newSceneMode` | `any` | No | | | `newSceneMode` | `any` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"path": { "path": {
"type": "string" "type": "string"
}, },
"newSceneSetup": { "newSceneSetup": {
"$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneSetup" "$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneSetup"
}, },
"newSceneMode": { "newSceneMode": {
"$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneMode" "$ref": "#/$defs/UnityEditor.SceneManagement.NewSceneMode"
} }
}, },
"$defs": { "$defs": {
"UnityEditor.SceneManagement.NewSceneSetup": { "UnityEditor.SceneManagement.NewSceneSetup": {
"type": "string", "type": "string",
"enum": [ "enum": [
"EmptyScene", "EmptyScene",
"DefaultGameObjects" "DefaultGameObjects"
] ]
}, },
"UnityEditor.SceneManagement.NewSceneMode": { "UnityEditor.SceneManagement.NewSceneMode": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Single", "Single",
"Additive" "Additive"
] ]
} }
}, },
"required": [ "required": [
"path" "path"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.SceneDataShallow", "$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
} }
}, },
"$defs": { "$defs": {
"AIGD.SceneDataShallow": { "AIGD.SceneDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string" "type": "string"
}, },
"IsLoaded": { "IsLoaded": {
"type": "boolean" "type": "boolean"
}, },
"IsDirty": { "IsDirty": {
"type": "boolean" "type": "boolean"
}, },
"IsSubScene": { "IsSubScene": {
"type": "boolean" "type": "boolean"
}, },
"IsValidScene": { "IsValidScene": {
"type": "boolean", "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." "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": { "RootCount": {
"type": "integer" "type": "integer"
}, },
"path": { "path": {
"type": "string", "type": "string",
"description": "Path to the Scene within the project. Starts with 'Assets/'" "description": "Path to the Scene within the project. Starts with 'Assets/'"
}, },
"buildIndex": { "buildIndex": {
"type": "integer", "type": "integer",
"description": "Build index of the Scene in the Build Settings." "description": "Build index of the Scene in the Build Settings."
}, },
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"IsLoaded", "IsLoaded",
"IsDirty", "IsDirty",
"IsSubScene", "IsSubScene",
"IsValidScene", "IsValidScene",
"RootCount", "RootCount",
"buildIndex", "buildIndex",
"instanceID" "instanceID"
], ],
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+418 -418
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Scene / Get Data # 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. 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) ## 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 ## Path syntax
`fieldName`, `nested/field`, `arrayField/[i]`, `dictField/[key]`. Leading `#/` is stripped. Example: `paths=['[0]/name']` reads the name of the first root GameObject. `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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool scene-get-data --input '{ unity-mcp-cli run-tool scene-get-data --input '{
"openedSceneName": "string_value", "openedSceneName": "string_value",
"includeRootGameObjects": false, "includeRootGameObjects": false,
"includeChildrenDepth": 0, "includeChildrenDepth": 0,
"includeBounds": false, "includeBounds": false,
"includeData": false, "includeData": false,
"paths": "string_value", "paths": "string_value",
"viewQuery": "string_value" "viewQuery": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool scene-get-data --input-file args.json > unity-mcp-cli run-tool scene-get-data --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool scene-get-data --input-file - <<'EOF' > unity-mcp-cli run-tool scene-get-data --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `openedSceneName` | `string` | No | Name of the opened scene. If empty or null, the active scene will be used. | | `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. | | `includeRootGameObjects` | `boolean` | No | If true, includes root GameObjects in the scene data. |
| `includeChildrenDepth` | `integer` | No | Determines the depth of the hierarchy to include. | | `includeChildrenDepth` | `integer` | No | Determines the depth of the hierarchy to include. |
| `includeBounds` | `boolean` | No | If true, includes bounding box information for GameObjects. | | `includeBounds` | `boolean` | No | If true, includes bounding box information for GameObjects. |
| `includeData` | `boolean` | No | If true, includes component data 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'. | | `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'. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"openedSceneName": { "openedSceneName": {
"type": "string" "type": "string"
}, },
"includeRootGameObjects": { "includeRootGameObjects": {
"type": "boolean" "type": "boolean"
}, },
"includeChildrenDepth": { "includeChildrenDepth": {
"type": "integer" "type": "integer"
}, },
"includeBounds": { "includeBounds": {
"type": "boolean" "type": "boolean"
}, },
"includeData": { "includeData": {
"type": "boolean" "type": "boolean"
}, },
"paths": { "paths": {
"$ref": "#/$defs/System.Collections.Generic.List(System.String)" "$ref": "#/$defs/System.Collections.Generic.List(System.String)"
}, },
"viewQuery": { "viewQuery": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.ViewQuery"
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(System.String)": { "System.Collections.Generic.List(System.String)": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"com.IvanMurzak.ReflectorNet.Model.ViewQuery": { "com.IvanMurzak.ReflectorNet.Model.ViewQuery": {
"type": "object", "type": "object",
"properties": { "properties": {
"Path": { "Path": {
"type": "string", "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." "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": { "NamePattern": {
"type": "string", "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." "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": { "MaxDepth": {
"type": "integer", "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." "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": { "TypeFilter": {
"$ref": "#/$defs/System.Type", "$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." "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
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.SceneData", "$ref": "#/$defs/AIGD.SceneData",
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
} }
}, },
"$defs": { "$defs": {
"System.Collections.Generic.List(AIGD.GameObjectData)": { "System.Collections.Generic.List(AIGD.GameObjectData)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectData" "$ref": "#/$defs/AIGD.GameObjectData"
} }
}, },
"AIGD.GameObjectData": { "AIGD.GameObjectData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Reference": { "Reference": {
"$ref": "#/$defs/AIGD.GameObjectRef", "$ref": "#/$defs/AIGD.GameObjectRef",
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"Data": { "Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "GameObject editable data (tag, layer, etc)." "description": "GameObject editable data (tag, layer, etc)."
}, },
"Bounds": { "Bounds": {
"$ref": "#/$defs/UnityEngine.Bounds", "$ref": "#/$defs/UnityEngine.Bounds",
"description": "Bounds of the GameObject." "description": "Bounds of the GameObject."
}, },
"Hierarchy": { "Hierarchy": {
"$ref": "#/$defs/AIGD.GameObjectMetadata", "$ref": "#/$defs/AIGD.GameObjectMetadata",
"description": "Hierarchy metadata of the GameObject." "description": "Hierarchy metadata of the GameObject."
}, },
"Components": { "Components": {
"$ref": "#/$defs/AIGD.ComponentDataShallow-1", "$ref": "#/$defs/AIGD.ComponentDataShallow-1",
"description": "Attached components shallow data of the GameObject (Read-only, use Component modification tool for modification)." "description": "Attached components shallow data of the GameObject (Read-only, use Component modification tool for modification)."
} }
} }
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"UnityEngine.Bounds": { "UnityEngine.Bounds": {
"type": "object", "type": "object",
"properties": { "properties": {
"center": { "center": {
"type": "object", "type": "object",
"properties": { "properties": {
"x": { "x": {
"type": "number" "type": "number"
}, },
"y": { "y": {
"type": "number" "type": "number"
}, },
"z": { "z": {
"type": "number" "type": "number"
} }
}, },
"required": [ "required": [
"x", "x",
"y", "y",
"z" "z"
] ]
}, },
"size": { "size": {
"type": "object", "type": "object",
"properties": { "properties": {
"x": { "x": {
"type": "number" "type": "number"
}, },
"y": { "y": {
"type": "number" "type": "number"
}, },
"z": { "z": {
"type": "number" "type": "number"
} }
}, },
"required": [ "required": [
"x", "x",
"y", "y",
"z" "z"
] ]
} }
}, },
"required": [ "required": [
"center", "center",
"size" "size"
], ],
"additionalProperties": false "additionalProperties": false
}, },
"AIGD.GameObjectMetadata": { "AIGD.GameObjectMetadata": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer" "type": "integer"
}, },
"path": { "path": {
"type": "string" "type": "string"
}, },
"name": { "name": {
"type": "string" "type": "string"
}, },
"sceneName": { "sceneName": {
"type": "string" "type": "string"
}, },
"tag": { "tag": {
"type": "string" "type": "string"
}, },
"activeSelf": { "activeSelf": {
"type": "boolean" "type": "boolean"
}, },
"activeInHierarchy": { "activeInHierarchy": {
"type": "boolean" "type": "boolean"
}, },
"children": { "children": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectMetadata)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectMetadata)"
} }
}, },
"required": [ "required": [
"instanceID", "instanceID",
"activeSelf", "activeSelf",
"activeInHierarchy" "activeInHierarchy"
] ]
}, },
"System.Collections.Generic.List(AIGD.GameObjectMetadata)": { "System.Collections.Generic.List(AIGD.GameObjectMetadata)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.GameObjectMetadata" "$ref": "#/$defs/AIGD.GameObjectMetadata"
} }
}, },
"AIGD.ComponentDataShallow-1": { "AIGD.ComponentDataShallow-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ComponentDataShallow" "$ref": "#/$defs/AIGD.ComponentDataShallow"
} }
}, },
"AIGD.ComponentDataShallow": { "AIGD.ComponentDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer" "type": "integer"
}, },
"typeName": { "typeName": {
"type": "string" "type": "string"
}, },
"isEnabled": { "isEnabled": {
"type": "string", "type": "string",
"enum": [ "enum": [
"False", "False",
"True", "True",
"NA" "NA"
] ]
} }
}, },
"required": [ "required": [
"instanceID", "instanceID",
"isEnabled" "isEnabled"
] ]
}, },
"AIGD.SceneData": { "AIGD.SceneData": {
"type": "object", "type": "object",
"properties": { "properties": {
"RootGameObjects": { "RootGameObjects": {
"$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectData)" "$ref": "#/$defs/System.Collections.Generic.List(AIGD.GameObjectData)"
}, },
"Data": { "Data": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$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." "description": "Path-scoped read or view-query result, populated when 'paths' or 'viewQuery' is supplied to the scene-get-data tool. Null otherwise."
}, },
"Name": { "Name": {
"type": "string" "type": "string"
}, },
"IsLoaded": { "IsLoaded": {
"type": "boolean" "type": "boolean"
}, },
"IsDirty": { "IsDirty": {
"type": "boolean" "type": "boolean"
}, },
"IsSubScene": { "IsSubScene": {
"type": "boolean" "type": "boolean"
}, },
"IsValidScene": { "IsValidScene": {
"type": "boolean", "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." "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": { "RootCount": {
"type": "integer" "type": "integer"
}, },
"path": { "path": {
"type": "string", "type": "string",
"description": "Path to the Scene within the project. Starts with 'Assets/'" "description": "Path to the Scene within the project. Starts with 'Assets/'"
}, },
"buildIndex": { "buildIndex": {
"type": "integer", "type": "integer",
"description": "Build index of the Scene in the Build Settings." "description": "Build index of the Scene in the Build Settings."
}, },
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"IsLoaded", "IsLoaded",
"IsDirty", "IsDirty",
"IsSubScene", "IsSubScene",
"IsValidScene", "IsValidScene",
"RootCount", "RootCount",
"buildIndex", "buildIndex",
"instanceID" "instanceID"
], ],
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+129 -129
View File
@@ -1,133 +1,133 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Scene / List Opened # 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. Returns the list of currently opened scenes in Unity Editor. Use 'scene-get-data' tool to get detailed information about a specific scene.
## Behavior ## Behavior
Maps `OpenedScenes` through `ToSceneDataShallow()` on the main thread and returns the resulting array. No filtering or pagination — every opened scene is included. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool scene-list-opened --input '{ unity-mcp-cli run-tool scene-list-opened --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool scene-list-opened --input-file args.json > unity-mcp-cli run-tool scene-list-opened --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool scene-list-opened --input-file - <<'EOF' > unity-mcp-cli run-tool scene-list-opened --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1" "$ref": "#/$defs/AIGD.SceneDataShallow-1"
} }
}, },
"$defs": { "$defs": {
"AIGD.SceneDataShallow": { "AIGD.SceneDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string" "type": "string"
}, },
"IsLoaded": { "IsLoaded": {
"type": "boolean" "type": "boolean"
}, },
"IsDirty": { "IsDirty": {
"type": "boolean" "type": "boolean"
}, },
"IsSubScene": { "IsSubScene": {
"type": "boolean" "type": "boolean"
}, },
"IsValidScene": { "IsValidScene": {
"type": "boolean", "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." "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": { "RootCount": {
"type": "integer" "type": "integer"
}, },
"path": { "path": {
"type": "string", "type": "string",
"description": "Path to the Scene within the project. Starts with 'Assets/'" "description": "Path to the Scene within the project. Starts with 'Assets/'"
}, },
"buildIndex": { "buildIndex": {
"type": "integer", "type": "integer",
"description": "Build index of the Scene in the Build Settings." "description": "Build index of the Scene in the Build Settings."
}, },
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"IsLoaded", "IsLoaded",
"IsDirty", "IsDirty",
"IsSubScene", "IsSubScene",
"IsValidScene", "IsValidScene",
"RootCount", "RootCount",
"buildIndex", "buildIndex",
"instanceID" "instanceID"
], ],
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
}, },
"AIGD.SceneDataShallow-1": { "AIGD.SceneDataShallow-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.SceneDataShallow", "$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+172 -172
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Scene / Open # Scene / Open
Open scene from the project asset file. Use 'assets-find' tool to find the scene asset first. Open scene from the project asset file. Use 'assets-find' tool to find the scene asset first.
## Inputs ## 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`. - `sceneRef` — `AssetObjectRef` pointing at a `SceneAsset`. Throws if the asset cannot be resolved or is not a `SceneAsset`.
- `loadSceneMode` (default `Single`): - `loadSceneMode` (default `Single`):
- `Single` — closes the currently opened scenes and opens this one. - `Single` — closes the currently opened scenes and opens this one.
- `Additive` — keeps the currently opened scenes and opens this one alongside them. - `Additive` — keeps the currently opened scenes and opens this one alongside them.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool scene-open --input '{ unity-mcp-cli run-tool scene-open --input '{
"sceneRef": "string_value", "sceneRef": "string_value",
"loadSceneMode": "string_value" "loadSceneMode": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool scene-open --input-file args.json > unity-mcp-cli run-tool scene-open --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool scene-open --input-file - <<'EOF' > unity-mcp-cli run-tool scene-open --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"sceneRef": { "sceneRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef" "$ref": "#/$defs/AIGD.AssetObjectRef"
}, },
"loadSceneMode": { "loadSceneMode": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Single", "Single",
"Additive", "Additive",
"AdditiveWithoutLoading" "AdditiveWithoutLoading"
] ]
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": [ "required": [
"sceneRef" "sceneRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1" "$ref": "#/$defs/AIGD.SceneDataShallow-1"
} }
}, },
"$defs": { "$defs": {
"AIGD.SceneDataShallow": { "AIGD.SceneDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string" "type": "string"
}, },
"IsLoaded": { "IsLoaded": {
"type": "boolean" "type": "boolean"
}, },
"IsDirty": { "IsDirty": {
"type": "boolean" "type": "boolean"
}, },
"IsSubScene": { "IsSubScene": {
"type": "boolean" "type": "boolean"
}, },
"IsValidScene": { "IsValidScene": {
"type": "boolean", "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." "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": { "RootCount": {
"type": "integer" "type": "integer"
}, },
"path": { "path": {
"type": "string", "type": "string",
"description": "Path to the Scene within the project. Starts with 'Assets/'" "description": "Path to the Scene within the project. Starts with 'Assets/'"
}, },
"buildIndex": { "buildIndex": {
"type": "integer", "type": "integer",
"description": "Build index of the Scene in the Build Settings." "description": "Build index of the Scene in the Build Settings."
}, },
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"IsLoaded", "IsLoaded",
"IsDirty", "IsDirty",
"IsSubScene", "IsSubScene",
"IsValidScene", "IsValidScene",
"RootCount", "RootCount",
"buildIndex", "buildIndex",
"instanceID" "instanceID"
], ],
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
}, },
"AIGD.SceneDataShallow-1": { "AIGD.SceneDataShallow-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.SceneDataShallow", "$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+65 -65
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Scene / Save # Scene / Save
Save Opened scene to the asset file. Use 'scene-list-opened' tool to get the list of all opened scenes. Save Opened scene to the asset file. Use 'scene-list-opened' tool to get the list of all opened scenes.
## Inputs ## Inputs
@@ -16,59 +16,59 @@ Save Opened scene to the asset file. Use 'scene-list-opened' tool to get the lis
## Validation ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool scene-save --input '{ unity-mcp-cli run-tool scene-save --input '{
"openedSceneName": "string_value", "openedSceneName": "string_value",
"path": "string_value" "path": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool scene-save --input-file args.json > unity-mcp-cli run-tool scene-save --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool scene-save --input-file - <<'EOF' > unity-mcp-cli run-tool scene-save --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"openedSceneName": { "openedSceneName": {
"type": "string" "type": "string"
}, },
"path": { "path": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+162 -162
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Scene / Set Active # 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. Set the specified opened scene as the active scene. Use 'scene-list-opened' tool to get the list of all opened scenes.
## Inputs ## Inputs
@@ -15,156 +15,156 @@ Set the specified opened scene as the active scene. Use 'scene-list-opened' tool
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool scene-set-active --input '{ unity-mcp-cli run-tool scene-set-active --input '{
"sceneRef": "string_value" "sceneRef": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool scene-set-active --input-file args.json > unity-mcp-cli run-tool scene-set-active --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool scene-set-active --input-file - <<'EOF' > unity-mcp-cli run-tool scene-set-active --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"sceneRef": { "sceneRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef" "$ref": "#/$defs/AIGD.AssetObjectRef"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": [ "required": [
"sceneRef" "sceneRef"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.SceneDataShallow-1" "$ref": "#/$defs/AIGD.SceneDataShallow-1"
} }
}, },
"$defs": { "$defs": {
"AIGD.SceneDataShallow": { "AIGD.SceneDataShallow": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string" "type": "string"
}, },
"IsLoaded": { "IsLoaded": {
"type": "boolean" "type": "boolean"
}, },
"IsDirty": { "IsDirty": {
"type": "boolean" "type": "boolean"
}, },
"IsSubScene": { "IsSubScene": {
"type": "boolean" "type": "boolean"
}, },
"IsValidScene": { "IsValidScene": {
"type": "boolean", "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." "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": { "RootCount": {
"type": "integer" "type": "integer"
}, },
"path": { "path": {
"type": "string", "type": "string",
"description": "Path to the Scene within the project. Starts with 'Assets/'" "description": "Path to the Scene within the project. Starts with 'Assets/'"
}, },
"buildIndex": { "buildIndex": {
"type": "integer", "type": "integer",
"description": "Build index of the Scene in the Build Settings." "description": "Build index of the Scene in the Build Settings."
}, },
"instanceID": { "instanceID": {
"type": "integer", "type": "integer",
"description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'." "description": "instanceID of the UnityEngine.Object. If this is '0', then it will be used as 'null'."
} }
}, },
"required": [ "required": [
"IsLoaded", "IsLoaded",
"IsDirty", "IsDirty",
"IsSubScene", "IsSubScene",
"IsValidScene", "IsValidScene",
"RootCount", "RootCount",
"buildIndex", "buildIndex",
"instanceID" "instanceID"
], ],
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
}, },
"AIGD.SceneDataShallow-1": { "AIGD.SceneDataShallow-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.SceneDataShallow", "$ref": "#/$defs/AIGD.SceneDataShallow",
"description": "Scene reference. Used to find a Scene." "description": "Scene reference. Used to find a Scene."
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+120 -120
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. description: Unload an opened scene from the Unity Editor (asynchronously via `SceneManager.UnloadSceneAsync`). Use 'scene-list-opened' to find the scene name first.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Scene / Unload # Scene / Unload
Unload scene from the Opened scenes in Unity Editor. Use 'scene-list-opened' tool to get the list of all opened scenes. Unload scene from the Opened scenes in Unity Editor. Use 'scene-list-opened' tool to get the list of all opened scenes.
## Inputs ## Inputs
@@ -15,114 +15,114 @@ Unload scene from the Opened scenes in Unity Editor. Use 'scene-list-opened' too
## Behavior ## 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). 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool scene-unload --input '{ unity-mcp-cli run-tool scene-unload --input '{
"name": "string_value" "name": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool scene-unload --input-file args.json > unity-mcp-cli run-tool scene-unload --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool scene-unload --input-file - <<'EOF' > unity-mcp-cli run-tool scene-unload --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `name` | `string` | Yes | Name of the loaded scene. | | `name` | `string` | Yes | Name of the loaded scene. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"name": { "name": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"name" "name"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.UnloadSceneResult" "$ref": "#/$defs/AIGD.UnloadSceneResult"
} }
}, },
"$defs": { "$defs": {
"AIGD.AssetObjectRef": { "AIGD.AssetObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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'." "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": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "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." "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": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.UnloadSceneResult": { "AIGD.UnloadSceneResult": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string", "type": "string",
"description": "Name of the unloaded scene." "description": "Name of the unloaded scene."
}, },
"AssetObjectRef": { "AssetObjectRef": {
"$ref": "#/$defs/AIGD.AssetObjectRef", "$ref": "#/$defs/AIGD.AssetObjectRef",
"description": "Reference to the unloaded scene asset." "description": "Reference to the unloaded scene asset."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+108 -108
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Screenshot / Camera # 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. 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 ## Inputs
@@ -16,102 +16,102 @@ Captures a screenshot from a camera and returns it as an image. If no camera is
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool screenshot-camera --input '{ unity-mcp-cli run-tool screenshot-camera --input '{
"cameraRef": "string_value", "cameraRef": "string_value",
"width": 0, "width": 0,
"height": 0 "height": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-camera --input-file args.json > unity-mcp-cli run-tool screenshot-camera --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-camera --input-file - <<'EOF' > unity-mcp-cli run-tool screenshot-camera --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `cameraRef` | `any` | No | Reference to the camera GameObject. If not specified, uses the Main Camera. | | `cameraRef` | `any` | No | Reference to the camera GameObject. If not specified, uses the Main Camera. |
| `width` | `integer` | No | Width of the screenshot in pixels. | | `width` | `integer` | No | Width of the screenshot in pixels. |
| `height` | `integer` | No | Height of the screenshot in pixels. | | `height` | `integer` | No | Height of the screenshot in pixels. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"cameraRef": { "cameraRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"width": { "width": {
"type": "integer" "type": "integer"
}, },
"height": { "height": {
"type": "integer" "type": "integer"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
} }
} }
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+60 -60
View File
@@ -1,64 +1,64 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Screenshot / Game View # 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. 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 ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool screenshot-game-view --input '{ unity-mcp-cli run-tool screenshot-game-view --input '{
"nothing": "string_value" "nothing": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-game-view --input-file args.json > unity-mcp-cli run-tool screenshot-game-view --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-game-view --input-file - <<'EOF' > unity-mcp-cli run-tool screenshot-game-view --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `nothing` | `string` | No | | | `nothing` | `string` | No | |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"nothing": { "nothing": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+185 -185
View File
@@ -1,12 +1,12 @@
--- ---
name: screenshot-isolated 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Screenshot / Isolated GameObject # 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. 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 ## Camera views
@@ -25,179 +25,179 @@ Renders a screenshot of a target GameObject with configurable isolation, backgro
## Side-effect caveat ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool screenshot-isolated --input '{ unity-mcp-cli run-tool screenshot-isolated --input '{
"gameObjectRef": "string_value", "gameObjectRef": "string_value",
"includeChildren": "string_value", "includeChildren": "string_value",
"isolated": "string_value", "isolated": "string_value",
"backgroundMode": "string_value", "backgroundMode": "string_value",
"backgroundColor": "string_value", "backgroundColor": "string_value",
"cameraView": "string_value", "cameraView": "string_value",
"fieldOfView": "string_value", "fieldOfView": "string_value",
"nearClipPlane": "string_value", "nearClipPlane": "string_value",
"farClipPlane": "string_value", "farClipPlane": "string_value",
"padding": "string_value", "padding": "string_value",
"lights": "string_value", "lights": "string_value",
"resolution": "string_value" "resolution": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-isolated --input-file args.json > unity-mcp-cli run-tool screenshot-isolated --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-isolated --input-file - <<'EOF' > unity-mcp-cli run-tool screenshot-isolated --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `gameObjectRef` | `any` | Yes | Reference to the target GameObject (by instanceId, path, or name). | | `gameObjectRef` | `any` | Yes | Reference to the target GameObject (by instanceId, path, or name). |
| `includeChildren` | `any` | No | Include child GameObjects in the render. Default: true. | | `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. | | `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. | | `backgroundMode` | `any` | No | Background mode. Default: SolidColor. |
| `backgroundColor` | `string` | No | Hex background color (e.g. '#404040'). Only used when backgroundMode is 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. | | `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. | | `fieldOfView` | `any` | No | Camera vertical field of view in degrees. Default: 60. |
| `nearClipPlane` | `any` | No | Camera near clip plane distance. Default: 0.01. | | `nearClipPlane` | `any` | No | Camera near clip plane distance. Default: 0.01. |
| `farClipPlane` | `any` | No | Camera far clip plane distance. Default: 1000. | | `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. | | `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]}] | | `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. | | `resolution` | `any` | No | Output image resolution in pixels (width = height). Default: 512. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"gameObjectRef": { "gameObjectRef": {
"$ref": "#/$defs/AIGD.GameObjectRef" "$ref": "#/$defs/AIGD.GameObjectRef"
}, },
"includeChildren": { "includeChildren": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
}, },
"isolated": { "isolated": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
}, },
"backgroundMode": { "backgroundMode": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-BackgroundMode" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-BackgroundMode"
}, },
"backgroundColor": { "backgroundColor": {
"type": "string" "type": "string"
}, },
"cameraView": { "cameraView": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-CameraView" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-CameraView"
}, },
"fieldOfView": { "fieldOfView": {
"$ref": "#/$defs/System.Single" "$ref": "#/$defs/System.Single"
}, },
"nearClipPlane": { "nearClipPlane": {
"$ref": "#/$defs/System.Single" "$ref": "#/$defs/System.Single"
}, },
"farClipPlane": { "farClipPlane": {
"$ref": "#/$defs/System.Single" "$ref": "#/$defs/System.Single"
}, },
"padding": { "padding": {
"$ref": "#/$defs/System.Single" "$ref": "#/$defs/System.Single"
}, },
"lights": { "lights": {
"type": "string" "type": "string"
}, },
"resolution": { "resolution": {
"$ref": "#/$defs/System.Int32" "$ref": "#/$defs/System.Int32"
} }
}, },
"$defs": { "$defs": {
"System.Type": { "System.Type": {
"type": "string" "type": "string"
}, },
"AIGD.GameObjectRef": { "AIGD.GameObjectRef": {
"type": "object", "type": "object",
"properties": { "properties": {
"instanceID": { "instanceID": {
"type": "integer", "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)" "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": { "path": {
"type": "string", "type": "string",
"description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2." "description": "Path of a GameObject in the hierarchy Sample 'character/hand/finger/particle'. Priority: 2."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Name of a GameObject in hierarchy. Priority: 3." "description": "Name of a GameObject in hierarchy. Priority: 3."
}, },
"assetType": { "assetType": {
"$ref": "#/$defs/System.Type", "$ref": "#/$defs/System.Type",
"description": "Type of the asset." "description": "Type of the asset."
}, },
"assetPath": { "assetPath": {
"type": "string", "type": "string",
"description": "Path to the asset within the project. Starts with 'Assets/'" "description": "Path to the asset within the project. Starts with 'Assets/'"
}, },
"assetGuid": { "assetGuid": {
"type": "string", "type": "string",
"description": "Unique identifier for the asset." "description": "Unique identifier for the asset."
} }
}, },
"required": [ "required": [
"instanceID" "instanceID"
], ],
"description": "Find GameObject in opened Prefab or in the active Scene." "description": "Find GameObject in opened Prefab or in the active Scene."
}, },
"System.Boolean": { "System.Boolean": {
"type": "boolean" "type": "boolean"
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-BackgroundMode": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-BackgroundMode": {
"type": "string", "type": "string",
"enum": [ "enum": [
"SolidColor", "SolidColor",
"Skybox", "Skybox",
"Transparent" "Transparent"
] ]
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-CameraView": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Screenshot-CameraView": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Front", "Front",
"Back", "Back",
"Left", "Left",
"Right", "Right",
"Top", "Top",
"Bottom", "Bottom",
"Composite" "Composite"
] ]
}, },
"System.Single": { "System.Single": {
"type": "number" "type": "number"
}, },
"System.Int32": { "System.Int32": {
"type": "integer" "type": "integer"
} }
}, },
"required": [ "required": [
"gameObjectRef" "gameObjectRef"
] ]
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+65 -65
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Screenshot / Scene View # 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. 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 ## Inputs
@@ -15,59 +15,59 @@ Captures a screenshot from the Unity Editor Scene View and returns it as an imag
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool screenshot-scene-view --input '{ unity-mcp-cli run-tool screenshot-scene-view --input '{
"width": 0, "width": 0,
"height": 0 "height": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-scene-view --input-file args.json > unity-mcp-cli run-tool screenshot-scene-view --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool screenshot-scene-view --input-file - <<'EOF' > unity-mcp-cli run-tool screenshot-scene-view --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `width` | `integer` | No | Width of the screenshot in pixels. | | `width` | `integer` | No | Width of the screenshot in pixels. |
| `height` | `integer` | No | Height of the screenshot in pixels. | | `height` | `integer` | No | Height of the screenshot in pixels. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"width": { "width": {
"type": "integer" "type": "integer"
}, },
"height": { "height": {
"type": "integer" "type": "integer"
} }
} }
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+71 -71
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Script / Delete # 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. 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 ## Inputs
@@ -16,65 +16,65 @@ Delete the script file(s). Does AssetDatabase.Refresh() and waits for Unity comp
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool script-delete --input '{ unity-mcp-cli run-tool script-delete --input '{
"files": "string_value" "files": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool script-delete --input-file args.json > unity-mcp-cli run-tool script-delete --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool script-delete --input-file - <<'EOF' > unity-mcp-cli run-tool script-delete --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `files` | `any` | Yes | File paths to the files. Sample: "Assets/Scripts/MyScript.cs". | | `files` | `any` | Yes | File paths to the files. Sample: "Assets/Scripts/MyScript.cs". |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"files": { "files": {
"$ref": "#/$defs/System.String-1" "$ref": "#/$defs/System.String-1"
} }
}, },
"$defs": { "$defs": {
"System.String-1": { "System.String-1": {
"type": "array", "type": "array",
"items": { "items": {
"type": "string" "type": "string"
} }
} }
}, },
"required": [ "required": [
"files" "files"
] ]
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+185 -185
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Script / Execute # Script / Execute
## Modes ## Modes
- **Full code mode** (default, `isMethodBody=false`): the `csharpCode` argument must define a complete class with a static method (no top-level statements). - **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}`. - `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.GameObjectRef` — passes a `GameObjectRef` POCO directly; the method body calls `goRef.FindGameObject()` to resolve it.
- `AIGD.ComponentRef` — passes a `ComponentRef` POCO. - `AIGD.ComponentRef` — passes a `ComponentRef` POCO.
- `AIGD.ObjectRef` — passes a base `ObjectRef` POCO. - `AIGD.ObjectRef` — passes a base `ObjectRef` POCO.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool script-execute --input '{ unity-mcp-cli run-tool script-execute --input '{
"csharpCode": "string_value", "csharpCode": "string_value",
"className": "string_value", "className": "string_value",
"methodName": "string_value", "methodName": "string_value",
"parameters": "string_value", "parameters": "string_value",
"isMethodBody": false "isMethodBody": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool script-execute --input-file args.json > unity-mcp-cli run-tool script-execute --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool script-execute --input-file - <<'EOF' > unity-mcp-cli run-tool script-execute --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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. | | `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. | | `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. | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"csharpCode": { "csharpCode": {
"type": "string" "type": "string"
}, },
"className": { "className": {
"type": "string" "type": "string"
}, },
"methodName": { "methodName": {
"type": "string" "type": "string"
}, },
"parameters": { "parameters": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMemberList"
}, },
"isMethodBody": { "isMethodBody": {
"type": "boolean" "type": "boolean"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
} }
}, },
"required": [ "required": [
"csharpCode" "csharpCode"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": { "com.IvanMurzak.ReflectorNet.Model.SerializedMemberList": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.SerializedMember": { "com.IvanMurzak.ReflectorNet.Model.SerializedMember": {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string", "type": "string",
"description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc." "description": "Full type name. Eg: 'System.String', 'System.Int32', 'UnityEngine.Vector3', etc."
}, },
"name": { "name": {
"type": "string", "type": "string",
"description": "Object name." "description": "Object name."
}, },
"value": { "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." "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": { "fields": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested field value." "description": "Nested field value."
}, },
"description": "Fields of the object, serialized as a list of 'SerializedMember'." "description": "Fields of the object, serialized as a list of 'SerializedMember'."
}, },
"props": { "props": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.SerializedMember",
"description": "Nested property value." "description": "Nested property value."
}, },
"description": "Properties of the object, serialized as a list of 'SerializedMember'." "description": "Properties of the object, serialized as a list of 'SerializedMember'."
} }
}, },
"required": [ "required": [
"typeName" "typeName"
], ],
"additionalProperties": false "additionalProperties": false
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+87 -87
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Script / Read # 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. 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 ## Inputs
@@ -17,81 +17,81 @@ Reads the content of a script file and returns it as a string. Use 'script-updat
## Behavior ## 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). 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool script-read --input '{ unity-mcp-cli run-tool script-read --input '{
"filePath": "string_value", "filePath": "string_value",
"lineFrom": 0, "lineFrom": 0,
"lineTo": 0 "lineTo": 0
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool script-read --input-file args.json > unity-mcp-cli run-tool script-read --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool script-read --input-file - <<'EOF' > unity-mcp-cli run-tool script-read --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `filePath` | `string` | Yes | The path to the file. Sample: "Assets/Scripts/MyScript.cs". | | `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). | | `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). | | `lineTo` | `integer` | No | The line number to stop reading at (1-based, -1 for all lines). |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"filePath": { "filePath": {
"type": "string" "type": "string"
}, },
"lineFrom": { "lineFrom": {
"type": "integer" "type": "integer"
}, },
"lineTo": { "lineTo": {
"type": "integer" "type": "integer"
} }
}, },
"required": [ "required": [
"filePath" "filePath"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+69 -69
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Script / Update or Create # 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. 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 ## Inputs
@@ -17,63 +17,63 @@ Updates or creates script file with the provided C# code. Does AssetDatabase.Ref
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool script-update-or-create --input '{ unity-mcp-cli run-tool script-update-or-create --input '{
"filePath": "string_value", "filePath": "string_value",
"content": "string_value" "content": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool script-update-or-create --input-file args.json > unity-mcp-cli run-tool script-update-or-create --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool script-update-or-create --input-file - <<'EOF' > unity-mcp-cli run-tool script-update-or-create --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `filePath` | `string` | Yes | The path to the file. Sample: "Assets/Scripts/MyScript.cs". | | `filePath` | `string` | Yes | The path to the file. Sample: "Assets/Scripts/MyScript.cs". |
| `content` | `string` | Yes | C# code - content of the file. | | `content` | `string` | Yes | C# code - content of the file. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"filePath": { "filePath": {
"type": "string" "type": "string"
}, },
"content": { "content": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"filePath", "filePath",
"content" "content"
] ]
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+263 -263
View File
@@ -1,12 +1,12 @@
--- ---
name: 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." 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Tests / Run # 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. 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 ## Filters
@@ -25,257 +25,257 @@ Execute Unity tests and return detailed results. Supports filtering by test mode
## Domain reloads ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool tests-run --input '{ unity-mcp-cli run-tool tests-run --input '{
"testMode": "string_value", "testMode": "string_value",
"testAssembly": "string_value", "testAssembly": "string_value",
"testNamespace": "string_value", "testNamespace": "string_value",
"testClass": "string_value", "testClass": "string_value",
"testMethod": "string_value", "testMethod": "string_value",
"includePassingTests": false, "includePassingTests": false,
"includeMessages": false, "includeMessages": false,
"includeStacktrace": false, "includeStacktrace": false,
"includeLogs": false, "includeLogs": false,
"logType": "string_value", "logType": "string_value",
"includeLogsStacktrace": false "includeLogsStacktrace": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool tests-run --input-file args.json > unity-mcp-cli run-tool tests-run --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool tests-run --input-file - <<'EOF' > unity-mcp-cli run-tool tests-run --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `testMode` | `string` | No | Test mode to run. Options: 'EditMode', 'PlayMode'. Default: 'EditMode' | | `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' | | `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' | | `testNamespace` | `string` | No | Specific test namespace to run (optional). Example: 'MyTestNamespace' |
| `testClass` | `string` | No | Specific test class name to run (optional). Example: 'MyTestClass' | | `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' | | `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. | | `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. | | `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). | | `includeStacktrace` | `boolean` | No | Include stack traces in the test results (default: false). |
| `includeLogs` | `boolean` | No | Include console logs 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') | | `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. | | `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 ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"testMode": { "testMode": {
"type": "string", "type": "string",
"enum": [ "enum": [
"EditMode", "EditMode",
"PlayMode" "PlayMode"
] ]
}, },
"testAssembly": { "testAssembly": {
"type": "string" "type": "string"
}, },
"testNamespace": { "testNamespace": {
"type": "string" "type": "string"
}, },
"testClass": { "testClass": {
"type": "string" "type": "string"
}, },
"testMethod": { "testMethod": {
"type": "string" "type": "string"
}, },
"includePassingTests": { "includePassingTests": {
"type": "boolean" "type": "boolean"
}, },
"includeMessages": { "includeMessages": {
"type": "boolean" "type": "boolean"
}, },
"includeStacktrace": { "includeStacktrace": {
"type": "boolean" "type": "boolean"
}, },
"includeLogs": { "includeLogs": {
"type": "boolean" "type": "boolean"
}, },
"logType": { "logType": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Error", "Error",
"Assert", "Assert",
"Warning", "Warning",
"Log", "Log",
"Exception" "Exception"
] ]
}, },
"includeLogsStacktrace": { "includeLogsStacktrace": {
"type": "boolean" "type": "boolean"
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData": { "com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Status": { "Status": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Unknown", "Unknown",
"Passed", "Passed",
"Failed" "Failed"
] ]
}, },
"TotalTests": { "TotalTests": {
"type": "integer" "type": "integer"
}, },
"PassedTests": { "PassedTests": {
"type": "integer" "type": "integer"
}, },
"FailedTests": { "FailedTests": {
"type": "integer" "type": "integer"
}, },
"SkippedTests": { "SkippedTests": {
"type": "integer" "type": "integer"
}, },
"Duration": { "Duration": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"Status", "Status",
"TotalTests", "TotalTests",
"PassedTests", "PassedTests",
"FailedTests", "FailedTests",
"SkippedTests", "SkippedTests",
"Duration" "Duration"
] ]
}, },
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData)": { "System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData"
} }
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData": { "com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string" "type": "string"
}, },
"Status": { "Status": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Passed", "Passed",
"Failed", "Failed",
"Skipped" "Skipped"
] ]
}, },
"Duration": { "Duration": {
"type": "string" "type": "string"
}, },
"Message": { "Message": {
"type": "string" "type": "string"
}, },
"StackTrace": { "StackTrace": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"Status", "Status",
"Duration" "Duration"
] ]
}, },
"System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)": { "System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry"
} }
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry": { "com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry": {
"type": "object", "type": "object",
"properties": { "properties": {
"Condition": { "Condition": {
"type": "string" "type": "string"
}, },
"StackTrace": { "StackTrace": {
"type": "string" "type": "string"
}, },
"Type": { "Type": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Error", "Error",
"Assert", "Assert",
"Warning", "Warning",
"Log", "Log",
"Exception" "Exception"
] ]
}, },
"Timestamp": { "Timestamp": {
"type": "string", "type": "string",
"format": "date-time" "format": "date-time"
}, },
"LogLevel": { "LogLevel": {
"type": "integer" "type": "integer"
} }
}, },
"required": [ "required": [
"Type", "Type",
"Timestamp" "Timestamp"
] ]
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse": { "com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestRunResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"Summary": { "Summary": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData", "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestSummaryData",
"description": "Summary of the test run including total, passed, failed, and skipped counts." "description": "Summary of the test run including total, passed, failed, and skipped counts."
}, },
"Results": { "Results": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestResultData)", "$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." "description": "List of individual test results with details about each test."
}, },
"Logs": { "Logs": {
"$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)", "$ref": "#/$defs/System.Collections.Generic.List(com.IvanMurzak.Unity.MCP.Editor.API.TestRunner.TestLogEntry)",
"description": "Log entries captured during test execution." "description": "Log entries captured during test execution."
} }
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+163 -163
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Tool / Set Enabled State # Tool / Set Enabled State
Enable or disable MCP tools by name. Allows controlling which tools are available for the AI agent. Enable or disable MCP tools by name. Allows controlling which tools are available for the AI agent.
## Inputs ## Inputs
@@ -16,157 +16,157 @@ Enable or disable MCP tools by name. Allows controlling which tools are availabl
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool tool-set-enabled-state --input '{ unity-mcp-cli run-tool tool-set-enabled-state --input '{
"tools": "string_value", "tools": "string_value",
"includeLogs": "string_value" "includeLogs": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool tool-set-enabled-state --input-file args.json > unity-mcp-cli run-tool tool-set-enabled-state --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool tool-set-enabled-state --input-file - <<'EOF' > unity-mcp-cli run-tool tool-set-enabled-state --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `tools` | `any` | Yes | Array of tools with their desired enabled state. | | `tools` | `any` | Yes | Array of tools with their desired enabled state. |
| `includeLogs` | `any` | No | Include operation logs in the result. Default: false | | `includeLogs` | `any` | No | Include operation logs in the result. Default: false |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"tools": { "tools": {
"$ref": "#/$defs/AIGD.ToolToggleInput-1" "$ref": "#/$defs/AIGD.ToolToggleInput-1"
}, },
"includeLogs": { "includeLogs": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
} }
}, },
"$defs": { "$defs": {
"AIGD.ToolToggleInput": { "AIGD.ToolToggleInput": {
"type": "object", "type": "object",
"properties": { "properties": {
"Name": { "Name": {
"type": "string", "type": "string",
"description": "Name of the MCP tool to enable or disable." "description": "Name of the MCP tool to enable or disable."
}, },
"Enabled": { "Enabled": {
"type": "boolean", "type": "boolean",
"description": "Whether the tool should be enabled (true) or disabled (false)." "description": "Whether the tool should be enabled (true) or disabled (false)."
} }
}, },
"required": [ "required": [
"Enabled" "Enabled"
] ]
}, },
"AIGD.ToolToggleInput-1": { "AIGD.ToolToggleInput-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ToolToggleInput" "$ref": "#/$defs/AIGD.ToolToggleInput"
} }
}, },
"System.Boolean": { "System.Boolean": {
"type": "boolean" "type": "boolean"
} }
}, },
"required": [ "required": [
"tools" "tools"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.ToolToggleResult" "$ref": "#/$defs/AIGD.ToolToggleResult"
} }
}, },
"$defs": { "$defs": {
"com.IvanMurzak.ReflectorNet.Model.Logs": { "com.IvanMurzak.ReflectorNet.Model.Logs": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry" "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.LogEntry"
} }
}, },
"com.IvanMurzak.ReflectorNet.Model.LogEntry": { "com.IvanMurzak.ReflectorNet.Model.LogEntry": {
"type": "object", "type": "object",
"properties": { "properties": {
"Depth": { "Depth": {
"type": "integer" "type": "integer"
}, },
"Message": { "Message": {
"type": "string" "type": "string"
}, },
"Type": { "Type": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Trace", "Trace",
"Debug", "Debug",
"Info", "Info",
"Success", "Success",
"Warning", "Warning",
"Error", "Error",
"Critical" "Critical"
] ]
} }
}, },
"required": [ "required": [
"Depth", "Depth",
"Type" "Type"
] ]
}, },
"System.Collections.Generic.Dictionary(System.String,System.Boolean)": { "System.Collections.Generic.Dictionary(System.String,System.Boolean)": {
"type": "object", "type": "object",
"additionalProperties": { "additionalProperties": {
"type": "boolean" "type": "boolean"
} }
}, },
"AIGD.ToolToggleResult": { "AIGD.ToolToggleResult": {
"type": "object", "type": "object",
"properties": { "properties": {
"Logs": { "Logs": {
"$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs", "$ref": "#/$defs/com.IvanMurzak.ReflectorNet.Model.Logs",
"description": "Optional operation logs. Only included when 'includeLogs' is true." "description": "Optional operation logs. Only included when 'includeLogs' is true."
}, },
"Success": { "Success": {
"$ref": "#/$defs/System.Collections.Generic.Dictionary(System.String,System.Boolean)", "$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." "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": [ "required": [
"result" "result"
] ]
} }
``` ```
+107 -107
View File
@@ -1,12 +1,12 @@
--- ---
name: 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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Type / Get Json Schema # 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. 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 ## 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. - `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. - `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. - `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. - `writeIndented` (default `false`) — pretty-print the output JSON.
## How to Call ## How to Call
```bash ```bash
unity-mcp-cli run-tool type-get-json-schema --input '{ unity-mcp-cli run-tool type-get-json-schema --input '{
"typeName": "string_value", "typeName": "string_value",
"descriptionMode": "string_value", "descriptionMode": "string_value",
"propertyDescriptionMode": "string_value", "propertyDescriptionMode": "string_value",
"includeNestedTypes": false, "includeNestedTypes": false,
"writeIndented": false "writeIndented": false
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool type-get-json-schema --input-file args.json > unity-mcp-cli run-tool type-get-json-schema --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool type-get-json-schema --input-file - <<'EOF' > unity-mcp-cli run-tool type-get-json-schema --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | 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. | | `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. | | `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. | | `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. | | `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. | | `writeIndented` | `boolean` | No | Whether to format the output JSON with indentation for readability. Default: false. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"typeName": { "typeName": {
"type": "string" "type": "string"
}, },
"descriptionMode": { "descriptionMode": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Include", "Include",
"IncludeRecursively", "IncludeRecursively",
"Ignore" "Ignore"
] ]
}, },
"propertyDescriptionMode": { "propertyDescriptionMode": {
"type": "string", "type": "string",
"enum": [ "enum": [
"Include", "Include",
"IncludeRecursively", "IncludeRecursively",
"Ignore" "Ignore"
] ]
}, },
"includeNestedTypes": { "includeNestedTypes": {
"type": "boolean" "type": "boolean"
}, },
"writeIndented": { "writeIndented": {
"type": "boolean" "type": "boolean"
} }
}, },
"required": [ "required": [
"typeName" "typeName"
] ]
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+6 -6
View File
@@ -1,12 +1,12 @@
--- ---
name: unity-initial-setup name: unity-initial-setup
description: |- description: |-
Provides an initial setup for AI Skills, `unity-mcp-cli` command line tool installation 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 everything else that is helpful to set up at the start of the project. Essential packages,
and basic configurations. and basic configurations.
metadata: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# AI Game Developer — Initial Setup # AI Game Developer — Initial Setup
+69 -69
View File
@@ -1,12 +1,12 @@
--- ---
name: unity-skill-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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Skill (Tool) / Create # Skill (Tool) / Create
## Full sample ## Full sample
```csharp ```csharp
@@ -145,64 +145,64 @@ if (string.IsNullOrEmpty(name))
``` ```
### Always use MainThread for Unity API calls ### 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-system-tool unity-skill-create --input '{ unity-mcp-cli run-system-tool unity-skill-create --input '{
"path": "string_value", "path": "string_value",
"code": "string_value" "code": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-system-tool unity-skill-create --input-file args.json > unity-mcp-cli run-system-tool unity-skill-create --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-system-tool unity-skill-create --input-file - <<'EOF' > unity-mcp-cli run-system-tool unity-skill-create --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `path` | `string` | Yes | Path for the C# (.cs) file to be created. Sample: "Assets/Skills/MySkill.cs". | `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. | 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. | | `code` | `string` | Yes | C# code for the skill tool. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"path": { "path": {
"type": "string" "type": "string"
}, },
"code": { "code": {
"type": "string" "type": "string"
} }
}, },
"required": [ "required": [
"path", "path",
"code" "code"
] ]
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+60 -60
View File
@@ -1,12 +1,12 @@
--- ---
name: unity-skill-generate 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]`." 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Skill (Tool) / Generate All # Skill (Tool) / Generate All
Generate all skills from the existed Tools in the Unity Project. Generate all skills from the existed Tools in the Unity Project.
## Inputs ## Inputs
@@ -15,54 +15,54 @@ Generate all skills from the existed Tools in the Unity Project.
## Behavior ## 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. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-system-tool unity-skill-generate --input '{ unity-mcp-cli run-system-tool unity-skill-generate --input '{
"path": "string_value" "path": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-system-tool unity-skill-generate --input-file args.json > unity-mcp-cli run-system-tool unity-skill-generate --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-system-tool unity-skill-generate --input-file - <<'EOF' > unity-mcp-cli run-system-tool unity-skill-generate --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `path` | `string` | No | Path to the skills folder. If null or empty, the default path will be used. | | `path` | `string` | No | Path to the skills folder. If null or empty, the default path will be used. |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"path": { "path": {
"type": "string" "type": "string"
} }
} }
} }
``` ```
## Output ## Output
This tool does not return structured output. This tool does not return structured output.
+146 -146
View File
@@ -1,12 +1,12 @@
--- ---
name: unity-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. 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: metadata:
generated-by: mcp-plugin-dotnet generated-by: mcp-plugin-dotnet
--- ---
# Tool / List # Tool / List
List all Unity-MCP tools registered in the connected Unity Editor instance. Optionally filter by regex across tool names, descriptions, and arguments. List all Unity-MCP tools registered in the connected Unity Editor instance. Optionally filter by regex across tool names, descriptions, and arguments.
## Inputs ## Inputs
@@ -17,140 +17,140 @@ List all Unity-MCP tools registered in the connected Unity Editor instance. Opti
## Behavior ## Behavior
Iterates `UnityMcpPluginEditor.Instance.Tools.GetAllTools()`, evaluates the filter (if any), and projects each surviving tool into a `ToolInfoData` honoring the verbosity toggles. 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 ## How to Call
```bash ```bash
unity-mcp-cli run-tool unity-tool-list --input '{ unity-mcp-cli run-tool unity-tool-list --input '{
"regexSearch": "string_value", "regexSearch": "string_value",
"includeDescription": "string_value", "includeDescription": "string_value",
"includeInputs": "string_value" "includeInputs": "string_value"
}' }'
``` ```
> For complex input (multi-line strings, code), save the JSON to a file and use: > For complex input (multi-line strings, code), save the JSON to a file and use:
> ```bash > ```bash
> unity-mcp-cli run-tool unity-tool-list --input-file args.json > unity-mcp-cli run-tool unity-tool-list --input-file args.json
> ``` > ```
> >
> Or pipe via stdin (recommended): > Or pipe via stdin (recommended):
> ```bash > ```bash
> unity-mcp-cli run-tool unity-tool-list --input-file - <<'EOF' > unity-mcp-cli run-tool unity-tool-list --input-file - <<'EOF'
> {"param": "value"} > {"param": "value"}
> EOF > EOF
> ``` > ```
### Troubleshooting ### 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. 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. Read the /unity-initial-setup skill for detailed installation instructions.
## Input ## Input
| Name | Type | Required | Description | | Name | Type | Required | Description |
|------|------|----------|-------------| |------|------|----------|-------------|
| `regexSearch` | `string` | No | Regex pattern to filter tools. Matches against tool name, description, and argument names and descriptions. | | `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 | | `includeDescription` | `any` | No | Include tool descriptions in the result. Default: false |
| `includeInputs` | `any` | No | Include input arguments in the result. Default: None | | `includeInputs` | `any` | No | Include input arguments in the result. Default: None |
### Input JSON Schema ### Input JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"regexSearch": { "regexSearch": {
"type": "string" "type": "string"
}, },
"includeDescription": { "includeDescription": {
"$ref": "#/$defs/System.Boolean" "$ref": "#/$defs/System.Boolean"
}, },
"includeInputs": { "includeInputs": {
"$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest" "$ref": "#/$defs/com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest"
} }
}, },
"$defs": { "$defs": {
"System.Boolean": { "System.Boolean": {
"type": "boolean" "type": "boolean"
}, },
"com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest": { "com.IvanMurzak.Unity.MCP.Editor.API.Tool_Tool-InputRequest": {
"type": "string", "type": "string",
"enum": [ "enum": [
"None", "None",
"Inputs", "Inputs",
"InputsWithDescription" "InputsWithDescription"
], ],
"description": "Specifies what to include for tool input arguments." "description": "Specifies what to include for tool input arguments."
} }
} }
} }
``` ```
## Output ## Output
### Output JSON Schema ### Output JSON Schema
```json ```json
{ {
"type": "object", "type": "object",
"properties": { "properties": {
"result": { "result": {
"$ref": "#/$defs/AIGD.ToolInfoData-1" "$ref": "#/$defs/AIGD.ToolInfoData-1"
} }
}, },
"$defs": { "$defs": {
"AIGD.ToolInfoData": { "AIGD.ToolInfoData": {
"type": "object", "type": "object",
"properties": { "properties": {
"name": { "name": {
"type": "string", "type": "string",
"description": "Tool name." "description": "Tool name."
}, },
"description": { "description": {
"type": "string", "type": "string",
"description": "Tool description." "description": "Tool description."
}, },
"inputs": { "inputs": {
"$ref": "#/$defs/AIGD.ToolInputData-1", "$ref": "#/$defs/AIGD.ToolInputData-1",
"description": "Tool input arguments." "description": "Tool input arguments."
} }
}, },
"description": "MCP tool information." "description": "MCP tool information."
}, },
"AIGD.ToolInputData-1": { "AIGD.ToolInputData-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ToolInputData", "$ref": "#/$defs/AIGD.ToolInputData",
"description": "MCP tool input argument." "description": "MCP tool input argument."
} }
}, },
"AIGD.ToolInputData": { "AIGD.ToolInputData": {
"type": "object", "type": "object",
"properties": { "properties": {
"name": { "name": {
"type": "string", "type": "string",
"description": "Argument name." "description": "Argument name."
}, },
"description": { "description": {
"type": "string", "type": "string",
"description": "Argument description." "description": "Argument description."
} }
}, },
"description": "MCP tool input argument." "description": "MCP tool input argument."
}, },
"AIGD.ToolInfoData-1": { "AIGD.ToolInfoData-1": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/$defs/AIGD.ToolInfoData", "$ref": "#/$defs/AIGD.ToolInfoData",
"description": "MCP tool information." "description": "MCP tool information."
} }
} }
}, },
"required": [ "required": [
"result" "result"
] ]
} }
``` ```
+99 -99
View File
@@ -1,99 +1,99 @@
# This .gitignore file should be placed at the root of your Unity project directory # 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 # Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore
# #
.utmp/ .utmp/
/[Ll]ibrary/ /[Ll]ibrary/
/[Tt]emp/ /[Tt]emp/
/[Oo]bj/ /[Oo]bj/
/[Bb]uild/ /[Bb]uild/
/[Bb]uilds/ /[Bb]uilds/
/[Ll]ogs/ /[Ll]ogs/
/[Uu]ser[Ss]ettings/ /[Uu]ser[Ss]ettings/
*.log *.log
# By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control. # By default unity supports Blender asset imports, *.blend1 blender files do not need to be commited to version control.
*.blend1 *.blend1
*.blend1.meta *.blend1.meta
# MemoryCaptures can get excessive in size. # MemoryCaptures can get excessive in size.
# They also could contain extremely sensitive data # They also could contain extremely sensitive data
/[Mm]emoryCaptures/ /[Mm]emoryCaptures/
# Recordings can get excessive in size # Recordings can get excessive in size
/[Rr]ecordings/ /[Rr]ecordings/
# Uncomment this line if you wish to ignore the asset store tools plugin # Uncomment this line if you wish to ignore the asset store tools plugin
# /[Aa]ssets/AssetStoreTools* # /[Aa]ssets/AssetStoreTools*
# Autogenerated Jetbrains Rider plugin # Autogenerated Jetbrains Rider plugin
/[Aa]ssets/Plugins/Editor/JetBrains* /[Aa]ssets/Plugins/Editor/JetBrains*
# Jetbrains Rider personal-layer settings # Jetbrains Rider personal-layer settings
*.DotSettings.user *.DotSettings.user
# Visual Studio cache directory # Visual Studio cache directory
.vs/ .vs/
# Gradle cache directory # Gradle cache directory
.gradle/ .gradle/
# Autogenerated VS/MD/Consulo solution and project files # Autogenerated VS/MD/Consulo solution and project files
ExportedObj/ ExportedObj/
.consulo/ .consulo/
*.csproj *.csproj
*.unityproj *.unityproj
*.sln *.sln
*.suo *.suo
*.tmp *.tmp
*.user *.user
*.userprefs *.userprefs
*.pidb *.pidb
*.booproj *.booproj
*.svd *.svd
*.pdb *.pdb
*.mdb *.mdb
*.opendb *.opendb
*.VC.db *.VC.db
# Unity3D generated meta files # Unity3D generated meta files
*.pidb.meta *.pidb.meta
*.pdb.meta *.pdb.meta
*.mdb.meta *.mdb.meta
# Unity3D generated file on crash reports # Unity3D generated file on crash reports
sysinfo.txt sysinfo.txt
# Mono auto generated files # Mono auto generated files
mono_crash.* mono_crash.*
# Builds # Builds
*.apk *.apk
*.aab *.aab
*.unitypackage *.unitypackage
*.unitypackage.meta *.unitypackage.meta
*.app *.app
# Crashlytics generated file # Crashlytics generated file
crashlytics-build.properties crashlytics-build.properties
# TestRunner generated files # TestRunner generated files
InitTestScene*.unity* InitTestScene*.unity*
# Addressables default ignores, before user customizations # Addressables default ignores, before user customizations
/ServerData /ServerData
/[Aa]ssets/StreamingAssets/aa* /[Aa]ssets/StreamingAssets/aa*
/[Aa]ssets/AddressableAssetsData/link.xml* /[Aa]ssets/AddressableAssetsData/link.xml*
/[Aa]ssets/Addressables_Temp* /[Aa]ssets/Addressables_Temp*
# By default, Addressables content builds will generate addressables_content_state.bin # By default, Addressables content builds will generate addressables_content_state.bin
# files in platform-specific subfolders, for example: # files in platform-specific subfolders, for example:
# /Assets/AddressableAssetsData/OSX/addressables_content_state.bin # /Assets/AddressableAssetsData/OSX/addressables_content_state.bin
/[Aa]ssets/AddressableAssetsData/*/*.bin* /[Aa]ssets/AddressableAssetsData/*/*.bin*
# Visual Scripting auto-generated files # Visual Scripting auto-generated files
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Flow/UnitOptions.db /[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.Flow/UnitOptions.db.meta
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers /[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers
/[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta /[Aa]ssets/Unity.VisualScripting.Generated/VisualScripting.Core/Property Providers.meta
# Auto-generated scenes by play mode tests # Auto-generated scenes by play mode tests
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity* /[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
+5 -5
View File
@@ -1,5 +1,5 @@
{ {
"recommendations": [ "recommendations": [
"visualstudiotoolsforunity.vstuc" "visualstudiotoolsforunity.vstuc"
] ]
} }
+9 -9
View File
@@ -1,10 +1,10 @@
{ {
"version": "0.2.0", "version": "0.2.0",
"configurations": [ "configurations": [
{ {
"name": "Attach to Unity", "name": "Attach to Unity",
"type": "vstuc", "type": "vstuc",
"request": "attach" "request": "attach"
} }
] ]
} }
+69 -69
View File
@@ -1,70 +1,70 @@
{ {
"files.exclude": { "files.exclude": {
"**/.DS_Store": true, "**/.DS_Store": true,
"**/.git": true, "**/.git": true,
"**/.vs": true, "**/.vs": true,
"**/.gitmodules": true, "**/.gitmodules": true,
"**/.vsconfig": true, "**/.vsconfig": true,
"**/*.booproj": true, "**/*.booproj": true,
"**/*.pidb": true, "**/*.pidb": true,
"**/*.suo": true, "**/*.suo": true,
"**/*.user": true, "**/*.user": true,
"**/*.userprefs": true, "**/*.userprefs": true,
"**/*.unityproj": true, "**/*.unityproj": true,
"**/*.dll": true, "**/*.dll": true,
"**/*.exe": true, "**/*.exe": true,
"**/*.pdf": true, "**/*.pdf": true,
"**/*.mid": true, "**/*.mid": true,
"**/*.midi": true, "**/*.midi": true,
"**/*.wav": true, "**/*.wav": true,
"**/*.gif": true, "**/*.gif": true,
"**/*.ico": true, "**/*.ico": true,
"**/*.jpg": true, "**/*.jpg": true,
"**/*.jpeg": true, "**/*.jpeg": true,
"**/*.png": true, "**/*.png": true,
"**/*.psd": true, "**/*.psd": true,
"**/*.tga": true, "**/*.tga": true,
"**/*.tif": true, "**/*.tif": true,
"**/*.tiff": true, "**/*.tiff": true,
"**/*.3ds": true, "**/*.3ds": true,
"**/*.3DS": true, "**/*.3DS": true,
"**/*.fbx": true, "**/*.fbx": true,
"**/*.FBX": true, "**/*.FBX": true,
"**/*.lxo": true, "**/*.lxo": true,
"**/*.LXO": true, "**/*.LXO": true,
"**/*.ma": true, "**/*.ma": true,
"**/*.MA": true, "**/*.MA": true,
"**/*.obj": true, "**/*.obj": true,
"**/*.OBJ": true, "**/*.OBJ": true,
"**/*.asset": true, "**/*.asset": true,
"**/*.cubemap": true, "**/*.cubemap": true,
"**/*.flare": true, "**/*.flare": true,
"**/*.mat": true, "**/*.mat": true,
"**/*.meta": true, "**/*.meta": true,
"**/*.prefab": true, "**/*.prefab": true,
"**/*.unity": true, "**/*.unity": true,
"build/": true, "build/": true,
"Build/": true, "Build/": true,
"Library/": true, "Library/": true,
"library/": true, "library/": true,
"obj/": true, "obj/": true,
"Obj/": true, "Obj/": true,
"Logs/": true, "Logs/": true,
"logs/": true, "logs/": true,
"ProjectSettings/": true, "ProjectSettings/": true,
"UserSettings/": true, "UserSettings/": true,
"temp/": true, "temp/": true,
"Temp/": true "Temp/": true
}, },
"files.associations": { "files.associations": {
"*.asset": "yaml", "*.asset": "yaml",
"*.meta": "yaml", "*.meta": "yaml",
"*.prefab": "yaml", "*.prefab": "yaml",
"*.unity": "yaml" "*.unity": "yaml"
}, },
"explorer.fileNesting.enabled": true, "explorer.fileNesting.enabled": true,
"explorer.fileNesting.patterns": { "explorer.fileNesting.patterns": {
"*.sln": "*.csproj" "*.sln": "*.csproj"
}, },
"dotnet.defaultSolution": "soccar2d.sln" "dotnet.defaultSolution": "soccar2d.sln"
} }
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: cc121dbf16e5f694cb193e62de4fd54c guid: cc121dbf16e5f694cb193e62de4fd54c
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: d775453210d0c3d4aae7bee013d92a54 guid: d775453210d0c3d4aae7bee013d92a54
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+23 -23
View File
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 40c3654169239df42aac74005ba8757f guid: 40c3654169239df42aac74005ba8757f
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 0 sampleRateSetting: 0
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 0 forceToMono: 0
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+23 -23
View File
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: d0dfd1dd9f429a64ab99b9f176bb16da guid: d0dfd1dd9f429a64ab99b9f176bb16da
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 2 sampleRateSetting: 2
sampleRateOverride: 22050 sampleRateOverride: 22050
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7c7e2b4c4b68dd045b5e6d1a41344f4d guid: 7c7e2b4c4b68dd045b5e6d1a41344f4d
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 4807619965968f544b8197be4db31bbd guid: 4807619965968f544b8197be4db31bbd
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: c572f8d5ffe74384c8ec1c134589aa73 guid: c572f8d5ffe74384c8ec1c134589aa73
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 77972becab89af64f8a6870a1f0e57e4 guid: 77972becab89af64f8a6870a1f0e57e4
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7e204709980caf843864af6afc300c83 guid: 7e204709980caf843864af6afc300c83
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: a1040460c5bc7ab41bf77fbd4216ee2c guid: a1040460c5bc7ab41bf77fbd4216ee2c
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 310bea9e65ddfcb4c8edb3a346c56c9d guid: 310bea9e65ddfcb4c8edb3a346c56c9d
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: eea8b6e9a51070e4d8f6af29c22a93e6 guid: eea8b6e9a51070e4d8f6af29c22a93e6
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: e0a741dde6e76ac4dbcde3bdc8f3ae6e guid: e0a741dde6e76ac4dbcde3bdc8f3ae6e
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: f85928b3e1030554782cce85a1fecac2 guid: f85928b3e1030554782cce85a1fecac2
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 79f985d218394484fa6cfff0c2af9195 guid: 79f985d218394484fa6cfff0c2af9195
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: ae7267cfa8b4a174a995ca4cae5995e5 guid: ae7267cfa8b4a174a995ca4cae5995e5
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
@@ -1,23 +1,23 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 23cc7236a672ae842bf086e385b49495 guid: 23cc7236a672ae842bf086e385b49495
AudioImporter: AudioImporter:
externalObjects: {} externalObjects: {}
serializedVersion: 8 serializedVersion: 8
defaultSettings: defaultSettings:
serializedVersion: 2 serializedVersion: 2
loadType: 0 loadType: 0
sampleRateSetting: 1 sampleRateSetting: 1
sampleRateOverride: 44100 sampleRateOverride: 44100
compressionFormat: 1 compressionFormat: 1
quality: 1 quality: 1
conversionMode: 0 conversionMode: 0
preloadAudioData: 0 preloadAudioData: 0
platformSettingOverrides: {} platformSettingOverrides: {}
forceToMono: 1 forceToMono: 1
normalize: 0 normalize: 0
loadInBackground: 0 loadInBackground: 0
ambisonic: 0 ambisonic: 0
3D: 1 3D: 1
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:
+8 -8
View File
@@ -1,8 +1,8 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7c8c3b2b2505ffb46ba8d5c65ee66e10 guid: 7c8c3b2b2505ffb46ba8d5c65ee66e10
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}
userData: userData:
assetBundleName: assetBundleName:
assetBundleVariant: assetBundleVariant:

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