dcc-mcp-unity 0.2.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dcc_mcp_unity-0.2.0/.gitignore +9 -0
- dcc_mcp_unity-0.2.0/.release-please-manifest.json +1 -0
- dcc_mcp_unity-0.2.0/CHANGELOG.md +10 -0
- dcc_mcp_unity-0.2.0/LICENSE +21 -0
- dcc_mcp_unity-0.2.0/PKG-INFO +105 -0
- dcc_mcp_unity-0.2.0/README.md +76 -0
- dcc_mcp_unity-0.2.0/docs/architecture-benchmark.md +88 -0
- dcc_mcp_unity-0.2.0/docs/assets/SOURCES.md +13 -0
- dcc_mcp_unity-0.2.0/docs/assets/dcc-mcp-unity-imagegen-source.png +0 -0
- dcc_mcp_unity-0.2.0/docs/assets/dcc-mcp-unity.png +0 -0
- dcc_mcp_unity-0.2.0/docs/assets/dcc-mcp-unity.svg +4 -0
- dcc_mcp_unity-0.2.0/install.md +52 -0
- dcc_mcp_unity-0.2.0/pyproject.toml +68 -0
- dcc_mcp_unity-0.2.0/release-please-config.json +42 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/__init__.py +6 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/__version__.py +3 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/bridge.py +64 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/dispatcher.py +21 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/install.py +67 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/server.py +101 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-diagnostics/SKILL.md +24 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-diagnostics/metadata/depends.md +3 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-diagnostics/scripts/read_console.py +16 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-diagnostics/tools.yaml +21 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-project/SKILL.md +27 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-project/metadata/depends.md +3 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-project/scripts/inspect_project.py +14 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-project/scripts/refresh_assets.py +14 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-project/tools.yaml +31 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-scene/SKILL.md +27 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-scene/metadata/depends.md +3 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-scene/scripts/create_game_object.py +18 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-scene/scripts/inspect_scene.py +15 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-scene/scripts/save_scene.py +14 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-scene/scripts/set_transform.py +31 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/skills/unity-scene/tools.yaml +95 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/unity_package/Editor/DccMcp.Unity.Editor.asmdef +9 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/unity_package/Editor/DccMcpBridge.cs +358 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/unity_package/Editor/DccMcpCommands.cs +406 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/unity_package/Editor/DccMcpConsole.cs +200 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/unity_package/LICENSE.md +21 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/unity_package/README.md +7 -0
- dcc_mcp_unity-0.2.0/src/dcc_mcp_unity/unity_package/package.json +18 -0
- dcc_mcp_unity-0.2.0/tests/test_bridge.py +23 -0
- dcc_mcp_unity-0.2.0/tests/test_dispatcher.py +14 -0
- dcc_mcp_unity-0.2.0/tests/test_install.py +47 -0
- dcc_mcp_unity-0.2.0/tests/test_package.py +127 -0
- dcc_mcp_unity-0.2.0/tools/lint_skills.py +8 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{".":"0.2.0"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
## [0.2.0](https://github.com/dcc-mcp/dcc-mcp-unity/compare/v0.1.0...v0.2.0) (2026-07-21)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* add Unity Editor MCP adapter ([5595603](https://github.com/dcc-mcp/dcc-mcp-unity/commit/55956032b33643df8deaf229f131b9d2378891aa))
|
|
9
|
+
|
|
10
|
+
## Changelog
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 loonghao
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dcc-mcp-unity
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Unity Editor adapter and typed game-authoring skills for DCC-MCP
|
|
5
|
+
Project-URL: Homepage, https://github.com/dcc-mcp/dcc-mcp-unity
|
|
6
|
+
Project-URL: Repository, https://github.com/dcc-mcp/dcc-mcp-unity
|
|
7
|
+
Project-URL: Issues, https://github.com/dcc-mcp/dcc-mcp-unity/issues
|
|
8
|
+
Author-email: loonghao <hal.long@outlook.com>
|
|
9
|
+
License: MIT
|
|
10
|
+
License-File: LICENSE
|
|
11
|
+
Keywords: ai,game-development,mcp,model-context-protocol,unity
|
|
12
|
+
Classifier: Development Status :: 3 - Alpha
|
|
13
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
19
|
+
Classifier: Topic :: Games/Entertainment
|
|
20
|
+
Requires-Python: >=3.9
|
|
21
|
+
Requires-Dist: dcc-mcp-core<1.0.0,>=0.19.45
|
|
22
|
+
Requires-Dist: websockets>=12
|
|
23
|
+
Provides-Extra: dev
|
|
24
|
+
Requires-Dist: build>=1.2; extra == 'dev'
|
|
25
|
+
Requires-Dist: pytest>=8; extra == 'dev'
|
|
26
|
+
Requires-Dist: ruff>=0.8; extra == 'dev'
|
|
27
|
+
Requires-Dist: twine>=6; extra == 'dev'
|
|
28
|
+
Description-Content-Type: text/markdown
|
|
29
|
+
|
|
30
|
+
# dcc-mcp-unity
|
|
31
|
+
|
|
32
|
+

|
|
33
|
+
|
|
34
|
+
Unity Editor adapter for the DCC Model Context Protocol ecosystem. It ships a UPM Editor package,
|
|
35
|
+
a loopback WebSocket bridge, and typed project and scene tools.
|
|
36
|
+
|
|
37
|
+
The first-release boundary and comparison with `unity-cli` and two established Unity MCP projects
|
|
38
|
+
are documented in the [architecture benchmark](https://github.com/dcc-mcp/dcc-mcp-unity/blob/main/docs/architecture-benchmark.md).
|
|
39
|
+
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
pip install dcc-mcp-unity
|
|
44
|
+
dcc-mcp-unity-install /path/to/UnityProject
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Open or restart the Unity project so Package Manager compiles **DCC-MCP Unity**, then run:
|
|
48
|
+
|
|
49
|
+
```bash
|
|
50
|
+
dcc-mcp-unity
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
See the [installation guide](https://github.com/dcc-mcp/dcc-mcp-unity/blob/main/install.md) for
|
|
54
|
+
upgrade, environment, and connection verification details.
|
|
55
|
+
|
|
56
|
+
The MCP endpoint uses a free loopback port and is registered for gateway discovery. Set
|
|
57
|
+
`DCC_MCP_UNITY_PORT=8765` before starting the server only when a fixed direct endpoint is needed.
|
|
58
|
+
The Editor package reconnects to the loopback bridge at `ws://127.0.0.1:3852`; set
|
|
59
|
+
`DCC_MCP_UNITY_BRIDGE_PORT` before the MCP server and `DCC_MCP_UNITY_BRIDGE_URL` before Unity starts
|
|
60
|
+
to override it. `DCC_MCP_UNITY_BRIDGE_TIMEOUT` may increase the 60-second RPC timeout but cannot
|
|
61
|
+
lower it; queued Editor work expires first so timed-out mutations are not executed later.
|
|
62
|
+
|
|
63
|
+
The default bridge targets one Unity Editor. For concurrent Editors, run one adapter per Editor and
|
|
64
|
+
assign each pair a unique bridge port and URL before starting either process.
|
|
65
|
+
|
|
66
|
+
## Agent workflow
|
|
67
|
+
|
|
68
|
+
1. Load `unity-project` and call `inspect_project` before assuming project or editor state. Stop if
|
|
69
|
+
the returned project is not the intended target or the Editor is compiling, updating, entering
|
|
70
|
+
Play Mode, or playing.
|
|
71
|
+
2. Load `unity-scene` and call `inspect_scene` immediately before using an instance ID.
|
|
72
|
+
3. Create GameObjects or change transforms through typed operations backed by Unity Undo.
|
|
73
|
+
4. Verify the hierarchy, then explicitly call `save_scene`.
|
|
74
|
+
5. Load `unity-diagnostics` and call `read_console` after failures or as a final verification step.
|
|
75
|
+
|
|
76
|
+
Do not automatically retry a timed-out scene mutation. Inspect the project and scene first because
|
|
77
|
+
the Editor may have completed the original request near the timeout boundary.
|
|
78
|
+
|
|
79
|
+
No raw C# evaluation, shell command, or arbitrary filesystem write is exposed. The Editor bridge
|
|
80
|
+
accepts only the methods implemented in `DccMcpCommands` and executes them on Unity's editor update
|
|
81
|
+
loop. Mutations fail closed during compilation, asset updates, and Play Mode. Requests, queued work,
|
|
82
|
+
scene snapshots, Console reads, and serialized responses have explicit size or lifetime budgets.
|
|
83
|
+
|
|
84
|
+
## Validation boundary
|
|
85
|
+
|
|
86
|
+
Public CI validates Python 3.9 and 3.12 on Windows, macOS, and Linux; validates the bundled skill
|
|
87
|
+
contracts; performs static checks for the UPM package and main-thread/Undo contracts; and builds the
|
|
88
|
+
PyPI artifacts. Automated live Unity Editor CI is intentionally not claimed because it requires a
|
|
89
|
+
provisioned Unity CI license or activation. A real Editor smoke should be run before promoting the
|
|
90
|
+
adapter from alpha.
|
|
91
|
+
|
|
92
|
+
## Development
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
uv sync --extra dev
|
|
96
|
+
uv run python -m pytest
|
|
97
|
+
uv run ruff check src tests tools
|
|
98
|
+
uv run ruff format --check src tests tools
|
|
99
|
+
uv run python tools/lint_skills.py
|
|
100
|
+
uv run python -m build
|
|
101
|
+
uv run python -m twine check dist/*
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Unity and the Unity cube logo are trademarks of Unity Technologies. This independent adapter is
|
|
105
|
+
not affiliated with or endorsed by Unity Technologies.
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
# dcc-mcp-unity
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
Unity Editor adapter for the DCC Model Context Protocol ecosystem. It ships a UPM Editor package,
|
|
6
|
+
a loopback WebSocket bridge, and typed project and scene tools.
|
|
7
|
+
|
|
8
|
+
The first-release boundary and comparison with `unity-cli` and two established Unity MCP projects
|
|
9
|
+
are documented in the [architecture benchmark](https://github.com/dcc-mcp/dcc-mcp-unity/blob/main/docs/architecture-benchmark.md).
|
|
10
|
+
|
|
11
|
+
## Install
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
pip install dcc-mcp-unity
|
|
15
|
+
dcc-mcp-unity-install /path/to/UnityProject
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Open or restart the Unity project so Package Manager compiles **DCC-MCP Unity**, then run:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
dcc-mcp-unity
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
See the [installation guide](https://github.com/dcc-mcp/dcc-mcp-unity/blob/main/install.md) for
|
|
25
|
+
upgrade, environment, and connection verification details.
|
|
26
|
+
|
|
27
|
+
The MCP endpoint uses a free loopback port and is registered for gateway discovery. Set
|
|
28
|
+
`DCC_MCP_UNITY_PORT=8765` before starting the server only when a fixed direct endpoint is needed.
|
|
29
|
+
The Editor package reconnects to the loopback bridge at `ws://127.0.0.1:3852`; set
|
|
30
|
+
`DCC_MCP_UNITY_BRIDGE_PORT` before the MCP server and `DCC_MCP_UNITY_BRIDGE_URL` before Unity starts
|
|
31
|
+
to override it. `DCC_MCP_UNITY_BRIDGE_TIMEOUT` may increase the 60-second RPC timeout but cannot
|
|
32
|
+
lower it; queued Editor work expires first so timed-out mutations are not executed later.
|
|
33
|
+
|
|
34
|
+
The default bridge targets one Unity Editor. For concurrent Editors, run one adapter per Editor and
|
|
35
|
+
assign each pair a unique bridge port and URL before starting either process.
|
|
36
|
+
|
|
37
|
+
## Agent workflow
|
|
38
|
+
|
|
39
|
+
1. Load `unity-project` and call `inspect_project` before assuming project or editor state. Stop if
|
|
40
|
+
the returned project is not the intended target or the Editor is compiling, updating, entering
|
|
41
|
+
Play Mode, or playing.
|
|
42
|
+
2. Load `unity-scene` and call `inspect_scene` immediately before using an instance ID.
|
|
43
|
+
3. Create GameObjects or change transforms through typed operations backed by Unity Undo.
|
|
44
|
+
4. Verify the hierarchy, then explicitly call `save_scene`.
|
|
45
|
+
5. Load `unity-diagnostics` and call `read_console` after failures or as a final verification step.
|
|
46
|
+
|
|
47
|
+
Do not automatically retry a timed-out scene mutation. Inspect the project and scene first because
|
|
48
|
+
the Editor may have completed the original request near the timeout boundary.
|
|
49
|
+
|
|
50
|
+
No raw C# evaluation, shell command, or arbitrary filesystem write is exposed. The Editor bridge
|
|
51
|
+
accepts only the methods implemented in `DccMcpCommands` and executes them on Unity's editor update
|
|
52
|
+
loop. Mutations fail closed during compilation, asset updates, and Play Mode. Requests, queued work,
|
|
53
|
+
scene snapshots, Console reads, and serialized responses have explicit size or lifetime budgets.
|
|
54
|
+
|
|
55
|
+
## Validation boundary
|
|
56
|
+
|
|
57
|
+
Public CI validates Python 3.9 and 3.12 on Windows, macOS, and Linux; validates the bundled skill
|
|
58
|
+
contracts; performs static checks for the UPM package and main-thread/Undo contracts; and builds the
|
|
59
|
+
PyPI artifacts. Automated live Unity Editor CI is intentionally not claimed because it requires a
|
|
60
|
+
provisioned Unity CI license or activation. A real Editor smoke should be run before promoting the
|
|
61
|
+
adapter from alpha.
|
|
62
|
+
|
|
63
|
+
## Development
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
uv sync --extra dev
|
|
67
|
+
uv run python -m pytest
|
|
68
|
+
uv run ruff check src tests tools
|
|
69
|
+
uv run ruff format --check src tests tools
|
|
70
|
+
uv run python tools/lint_skills.py
|
|
71
|
+
uv run python -m build
|
|
72
|
+
uv run python -m twine check dist/*
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Unity and the Unity cube logo are trademarks of Unity Technologies. This independent adapter is
|
|
76
|
+
not affiliated with or endorsed by Unity Technologies.
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
# Unity automation architecture benchmark
|
|
2
|
+
|
|
3
|
+
This adapter was reviewed against pinned versions of three Unity automation projects before its first public
|
|
4
|
+
release. The comparison is about architecture and contracts; no third-party source code is bundled
|
|
5
|
+
or copied into this repository.
|
|
6
|
+
|
|
7
|
+
## Source snapshots
|
|
8
|
+
|
|
9
|
+
| Project | Snapshot | Primary role | License |
|
|
10
|
+
| --- | --- | --- | --- |
|
|
11
|
+
| [RageAgainstThePixel/unity-cli](https://github.com/RageAgainstThePixel/unity-cli/tree/c4f45b952c3e23beadfb442fc4c6d5920402c217) | `c4f45b9`, CLI 3.0.1 | Hub, Editor, license, project, batch, build, and UPM lifecycle automation | [MIT](https://github.com/RageAgainstThePixel/unity-cli/blob/c4f45b952c3e23beadfb442fc4c6d5920402c217/LICENSE) |
|
|
12
|
+
| [CoplayDev/unity-mcp](https://github.com/CoplayDev/unity-mcp/tree/c14de1e6dc01ab42d2bb358730cff954bce0ce6b) | `c14de1e`, 10.1.0 | Python MCP server plus Unity Editor plugin and broad authoring tools | [MIT](https://github.com/CoplayDev/unity-mcp/blob/c14de1e6dc01ab42d2bb358730cff954bce0ce6b/LICENSE) |
|
|
13
|
+
| [IvanMurzak/Unity-MCP](https://github.com/IvanMurzak/Unity-MCP/tree/73086e74924efc7ebf4430d3b4fa1ae44d49adaa) | `73086e7`, 0.86.0 | Editor/runtime plugin and CLI communicating with an external C# MCP server over SignalR | [Apache-2.0](https://github.com/IvanMurzak/Unity-MCP/blob/73086e74924efc7ebf4430d3b4fa1ae44d49adaa/LICENSE) |
|
|
14
|
+
|
|
15
|
+
## Product boundary
|
|
16
|
+
|
|
17
|
+
The projects solve two different automation planes. DCC-MCP Unity keeps them separate:
|
|
18
|
+
|
|
19
|
+
```mermaid
|
|
20
|
+
flowchart LR
|
|
21
|
+
A["Agent / DCC-MCP gateway"] --> B["Typed live Editor adapter"]
|
|
22
|
+
B --> C["Loopback WebSocket"]
|
|
23
|
+
C --> D["Unity Editor main thread"]
|
|
24
|
+
A -. "future approved jobs" .-> E["Optional Unity toolchain backend"]
|
|
25
|
+
E -. "fixed argv only" .-> F["unity-cli / Unity batch mode"]
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
- The live plane owns low-latency inspection and undoable Editor authoring.
|
|
29
|
+
- A future toolchain plane may own project creation, compile, test, and build jobs.
|
|
30
|
+
- Hub installation, license management, arbitrary Editor arguments, and credentials are not normal
|
|
31
|
+
MCP tools.
|
|
32
|
+
|
|
33
|
+
## Decisions adopted for the first release
|
|
34
|
+
|
|
35
|
+
1. **Explicit commands, not ambient code execution.** The Editor package accepts a fixed method
|
|
36
|
+
allowlist. It does not expose arbitrary C#, reflection calls, menu execution, shell commands, or
|
|
37
|
+
unconstrained file writes.
|
|
38
|
+
2. **One main-thread boundary.** WebSocket I/O is asynchronous; commands enter through a bounded
|
|
39
|
+
queue and run from `EditorApplication.update`.
|
|
40
|
+
3. **Fail-closed mutation lifecycle.** Each undoable GameObject mutation has its own Undo group and
|
|
41
|
+
rolls back on failure. Mutations are rejected during compile, asset update, and Play Mode.
|
|
42
|
+
4. **Bounded transport and output.** Incoming messages, pending requests, queue lifetime, scene
|
|
43
|
+
snapshots, vector values, and captured Console output all have explicit limits.
|
|
44
|
+
5. **Target evidence.** The bridge handshake includes product name, project path/hash, Unity version, process
|
|
45
|
+
ID, and a session ID stable across domain reloads. Agents inspect the project before mutation.
|
|
46
|
+
6. **Diagnostic loop.** Project inspection reports Editor readiness, and `editor.read_console`
|
|
47
|
+
provides a bounded read-only view of messages captured after package load.
|
|
48
|
+
7. **Version preflight.** The installer reads `ProjectSettings/ProjectVersion.txt` and rejects Unity
|
|
49
|
+
versions older than 2021.3 before changing the project.
|
|
50
|
+
8. **No blind mutation retry.** A timeout is ambiguous: Unity may have completed work near the
|
|
51
|
+
boundary. The workflow requires project and scene inspection before deciding what to do next.
|
|
52
|
+
|
|
53
|
+
## Deferred extensions
|
|
54
|
+
|
|
55
|
+
- Add a separate optional backend for a pinned `unity-cli` version. It must use fixed argument
|
|
56
|
+
arrays, `shell=False`, bounded output and timeouts, credential redaction, and explicit approval for
|
|
57
|
+
project creation, compile, test, build, or GUI launch.
|
|
58
|
+
- Add core-supported multi-instance routing keyed by project hash and session ID. Until then,
|
|
59
|
+
concurrent Editors use one adapter and a unique bridge port/URL pair per Editor.
|
|
60
|
+
- Add `tests.run`, build, package, and other cross-domain-reload operations only with a persistent
|
|
61
|
+
job protocol (`request_id`, processing state, reconnect, completion, cancellation).
|
|
62
|
+
- Add licensed Unity CI for the minimum supported 2021.3 release and a Unity 6 release. Static CI is
|
|
63
|
+
not presented as live Editor proof.
|
|
64
|
+
- Expand authoring in bounded vertical slices: tests/build first, then carefully typed components,
|
|
65
|
+
prefabs, materials, and assets.
|
|
66
|
+
|
|
67
|
+
## Capabilities intentionally rejected
|
|
68
|
+
|
|
69
|
+
- Runtime compilation or execution of arbitrary C#.
|
|
70
|
+
- Calling arbitrary public or private methods through reflection.
|
|
71
|
+
- Generic object patching with an unconstrained type/property surface.
|
|
72
|
+
- Arbitrary `unity-cli run`, Unity Hub, menu item, or package URL passthrough.
|
|
73
|
+
- License and service-account credentials supplied as model arguments.
|
|
74
|
+
- Automatic retry of non-idempotent scene mutations.
|
|
75
|
+
- Cloud identity, telemetry, asset-generation providers, or third-party secret stores in the core
|
|
76
|
+
adapter.
|
|
77
|
+
|
|
78
|
+
## Evidence consulted
|
|
79
|
+
|
|
80
|
+
- `unity-cli` separates project/version detection and Editor execution, uses argument arrays with
|
|
81
|
+
`shell: false`, and maintains real Unity integration workflows: [project parser](https://github.com/RageAgainstThePixel/unity-cli/blob/c4f45b952c3e23beadfb442fc4c6d5920402c217/src/unity-project.ts#L61-L97), [process execution](https://github.com/RageAgainstThePixel/unity-cli/blob/c4f45b952c3e23beadfb442fc4c6d5920402c217/src/utilities.ts#L167-L293), [integration workflow](https://github.com/RageAgainstThePixel/unity-cli/blob/c4f45b952c3e23beadfb442fc4c6d5920402c217/.github/workflows/integration-tests.yml#L1-L74).
|
|
82
|
+
- Coplay uses project hashes for instance routing, keeps the active instance per MCP session,
|
|
83
|
+
dispatches Editor work through a main-thread queue, and provides a large tool catalog; it also
|
|
84
|
+
exposes optional arbitrary C# that is explicitly not a sandbox: [instance middleware](https://github.com/CoplayDev/unity-mcp/blob/c14de1e6dc01ab42d2bb358730cff954bce0ce6b/Server/src/transport/unity_instance_middleware.py#L50-L95), [dispatcher](https://github.com/CoplayDev/unity-mcp/blob/c14de1e6dc01ab42d2bb358730cff954bce0ce6b/MCPForUnity/Editor/Services/Transport/TransportCommandDispatcher.cs#L70-L194), [execute-code warning](https://github.com/CoplayDev/unity-mcp/blob/c14de1e6dc01ab42d2bb358730cff954bce0ce6b/Server/src/services/tools/execute_code.py#L1-L9).
|
|
85
|
+
- Ivan Murzak's implementation uses stable project/session identity and main-thread dispatch. Its
|
|
86
|
+
dynamic script execution and reflection-backed capabilities give it a broader operation surface
|
|
87
|
+
than this adapter's fixed allowlist:
|
|
88
|
+
[architecture](https://github.com/IvanMurzak/Unity-MCP/blob/73086e74924efc7ebf4430d3b4fa1ae44d49adaa/docs/claude/architecture.md#L3-L15), [instance identity](https://github.com/IvanMurzak/Unity-MCP/blob/73086e74924efc7ebf4430d3b4fa1ae44d49adaa/Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/Editor/Scripts/Services/ProjectInstanceService.cs#L53-L106), [dynamic script execution](https://github.com/IvanMurzak/Unity-MCP/blob/73086e74924efc7ebf4430d3b4fa1ae44d49adaa/Unity-MCP-Plugin/Packages/com.ivanmurzak.unity.mcp/Editor/Scripts/API/Tool/Script.Execute.cs#L244-L310).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Brand asset sources
|
|
2
|
+
|
|
3
|
+
- Shared DCC-MCP master: approved DCC-MCP brand master.
|
|
4
|
+
- Unity identity: exact approved Unity cube asset, checked against the
|
|
5
|
+
[Unity branding and trademarks guidance](https://unity.com/legal/branding-trademarks).
|
|
6
|
+
- Family composition reference: the approved
|
|
7
|
+
[dcc-mcp-houdini](https://github.com/dcc-mcp/dcc-mcp-houdini) README lockup.
|
|
8
|
+
- `dcc-mcp-unity-imagegen-source.png`: preserved ImageGen source used for the
|
|
9
|
+
Unity Scene-view composition.
|
|
10
|
+
- `dcc-mcp-unity.png`: approved 1200×560 raster. The exact Unity identity asset
|
|
11
|
+
was composited over the generated identity region before approval.
|
|
12
|
+
- `dcc-mcp-unity.svg`: self-contained SVG wrapper around the approved raster;
|
|
13
|
+
it is not a native vector redraw.
|
|
Binary file
|
|
Binary file
|