uvcs_doctor
Check cm, workspace, and UVCS MCP configuration.
无需输入参数。
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.
本地 MCP 服务器,让 AI 助手通过 cm 命令行查看并安全修改 Plastic SCM / Unity Version Control 工作区。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
参照 仓库 中的启动说明。
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.
cm CLI. init finds it on PATH or in the standard install folders and writes its absolute path; otherwise pass --cm=<path>;cm client 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:
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:
Restart the MCP client, then call:
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.
Ask your AI IDE to install this MCP server from the GitHub repository URL.
For example:
Use a clone only when client configuration should run that checkout instead of the npm package:
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:
Windows:
macOS:
Linux:
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.
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.
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).
.mcp.json; init also prints the equivalent claude mcp add --scope user command)See Clients for file locations.
readonly; an unrecognized UVCS_MCP_MODE also means readonly.UVCS_MCP_MODE=standard.*_prepare followed by the matching *_confirm, and tools carry MCP annotations so clients can auto-approve reads and require approval for writes.paths; a path-scoped checkin adds the .meta partner of every selected Unity asset and refuses assets whose .meta is still private.uvcs_merge does not start a merge that the preview reports as conflicting.cm would read as options (leading -) are rejected, and item paths cannot contain the wildcards * or ?.cm runs without a shell and with stdin closed, under separate read and write timeouts and an output limit.cm, arbitrary shell execution, and raw cm api startup are not exposed.UVCS_AUDIT_LOG=/path/to/uvcs-mcp-audit.jsonl.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_confirmRead-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.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).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:
See Agent Skill for every agent, project-scope installs, and the marketplace ZIP.
Use a fleet manifest to configure one MCP server for up to 50 named workspaces:
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:
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.
Run the real Plastic SCM smoke test against a disposable or safe workspace:
The smoke test creates temporary branches, labels, checkins, and a merge through MCP tools.
Ian Panaev, ProAnimaStudio, 2026. Contact: [email protected].
来源:README.md,提交 fa4058a
Check cm, workspace, and UVCS MCP configuration.
无需输入参数。
Show the effective workspace identity, safety profile, allowlists, write limits, and mass-work guidance.
无需输入参数。
Show safety policy and branch/checkin/release naming setup in one place.
无需输入参数。
Return concise workspace status.
无需输入参数。
Return full pending changes from cm status.
无需输入参数。
Return current branch information.
无需输入参数。
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.
pathsscopeDetect common Unity asset/.meta mismatches in the workspace.
无需输入参数。
Return workspace naming and release style rules.
无需输入参数。
Check whether workspace naming/checkin/release style rules exist. If missing, guide the model to ask the user to create them before branch work.
无需输入参数。
Create .uvcs-mcp/style.json with branch naming, checkin message, and release conventions. Requires prepare/confirm. Returns a short-lived confirmation token.
presetoverwritebaseBranchversionFilebranchPrefixCreate .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必填Preview a branch name or checkin message from workspace style rules.
kind必填type必填titlesummarybaseBranchPlan a major, minor, or patch release branch, label, and comments from workspace style rules. Read-only.
projectNamereleaseTypecurrentVersionreleaseVersionReturn 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必填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必填maxItemscompareToReturn 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必填changesetList 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必填maxResultsShow who last changed each line of a text file and in which changeset (blame). Binary files cannot be annotated. Read-only.
filePath必填maxLinesrevisionstartLineList branches, newest first, with owner, parent branch, head changeset, and comment. Read-only.
ownersinceparentnameLikemaxResultsList labels, newest first, with labeled changeset, branch, owner, and comment. Read-only.
ownersincebranchnameLikemaxResultsPreview 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必填maxItemsdestinationUpdate 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.
无需输入参数。
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必填Analyze changesets over an optional date, branch, owner, or comment filter. Read-only.
ownersinceuntilbranchmaxResultscommentLikeRead-only helper that lists temporary/agent branch cleanup candidates for manual review. It never deletes branches or changesets.
patternsmaxResultsRead-only helper that reports current branch, pending changes, and recent changesets before risky branch, merge, or cleanup work.
branchrecentChangesetsAdd 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必填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必填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必填recursiveIrreversibly 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必填Create a Plastic SCM / UVCS branch from a changeset or label. Requires prepare/confirm. Returns a short-lived confirmation token.
branch必填commentfromLabelfromChangesetCreate 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必填Create a Plastic SCM / UVCS label on a changeset. Requires prepare/confirm. Returns a short-lived confirmation token.
label必填target必填commentCreate 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必填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必填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必填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必填commentMerge 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必填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必填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必填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必填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必填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必填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必填已满足适用检查项的 90%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
npx -y @proanima/[email protected] init \ --client=cursor,codex \ --workspace="D:/Repositories/YourWorkspace" \ --safety=guarded \ --print-confignpx -y @proanima/[email protected] doctor \ --workspace="D:/Repositories/YourWorkspace"uvcs_setup_statusuvcs_workspace_statusuvcs_style_setup_checkInstall 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.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"uvcs_doctoruvcs_workspace_statusnpx -y @proanima/[email protected] init --client=cursor --workspace="D:\Repositories\YourWorkspace"npx -y @proanima/[email protected] init --client=cursor --workspace="$HOME/Repositories/YourWorkspace"npx -y @proanima/[email protected] init --client=cursor --workspace="$HOME/Repositories/YourWorkspace"{ "command": "npx", "args": ["-y", "@proanima/[email protected]"], "env": { "UVCS_WORKSPACE": "D:/Repositories/YourWorkspace", "UVCS_MCP_MODE": "readonly" }}npx -y @proanima/[email protected] skill install --agent=claude,agentsnpx -y @proanima/[email protected] init --manifest=workspaces.json --client=cursor,codex --print-confignpx -y @proanima/[email protected] doctor --manifest=workspaces.jsonnpm cinpm testnpm run lintnpm run checknpm run audit:prodnpm run release:checknpm run smoke:fakenpm run smoke:fleetnpm run smoke:packnpm run pack:skillnpm run smoke:plastic -- "D:/Repositories/YourWorkspace"