UVCS MCP

io.github.ProAnimaPublished by GitHub account ProAnimav1.4.1Updated Nov 2, 2026

Safe Plastic SCM / Unity Version Control MCP: history, review, merge preview, and guarded writes.

VerifiedSTDIODesktop onlyFiles & StorageDeveloper Tools

Overview

AI-generated overview

Local MCP server that lets an AI assistant inspect and safely modify a Plastic SCM / Unity Version Control workspace through the cm CLI.

What you can do
  • Inspect workspace state: status, pending changes, branch info, locks, Unity .meta diagnostics, policy and setup checks
  • Review history: file and changeset diffs, revision diffs, file history, blame, branch and label lists, changeset analytics
  • Preview and plan: merge preview, release plan, branch/message name preview, cleanup candidates, branch safety report
  • Guarded writes with prepare/confirm: add, undo, checkout and release checkout, checkin, branch and label creation, workspace switch and update, merge
  • Apply workspace style rules for branch naming, checkin messages and release conventions
When to use it
Use it when an assistant should help with day-to-day source control in a Plastic SCM or Unity Version Control workspace: reviewing what changed, tracing history, planning releases, and performing checkins, branches, labels or merges under explicit user approval. It is not a Unity Editor automation server.
Requirements
Runs locally via npx, so Node.js 22 or newer is needed. Requires an existing Plastic SCM / Unity Version Control workspace and a logged-in cm CLI (10.0.16.6656 or newer, including 11.x) with access to the workspace server. UVCS_WORKSPACE is required; UVCS_CM_PATH helps GUI clients find cm. Write tools need UVCS_MCP_MODE=standard.
Before you install
Write tools are disabled by default (readonly) and only enabled with UVCS_MCP_MODE=standard; every write is a prepare/confirm pair, so clients should require approval before each confirm tool. Undo is irreversible, merges and updates can create conflicts, and checkin without paths takes all tracked pending changes. The guarded profile relies on UVCS_ALLOWED_REPOS and UVCS_ALLOWED_WORKSPACES; standard mode drops repository identity pinning. Optional audit logging via UVCS_AUDIT_LOG.

Installation

In SourceWeft

  1. Open UVCS MCP in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

UVCS MCP - Unity Version Control / Plastic SCM MCP Server

[UVCS MCP header]

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 cm CLI. init finds it on PATH or in the standard install folders and writes its absolute path; otherwise pass --cm=<path>;
  • a logged-in cm client 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:

bash
npx -y @proanima/[email protected] 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:

bash
npx -y @proanima/[email protected] doctor \  --workspace="D:/Repositories/YourWorkspace"

Restart the MCP client, then call:

text
uvcs_setup_statusuvcs_workspace_statusuvcs_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:

text
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:

bash
git clone https://github.com/ProAnima/unity-version-control-mcp.git uvcs-mcpcd uvcs-mcpnpm cinode 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:

text
uvcs_doctoruvcs_workspace_status

Manual Setup By OS

Windows:

powershell
npx -y @proanima/[email protected] init --client=cursor --workspace="D:\Repositories\YourWorkspace"

macOS:

bash
npx -y @proanima/[email protected] init --client=cursor --workspace="$HOME/Repositories/YourWorkspace"

Linux:

bash
npx -y @proanima/[email protected] 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

json
{  "command": "npx",  "args": ["-y", "@proanima/[email protected]"],  "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/[email protected]"]. 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; init also prints the equivalent claude mcp add --scope user command)
  • 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 unrecognized UVCS_MCP_MODE also means 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.
  • Every write uses *_prepare followed 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 .meta partner of every selected Unity asset and refuses assets whose .meta is still private.
  • Merges with conflicts are refused at prepare and again at confirm, so uvcs_merge does not start a merge that the preview reports as conflicting.
  • Item paths, branch names, and label names that cm would 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.
  • cm runs 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 raw cm api startup are not exposed.
  • Optional JSONL audit logging is available with UVCS_AUDIT_LOG=/path/to/uvcs-mcp-audit.jsonl.

Tools

  • uvcs_doctor
  • uvcs_policy_status
  • uvcs_setup_status
  • uvcs_workspace_status
  • uvcs_pending_changes
  • uvcs_branch_info
  • uvcs_locks
  • uvcs_checkout_prepare / uvcs_checkout_confirm
  • uvcs_release_checkout_prepare / uvcs_release_checkout_confirm
  • uvcs_unity_meta_diagnostics
  • uvcs_style_rules
  • uvcs_style_setup_check
  • uvcs_style_init_prepare / uvcs_style_init_confirm
  • uvcs_name_preview
  • uvcs_release_plan
  • 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_update_workspace_prepare / uvcs_update_workspace_confirm
  • uvcs_changeset_analytics
  • uvcs_add_prepare / uvcs_add_confirm
  • uvcs_undo_prepare / uvcs_undo_confirm
  • uvcs_branch_create_prepare / uvcs_branch_create_confirm
  • uvcs_label_create_prepare / uvcs_label_create_confirm
  • uvcs_switch_workspace_prepare / uvcs_switch_workspace_confirm
  • uvcs_merge_prepare / uvcs_merge_confirm
  • uvcs_checkin_prepare / uvcs_checkin_confirm

History, Review, and Merge Preview

Read-only tools answer "what changed" questions in every safety profile:

  • uvcs_changeset_diff lists 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_diff returns a unified line diff of one file for a changeset, between two revisions, or against the workspace copy.
  • uvcs_file_history and uvcs_annotate show who changed a file or a line, and when.
  • uvcs_branch_list and uvcs_label_list find branches and labels by name, owner, date, parent, or branch.
  • uvcs_merge_preview reports what a merge would bring and which items conflict, into the workspace or, with destination, into any branch on the server, without merging.

Checkin by Path and Exclusive Checkout

  • uvcs_checkin_prepare accepts paths to check in only the user's files or folders. Every selected Unity asset brings its .meta file along, new parent folders that the change needs are listed as dependencies, and the token is invalidated if a selected file is edited again before confirm.
  • uvcs_checkout_prepare checks 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_prepare releases checkouts of files whose content did not change. Modified files keep their checkout and their edits until they are checked in.
  • uvcs_locks accepts paths and a scope (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:

bash
npx -y @proanima/[email protected] 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:

bash
npx -y @proanima/[email protected] 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:

bash
npx -y @proanima/[email protected] 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

bash
npm cinpm testnpm run lintnpm run checknpm run audit:prodnpm run release:checknpm run smoke:fakenpm run smoke:fleetnpm run smoke:packnpm run pack:skill

Run the real Plastic SCM smoke test against a disposable or safe workspace:

bash
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

Maintainer

Ian Panaev, ProAnimaStudio, 2026. Contact: [email protected].

Source: README.md at commit fa4058a

Tools

45

uvcs_doctor

Check cm, workspace, and UVCS MCP configuration.

Takes no parameters.

uvcs_policy_status

Show the effective workspace identity, safety profile, allowlists, write limits, and mass-work guidance.

Takes no parameters.

uvcs_setup_status

Show safety policy and branch/checkin/release naming setup in one place.

Takes no parameters.

uvcs_workspace_status

Return concise workspace status.

Takes no parameters.

uvcs_pending_changes

Return full pending changes from cm status.

Takes no parameters.

uvcs_branch_info

Return current branch information.

Takes no parameters.

uvcs_locks

List exclusive locks (cm lock list). Without paths, the list covers every repository on the server; pass paths to check specific files in this workspace.

Parameterspathsscope

uvcs_unity_meta_diagnostics

Detect common Unity asset/.meta mismatches in the workspace.

Takes no parameters.

uvcs_style_rules

Return workspace naming and release style rules.

Takes no parameters.

uvcs_style_setup_check

Check whether workspace naming/checkin/release style rules exist. If missing, guide the model to ask the user to create them before branch work.

Takes no parameters.

uvcs_style_init_prepare

Create .uvcs-mcp/style.json with branch naming, checkin message, and release conventions. Requires prepare/confirm. Returns a short-lived confirmation token.

ParameterspresetoverwritebaseBranchversionFilebranchPrefix

uvcs_style_init_confirm

Create .uvcs-mcp/style.json with branch naming, checkin message, and release conventions. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_name_preview

Preview a branch name or checkin message from workspace style rules.

ParameterskindrequiredtyperequiredtitlesummarybaseBranch

uvcs_release_plan

Plan a major, minor, or patch release branch, label, and comments from workspace style rules. Read-only.

ParametersprojectNamereleaseTypecurrentVersionreleaseVersion

uvcs_diff_file

Return a unified line diff of one pending file: the revision loaded in the workspace against the file on disk. Output longer than 200000 characters is truncated. Read-only.

ParameterscontextfilePathrequired

uvcs_changeset_diff

List the items added, changed, moved, or deleted in a changeset, label, shelve, or branch, or between two changesets/labels, with Unity .meta pairing warnings. Read-only.

ParameterssourcerequiredmaxItemscompareTo

uvcs_revision_diff

Return a unified line diff of one text file between two revisions, or between a revision and the workspace copy. Pass changeset to see what that changeset changed in the file. Output longer than 200000 characters is truncated. Read-only.

ParameterstofromcontextfilePathrequiredchangeset

uvcs_file_history

List the revisions of a file or directory, newest first, with changeset, branch, date, owner, and comment. Dates use the cm client locale format (cm history has no date format option). Read-only.

ParametersfilePathrequiredmaxResults

uvcs_annotate

Show who last changed each line of a text file and in which changeset (blame). Binary files cannot be annotated. Read-only.

ParametersfilePathrequiredmaxLinesrevisionstartLine

uvcs_branch_list

List branches, newest first, with owner, parent branch, head changeset, and comment. Read-only.

ParametersownersinceparentnameLikemaxResults

uvcs_label_list

List labels, newest first, with labeled changeset, branch, owner, and comment. Read-only.

ParametersownersincebranchnameLikemaxResults

uvcs_merge_preview

Preview a merge without changing anything: files that would be taken from the source, items added/moved/deleted, and conflicts. Without destination the target is the workspace branch; with destination the preview is computed on the server for that branch. Read-only.

ParameterssourcerequiredmaxItemsdestination

uvcs_update_workspace_prepare

Update the workspace to the latest changeset of its branch. Local edits to files changed upstream can produce merge conflicts. Requires prepare/confirm. Returns a short-lived confirmation token.

Takes no parameters.

uvcs_update_workspace_confirm

Update the workspace to the latest changeset of its branch. Local edits to files changed upstream can produce merge conflicts. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_changeset_analytics

Analyze changesets over an optional date, branch, owner, or comment filter. Read-only.

ParametersownersinceuntilbranchmaxResultscommentLike

uvcs_cleanup_candidates

Read-only helper that lists temporary/agent branch cleanup candidates for manual review. It never deletes branches or changesets.

ParameterspatternsmaxResults

uvcs_branch_safety_report

Read-only helper that reports current branch, pending changes, and recent changesets before risky branch, merge, or cleanup work.

ParametersbranchrecentChangesets

uvcs_add_prepare

Add a path to Plastic SCM / UVCS version control recursively. For Unity assets also add the matching .meta file. Requires prepare/confirm. Returns a short-lived confirmation token.

ParametersitemPathrequired

uvcs_add_confirm

Add a path to Plastic SCM / UVCS version control recursively. For Unity assets also add the matching .meta file. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_undo_prepare

Irreversibly undo pending changes for one path inside the selected workspace. Workspace-root undo is forbidden. Requires prepare/confirm. Returns a short-lived confirmation token.

ParametersitemPathrequiredrecursive

uvcs_undo_confirm

Irreversibly undo pending changes for one path inside the selected workspace. Workspace-root undo is forbidden. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_branch_create_prepare

Create a Plastic SCM / UVCS branch from a changeset or label. Requires prepare/confirm. Returns a short-lived confirmation token.

ParametersbranchrequiredcommentfromLabelfromChangeset

uvcs_branch_create_confirm

Create a Plastic SCM / UVCS branch from a changeset or label. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_label_create_prepare

Create a Plastic SCM / UVCS label on a changeset. Requires prepare/confirm. Returns a short-lived confirmation token.

Parameterslabelrequiredtargetrequiredcomment

uvcs_label_create_confirm

Create a Plastic SCM / UVCS label on a changeset. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_switch_workspace_prepare

Switch the workspace to a branch, changeset, or label. Refused while tracked pending changes exist. Requires prepare/confirm. Returns a short-lived confirmation token.

Parameterstargetrequired

uvcs_switch_workspace_confirm

Switch the workspace to a branch, changeset, or label. Refused while tracked pending changes exist. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_merge_prepare

Merge a branch/changeset/label into the current workspace branch. Refused while tracked pending changes exist or when the merge has conflicts (resolve those in the UVCS client); the merge result stays pending until a checkin. Requires prepare/confirm. Returns a short-lived confirmation token.

Parameterssourcerequiredcomment

uvcs_merge_confirm

Merge a branch/changeset/label into the current workspace branch. Refused while tracked pending changes exist or when the merge has conflicts (resolve those in the UVCS client); the merge result stays pending until a checkin. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_checkout_prepare

Check out files before editing them. When the server has a lock rule for them (lock.conf), this takes the exclusive lock so nobody else can check them out or check in changes to them, which is how teams protect scenes, prefabs, and other binary assets. Files locked by someone else are refused. Requires prepare/confirm. Returns a short-lived confirmation token.

Parameterspathsrequired

uvcs_checkout_confirm

Check out files before editing them. When the server has a lock rule for them (lock.conf), this takes the exclusive lock so nobody else can check them out or check in changes to them, which is how teams protect scenes, prefabs, and other binary assets. Files locked by someone else are refused. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_release_checkout_prepare

Release checkouts (and their locks) of files whose content did not change. Modified files keep their checkout and their edits; check those in or undo them. Requires prepare/confirm. Returns a short-lived confirmation token.

Parameterspathsrequired

uvcs_release_checkout_confirm

Release checkouts (and their locks) of files whose content did not change. Modified files keep their checkout and their edits; check those in or undo them. Requires prepare/confirm. Confirms and executes a prepared operation. Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

uvcs_checkin_prepare

Prepare a checkin and return a short-lived confirmation token. Without paths it takes ALL tracked pending changes in the workspace; with paths only the changes at or below those paths, plus the Unity .meta partner of every selected asset. Private files are never included, except a new parent folder that a selected item needs (listed in dependencies). Review the returned changes with the user before confirming.

Parameterspathsmessagerequired

uvcs_checkin_confirm

Run a prepared checkin (all tracked pending changes, or the selected paths). Call only after the user has reviewed the prepared payload and explicitly approved this exact operation.

ParameterstokenrequiredconfirmPhraserequired

Version history

1
  1. v1.4.1LatestOct 26, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts