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.2.1. Supported cm clients: 10.0.16.6656 and newer, including Unity Version Control / Unity DevOps Version Control 11.x.
- Node.js 20, 22, or 24;
- an existing Plastic SCM / Unity Version Control workspace;
cmavailable inPATH, or an explicit--cm=<path>;- a logged-in
cmclient with access to the workspace server.
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.
For one workspace, start with the guarded profile:
npx -y @proanima/uvcs-mcp@1.2.1 init \
--client=cursor,codex \
--workspace="D:/Repositories/YourWorkspace" \
--safety=guarded \
--print-configReview the preview, remove --print-config to apply it, and validate the result:
npx -y @proanima/uvcs-mcp@1.2.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.
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.
Or install manually:
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,codex,claude-code,opencode,antigravity,kiro --workspace="D:/Repositories/YourWorkspace"Restart your MCP client, then ask it to run:
uvcs_doctor
uvcs_workspace_status
Preview config changes without writing:
node src/cli.js init-local --client=all --workspace="D:/Repositories/YourWorkspace" --print-configWindows:
node src/cli.js init-local --client=cursor,codex,claude-code,opencode,antigravity,kiro,windsurf --workspace="D:\Repositories\YourWorkspace"macOS:
node src/cli.js init-local --client=cursor,codex,claude-code,opencode,antigravity,kiro,windsurf --workspace="$HOME/Repositories/YourWorkspace"Linux:
node src/cli.js init-local --client=cursor,codex,claude-code,opencode,antigravity,kiro,windsurf --workspace="$HOME/Repositories/YourWorkspace"If cm is not in PATH, add --cm=/path/to/cm or set UVCS_CM_PATH.
npx -y @proanima/uvcs-mcp@1.2.1 init --client=cursor,codex --workspace="D:/Repositories/YourWorkspace" --safety=guardedinit uses the npm package as its install source. Use init-local only when client configuration should run the current git checkout.
Manual MCP block:
{
"command": "npx",
"args": ["-y", "@proanima/uvcs-mcp@1.2.1"],
"env": {
"UVCS_WORKSPACE": "D:/Repositories/YourWorkspace",
"UVCS_MCP_MODE": "readonly"
}
}- Cursor
- Cursor global
- Codex
- Claude Desktop
- Claude Code
- OpenCode
- OpenCode global
- Antigravity
- Kiro
- Kiro global
- Windsurf
- Default mode is
readonly. - 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. - Critical write operations use
*_preparefollowed by matching*_confirm. - Write confirmations are serialized per workspace.
- Confirmed switch, merge, update, and checkin operations revalidate workspace state after prepare.
- Multiple MCP processes coordinate writes through a workspace lock file.
- Read and write commands have separate timeouts and bounded output.
- 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.
uvcs_doctoruvcs_policy_statusuvcs_setup_statusuvcs_workspace_statusuvcs_pending_changesuvcs_branch_infouvcs_locksuvcs_unity_meta_diagnosticsuvcs_style_rulesuvcs_style_setup_checkuvcs_style_init_prepare/uvcs_style_init_confirmuvcs_name_previewuvcs_release_planuvcs_diff_fileuvcs_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
Use a fleet manifest to configure one MCP server for up to 50 named workspaces:
npx -y @proanima/uvcs-mcp@1.2.1 init --manifest=workspaces.json --client=cursor,codex --print-configStart 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.2.1 doctor --manifest=workspaces.jsonFor mass work, inspect every target first, prepare all writes, present one combined plan, and confirm each workspace independently. Cross-repository operations are not atomic.
npm test
npm run check
npm run audit:prod
npm run smoke:fake
npm run smoke:fleetRun 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.
- 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.
- Install
- Clients
- Multi-Workspace and Fleet Work
- Security
- Security Review
- Compatibility
- Publishing
- Release notes: 1.2.1
- Automation Style
- Production Readiness
- Troubleshooting
- Rules for Agents
- Contributing
- Support
- Wiki Source
- Changelog
Ian Panaev, ProAnimaStudio, 2026. Contact: proanimastudio@gmail.com.
