UVCS MCP

io.github.ProAnima由 GitHub 账号 ProAnima 发布v1.4.1更新于 Nov 2, 2026

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

已验证STDIO仅桌面文件与存储开发者工具

概览

AI 生成的概览

本地 MCP 服务器,让 AI 助手通过 cm 命令行查看并安全修改 Plastic SCM / Unity Version Control 工作区。

可以做什么
  • 查看工作区状态:状态、待提交变更、分支信息、锁、Unity .meta 诊断、策略与配置检查
  • 查阅历史:文件与变更集差异、版本差异、文件历史、逐行标注、分支与标签列表、变更集分析
  • 预览与规划:合并预览、发布计划、分支名与提交信息预览、清理候选、分支安全报告
  • 受控写入(准备/确认两步):添加、撤销、签出与释放签出、提交、创建分支与标签、切换与更新工作区、合并
  • 按工作区风格规则生成分支命名、提交信息与发布约定
适用场景
当需要助手协助 Plastic SCM 或 Unity Version Control 工作区的日常版本控制时使用:查看改动、追溯历史、规划发布,并在用户明确批准下执行提交、分支、标签或合并。它不是 Unity 编辑器自动化服务器。
运行要求
通过 npx 在本地运行,需要 Node.js 22 或更高版本。需要已有的 Plastic SCM / Unity Version Control 工作区,以及已登录且能访问工作区服务器的 cm 命令行(10.0.16.6656 及以上,含 11.x)。必须设置 UVCS_WORKSPACE;GUI 客户端可用 UVCS_CM_PATH 指定 cm 路径。写入工具需 UVCS_MCP_MODE=standard。
安装前请注意
写入工具默认关闭(readonly),仅在 UVCS_MCP_MODE=standard 时启用;每次写入都是准备/确认两步,客户端应要求逐个确认。撤销不可恢复,合并与更新可能产生冲突,不带路径的提交会包含工作区全部已跟踪变更。guarded 配置依赖 UVCS_ALLOWED_REPOS 与 UVCS_ALLOWED_WORKSPACES;standard 模式不再固定仓库身份。可用 UVCS_AUDIT_LOG 记录审计日志。

安装

在 SourceWeft 中

  1. 打开 控制台中的 UVCS MCP,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

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].

来源:README.md,提交 fa4058a

工具

45

uvcs_doctor

Check cm, workspace, and UVCS MCP configuration.

无需输入参数。

uvcs_policy_status

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

无需输入参数。

uvcs_setup_status

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

无需输入参数。

uvcs_workspace_status

Return concise workspace status.

无需输入参数。

uvcs_pending_changes

Return full pending changes from cm status.

无需输入参数。

uvcs_branch_info

Return current branch information.

无需输入参数。

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.

输入参数pathsscope

uvcs_unity_meta_diagnostics

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

无需输入参数。

uvcs_style_rules

Return workspace naming and release style rules.

无需输入参数。

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.

无需输入参数。

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.

输入参数presetoverwritebaseBranchversionFilebranchPrefix

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.

输入参数token必填confirmPhrase必填

uvcs_name_preview

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

输入参数kind必填type必填titlesummarybaseBranch

uvcs_release_plan

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

输入参数projectNamereleaseTypecurrentVersionreleaseVersion

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.

输入参数contextfilePath必填

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.

输入参数source必填maxItemscompareTo

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.

输入参数tofromcontextfilePath必填changeset

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.

输入参数filePath必填maxResults

uvcs_annotate

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

输入参数filePath必填maxLinesrevisionstartLine

uvcs_branch_list

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

输入参数ownersinceparentnameLikemaxResults

uvcs_label_list

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

输入参数ownersincebranchnameLikemaxResults

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.

输入参数source必填maxItemsdestination

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.

无需输入参数。

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.

输入参数token必填confirmPhrase必填

uvcs_changeset_analytics

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

输入参数ownersinceuntilbranchmaxResultscommentLike

uvcs_cleanup_candidates

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

输入参数patternsmaxResults

uvcs_branch_safety_report

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

输入参数branchrecentChangesets

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.

输入参数itemPath必填

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.

输入参数token必填confirmPhrase必填

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.

输入参数itemPath必填recursive

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.

输入参数token必填confirmPhrase必填

uvcs_branch_create_prepare

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

输入参数branch必填commentfromLabelfromChangeset

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.

输入参数token必填confirmPhrase必填

uvcs_label_create_prepare

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

输入参数label必填target必填comment

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.

输入参数token必填confirmPhrase必填

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.

输入参数target必填

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.

输入参数token必填confirmPhrase必填

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.

输入参数source必填comment

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.

输入参数token必填confirmPhrase必填

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.

输入参数paths必填

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.

输入参数token必填confirmPhrase必填

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.

输入参数paths必填

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.

输入参数token必填confirmPhrase必填

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.

输入参数pathsmessage必填

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.

输入参数token必填confirmPhrase必填

版本历史

1
  1. v1.4.1最新Oct 26, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分