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 分