unity-mcp-cli 0.51.6 → 0.52.0

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.
package/README.md ADDED
@@ -0,0 +1,306 @@
1
+ <div align="center" width="100%">
2
+ <h1>Unity MCP — <i>CLI</i></h1>
3
+
4
+ [![npm](https://img.shields.io/npm/v/unity-mcp-cli?label=npm&labelColor=333A41 'npm package')](https://www.npmjs.com/package/unity-mcp-cli)
5
+ [![Node.js](https://img.shields.io/badge/Node.js-%3E%3D18-5FA04E?logo=nodedotjs&labelColor=333A41 'Node.js')](https://nodejs.org/)
6
+ [![License](https://img.shields.io/github/license/IvanMurzak/Unity-MCP?label=License&labelColor=333A41)](https://github.com/IvanMurzak/Unity-MCP/blob/main/LICENSE)
7
+ [![Stand With Ukraine](https://raw.githubusercontent.com/vshymanskyy/StandWithUkraine/main/badges/StandWithUkraine.svg)](https://stand-with-ukraine.pp.ua)
8
+
9
+ <img src="https://github.com/IvanMurzak/Unity-MCP/raw/main/docs/img/promo/ai-developer-banner-glitch.gif" alt="AI Game Developer" title="Unity MCP CLI" width="100%">
10
+
11
+ </div>
12
+
13
+ Cross-platform CLI tool for **[Unity MCP](https://github.com/IvanMurzak/Unity-MCP)** — create projects, install plugins, configure MCP tools, and launch Unity with active MCP connections. All from a single command line.
14
+
15
+ ## ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-features.svg?raw=true)
16
+
17
+ - :white_check_mark: **Create projects** — scaffold new Unity projects via Unity Editor
18
+ - :white_check_mark: **Install editors** — install any Unity Editor version from the command line
19
+ - :white_check_mark: **Install plugin** — add Unity-MCP plugin to `manifest.json` with all required scoped registries
20
+ - :white_check_mark: **Configure** — enable/disable MCP tools, prompts, and resources
21
+ - :white_check_mark: **Connect** — launch Unity with MCP environment variables for automated server connection
22
+ - :white_check_mark: **Cross-platform** — Windows, macOS, and Linux
23
+ - :white_check_mark: **Version-aware** — never downgrades plugin versions, resolves latest from OpenUPM
24
+
25
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
26
+
27
+ # Quick Start
28
+
29
+ Run any command instantly with `npx` — no installation required:
30
+
31
+ ```bash
32
+ npx unity-mcp-cli install-plugin /path/to/unity/project
33
+ ```
34
+
35
+ Or install globally:
36
+
37
+ ```bash
38
+ npm install -g unity-mcp-cli
39
+ unity-mcp-cli install-plugin /path/to/unity/project
40
+ ```
41
+
42
+ > **Requirements:** [Node.js](https://nodejs.org/) >= 18. [Unity Hub](https://unity.com/download) is installed automatically if not found.
43
+
44
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
45
+
46
+ # Contents
47
+
48
+ - [Quick Start](#quick-start)
49
+ - [Commands](#commands)
50
+ - [`create-project`](#create-project) — Create a new Unity project
51
+ - [`install-editor`](#install-editor) — Install Unity Editor via Unity Hub
52
+ - [`open`](#open) — Open a Unity project in the Editor
53
+ - [`install-plugin`](#install-plugin) — Install Unity-MCP plugin into a project
54
+ - [`configure`](#configure) — Configure MCP tools, prompts, and resources
55
+ - [`connect`](#connect) — Launch Unity with MCP connection
56
+ - [Full Automation Example](#full-automation-example)
57
+ - [How It Works](#how-it-works)
58
+
59
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
60
+
61
+ # Commands
62
+
63
+ ## `create-project`
64
+
65
+ Create a new Unity project using the Unity Editor.
66
+
67
+ ```bash
68
+ npx unity-mcp-cli create-project /path/to/new/project
69
+ ```
70
+
71
+ | Option | Required | Description |
72
+ |---|---|---|
73
+ | `[path]` | Yes | Path where the project will be created (positional or `--path`) |
74
+ | `--unity <version>` | No | Unity Editor version to use (defaults to highest installed) |
75
+
76
+ **Example — create a project with a specific editor version:**
77
+
78
+ ```bash
79
+ npx unity-mcp-cli create-project ./MyGame --unity 2022.3.62f1
80
+ ```
81
+
82
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
83
+
84
+ ## `install-editor`
85
+
86
+ Install a Unity Editor version via Unity Hub CLI.
87
+
88
+ ```bash
89
+ npx unity-mcp-cli install-editor --version 6000.3.1f1
90
+ ```
91
+
92
+ | Option | Required | Description |
93
+ |---|---|---|
94
+ | `--version <version>` | No | Unity Editor version to install |
95
+ | `--path <path>` | No | Read the required version from an existing project |
96
+
97
+ If neither option is provided, the command lists currently installed editors.
98
+
99
+ **Example — install the editor version that a project needs:**
100
+
101
+ ```bash
102
+ npx unity-mcp-cli install-editor --path ./MyGame
103
+ ```
104
+
105
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
106
+
107
+ ## `open`
108
+
109
+ Open a Unity project in the Unity Editor.
110
+
111
+ ```bash
112
+ npx unity-mcp-cli open ./MyGame
113
+ ```
114
+
115
+ | Option | Required | Description |
116
+ |---|---|---|
117
+ | `[path]` | Yes | Path to the Unity project (positional or `--path`) |
118
+ | `--unity <version>` | No | Specific Unity Editor version to use (defaults to version from project settings, falls back to highest installed) |
119
+
120
+ The editor process is spawned in detached mode — the CLI returns immediately.
121
+
122
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
123
+
124
+ ## `install-plugin`
125
+
126
+ Install the Unity-MCP plugin into a Unity project's `Packages/manifest.json`.
127
+
128
+ ```bash
129
+ npx unity-mcp-cli install-plugin ./MyGame
130
+ ```
131
+
132
+ | Option | Required | Description |
133
+ |---|---|---|
134
+ | `[path]` | Yes | Path to the Unity project (positional or `--path`) |
135
+ | `--plugin-version <version>` | No | Plugin version to install (defaults to latest from [OpenUPM](https://openupm.com/packages/com.ivanmurzak.unity.mcp/)) |
136
+
137
+ This command:
138
+ 1. Adds the **OpenUPM scoped registry** with all required scopes
139
+ 2. Adds `com.ivanmurzak.unity.mcp` to `dependencies`
140
+ 3. **Never downgrades** — if a higher version is already installed, it is preserved
141
+
142
+ **Example — install a specific plugin version:**
143
+
144
+ ```bash
145
+ npx unity-mcp-cli install-plugin ./MyGame --plugin-version 0.51.6
146
+ ```
147
+
148
+ > After running this command, open the project in Unity Editor to complete the package installation.
149
+
150
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
151
+
152
+ ## `configure`
153
+
154
+ Configure MCP tools, prompts, and resources in `UserSettings/AI-Game-Developer-Config.json`.
155
+
156
+ ```bash
157
+ npx unity-mcp-cli configure ./MyGame --list
158
+ ```
159
+
160
+ | Option | Required | Description |
161
+ |---|---|---|
162
+ | `[path]` | Yes | Path to the Unity project (positional or `--path`) |
163
+ | `--list` | No | List current configuration and exit |
164
+ | `--enable-tools <names>` | No | Enable specific tools (comma-separated) |
165
+ | `--disable-tools <names>` | No | Disable specific tools (comma-separated) |
166
+ | `--enable-all-tools` | No | Enable all tools |
167
+ | `--disable-all-tools` | No | Disable all tools |
168
+ | `--enable-prompts <names>` | No | Enable specific prompts (comma-separated) |
169
+ | `--disable-prompts <names>` | No | Disable specific prompts (comma-separated) |
170
+ | `--enable-all-prompts` | No | Enable all prompts |
171
+ | `--disable-all-prompts` | No | Disable all prompts |
172
+ | `--enable-resources <names>` | No | Enable specific resources (comma-separated) |
173
+ | `--disable-resources <names>` | No | Disable specific resources (comma-separated) |
174
+ | `--enable-all-resources` | No | Enable all resources |
175
+ | `--disable-all-resources` | No | Disable all resources |
176
+
177
+ **Example — enable specific tools and disable all prompts:**
178
+
179
+ ```bash
180
+ npx unity-mcp-cli configure ./MyGame \
181
+ --enable-tools gameobject-create,gameobject-find \
182
+ --disable-all-prompts
183
+ ```
184
+
185
+ **Example — enable everything:**
186
+
187
+ ```bash
188
+ npx unity-mcp-cli configure ./MyGame \
189
+ --enable-all-tools \
190
+ --enable-all-prompts \
191
+ --enable-all-resources
192
+ ```
193
+
194
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
195
+
196
+ ## `connect`
197
+
198
+ Open a Unity project and connect it to a specific MCP server via environment variables. Every option maps to a `UNITY_MCP_*` environment variable that the Unity plugin reads on startup.
199
+
200
+ ```bash
201
+ npx unity-mcp-cli connect \
202
+ --path ./MyGame \
203
+ --url http://localhost:8080
204
+ ```
205
+
206
+ | Option | Env Variable | Required | Description |
207
+ |---|---|---|---|
208
+ | `--url <url>` | `UNITY_MCP_HOST` | Yes | MCP server URL to connect to |
209
+ | `--path <path>` | — | Yes | Path to the Unity project |
210
+ | `--keep-connected` | `UNITY_MCP_KEEP_CONNECTED` | No | Force keep the connection alive |
211
+ | `--token <token>` | `UNITY_MCP_TOKEN` | No | Authentication token |
212
+ | `--auth <option>` | `UNITY_MCP_AUTH_OPTION` | No | Auth mode: `none` or `required` |
213
+ | `--tools <names>` | `UNITY_MCP_TOOLS` | No | Comma-separated list of tools to enable |
214
+ | `--transport <method>` | `UNITY_MCP_TRANSPORT` | No | Transport method: `streamableHttp` or `stdio` |
215
+ | `--start-server` / `--no-start-server` | `UNITY_MCP_START_SERVER` | No | Start or prevent MCP server auto-start in Unity Editor (only applies to `streamableHttp` transport) |
216
+ | `--unity <version>` | — | No | Specific Unity Editor version to use (defaults to version from project settings, falls back to highest installed) |
217
+
218
+ This command launches the Unity Editor with the corresponding `UNITY_MCP_*` environment variables so the plugin picks them up automatically on startup. The environment variables override values from the project's `UserSettings/AI-Game-Developer-Config.json` config file at runtime.
219
+
220
+ **Example — connect with authentication and specific tools:**
221
+
222
+ ```bash
223
+ npx unity-mcp-cli connect \
224
+ --path ./MyGame \
225
+ --url http://my-server:8080 \
226
+ --token my-secret-token \
227
+ --auth required \
228
+ --keep-connected \
229
+ --tools gameobject-create,gameobject-find,script-execute
230
+ ```
231
+
232
+ **Example — connect with stdio transport (server managed by AI agent):**
233
+
234
+ ```bash
235
+ npx unity-mcp-cli connect \
236
+ --path ./MyGame \
237
+ --url http://localhost:8080 \
238
+ --transport stdio \
239
+ --no-start-server
240
+ ```
241
+
242
+ **Example — connect with streamableHttp and auto-start server:**
243
+
244
+ ```bash
245
+ npx unity-mcp-cli connect \
246
+ --path ./MyGame \
247
+ --url http://localhost:8080 \
248
+ --transport streamableHttp \
249
+ --start-server \
250
+ --keep-connected
251
+ ```
252
+
253
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
254
+
255
+ # Full Automation Example
256
+
257
+ Set up a complete Unity MCP project from scratch in one script:
258
+
259
+ ```bash
260
+ # 1. Create a new Unity project
261
+ npx unity-mcp-cli create-project ./MyAIGame --unity 6000.3.1f1
262
+
263
+ # 2. Install the Unity-MCP plugin
264
+ npx unity-mcp-cli install-plugin ./MyAIGame
265
+
266
+ # 3. Enable all MCP tools
267
+ npx unity-mcp-cli configure ./MyAIGame --enable-all-tools
268
+
269
+ # 4. Open the project with MCP connection
270
+ npx unity-mcp-cli connect \
271
+ --path ./MyAIGame \
272
+ --url http://localhost:8080 \
273
+ --keep-connected
274
+ ```
275
+
276
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
277
+
278
+ # How It Works
279
+
280
+ ### Deterministic Port
281
+
282
+ The CLI generates a **deterministic port** for each Unity project based on its directory path (SHA256 hash mapped to port range 50000–59999). This matches the port generation in the Unity plugin, ensuring the server and plugin automatically agree on the same port without manual configuration.
283
+
284
+ ### Plugin Installation
285
+
286
+ The `install-plugin` command modifies `Packages/manifest.json` directly:
287
+ - Adds the [OpenUPM](https://openupm.com/) scoped registry (`package.openupm.com`)
288
+ - Registers all required scopes (`com.ivanmurzak`, `extensions.unity`, `org.nuget.*`)
289
+ - Adds the `com.ivanmurzak.unity.mcp` dependency with version-aware updates (never downgrades)
290
+
291
+ ### Configuration File
292
+
293
+ The `configure` command reads and writes `UserSettings/AI-Game-Developer-Config.json`, which controls:
294
+ - **Tools** — MCP tools available to AI agents
295
+ - **Prompts** — pre-defined prompts injected into LLM conversations
296
+ - **Resources** — read-only data exposed to AI agents
297
+ - **Connection settings** — host URL, auth token, transport method, timeouts
298
+
299
+ ### Unity Hub Integration
300
+
301
+ Commands that manage editors or create projects use the **Unity Hub CLI** (`--headless` mode). If Unity Hub is not installed, the CLI **downloads and installs it automatically**:
302
+ - **Windows** — silent install via `UnityHubSetup.exe /S` (may require administrator privileges)
303
+ - **macOS** — downloads the DMG, mounts it, and copies `Unity Hub.app` to `/Applications`
304
+ - **Linux** — downloads `UnityHub.AppImage` to `~/Applications/`
305
+
306
+ ![AI Game Developer — Unity MCP](https://github.com/IvanMurzak/Unity-MCP/blob/main/docs/img/promo/hazzard-divider.svg?raw=true)
@@ -1,2 +1,2 @@
1
- #!/usr/bin/env node
2
- import '../dist/index.js';
1
+ #!/usr/bin/env node
2
+ import '../dist/index.js';
@@ -7,7 +7,8 @@ function parseCommaSeparated(value) {
7
7
  }
8
8
  export const configureCommand = new Command('configure')
9
9
  .description('Configure MCP tools, prompts, and resources in AI-Game-Developer-Config.json')
10
- .requiredOption('--project-path <path>', 'Path to the Unity project')
10
+ .argument('[path]', 'Path to the Unity project')
11
+ .option('--path <path>', 'Path to the Unity project')
11
12
  .option('--enable-tools <names>', 'Enable specific tools (comma-separated)', parseCommaSeparated)
12
13
  .option('--disable-tools <names>', 'Disable specific tools (comma-separated)', parseCommaSeparated)
13
14
  .option('--enable-all-tools', 'Enable all tools')
@@ -21,8 +22,13 @@ export const configureCommand = new Command('configure')
21
22
  .option('--enable-all-resources', 'Enable all resources')
22
23
  .option('--disable-all-resources', 'Disable all resources')
23
24
  .option('--list', 'List current configuration')
24
- .action(async (options) => {
25
- const projectPath = path.resolve(options.projectPath);
25
+ .action(async (positionalPath, options) => {
26
+ const resolvedPath = positionalPath ?? options.path;
27
+ if (!resolvedPath) {
28
+ console.error('Error: Path is required. Usage: unity-mcp-cli configure <path> or --path <path>');
29
+ process.exit(1);
30
+ }
31
+ const projectPath = path.resolve(resolvedPath);
26
32
  if (!fs.existsSync(projectPath)) {
27
33
  console.error(`Error: Project path does not exist: ${projectPath}`);
28
34
  process.exit(1);
@@ -1 +1 @@
1
- {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configure.js","sourceRoot":"","sources":["../../src/commands/configure.ts"],"names":[],"mappings":"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"}
@@ -4,31 +4,33 @@ import * as fs from 'fs';
4
4
  import { findEditorPath, getProjectEditorVersion, launchEditor } from '../utils/unity-editor.js';
5
5
  export const connectCommand = new Command('connect')
6
6
  .description('Open Unity and enforce MCP connection to a specified server URL via environment variables')
7
- .requiredOption('--project-path <path>', 'Path to the Unity project')
7
+ .requiredOption('--path <path>', 'Path to the Unity project')
8
8
  .requiredOption('--url <url>', 'MCP server URL to connect to')
9
9
  .option('--tools <names>', 'Comma-separated list of tools to enable (sets UNITY_MCP_TOOLS)')
10
10
  .option('--token <token>', 'Auth token (sets UNITY_MCP_TOKEN)')
11
11
  .option('--auth <option>', 'Auth option: none or required (sets UNITY_MCP_AUTH_OPTION)')
12
12
  .option('--keep-connected', 'Force keep connected (sets UNITY_MCP_KEEP_CONNECTED=true)')
13
- .option('--editor-version <version>', 'Specific Unity Editor version to use')
13
+ .option('--transport <method>', 'Transport method: streamableHttp or stdio (sets UNITY_MCP_TRANSPORT)')
14
+ .option('--start-server <value>', 'Set to true/false to control server auto-start (sets UNITY_MCP_START_SERVER)', undefined)
15
+ .option('--unity <version>', 'Specific Unity Editor version to use')
14
16
  .action(async (options) => {
15
- const projectPath = path.resolve(options.projectPath);
17
+ const projectPath = path.resolve(options.path);
16
18
  if (!fs.existsSync(projectPath)) {
17
19
  console.error(`Error: Project path does not exist: ${projectPath}`);
18
20
  process.exit(1);
19
21
  }
20
22
  // Determine editor version
21
- let version = options.editorVersion;
23
+ let version = options.unity;
22
24
  if (!version) {
23
25
  version = getProjectEditorVersion(projectPath) ?? undefined;
24
26
  if (version) {
25
27
  console.log(`Detected editor version from project: ${version}`);
26
28
  }
27
29
  }
28
- const editorPath = findEditorPath(version);
30
+ const editorPath = await findEditorPath(version);
29
31
  if (!editorPath) {
30
32
  const versionMsg = version ? ` (version ${version})` : '';
31
- console.error(`Error: Unity Editor not found${versionMsg}. Install it with: unity-mcp install-editor --version <version>`);
33
+ console.error(`Error: Unity Editor not found${versionMsg}. Install it with: unity-mcp-cli install-editor --version <version>`);
32
34
  process.exit(1);
33
35
  }
34
36
  // Build environment variables for MCP connection
@@ -51,6 +53,21 @@ export const connectCommand = new Command('connect')
51
53
  }
52
54
  env['UNITY_MCP_AUTH_OPTION'] = options.auth;
53
55
  }
56
+ if (options.transport) {
57
+ if (options.transport !== 'streamableHttp' && options.transport !== 'stdio') {
58
+ console.error('Error: --transport must be "streamableHttp" or "stdio"');
59
+ process.exit(1);
60
+ }
61
+ env['UNITY_MCP_TRANSPORT'] = options.transport;
62
+ }
63
+ if (options.startServer !== undefined) {
64
+ const val = options.startServer.toLowerCase();
65
+ if (val !== 'true' && val !== 'false') {
66
+ console.error('Error: --start-server must be "true" or "false"');
67
+ process.exit(1);
68
+ }
69
+ env['UNITY_MCP_START_SERVER'] = val;
70
+ }
54
71
  console.log(`Connecting to MCP server: ${options.url}`);
55
72
  console.log('Environment variables:');
56
73
  for (const [key, value] of Object.entries(env)) {
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/commands/connect.ts"],"names":[],"mappings":"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"}
@@ -1,28 +1,31 @@
1
1
  import { Command } from 'commander';
2
2
  import * as path from 'path';
3
- import { findUnityHub, createProject, listInstalledEditors } from '../utils/unity-hub.js';
3
+ import { ensureUnityHub, createProject, listInstalledEditors, findHighestEditor } from '../utils/unity-hub.js';
4
4
  export const createProjectCommand = new Command('create-project')
5
5
  .description('Create a new Unity project')
6
- .requiredOption('--path <path>', 'Path where the project will be created')
7
- .option('--editor-version <version>', 'Unity Editor version to use')
8
- .action(async (options) => {
9
- const hubPath = findUnityHub();
10
- if (!hubPath) {
11
- console.error('Error: Unity Hub not found. Please install Unity Hub first.');
6
+ .argument('[path]', 'Path where the project will be created')
7
+ .option('--path <path>', 'Path where the project will be created')
8
+ .option('--unity <version>', 'Unity Editor version to use')
9
+ .action(async (positionalPath, options) => {
10
+ const resolvedPath = positionalPath ?? options.path;
11
+ if (!resolvedPath) {
12
+ console.error('Error: Path is required. Usage: unity-mcp-cli create-project <path> or --path <path>');
12
13
  process.exit(1);
13
14
  }
14
- let editorVersion = options.editorVersion;
15
+ const hubPath = await ensureUnityHub();
16
+ let editorVersion = options.unity;
15
17
  if (!editorVersion) {
16
- // Use the latest installed editor
18
+ // Use the highest installed editor version
17
19
  const editors = listInstalledEditors(hubPath);
18
20
  if (editors.length === 0) {
19
- console.error('Error: No Unity editors installed. Install one with: unity-mcp install-editor --version <version>');
21
+ console.error('Error: No Unity editors installed. Install one with: unity-mcp-cli install-editor --version <version>');
20
22
  process.exit(1);
21
23
  }
22
- editorVersion = editors[0].version;
23
- console.log(`No editor version specified, using latest installed: ${editorVersion}`);
24
+ const highest = findHighestEditor(editors);
25
+ editorVersion = highest.version;
26
+ console.log(`No Unity version specified, using highest installed: ${editorVersion}`);
24
27
  }
25
- const projectPath = path.resolve(options.path);
28
+ const projectPath = path.resolve(resolvedPath);
26
29
  createProject(hubPath, projectPath, editorVersion);
27
30
  });
28
31
  //# sourceMappingURL=create-project.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-project.js","sourceRoot":"","sources":["../../src/commands/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAE1F,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,4BAA4B,CAAC;KACzC,cAAc,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACzE,MAAM,CAAC,4BAA4B,EAAE,6BAA6B,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,OAAiD,EAAE,EAAE;IAClE,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAE1C,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,kCAAkC;QAClC,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,mGAAmG,CAAC,CAAC;YACnH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,aAAa,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,wDAAwD,aAAa,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"create-project.js","sourceRoot":"","sources":["../../src/commands/create-project.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE/G,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,4BAA4B,CAAC;KACzC,QAAQ,CAAC,QAAQ,EAAE,wCAAwC,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,wCAAwC,CAAC;KACjE,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAA0C,EAAE,EAAE;IAC/F,MAAM,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IAEvC,IAAI,aAAa,GAAG,OAAO,CAAC,KAAK,CAAC;IAElC,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,2CAA2C;QAC3C,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,uGAAuG,CAAC,CAAC;YACvH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,OAAO,CAAC,CAAC;QAC3C,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,wDAAwD,aAAa,EAAE,CAAC,CAAC;IACvF,CAAC;IAED,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC/C,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AACrD,CAAC,CAAC,CAAC"}
@@ -1,19 +1,22 @@
1
1
  import { Command } from 'commander';
2
- import { findUnityHub, installEditor, listInstalledEditors } from '../utils/unity-hub.js';
2
+ import * as path from 'path';
3
+ import * as fs from 'fs';
4
+ import { ensureUnityHub, installEditor, listInstalledEditors } from '../utils/unity-hub.js';
3
5
  import { getProjectEditorVersion } from '../utils/unity-editor.js';
4
6
  export const installEditorCommand = new Command('install-editor')
5
7
  .description('Install Unity Editor via Unity Hub')
6
8
  .option('--version <version>', 'Unity Editor version to install')
7
- .option('--project-path <path>', 'Read version from an existing Unity project')
9
+ .option('--path <path>', 'Read version from an existing Unity project')
8
10
  .action(async (options) => {
9
- const hubPath = findUnityHub();
10
- if (!hubPath) {
11
- console.error('Error: Unity Hub not found. Please install Unity Hub first.');
12
- process.exit(1);
13
- }
11
+ const hubPath = await ensureUnityHub();
14
12
  let version = options.version;
15
- if (!version && options.projectPath) {
16
- version = getProjectEditorVersion(options.projectPath) ?? undefined;
13
+ if (!version && options.path) {
14
+ const projectPath = path.resolve(options.path);
15
+ if (!fs.existsSync(projectPath)) {
16
+ console.error(`Error: Project path does not exist: ${projectPath}`);
17
+ process.exit(1);
18
+ }
19
+ version = getProjectEditorVersion(projectPath) ?? undefined;
17
20
  if (version) {
18
21
  console.log(`Detected editor version from project: ${version}`);
19
22
  }
@@ -23,7 +26,7 @@ export const installEditorCommand = new Command('install-editor')
23
26
  }
24
27
  }
25
28
  if (!version) {
26
- console.error('Error: Please specify --version or --project-path');
29
+ console.error('Error: Please specify --version or --path');
27
30
  // Show installed editors as a hint
28
31
  const editors = listInstalledEditors(hubPath);
29
32
  if (editors.length > 0) {
@@ -1 +1 @@
1
- {"version":3,"file":"install-editor.js","sourceRoot":"","sources":["../../src/commands/install-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC1F,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAChE,MAAM,CAAC,uBAAuB,EAAE,6CAA6C,CAAC;KAC9E,MAAM,CAAC,KAAK,EAAE,OAAmD,EAAE,EAAE;IACpE,MAAM,OAAO,GAAG,YAAY,EAAE,CAAC;IAC/B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,6DAA6D,CAAC,CAAC;QAC7E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAE9B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACpC,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QACpE,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;QAEnE,mCAAmC;QACnC,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACpE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,6BAA6B,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"install-editor.js","sourceRoot":"","sources":["../../src/commands/install-editor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAC5F,OAAO,EAAE,uBAAuB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,oCAAoC,CAAC;KACjD,MAAM,CAAC,qBAAqB,EAAE,iCAAiC,CAAC;KAChE,MAAM,CAAC,eAAe,EAAE,6CAA6C,CAAC;KACtE,MAAM,CAAC,KAAK,EAAE,OAA4C,EAAE,EAAE;IAC7D,MAAM,OAAO,GAAG,MAAM,cAAc,EAAE,CAAC;IAEvC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;IAE9B,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;QAC7B,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,WAAW,EAAE,CAAC,CAAC;YACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,GAAG,uBAAuB,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QAC5D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,KAAK,CAAC,8EAA8E,CAAC,CAAC;YAC9F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,2CAA2C,CAAC,CAAC;QAE3D,mCAAmC;QACnC,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;YAC9C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,CAAC,OAAO,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,MAAM,OAAO,GAAG,oBAAoB,CAAC,OAAO,CAAC,CAAC;IAC9C,MAAM,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;IACpE,IAAI,gBAAgB,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,gBAAgB,OAAO,6BAA6B,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC;QACzF,OAAO;IACT,CAAC;IAED,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC"}
@@ -4,10 +4,16 @@ import * as fs from 'fs';
4
4
  import { addPluginToManifest, resolveLatestVersion } from '../utils/manifest.js';
5
5
  export const installPluginCommand = new Command('install-plugin')
6
6
  .description('Install Unity-MCP plugin into a Unity project')
7
- .requiredOption('--project-path <path>', 'Path to the Unity project')
7
+ .argument('[path]', 'Path to the Unity project')
8
+ .option('--path <path>', 'Path to the Unity project')
8
9
  .option('--plugin-version <version>', 'Plugin version to install (default: latest)')
9
- .action(async (options) => {
10
- const projectPath = path.resolve(options.projectPath);
10
+ .action(async (positionalPath, options) => {
11
+ const resolvedPath = positionalPath ?? options.path;
12
+ if (!resolvedPath) {
13
+ console.error('Error: Path is required. Usage: unity-mcp-cli install-plugin <path> or --path <path>');
14
+ process.exit(1);
15
+ }
16
+ const projectPath = path.resolve(resolvedPath);
11
17
  // Validate project exists
12
18
  const manifestPath = path.join(projectPath, 'Packages', 'manifest.json');
13
19
  if (!fs.existsSync(manifestPath)) {
@@ -1 +1 @@
1
- {"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/commands/install-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,+CAA+C,CAAC;KAC5D,cAAc,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;KACpE,MAAM,CAAC,4BAA4B,EAAE,6CAA6C,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,OAAwD,EAAE,EAAE;IACzE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,0BAA0B;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,sEAAsE,WAAW,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,UAAU,WAAW,EAAE,CAAC,CAAC;IAC5E,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"install-plugin.js","sourceRoot":"","sources":["../../src/commands/install-plugin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAEjF,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,OAAO,CAAC,gBAAgB,CAAC;KAC9D,WAAW,CAAC,+CAA+C,CAAC;KAC5D,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,4BAA4B,EAAE,6CAA6C,CAAC;KACnF,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAAkD,EAAE,EAAE;IACvG,MAAM,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,sFAAsF,CAAC,CAAC;QACtG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,0BAA0B;IAC1B,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjC,OAAO,CAAC,KAAK,CAAC,sEAAsE,WAAW,EAAE,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAClB,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,MAAM,oBAAoB,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,gCAAgC,OAAO,UAAU,WAAW,EAAE,CAAC,CAAC;IAC5E,mBAAmB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IAC1C,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC"}
@@ -4,26 +4,32 @@ import * as fs from 'fs';
4
4
  import { findEditorPath, getProjectEditorVersion, launchEditor } from '../utils/unity-editor.js';
5
5
  export const openCommand = new Command('open')
6
6
  .description('Open a Unity project in Unity Editor')
7
- .requiredOption('--project-path <path>', 'Path to the Unity project')
8
- .option('--editor-version <version>', 'Specific Unity Editor version to use')
9
- .action(async (options) => {
10
- const projectPath = path.resolve(options.projectPath);
7
+ .argument('[path]', 'Path to the Unity project')
8
+ .option('--path <path>', 'Path to the Unity project')
9
+ .option('--unity <version>', 'Specific Unity Editor version to use')
10
+ .action(async (positionalPath, options) => {
11
+ const resolvedPath = positionalPath ?? options.path;
12
+ if (!resolvedPath) {
13
+ console.error('Error: Path is required. Usage: unity-mcp-cli open <path> or --path <path>');
14
+ process.exit(1);
15
+ }
16
+ const projectPath = path.resolve(resolvedPath);
11
17
  if (!fs.existsSync(projectPath)) {
12
18
  console.error(`Error: Project path does not exist: ${projectPath}`);
13
19
  process.exit(1);
14
20
  }
15
21
  // Determine editor version
16
- let version = options.editorVersion;
22
+ let version = options.unity;
17
23
  if (!version) {
18
24
  version = getProjectEditorVersion(projectPath) ?? undefined;
19
25
  if (version) {
20
26
  console.log(`Detected editor version from project: ${version}`);
21
27
  }
22
28
  }
23
- const editorPath = findEditorPath(version);
29
+ const editorPath = await findEditorPath(version);
24
30
  if (!editorPath) {
25
31
  const versionMsg = version ? ` (version ${version})` : '';
26
- console.error(`Error: Unity Editor not found${versionMsg}. Install it with: unity-mcp install-editor --version <version>`);
32
+ console.error(`Error: Unity Editor not found${versionMsg}. Install it with: unity-mcp-cli install-editor --version <version>`);
27
33
  process.exit(1);
28
34
  }
29
35
  console.log(`Opening project: ${projectPath}`);
@@ -1 +1 @@
1
- {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEjG,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,sCAAsC,CAAC;KACnD,cAAc,CAAC,uBAAuB,EAAE,2BAA2B,CAAC;KACpE,MAAM,CAAC,4BAA4B,EAAE,sCAAsC,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,OAAwD,EAAE,EAAE;IACzE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,WAAW,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IACpC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,uBAAuB,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QAC5D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,CAAC,CAAC;IAC3C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,gCAAgC,UAAU,iEAAiE,CAAC,CAAC;QAC3H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;IAC3C,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"open.js","sourceRoot":"","sources":["../../src/commands/open.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,cAAc,EAAE,uBAAuB,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAEjG,MAAM,CAAC,MAAM,WAAW,GAAG,IAAI,OAAO,CAAC,MAAM,CAAC;KAC3C,WAAW,CAAC,sCAAsC,CAAC;KACnD,QAAQ,CAAC,QAAQ,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,eAAe,EAAE,2BAA2B,CAAC;KACpD,MAAM,CAAC,mBAAmB,EAAE,sCAAsC,CAAC;KACnE,MAAM,CAAC,KAAK,EAAE,cAAkC,EAAE,OAA0C,EAAE,EAAE;IAC/F,MAAM,YAAY,GAAG,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IACpD,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,OAAO,CAAC,KAAK,CAAC,4EAA4E,CAAC,CAAC;QAC5F,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAE/C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,OAAO,CAAC,KAAK,CAAC,uCAAuC,WAAW,EAAE,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,2BAA2B;IAC3B,IAAI,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;IAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO,GAAG,uBAAuB,CAAC,WAAW,CAAC,IAAI,SAAS,CAAC;QAC5D,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,CAAC,GAAG,CAAC,yCAAyC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,aAAa,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,OAAO,CAAC,KAAK,CAAC,gCAAgC,UAAU,qEAAqE,CAAC,CAAC;QAC/H,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,oBAAoB,WAAW,EAAE,CAAC,CAAC;IAC/C,OAAO,CAAC,GAAG,CAAC,iBAAiB,UAAU,EAAE,CAAC,CAAC;IAC3C,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC"}
package/dist/index.js CHANGED
@@ -10,7 +10,7 @@ const require = createRequire(import.meta.url);
10
10
  const pkg = require('../package.json');
11
11
  const program = new Command();
12
12
  program
13
- .name('unity-mcp')
13
+ .name('unity-mcp-cli')
14
14
  .description('Cross-platform CLI tool for Unity-MCP operations')
15
15
  .version(pkg.version);
16
16
  program.addCommand(createProjectCommand);