unity-open-mcp 1.1.0 → 1.3.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 +33 -2
- package/dist/agent-identity.d.ts +12 -0
- package/dist/agent-identity.js +2 -0
- package/dist/agent-identity.js.map +1 -1
- package/dist/batch-spawn.d.ts +39 -0
- package/dist/batch-spawn.js +287 -69
- package/dist/batch-spawn.js.map +1 -1
- package/dist/capabilities/build-capabilities.js +2 -0
- package/dist/capabilities/build-capabilities.js.map +1 -1
- package/dist/capabilities/discovery.d.ts +51 -0
- package/dist/capabilities/discovery.js +87 -0
- package/dist/capabilities/discovery.js.map +1 -0
- package/dist/capabilities/lifecycle.d.ts +6 -0
- package/dist/capabilities/lifecycle.js +17 -1
- package/dist/capabilities/lifecycle.js.map +1 -1
- package/dist/capabilities/tool-groups.js +1 -0
- package/dist/capabilities/tool-groups.js.map +1 -1
- package/dist/child-supervision.d.ts +6 -0
- package/dist/child-supervision.js +12 -0
- package/dist/child-supervision.js.map +1 -1
- package/dist/cli/args.d.ts +24 -2
- package/dist/cli/args.js +97 -2
- package/dist/cli/args.js.map +1 -1
- package/dist/cli/cli.js +42 -3
- package/dist/cli/cli.js.map +1 -1
- package/dist/cli/help-text.d.ts +1 -0
- package/dist/cli/help-text.js +71 -3
- package/dist/cli/help-text.js.map +1 -1
- package/dist/cli/json-guards.d.ts +2 -0
- package/dist/cli/json-guards.js +5 -0
- package/dist/cli/json-guards.js.map +1 -0
- package/dist/cli/setup-command.d.ts +88 -0
- package/dist/cli/setup-command.js +444 -0
- package/dist/cli/setup-command.js.map +1 -0
- package/dist/cli/update-command.d.ts +30 -0
- package/dist/cli/update-command.js +271 -0
- package/dist/cli/update-command.js.map +1 -0
- package/dist/compile-verify.d.ts +3 -0
- package/dist/compile-verify.js +4 -0
- package/dist/compile-verify.js.map +1 -1
- package/dist/constants.d.ts +10 -2
- package/dist/constants.js +10 -2
- package/dist/constants.js.map +1 -1
- package/dist/dialog-dismiss.d.ts +108 -12
- package/dist/dialog-dismiss.js +294 -109
- package/dist/dialog-dismiss.js.map +1 -1
- package/dist/dialog-policy.d.ts +55 -9
- package/dist/dialog-policy.js +85 -15
- package/dist/dialog-policy.js.map +1 -1
- package/dist/editor-search.d.ts +2 -0
- package/dist/editor-search.js +8 -0
- package/dist/editor-search.js.map +1 -0
- package/dist/gate-error.d.ts +3 -0
- package/dist/gate-error.js.map +1 -1
- package/dist/index.js +55 -1
- package/dist/index.js.map +1 -1
- package/dist/instance-discovery.d.ts +16 -0
- package/dist/instance-discovery.js +45 -0
- package/dist/instance-discovery.js.map +1 -1
- package/dist/jobs/adapters.d.ts +15 -0
- package/dist/jobs/adapters.js +147 -0
- package/dist/jobs/adapters.js.map +1 -0
- package/dist/jobs/handler.d.ts +3 -0
- package/dist/jobs/handler.js +29 -0
- package/dist/jobs/handler.js.map +1 -0
- package/dist/jobs/job-manager.d.ts +123 -0
- package/dist/jobs/job-manager.js +290 -0
- package/dist/jobs/job-manager.js.map +1 -0
- package/dist/live-client.d.ts +50 -2
- package/dist/live-client.js +221 -26
- package/dist/live-client.js.map +1 -1
- package/dist/local-tools.d.ts +17 -0
- package/dist/local-tools.js +47 -0
- package/dist/local-tools.js.map +1 -0
- package/dist/process-diagnostics.d.ts +47 -20
- package/dist/process-diagnostics.js +30 -15
- package/dist/process-diagnostics.js.map +1 -1
- package/dist/project-path.d.ts +86 -0
- package/dist/project-path.js +159 -0
- package/dist/project-path.js.map +1 -0
- package/dist/release-lookup.d.ts +32 -0
- package/dist/release-lookup.js +147 -0
- package/dist/release-lookup.js.map +1 -0
- package/dist/routers.d.ts +17 -3
- package/dist/routers.js +28 -8
- package/dist/routers.js.map +1 -1
- package/dist/running-unity.d.ts +21 -0
- package/dist/running-unity.js +50 -0
- package/dist/running-unity.js.map +1 -1
- package/dist/schema-defaults.d.ts +4 -3
- package/dist/schema-defaults.js +20 -6
- package/dist/schema-defaults.js.map +1 -1
- package/dist/server-instructions.js +7 -1
- package/dist/server-instructions.js.map +1 -1
- package/dist/server.d.ts +10 -3
- package/dist/server.js +24 -25
- package/dist/server.js.map +1 -1
- package/dist/setup/portable-config.d.ts +60 -0
- package/dist/setup/portable-config.js +249 -0
- package/dist/setup/portable-config.js.map +1 -0
- package/dist/skill/SKILL.md +68 -0
- package/dist/skill/copy-references.d.ts +2 -0
- package/dist/skill/copy-references.js +16 -0
- package/dist/skill/copy-references.js.map +1 -0
- package/dist/skill/generate-skill.js +5 -3
- package/dist/skill/generate-skill.js.map +1 -1
- package/dist/skill/references/batch-and-gates.md +142 -0
- package/dist/skill/references/compile-and-safe-mode.md +163 -0
- package/dist/skill/references/discovery-and-groups.md +30 -0
- package/dist/skill/references/routing-and-lifecycle.md +62 -0
- package/dist/skill/references/senses-and-tests.md +41 -0
- package/dist/skill/references/yaml-and-offline-work.md +33 -0
- package/dist/templates/mcp-wrapper.sh +35 -0
- package/dist/tool-contract.d.ts +8 -0
- package/dist/tool-contract.js +253 -0
- package/dist/tool-contract.js.map +1 -0
- package/dist/tool-router.d.ts +62 -7
- package/dist/tool-router.js +535 -61
- package/dist/tool-router.js.map +1 -1
- package/dist/tool-session-state.d.ts +6 -0
- package/dist/tool-session-state.js +14 -0
- package/dist/tool-session-state.js.map +1 -1
- package/dist/tools/agent-capabilities.js +9 -0
- package/dist/tools/agent-capabilities.js.map +1 -1
- package/dist/tools/batch-execute.js +17 -14
- package/dist/tools/batch-execute.js.map +1 -1
- package/dist/tools/bridge-status.js +4 -5
- package/dist/tools/bridge-status.js.map +1 -1
- package/dist/tools/compile-check.js +6 -4
- package/dist/tools/compile-check.js.map +1 -1
- package/dist/tools/component-get.js +2 -2
- package/dist/tools/component-get.js.map +1 -1
- package/dist/tools/component-modify.js +4 -4
- package/dist/tools/component-modify.js.map +1 -1
- package/dist/tools/execute-csharp.js +8 -4
- package/dist/tools/execute-csharp.js.map +1 -1
- package/dist/tools/gameobject-modify.js +2 -1
- package/dist/tools/gameobject-modify.js.map +1 -1
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +10 -2
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/inputsim-key.js +12 -14
- package/dist/tools/inputsim-key.js.map +1 -1
- package/dist/tools/inputsim-pointer.js +3 -3
- package/dist/tools/inputsim-pointer.js.map +1 -1
- package/dist/tools/inputsim-step.js +7 -8
- package/dist/tools/inputsim-step.js.map +1 -1
- package/dist/tools/inputsim-touch.js +9 -10
- package/dist/tools/inputsim-touch.js.map +1 -1
- package/dist/tools/jobs.d.ts +40 -0
- package/dist/tools/jobs.js +18 -0
- package/dist/tools/jobs.js.map +1 -0
- package/dist/tools/manage-tools.js +10 -5
- package/dist/tools/manage-tools.js.map +1 -1
- package/dist/tools/project-commands.d.ts +40 -0
- package/dist/tools/project-commands.js +23 -0
- package/dist/tools/project-commands.js.map +1 -0
- package/dist/tools/read-compile-errors.js +14 -93
- package/dist/tools/read-compile-errors.js.map +1 -1
- package/dist/tools/resource-pressure.js +27 -17
- package/dist/tools/resource-pressure.js.map +1 -1
- package/dist/tools/scan-paths.js +4 -4
- package/dist/tools/scan-paths.js.map +1 -1
- package/dist/tools/schema-fragments.d.ts +15 -3
- package/dist/tools/schema-fragments.js +23 -13
- package/dist/tools/schema-fragments.js.map +1 -1
- package/dist/tools/upgrade.d.ts +40 -0
- package/dist/tools/upgrade.js +55 -0
- package/dist/tools/upgrade.js.map +1 -0
- package/dist/unity-install-discovery.d.ts +24 -0
- package/dist/unity-install-discovery.js +113 -4
- package/dist/unity-install-discovery.js.map +1 -1
- package/package.json +4 -3
- package/templates/mcp-wrapper.sh +35 -0
package/README.md
CHANGED
|
@@ -16,6 +16,19 @@ You do not need to install this package yourself — your MCP client spawns it v
|
|
|
16
16
|
`npx`. The sections below show both the zero-install `npx` path and the optional
|
|
17
17
|
global install.
|
|
18
18
|
|
|
19
|
+
For a first installation, the setup command merges the Unity package pins,
|
|
20
|
+
project MCP config, and bundled core skill without requiring a running Editor:
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
npx -y unity-open-mcp@latest setup \
|
|
24
|
+
--project /absolute/path/to/MyGame \
|
|
25
|
+
--client cursor
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Supported project-config ids are `cursor`, `claude`, `opencode`, and `agents`.
|
|
29
|
+
Run `npx -y unity-open-mcp@latest setup --help` for dry-run, skill-skip, JSON,
|
|
30
|
+
and exit-code details.
|
|
31
|
+
|
|
19
32
|
### Configure your MCP client
|
|
20
33
|
|
|
21
34
|
Pick your client and merge a `unity-open-mcp` entry using the canonical
|
|
@@ -39,7 +52,7 @@ npm install -g unity-open-mcp
|
|
|
39
52
|
|
|
40
53
|
Then use `"command": "unity-open-mcp", "args": []` (Cursor / Claude Desktop) or
|
|
41
54
|
`"command": ["unity-open-mcp"]` (OpenCode) in your client config. Update with
|
|
42
|
-
`npm update -g unity-open-mcp
|
|
55
|
+
`unity-open-mcp update` (or `npm update -g unity-open-mcp`).
|
|
43
56
|
|
|
44
57
|
Core environment variables and modal-policy options are documented in the
|
|
45
58
|
[client configuration reference](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/setup/client-configuration.md)
|
|
@@ -73,10 +86,24 @@ npx unity-open-mcp run-tool unity_open_mcp_capabilities \
|
|
|
73
86
|
```
|
|
74
87
|
|
|
75
88
|
Commands also include event streaming, verify, baseline, and regression
|
|
76
|
-
automation. All accept `--json` for
|
|
89
|
+
automation, plus bridge-independent project setup. All accept `--json` for
|
|
90
|
+
machine-readable output. See the
|
|
77
91
|
[CLI and automation reference](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/api/cli-automation.md)
|
|
78
92
|
for the full option reference.
|
|
79
93
|
|
|
94
|
+
Check or apply an MCP server update without a Unity project path:
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
unity-open-mcp update --check
|
|
98
|
+
unity-open-mcp update
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
The command updates global and project-local npm installs. When launched by
|
|
102
|
+
`npx`, it prints the pin to change instead of modifying the npx cache. It never
|
|
103
|
+
changes Unity package pins or MCP client configuration; use the repository's
|
|
104
|
+
[Updating guide](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/updating.md)
|
|
105
|
+
for the coordinated and air-gapped paths.
|
|
106
|
+
|
|
80
107
|
## Version pinning
|
|
81
108
|
|
|
82
109
|
The client configuration reference pins the server so it stays in lockstep
|
|
@@ -89,8 +116,12 @@ client and Unity package pins together — see
|
|
|
89
116
|
- [Agent setup](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/setup/agent-setup.md)
|
|
90
117
|
- [Full manual setup](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/setup/manual-setup.md)
|
|
91
118
|
- [MCP client configuration](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/setup/client-configuration.md)
|
|
119
|
+
- [Portable, committable MCP configuration](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/setup/portable-config.md)
|
|
92
120
|
- [Unity Hub Pro wizard walkthrough](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/setup/wizard-setup.md)
|
|
121
|
+
- [Updating and air-gapped installs](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/updating.md)
|
|
93
122
|
- [MCP tool catalog and routing](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/api/mcp-tools.md)
|
|
123
|
+
- [Project-defined commands](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/api/project-commands.md)
|
|
124
|
+
- [Asynchronous jobs](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/api/jobs.md)
|
|
94
125
|
- [Bridge HTTP API](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/api/bridge-http.md)
|
|
95
126
|
- [Architecture](https://github.com/AlexeyPerov/Unity-Open-MCP/blob/master/docs/architecture.md)
|
|
96
127
|
|
package/dist/agent-identity.d.ts
CHANGED
|
@@ -5,6 +5,18 @@
|
|
|
5
5
|
* an explicit `_meta.agentId` override.
|
|
6
6
|
*/
|
|
7
7
|
export declare const PROCESS_AGENT_ID: string;
|
|
8
|
+
/**
|
|
9
|
+
* Who made a call and which bridge port it pinned for that call alone: the key
|
|
10
|
+
* session-owned jobs are filed under. `port` is the per-request override only,
|
|
11
|
+
* never the default client's env pin. The router threads it through every entry
|
|
12
|
+
* point (direct call, `manage_tools` invoke, port override).
|
|
13
|
+
*/
|
|
14
|
+
export interface RequestIdentity {
|
|
15
|
+
agent: string;
|
|
16
|
+
port?: number;
|
|
17
|
+
}
|
|
18
|
+
/** Identity of a call that carries no routing metadata. */
|
|
19
|
+
export declare const PROCESS_IDENTITY: RequestIdentity;
|
|
8
20
|
/** Minimum/maximum valid TCP port for an override. */
|
|
9
21
|
export declare const MIN_PORT = 1;
|
|
10
22
|
export declare const MAX_PORT = 65535;
|
package/dist/agent-identity.js
CHANGED
|
@@ -32,6 +32,8 @@ import { randomBytes } from "node:crypto";
|
|
|
32
32
|
* an explicit `_meta.agentId` override.
|
|
33
33
|
*/
|
|
34
34
|
export const PROCESS_AGENT_ID = `agent-${process.pid}-${randomBytes(3).toString("hex")}`;
|
|
35
|
+
/** Identity of a call that carries no routing metadata. */
|
|
36
|
+
export const PROCESS_IDENTITY = { agent: PROCESS_AGENT_ID };
|
|
35
37
|
/** Minimum/maximum valid TCP port for an override. */
|
|
36
38
|
export const MIN_PORT = 1;
|
|
37
39
|
export const MAX_PORT = 65535;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-identity.js","sourceRoot":"","sources":["../src/agent-identity.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,8EAA8E;AAC9E,+EAA+E;AAC/E,EAAE;AACF,aAAa;AACb,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,4EAA4E;AAC5E,+EAA+E;AAC/E,6EAA6E;AAC7E,6EAA6E;AAC7E,qDAAqD;AACrD,EAAE;AACF,+EAA+E;AAC/E,sEAAsE;AACtE,2EAA2E;AAC3E,4EAA4E;AAC5E,oEAAoE;AACpE,EAAE;AACF,4EAA4E;AAC5E,6EAA6E;AAC7E,sCAAsC;AAEtC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,SAAS,OAAO,CAAC,GAAG,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-identity.js","sourceRoot":"","sources":["../src/agent-identity.ts"],"names":[],"mappings":"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"}
|
package/dist/batch-spawn.d.ts
CHANGED
|
@@ -1,8 +1,33 @@
|
|
|
1
|
+
import { type ChildProcess, type SpawnOptions } from "node:child_process";
|
|
1
2
|
import type { CallToolResult } from "@modelcontextprotocol/sdk/types.js";
|
|
2
3
|
import type { Router } from "./router.js";
|
|
4
|
+
export declare const FAILED_RESOLUTION_TTL_MS = 30000;
|
|
5
|
+
/**
|
|
6
|
+
* A headless Unity run this server is currently driving for a project. Held
|
|
7
|
+
* for exactly as long as the per-project batch lease: from just before the
|
|
8
|
+
* spawn until the child closes (or fails to start).
|
|
9
|
+
*/
|
|
10
|
+
export interface HeadlessRunInfo {
|
|
11
|
+
/** MCP tool whose call spawned the run, e.g. `unity_open_mcp_compile_check`. */
|
|
12
|
+
tool: string;
|
|
13
|
+
/** Batch operation passed to the Unity entry point, e.g. `compile_check`. */
|
|
14
|
+
operation: string;
|
|
15
|
+
/** Epoch ms when the lease was taken. */
|
|
16
|
+
startedAt: number;
|
|
17
|
+
/** Overall batch timeout; the child is killed once it elapses. */
|
|
18
|
+
timeoutMs: number;
|
|
19
|
+
/** OS pid of the Unity child; null until the spawn returned one. */
|
|
20
|
+
pid: number | null;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* The headless run this server is driving for `projectPath`, or null when no
|
|
24
|
+
* batch lease is held for it. Returns a copy; callers cannot mutate the lease.
|
|
25
|
+
*/
|
|
26
|
+
export declare function activeHeadlessRun(projectPath: string | null | undefined): HeadlessRunInfo | null;
|
|
3
27
|
export declare const VERIFY_BATCH_TOOL_NAMES: ReadonlySet<string>;
|
|
4
28
|
export declare const ALWAYS_BATCH_TOOLS: ReadonlyMap<string, string>;
|
|
5
29
|
export declare const BATCH_TOOL_NAMES: Set<string>;
|
|
30
|
+
export declare function extractJson(stdout: string): string | null;
|
|
6
31
|
export declare class BoundedTextAccumulator {
|
|
7
32
|
private decoder;
|
|
8
33
|
private bytes;
|
|
@@ -67,6 +92,13 @@ export interface BatchSpawnOptions {
|
|
|
67
92
|
* UNITY_PROJECT_PATH env var, then the instance lock's projectPath.
|
|
68
93
|
*/
|
|
69
94
|
projectPath?: string;
|
|
95
|
+
/**
|
|
96
|
+
* Optional replacement for `child_process.spawn` (test hook), for child
|
|
97
|
+
* event sequences a real process does not produce on demand.
|
|
98
|
+
*/
|
|
99
|
+
spawnProcess?: (command: string, args: string[], options: SpawnOptions) => ChildProcess;
|
|
100
|
+
/** Optional clock (test hook) for the failed-resolution TTL. */
|
|
101
|
+
now?: () => number;
|
|
70
102
|
}
|
|
71
103
|
export declare class BatchSpawn implements Router {
|
|
72
104
|
private unityPath;
|
|
@@ -74,10 +106,17 @@ export declare class BatchSpawn implements Router {
|
|
|
74
106
|
private projectPath;
|
|
75
107
|
private timeoutMs;
|
|
76
108
|
private readonly discoveryRoots?;
|
|
109
|
+
private readonly spawnProcess;
|
|
110
|
+
private readonly now;
|
|
111
|
+
private resolutionError?;
|
|
112
|
+
private resolutionKey?;
|
|
113
|
+
private resolvedAt;
|
|
77
114
|
constructor(options?: BatchSpawnOptions);
|
|
78
115
|
isBatchTool(toolName: string): boolean;
|
|
79
116
|
getProjectPath(): string;
|
|
117
|
+
headlessAvailable(): boolean;
|
|
80
118
|
route(toolName: string, args: Record<string, unknown>): Promise<CallToolResult>;
|
|
119
|
+
private refreshUnityPath;
|
|
81
120
|
private validateUnityPath;
|
|
82
121
|
private spawnUnity;
|
|
83
122
|
}
|