Repository navigation
Replies: 5 comments
|
On the core question — the pin is a snapshot, not something that follows the package. That's exactly the drift you're worried about, and your git-tracked package setup ( A couple of practical takes on your sub-questions:
I'd flag the rest as genuinely maintainer questions, since they depend on the project's intended contract rather than anything observable from the config: (a) the exact failure mode on a server-newer-than-package or package-newer-than-server mismatch (hard handshake error vs. silently missing tools), (b) whether there's a documented same-major/minor compatibility policy, and (c) whether the Connect tab could surface the running server version next to the package version to make drift visible before it breaks — that last one sounds like a worthwhile feature request. Worth pinning a maintainer for a definitive statement on the compatibility policy, because that determines whether a version range is safe for your team. |
|
Some of this is handled by the package already. From the code on 1. The pin follows the package on its own, once per machine. 2. Mismatches are visible in the window. If the pin in a client config differs from what the package expects, that client's status is Version Mismatch with "Server version doesn't match the plugin. Re-configure to update." ( 3. The exact pin is intentional. 4. What breaks if they drift. I found no package↔server version handshake. The plugin registers with project name/hash and the Unity editor version only ( With |
|
For your team's #main setup, there is one additional case to watch: the automatic migration uses the version in package.json, not the Git commit. It skips rewriting configs when that version is unchanged. If a package refresh moves to another commit with the same package version, that alone will not refresh the server pin. I'd pin the Unity dependency to a tested release tag and keep the exact server pin, then update them together. The stable server source is generated from the package version, so replacing the pin with a range would not establish a match to arbitrary commits on main. Also, the Version Mismatch check compares the configured source string, rather than querying the running server process. After updating the generated config, restart the MCP client so it launches the server from that config. |
|
Good catch, thanks. I checked it at aa5fc63: the migration compares against the package.json version (StdIoVersionMigration.cs L35-46), so a different commit with the same version won't refresh the pin. Pinning a tagged release and bumping the server pin together, as you suggest, is the safe setup for a #main team. |
|
Thanks, I checked this in the code (aa5fc63). You're right about the gate. StdIoVersionMigration.cs returns early when EditorPrefs already has the current package.json version (EditorPrefKeys.LastStdIoUpgradeVersion). So a git install that keeps the same version won't rewrite the configs again. Bumping the version, or clearing that EditorPrefs key, forces the run. Good catch for the #main setup. |
Uh oh!
There was an error while loading. Please reload this page.
Question
When I update the MCP for Unity package inside Unity, do I also have to update the pinned
Python server version in my MCP client config, and what happens if I don't?
My
claude_desktop_config.json(generated byWindow → MCP for Unity → Configure All Detected Clients)contains an exact pin:
{ "mcpServers": { "unityMCP": { "command": "C:\\Users\\<me>\\.local\\bin\\uvx.exe", "args": [ "--from", "mcpforunityserver==10.1.2", "mcp-for-unity", "--transport", "stdio" ], "type": "stdio" } } }The Unity window currently reports v10.1.2, Transport
Stdio, port 6400, session active — soright now the two match. My concern is what happens after the next package update.
Specifically:
(e.g. 10.1.2 → 10.2.0), must I re-run
Configure All Detected Clients(or hand-edit the JSON)so the pin follows, or does the package pick the right server version some other way?
a hard failure (handshake refused / "server version mismatch"), silently missing tools, or
is it fine as long as major versions agree? Is there a documented compatibility policy
(e.g. server and package share the same major/minor)?
mcpforunityserver>=10.1,<11oran unpinned
mcpforunityserverbe a supported setup, or does the project intentionallygenerate an exact
==pin (reproducibility, avoiding uvx pulling an untested server)?version — could/does it also surface the running server version so a mismatch is visible
before things break?
Our project tracks the package from git rather than a fixed tag:
So the Unity side can move forward on any
Packages/packages-lock.jsonrefresh while the clientconfig keeps pointing at
==10.1.2. On a small team this drift is easy to miss — one devre-resolves packages, another doesn't touch their config, and only one of them has a working
session.
All reactions