Lets an AI client inspect Plastic SCM and Unity Version Control workspaces, review changes, and run guarded checkins and merges.
Also known as ProAnima/unity-version-control-mcp, unity-version-control-mcp, @proanima/uvcs-mcp
- Stars
- 18
- Tools
- 23
- Downloads, 30 days
- —
- Latest version
- 1.4.1
- Last commit
- Oct 26, 2026
- License
- MIT
What is Unity Version Control MCP?
Unity Version Control lets an AI client inspect Plastic SCM and Unity Version Control workspaces, review changes, and run guarded checkins and merges. It exposes 23 tools, such as uvcs_doctor, uvcs_policy_status, uvcs_setup_status.
Summary generated from the project's README
About Unity Version Control MCP server
Connecting AI coding agents to Plastic SCM or Unity Version Control workspaces is what UVCS MCP enables. It allows developers to use AI IDEs like Cursor, Claude Desktop, or Windsurf to inspect source-control states, review changes, and manage branches without giving the agent arbitrary shell access. The server acts as a bridge to the local cm CLI, using a fixed allowlist of commands to ensure safety.
Users can choose between different safety profiles, including a readonly mode for simple inspection and a guarded mode for more complex tasks. For write operations like checkins, merges, or branch creation, the server employs a two-step prepare and confirm workflow. This ensures that an agent cannot execute a change without explicit human approval. The system is designed specifically for source-control workflows such as status checks, diffing, and locking, rather than controlling the Unity Editor itself.
What you can do with it
- 1Reviewing source control changesAn AI agent can inspect what files were added, moved, or deleted within a specific changeset.
- 2Performing guarded checkinsDevelopers can use the agent to prepare a checkin for specific paths, ensuring Unity .meta files are included.
- 3Previewing complex mergesYou can ask an AI client to identify potential conflicts in a merge before any changes are actually applied to the workspace.
Written from the project's README. Every use case is checked against a quote from it.
How to install Unity Version Control MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Unity Version Control MCP in Claude Code
$ claude mcp add --env 'UVCS_WORKSPACE=<UVCS_WORKSPACE>' unity-version-control-mcp -- npx -y @proanima/uvcs-mcpInstall Unity Version Control MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"unity-version-control-mcp": {
"command": "npx",
"args": [
"-y",
"@proanima/uvcs-mcp"
],
"env": {
"UVCS_WORKSPACE": "<UVCS_WORKSPACE>"
}
}
}
}Install Unity Version Control MCP in VS Code
.vscode/mcp.json
{
"servers": {
"unity-version-control-mcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@proanima/uvcs-mcp"
],
"env": {
"UVCS_WORKSPACE": "<UVCS_WORKSPACE>"
}
}
}
}Install Unity Version Control MCP in VS Code CLI
$ code --add-mcp '{"name":"unity-version-control-mcp","type":"stdio","command":"npx","args":["-y","@proanima/uvcs-mcp"],"env":{"UVCS_WORKSPACE":"<UVCS_WORKSPACE>"}}'Install Unity Version Control MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"unity-version-control-mcp": {
"command": "npx",
"args": [
"-y",
"@proanima/uvcs-mcp"
],
"env": {
"UVCS_WORKSPACE": "<UVCS_WORKSPACE>"
}
}
}
}Install Unity Version Control MCP in Codex
$ codex mcp add unity-version-control-mcp --env 'UVCS_WORKSPACE=<UVCS_WORKSPACE>' -- npx -y @proanima/uvcs-mcpInstall Unity Version Control MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.unity-version-control-mcp] command = "npx" args = ["-y", "@proanima/uvcs-mcp"] [mcp_servers.unity-version-control-mcp.env] UVCS_WORKSPACE = "<UVCS_WORKSPACE>"
Install Unity Version Control MCP in Gemini CLI
$ gemini mcp add -s user -e 'UVCS_WORKSPACE=<UVCS_WORKSPACE>' unity-version-control-mcp npx -- -y @proanima/uvcs-mcpInstall Unity Version Control MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"unity-version-control-mcp": {
"command": "npx",
"args": [
"-y",
"@proanima/uvcs-mcp"
],
"env": {
"UVCS_WORKSPACE": "<UVCS_WORKSPACE>"
}
}
}
}Unity Version Control MCP tools 23
Detected from the READMEuvcs_doctoruvcs_policy_statusuvcs_setup_statusuvcs_workspace_statusuvcs_pending_changesuvcs_branch_infouvcs_locksuvcs_unity_meta_diagnosticsuvcs_style_rulesuvcs_style_setup_checkuvcs_name_previewuvcs_release_plan
| uvcs_doctor | — | |
| uvcs_policy_status | — | |
| uvcs_setup_status | — | |
| uvcs_workspace_status | — | |
| uvcs_pending_changes | — | |
| uvcs_branch_info | — | |
| uvcs_locks | — | |
| uvcs_unity_meta_diagnostics | — | |
| uvcs_style_rules | — | |
| uvcs_style_setup_check | — | |
| uvcs_name_preview | — | |
| uvcs_release_plan | — |
Show all 23 toolsShow fewer tools
uvcs_diff_fileuvcs_changeset_diffuvcs_revision_diffuvcs_file_historyuvcs_annotateuvcs_branch_listuvcs_label_listuvcs_merge_previewuvcs_cleanup_candidatesuvcs_branch_safety_reportuvcs_changeset_analytics
| uvcs_diff_file | — | |
| uvcs_changeset_diff | — | |
| uvcs_revision_diff | — | |
| uvcs_file_history | — | |
| uvcs_annotate | — | |
| uvcs_branch_list | — | |
| uvcs_label_list | — | |
| uvcs_merge_preview | — | |
| uvcs_cleanup_candidates | — | |
| uvcs_branch_safety_report | — | |
| uvcs_changeset_analytics | — |
Configuration
UVCS_WORKSPACERequiredAbsolute path of the Plastic SCM / Unity Version Control workspace (the folder that contains .plastic).
UVCS_ALLOWED_REPOSrepository@server:port identities the workspace must match, separated by ';' (the guarded profile).
UVCS_ALLOWED_WORKSPACESWorkspace paths the server may use, separated by ';'. Set it to UVCS_WORKSPACE to pin the workspace.
UVCS_CM_PATHAbsolute path of the cm executable when it is not on PATH (GUI clients on macOS often need it).
UVCS_MCP_MODEUVCS_MCP_MODEreadonly (default) for inspection only; standard enables prepare/confirm write tools.
UVCS_WORKSPACE
| Name | Description | |
|---|---|---|
| UVCS_WORKSPACE | Absolute path of the Plastic SCM / Unity Version Control workspace (the folder that contains .plastic). | Required |
| UVCS_ALLOWED_REPOS | repository@server:port identities the workspace must match, separated by ';' (the guarded profile). | |
| UVCS_ALLOWED_WORKSPACES | Workspace paths the server may use, separated by ';'. Set it to UVCS_WORKSPACE to pin the workspace. | |
| UVCS_CM_PATH | Absolute path of the cm executable when it is not on PATH (GUI clients on macOS often need it). | |
| UVCS_MCP_MODE | — | |
| UVCS_MCP_MODE | readonly (default) for inspection only; standard enables prepare/confirm write tools. | |
| UVCS_WORKSPACE | — |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledPass
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubUVCS MCP - Unity Version Control / Plastic SCM MCP Server

Safe MCP server for Plastic SCM, Unity Version Control, and Unity DevOps Version Control source-control workspaces (cm 10.0.16.6656+, including 11.x).
UVCS MCP connects AI IDEs and coding agents to the local cm CLI through a fixed allowlist of documented SCM commands. It helps agents inspect source-control workspace state, prepare changes, create branches and labels, run guarded checkins, and perform merges without arbitrary shell access.
Current release: 1.4.1. Supported cm clients: 10.0.16.6656 and newer, including Unity Version Control / Unity DevOps Version Control 11.x.
Requirements
- Node.js 22 or newer (tested on 22, 24, and 26);
- an existing Plastic SCM / Unity Version Control workspace;
- the
cmCLI.initfinds it onPATHor in the standard install folders and writes its absolute path; otherwise pass--cm=<path>; - a logged-in
cmclient with access to the workspace server.
Not a Unity Editor MCP
UVCS MCP is not a Unity Editor automation server. It does not control scenes, GameObjects, Play Mode, Unity packages, editor windows, builds, or runtime objects.
It works with the Plastic SCM / Unity Version Control cm CLI and focuses on source-control workflows: status, pending changes, branches, labels, checkins, locks, diffs, and merges.
Production Quick Start
For one workspace, start with the guarded profile:
npx -y @proanima/uvcs-mcp@1.4.1 init \
--client=cursor,codex \
--workspace="D:/Repositories/YourWorkspace" \
--safety=guarded \
--print-config
The preview shows only the uvcs entries, the target files, and whether each file would be created, merged, or left unchanged. Project files such as .cursor/mcp.json go into the workspace folder; pass --project-dir=<folder> to put them elsewhere. Remove --print-config to apply it, then validate the result:
npx -y @proanima/uvcs-mcp@1.4.1 doctor \
--workspace="D:/Repositories/YourWorkspace"
Restart the MCP client, then call:
uvcs_setup_status
uvcs_workspace_status
uvcs_style_setup_check
Use readonly when inspection is sufficient. Use standard only for trusted or disposable workspaces where repository identity pinning is intentionally not required.
Configure the MCP client to auto-approve only read-only tools and to ask you before every *_confirm tool. See Clients.
AI-Assisted Install
Ask your AI IDE to install this MCP server from the GitHub repository URL.
For example:
Install this MCP server from https://github.com/ProAnima/unity-version-control-mcp, configure it for my Plastic SCM / Unity Version Control source-control workspace, and run uvcs_doctor.
Install From a Clone
Use a clone only when client configuration should run that checkout instead of the npm package:
git clone https://github.com/ProAnima/unity-version-control-mcp.git uvcs-mcp
cd uvcs-mcp
npm ci
node src/cli.js init-local --client=cursor --workspace="D:/Repositories/YourWorkspace"
Always pass --workspace (or --project-dir): project files are written into the workspace folder, and init refuses to write them into the uvcs-mcp folder itself. Preview first with --print-config.
Restart your MCP client, then ask it to run:
uvcs_doctor
uvcs_workspace_status
Manual Setup By OS
Windows:
npx -y @proanima/uvcs-mcp@1.4.1 init --client=cursor --workspace="D:\Repositories\YourWorkspace"
macOS:
npx -y @proanima/uvcs-mcp@1.4.1 init --client=cursor --workspace="$HOME/Repositories/YourWorkspace"
Linux:
npx -y @proanima/uvcs-mcp@1.4.1 init --client=cursor --workspace="$HOME/Repositories/YourWorkspace"
Replace cursor with your client, or list several separated by commas. If cm is not found, add --cm=/path/to/cm. On macOS this matters for GUI clients, which do not inherit the shell PATH; init writes the absolute cm path as UVCS_CM_PATH for that reason.
init validates every target before writing. A malformed or JSONC config aborts the run with nothing written, unless --skip-invalid is passed, which skips that client and prints the entry to add by hand. Changed files are backed up as <file>.<YYYYMMDDHHmmss>.bak; unchanged files are not rewritten. Run uvcs-mcp init --help for every option.
Manual MCP Block
{
"command": "npx",
"args": ["-y", "@proanima/uvcs-mcp@1.4.1"],
"env": {
"UVCS_WORKSPACE": "D:/Repositories/YourWorkspace",
"UVCS_MCP_MODE": "readonly"
}
}
On native Windows npx is the npx.cmd shim. Claude Code, Claude Desktop, Cursor, Codex 0.59+, Kiro, and OpenCode resolve it themselves. For Antigravity and Windsurf / Devin Desktop, or if a client reports spawn npx ENOENT, use "command": "cmd" with "args": ["/c", "npx", "-y", "@proanima/uvcs-mcp@1.4.1"]. See Clients.
Every environment variable is described in Configuration.
MCP Registry
The server is listed in the official MCP Registry as io.github.ProAnima/uvcs-mcp. Clients and directories that read the registry can install it from there; it still needs a local cm CLI and a workspace path (UVCS_WORKSPACE).
Supported Clients
- Cursor (project and global)
- Codex
- Claude Desktop
- Claude Code (project
.mcp.json;initalso prints the equivalentclaude mcp add --scope usercommand) - OpenCode (project and global)
- Antigravity (project and global)
- Kiro (project and global)
- Windsurf / Devin Desktop
- Zed (template only)
See Clients for file locations.
Safety Model
- Default mode is
readonly; an unrecognizedUVCS_MCP_MODEalso meansreadonly. - Protocol handling is provided by the official MCP TypeScript SDK.
- Tool input is validated server-side with strict schemas.
- Write tools require
UVCS_MCP_MODE=standard. - Every write uses
*_preparefollowed by the matching*_confirm, and tools carry MCP annotations so clients can auto-approve reads and require approval for writes. - Checkin takes all tracked pending changes, or only the given
paths; a path-scoped checkin adds the.metapartner of every selected Unity asset and refuses assets whose.metais still private. - Merges with conflicts are refused at prepare and again at confirm, so
uvcs_mergedoes not start a merge that the preview reports as conflicting. - Item paths, branch names, and label names that
cmwould read as options (leading-) are rejected, and item paths cannot contain the wildcards*or?. - Write confirmations are serialized per workspace and across MCP processes, and switch, merge, update, undo, checkout, release checkout, and checkin revalidate workspace state after prepare.
cmruns without a shell and with stdin closed, under separate read and write timeouts and an output limit.- Repository delete, repository rename, arbitrary
cm, arbitrary shell execution, and rawcm apistartup are not exposed. - Optional JSONL audit logging is available with
UVCS_AUDIT_LOG=/path/to/uvcs-mcp-audit.jsonl.
Tools
uvcs_doctoruvcs_policy_statusuvcs_setup_statusuvcs_workspace_statusuvcs_pending_changesuvcs_branch_infouvcs_locksuvcs_checkout_prepare/uvcs_checkout_confirmuvcs_release_checkout_prepare/uvcs_release_checkout_confirmuvcs_unity_meta_diagnosticsuvcs_style_rulesuvcs_style_setup_checkuvcs_style_init_prepare/uvcs_style_init_confirmuvcs_name_previewuvcs_release_planuvcs_diff_fileuvcs_changeset_diffuvcs_revision_diffuvcs_file_historyuvcs_annotateuvcs_branch_listuvcs_label_listuvcs_merge_previewuvcs_cleanup_candidatesuvcs_branch_safety_reportuvcs_update_workspace_prepare/uvcs_update_workspace_confirmuvcs_changeset_analyticsuvcs_add_prepare/uvcs_add_confirmuvcs_undo_prepare/uvcs_undo_confirmuvcs_branch_create_prepare/uvcs_branch_create_confirmuvcs_label_create_prepare/uvcs_label_create_confirmuvcs_switch_workspace_prepare/uvcs_switch_workspace_confirmuvcs_merge_prepare/uvcs_merge_confirmuvcs_checkin_prepare/uvcs_checkin_confirm
History, Review, and Merge Preview
Read-only tools answer "what changed" questions in every safety profile:
uvcs_changeset_difflists items added, changed, moved, or deleted in a changeset (cs:123), a branch (/main/task), a shelve, or between two changesets or labels, and flags Unity assets added, moved, or deleted without their.meta(and the reverse).uvcs_revision_diffreturns a unified line diff of one file for a changeset, between two revisions, or against the workspace copy.uvcs_file_historyanduvcs_annotateshow who changed a file or a line, and when.uvcs_branch_listanduvcs_label_listfind branches and labels by name, owner, date, parent, or branch.uvcs_merge_previewreports what a merge would bring and which items conflict, into the workspace or, withdestination, into any branch on the server, without merging.
Checkin by Path and Exclusive Checkout
uvcs_checkin_prepareacceptspathsto check in only the user's files or folders. Every selected Unity asset brings its.metafile along, new parent folders that the change needs are listed asdependencies, and the token is invalidated if a selected file is edited again before confirm.uvcs_checkout_preparechecks files out before editing. When the server has a lock rule for them (lock.conf), this takes the exclusive lock that protects scenes, prefabs, and other binary assets; files locked by someone else are refused.uvcs_release_checkout_preparereleases checkouts of files whose content did not change. Modified files keep their checkout and their edits until they are checked in.uvcs_locksacceptspathsand ascope(all,user,workspace).
Agent Skill
The package ships an agent skill (SKILL.md) that teaches Claude Code, Codex, Cursor, OpenCode, Gemini CLI, and other SKILL.md agents when and how to use these tools, including the prepare/confirm workflow and Unity .meta rules:
npx -y @proanima/uvcs-mcp@1.4.1 skill install --agent=claude,agents
See Agent Skill for every agent, project-scope installs, and the marketplace ZIP.
Multiple Workspaces
Use a fleet manifest to configure one MCP server for up to 50 named workspaces:
npx -y @proanima/uvcs-mcp@1.4.1 init --manifest=workspaces.json --client=cursor,codex --print-config
Start from templates/fleet/workspaces.example.json. See Multi-Workspace and Fleet Work for safety profiles and the recommended prepare-all/confirm-each workflow.
In fleet mode every tool call requires an explicit workspace selector. Use --fleet-layout=isolated only when you prefer one MCP process per workspace.
Validate every configured workspace before restarting the client:
npx -y @proanima/uvcs-mcp@1.4.1 doctor --manifest=workspaces.json
For mass work, inspect every target first, prepare all writes, present one combined plan, and confirm each workspace independently. Cross-repository operations are not atomic.
Development
npm ci
npm test
npm run lint
npm run check
npm run audit:prod
npm run release:check
npm run smoke:fake
npm run smoke:fleet
npm run smoke:pack
npm run pack:skill
Run the real Plastic SCM smoke test against a disposable or safe workspace:
npm run smoke:plastic -- "D:/Repositories/YourWorkspace"
The smoke test creates temporary branches, labels, checkins, and a merge through MCP tools.
Project Support
- Use GitHub Issues for reproducible bugs, client setup problems, and compatibility reports.
- Use feature requests for new SCM workflows or MCP tools.
- Do not include secrets, access tokens, private server credentials, or full proprietary logs in public issues.
- For security reports, see Security Policy.
Documentation
- Install
- Clients
- Configuration
- Multi-Workspace and Fleet Work
- Security
- Security Review
- Compatibility
- Publishing
- Release notes: 1.4.1
- Release notes: 1.4.0
- Release notes: 1.3.0
- Automation Style
- Production Readiness
- Troubleshooting
- Rules for Agents
- Agent Skill
- Contributing
- Support
- Wiki Source
- Changelog
Maintainer
Ian Panaev, ProAnimaStudio, 2026. Contact: proanimastudio@gmail.com.
Unity Version Control MCP questions
How do I add Unity Version Control MCP to Claude Code?
Run claude mcp add --env 'UVCS_WORKSPACE=<UVCS_WORKSPACE>' unity-version-control-mcp -- npx -y @proanima/uvcs-mcp in your terminal. Add --scope user to make it available in every project.
How do I add Unity Version Control MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does Unity Version Control MCP provide?
It exposes 23 tools, including uvcs_doctor, uvcs_policy_status, uvcs_setup_status, uvcs_workspace_status, uvcs_pending_changes.
Does the UVCS MCP server need the Plastic SCM cm CLI installed?
Yes. It works through the local cm CLI (10.0.16.6656+ including 11.x) and requires a logged-in cm client with access to the workspace server.
Is the Unity Version Control MCP server read-only by default?
Yes, the default mode is readonly, and an unrecognized UVCS_MCP_MODE also falls back to readonly. Write tools require UVCS_MCP_MODE=standard.
Can this server control Unity scenes or Play Mode?
No. It is not a Unity Editor automation server and does not touch scenes, GameObjects, Play Mode, builds, or runtime objects; it only covers source-control workflows.
How do write operations work in this MCP server?
Every write uses a *_prepare tool followed by the matching *_confirm tool, and tools carry MCP annotations so clients can auto-approve reads and require approval for writes.
Can one server handle multiple workspaces?
Yes, a fleet manifest can configure one MCP server for up to 50 named workspaces, and each tool call then needs an explicit workspace selector.