DCC-MCP Core

io.github.dcc-mcpv0.20.42更新于 Oct 8, 2026

Agent control plane for DCC and engine hosts: one MCP endpoint, one tool contract.

概览

AI 生成的概览

为助手提供单一 MCP 端点,用于发现并操控 Maya、Blender、Unreal、Photoshop 等桌面创作工具。

功能
DCC-MCP Core 是一个本地控制平面,通过单一 MCP 端点和统一工具契约接入多种桌面 DCC 应用与游戏引擎。它对外公布发现与调度包装工具(search、describe、load_skill、call),而不是庞大的扁平工具列表,并把调用路由到正确的活动会话,再将操作派发到宿主主线程。它还提供配方运行时、打包的 Skill、带写后读回后置条件的结构化结果,以及面向无 API 工具的有界截图点击 UI Control 兜底能力。
适用场景
当助手或 CI 任务需要操作正在运行的桌面创作应用或引擎会话,而不是每轮生成一次性脚本时使用。它适合希望把场景检查、资产准备、发布门禁等流程步骤做成可复用、带版本的 Skill 的工作室。纯网页或无界面任务不需要它。
运行要求
以仅桌面本地进程方式运行,从 PyPI 安装 dcc-mcp-server,并用 uvx 以 streamable-http 启动。CLI 路径需要 Python 工具链,还需要目标 DCC 应用及其适配器。网关绑定的端口由 DCC_MCP_GATEWAY_PORT 指定,传输 URL 中的端口必须与之匹配。未声明身份验证。
安装前请注意
它能驱动真实桌面应用:工具可能修改、导出或删除场景与项目数据,UI Control 会向绑定的窗口发送截图和模拟点击。可用 DCC_MCP_CUA_ALLOW_RAW_INPUT=false 关闭原始输入。安装脚本应下载后检查,不要直接管道给 shell;update apply 只应在用户确认后运行。网关会暴露本地 HTTP 端点和 Admin UI,且未声明身份验证。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

dcc-mcp-core

[dcc-mcp-core logo]

[Core PyPI] [Server PyPI] [CI] [GitHub Release] [License]

中文 | English

Website · Marketplace · Showcase · For Agents · Ecosystem

Skill-first, Rust-powered control plane for a growing creative-tool ecosystem.

dcc-mcp-core connects agents to desktop DCCs, game engines, 2D tools, production systems, asset providers, profilers, and custom studio hosts through discoverable MCP and REST capabilities. It provides the gateway, Skills, structured results, main-thread dispatch, diagnostics, IPC, workflows, and packaged CLI/server binaries needed to operate real sessions.

One protocol, across every registered host. Every host adapter in this ecosystem implements the same MCP protocol and the same tool contract. The registry is the source of truth, and the count is reproducible from a checkout:

bash
rg -c '^    tags: \[.*"adapter".*\]' dcc-mcp-catalog.yml

That reports 38 adapter entries in dcc-mcp-catalog.yml, covering these hosts:

AreaHosts
Desktop DCCMaya, Blender, Houdini, 3ds Max, Cinema 4D, Nuke, Katana, MotionBuilder, ZBrush, Mari, Substance 3D Designer, Substance 3D Painter, Marmoset
Engines and real-timeUnreal, Unity, Godot, Tiled, TouchDesigner
Design, image, videoPhotoshop, Illustrator, GIMP, Krita, After Effects, Premiere, Kdenlive, PowerPoint, OBS, ComfyUI
CAD, procedural, interchangeFreeCAD, OpenSCAD, SketchUp, Material Maker, LiquiGen, OpenUSD
Production tracking and QAFlow Production Tracking (ShotGrid), RenderDoc, Shogun, Wwise

The full list, with install metadata, is published in the ecosystem directory.

Three shared contracts keep it one matrix. Host coverage is only useful if the adapters stay interchangeable. Three contracts published by core are what stop 38 adapters from becoming 38 unrelated servers:

ContractWhat it guaranteesWhere to verify
Core shared contractOne shared asset-import contract (asset_import), one discovery decision schema (dcc-discovery-decision-v1), and postcondition write-then-read-back so a tool proves its own resultpython/dcc_mcp_core/asset_import.py, contracts/dcc-discovery-decision-v1.schema.json, python/dcc_mcp_core/runtime/postcondition.py
Recipe runtimerecipes__list / recipes__get / recipes__validate / recipes__apply driven by a declarative RECIPES.yaml, so a host ships capabilities as data instead of a bespoke serverskills/mesh-ops/RECIPES.yaml
Marketplace Skill contractEvery published entry carries examplePrompts; Skills, Studio and Infrastructure entries must also declare recovery and undo, so failures have a next step and edits have one rollback stepEnforced in dcc-mcp/marketplace by validate_marketplace.py — run python scripts/validate_marketplace.py prompt-contract (see prompt-contract.md)

How to compare us. Compare host coverage and contract completeness — both reproducible from the commands and files above. We do not claim a ranking, and we do not compare on stars or tool counts.

Features

  • Bundled agent skill. Every checkout and every release ships llms.txt — a compact index — and llms-full.txt, the full API reference. Both are machine-readable, so an agent can read them straight from the repository and start working without installing a Skill, browsing the marketplace, or scraping rendered docs.
  • Skills as the production unit. Ship capability as a versioned SKILL.md package with tools.yaml, progressive discovery, lint and schema validation, and hot reload (DccSkillHotReloader).
  • Main-thread dispatch. Actions are queued onto the DCC's main thread, so calls are safe against applications that crash when scripted off-thread.
  • Structured results and postconditions. Every call returns typed results, and the shared postcondition contract writes then reads back so a tool has to prove its own effect.
  • Multi-instance routing. One gateway fronts every live DCC session and publishes gateway://instances, so an agent talks to one endpoint no matter how many hosts are running.
  • UI Control as a fallback. For tools with no API at all, bounded screenshot-and-click automation brings them into the same control plane (DCC UI Control).

Choose your entry point

You want to…Start with
Control a running DCC from an agent or CI jobInstall the dcc-mcp Agent Skill, then use dcc-mcp-cli
Expose a DCC adapter over MCP/RESTcreate_skill_server
Add tools without Python registration codeSKILL.md + tools.yaml
Discover and install reusable SkillsDCC-MCP Marketplace
Build a new DCC adapternew-adapter-onboarding.md
Understand routing and multi-instance behaviorgateway.md
Integrate from any HTTP clientrest-api-surface.md

The current contract

The default agent path is CLI + REST:

text
dcc-mcp-cli dcc-types (when adapter support is unclear)  -> list  -> search  -> describe  -> load-skill (only when needed)  -> call

The gateway keeps tools/list bounded. It advertises the canonical discovery/dispatch wrappers (search, describe, load_skill, and call) instead of fanning every backend tool into one large list. Backend capabilities are discovered by search, inspected by describe, and invoked through the wrapper or the REST twin (POST /v1/search, /v1/describe, /v1/call).

When a concrete DCC session is needed, read gateway://instances; each entry already includes its mcp_url. Do not use the removed legacy instance tools (list_dcc_instances, get_dcc_instance, or connect_to_dcc). Wrapper inputs belong inside arguments; do not put backend fields beside tool_slug.

For direct per-DCC MCP connections, the compatibility discovery names (search_tools, describe_tool, and call_tool) remain available where the server exposes them. New gateway integrations should use the canonical names above.

Why dcc-mcp-core exists

The shortest DCC agent demo asks a model to write and run a mayapy, hython, or Blender Python script. A production pipeline cannot depend on getting the right script from the model on every turn. Repeated code generation costs tokens, varies with the model and context, and leaves every adapter to rebuild transport, main-thread dispatch, validation, process lifecycle, routing, and diagnostics.

dcc-mcp-core moves that common engineering into one reusable control plane:

LayerReused capability
IntegrationMCP and REST endpoints, Host RPC/IPC, typed schemas, resources, prompts, and structured results
DCC runtimeMain-thread affinity, readiness, multi-instance routing, async jobs, cancellation, checkpoints, workflows, artefacts, and UI Control
Skill deliverySKILL.md packages, progressive discovery, lint/schema validation, hot reload, persistence, marketplace distribution, and project/team scopes
OperationsCLI, gateway, Admin UI, policies, audit records, traces, logs, metrics, health checks, and VRS replay

This project provides the infrastructure for agents to control DCC applications; it does not build or prescribe the agent itself. Agents and models will change, while studio interfaces, permission boundaries, and pipeline knowledge still need to be maintained. The framework turns those investments into reusable engineering assets.

Existing tools need AI access too

Adding an AI-facing interface to a new tool is usually straightforward. The harder problem is making years of existing tools usable by agents when they have no API, cannot be modified, or expose part of a workflow only through a window or modal dialog.

For that gap, dcc-mcp-core provides the bounded Computer Use-style DCC UI Control capability. It combines exact-window screenshots, semantic controls when available, scoped actions, waits, recording, policy checks, audit, and result verification. Native Skills/APIs remain the preferred path; UI Control lets legacy and interface-only workflows join the same agent control plane without pretending that every application has a clean programmable API.

MCP is an entry point, not the ceiling

MCP is the industry-standard agent interface we reuse, not the limit of the framework. A stable Python, C++, HTTP, command-port, or native plugin interface can be integrated under the same discovery, execution, safety, and operations contracts.

We also include useful vendor capabilities instead of replacing them. Unreal Engine 5.8 introduced an experimental built-in MCP server and Toolset Registry. The Unreal Official MCP Bridge enables and calls those official toolsets through DCC MCP without redistributing them. Vendor tools, DCC-MCP tools, and studio tools can share one agent-facing workflow.

Skills are the production unit

A Skill turns proven pipeline knowledge into a versioned, typed, testable, and distributable operation. A lower-cost model may struggle to invent scene-editing logic from scratch but remain effective when selecting a well-described tool and supplying validated arguments. Studios can distribute different Skill sets by project and production stage, reducing repeated code generation, token use, and model-dependent variance.

This is also the practical customization boundary for studio TDs and TAs. Core and adapters keep ownership of host connectivity, main-thread execution, routing, safety, and observability. A TD or TA can encode the actual project flow—naming and scene checks, asset preparation, publish gates, cache/export rules, and review hand-offs—as a Skill made from SKILL.md, tools.yaml, and the studio's existing scripts. Those Skills can be tested, scoped to a project or team, and distributed through a public or private marketplace without forking the control plane or rebuilding an adapter.

One contract, a growing ecosystem

The same Skill and runtime contract now spans much more than the original DCC adapters:

AreaExamples
Desktop DCCsMaya, Blender, Houdini, 3ds Max, Nuke, Katana, MotionBuilder, ZBrush
Design and content toolsPhotoshop, Substance 3D Designer/Painter, After Effects, Premiere, GIMP, Krita
Game and 2D enginesUnreal Engine, Unity, Godot, Tiled, Material Maker
Pipeline and qualityOpenUSD, Flow Production Tracking, MaterialX, texture/publish workflows, RenderDoc, Tracy
Reusable SkillsAsset providers, generative 2D/3D services, UI automation, rigging, procedural authoring, game release and acceptance

Browse every integration in the ecosystem directory, or use the official Marketplace to discover optional Skills without changing an adapter.

[DCC-MCP Skill Marketplace]

The Admin UI closes the feedback loop. Calls, traces, logs, health, statistics, and usage data show which tools agents selected and where they failed. Teams can improve a description, schema, or implementation, then verify the result against real calls instead of treating tool use as a black box.

The boundaries remain explicit. Core cannot safely preempt arbitrary code already running on a DCC main thread, guarantee rollback for host APIs without transactions, or define one lossless mesh/rig/material model for every application. Host semantics still belong in adapters and pipeline Skills.

Quick start: operate a DCC

dcc-mcp-cli is the preferred control path for every shell-capable agent.

If you have a Python toolchain, one command installs it on Linux, macOS and Windows:

bash
uvx dcc-mcp-cli --version      # run it without installing
# or install it into a managed tool environmentuv tool install dcc-mcp-clipipx install dcc-mcp-cli
# or into the current environmentpip install dcc-mcp-cli

Package-manager installs are managed by the package manager: upgrade with uv tool upgrade dcc-mcp-cli (or pip install --upgrade dcc-mcp-cli) rather than dcc-mcp-cli update apply, which is disabled for those builds.

Otherwise, obtain the user's consent, install the public dcc-mcp Skill below, and run its bundled verified helper from the Skill directory:

bash
python scripts/check_cli.py --ensure-cli --pretty

Without the Skill, download the official installer to a local file, inspect it, and only then execute that file:

bash
# Linux/macOScurl -fL https://raw.githubusercontent.com/dcc-mcp/dcc-mcp-core/main/scripts/install-cli.sh -o install-cli.shcat install-cli.sh# After reviewing the file:sh ./install-cli.sh
powershell
# Windows PowerShellInvoke-WebRequest https://raw.githubusercontent.com/dcc-mcp/dcc-mcp-core/main/scripts/install-cli.ps1 -OutFile .\install-cli.ps1Get-Content -Raw .\install-cli.ps1# After reviewing the file and subject to the current execution policy:& .\install-cli.ps1

Both paths accept only the official dcc-mcp/dcc-mcp-core release, validate the platform update manifest and CLI SHA-256, and leave any existing binary untouched if validation or download fails. This is an integrity check, not a digital signature. Never pipe a remote installer directly into a shell or bypass the machine's script execution policy.

Install the Agent Skill you need

The three public Skills have separate jobs. Start with dcc-mcp for live DCC work; install a creator Skill only when the task reaches that boundary:

Agent taskPublic SkillSource
Operate a live DCC, discover tools, or search the Marketplace@loonghao/dcc-mcpdcc-mcp
Create or modernize a complete DCC-MCP adapter/runtime@loonghao/dcc-mcp-creatordcc-mcp-creator
Create, validate, or improve a DCC-specific Skill package@loonghao/dcc-mcp-skills-creatordcc-mcp-skills-creator

OpenClaw installs into the active workspace by default; add --global only when every local OpenClaw agent should share the Skill:

bash
openclaw skills install @loonghao/dcc-mcpopenclaw skills install @loonghao/dcc-mcp-creatoropenclaw skills install @loonghao/dcc-mcp-skills-creator

For a Codex-compatible project, install into the standard project Skill root:

bash
npx --yes [email protected] install @loonghao/dcc-mcpnpx --yes [email protected] install @loonghao/dcc-mcp-creatornpx --yes [email protected] install @loonghao/dcc-mcp-skills-creator

Other Agent Skills hosts should install the same ClawHub package into their configured Skill root. Start a new agent turn after installation. Natural DCC requests should trigger dcc-mcp; hosts with explicit Skill invocation can use $dcc-mcp, $dcc-mcp-creator, or $dcc-mcp-skills-creator respectively.

All three packages carry Codex agents/openai.yaml metadata while preserving their DCC-MCP and ClawHub contracts. Their source, vendor manifests, immutable versions, and publication workflows now live in dcc-mcp-agent-plugins. This repository does not vendor those public packages. Its top-level skills/ directory contains Core-owned marketplace and reference Skills. Bundled runtime Skills remain under python/dcc_mcp_core/skills/.

Keep an official build current through the release manifest:

bash
dcc-mcp-cli update checkdcc-mcp-cli update apply --yes  # after user confirmation

Official release builds refresh a cached update status in the background every 24 hours without blocking the foreground command. Available updates appear as structured cli_update data; agents must ask the user before running the reported apply command. update apply --yes downloads and stages the latest CLI for the next launch. It does not update or restart a running dcc-mcp-server; update that server in its own environment.

Then discover a live capability before calling it:

bash
dcc-mcp-cli dcc-typesdcc-mcp-cli --output json dcc-types --dcc-type unrealdcc-mcp-cli listdcc-mcp-cli search --query "create sphere" --dcc-type maya --limit 20dcc-mcp-cli describe <tool-slug>dcc-mcp-cli call <tool-slug> --json '{"radius": 2.0}' \  --meta-json '{"agent_context":{"session_id":"task-42"}}'

--query "create sphere" is compatible with released CLI builds. Builds that contain the unified search parser also accept unquoted positional words.

dcc-types is an offline, catalog-backed capability query. It reports canonical adapter identifiers and install-plan availability; list remains the source of truth for live instances. The targeted --dcc-type form emits a versioned decision that keeps public catalog support, package/bootstrap state, registry registration, readiness, capability discovery, and real-host proof separate. In particular, live_instances: 0 does not mean zero supported or installed applications; live_instances: null means the local registry observation was unavailable.

Replace the placeholder with the slug returned by search. For remote workstations, register a gateway profile and select it:

bash
dcc-mcp-cli gateway register https://workstation.example:19293 --name pcAdcc-mcp-cli gateway set pcAdcc-mcp-cli list

Use dcc-mcp-cli doctor when startup or readiness is unclear. Open the local Admin UI at http://127.0.0.1:9765/admin after the gateway is available.

When a call fails, preserve its request_id, run doctor or a failure-filtered stats query, and use gateway-owned dcc-mcp-cli feedback. A live adapter's dcc_feedback__report is only a thin Core forwarder to the same endpoint. Gateway-routed failures also expose a public-safe /v1/debug/issue-reports/<request_id> payload for a reviewed bug report; raw bundles must never be uploaded automatically.

After a task is accepted, agents can inspect bounded gateway evidence with dcc-mcp-cli stats --range 24h --session-id task-42. A zero call count means no telemetry evidence, and direct local calls may not be represented. Feed the result plus short task and validation summaries to the review_skill_improvement prompt. The prompt defaults to no change, prefers improving an existing skill, and never grants authority to edit or publish outside the task scope.

Quick start: expose skills from Python

bash
pip install dcc-mcp-core

Point the server at a skill directory and start the MCP endpoint:

python
import os
from dcc_mcp_core import McpHttpConfig, create_skill_server
os.environ["DCC_MCP_MAYA_SKILL_PATHS"] = "/path/to/skills"
server = create_skill_server("maya", McpHttpConfig())handle = server.start()print(handle.mcp_url())

Local DCC instances bind an OS-assigned port by default. The resolved URL is registered automatically, so the gateway and CLI discover it without a hardcoded per-instance port. Pass port=<number> only for an explicit fixed listener requirement.

For manual handler registration, use McpHttpServer and ToolRegistry. For adapter lifecycle, readiness, gateway registration, and hot reload, use DccServerBase as described in the adapter guides.

Add a skill without framework glue

The project follows the agentskills.io frontmatter contract. Put dcc-mcp-core extensions under metadata.dcc-mcp and keep tool declarations in a sibling file:

text
my-skill/├── SKILL.md├── tools.yaml└── scripts/    └── do_thing.py
yaml
# SKILL.md---name: my-skilldescription: "Does a useful Maya task. Use when the user asks for it."metadata:  dcc-mcp:    dcc: maya    tools: tools.yaml    search-hint: "geometry, scene task"---
yaml
# tools.yamltools:  - name: do_thing    description: Do the task in the active Maya scene.    source_file: scripts/do_thing.py    execution: sync    affinity: main    annotations:      read_only_hint: false      destructive_hint: true

Run the same production validator used by CI with dcc-mcp-cli lint path/to/skills. See Skills for schemas, groups, dependencies, testing, and migration rules.

DCC UI Control

Desktop application automation for cases where native DCC APIs cannot observe or drive the interface state directly. Agents use ui_control__snapshot, ui_control__find, ui_control__act, ui_control__wait_for, ui_control__recording_start, ui_control__recording_state, ui_control__recording_stop, and ui_control__stop_computer_use to observe, find, act on, and record exact target applications.

Use UI Control as a bounded fallback, not as the default DCC integration:

  • Prefer structured adapter tools for scene, asset, render, and project work.
  • Use UI Control for controls that have no API, incomplete adapter coverage, and end-to-end GUI acceptance tests.
  • Do not treat every image in an agent task as UI Control evidence. DCC-native captures, RenderDoc exports, ImageGen output, and video frames have different provenance.

[Controlled window with corner brackets and capsule overlay]

How screenshots and clicks work

ui_control__snapshot captures only the bound window. It preserves native resolution until either the longest edge exceeds 1600 pixels or the image exceeds 1.5 million pixels, then downsizes while preserving aspect ratio. A 1280×720 window stays 1280×720; a 1920×1080 window becomes 1600×900. Smaller text and custom-drawn icons are therefore easier to recognize when the target window is large and unobstructed.

The agent receives three complementary signals:

  1. PNG pixels for visual recognition and spatial understanding.
  2. A CUA accessibility tree with labels, roles, and stable element tokens when the application exposes them.
  3. Observation metadata for the exact PID, HWND, DPI, source rectangle, desktop generation, session, and snapshot.

Clicks prefer a semantic control_id. For custom-drawn UI, screenshot-relative coordinates are mapped back through the source rectangle and DPI. Every action must cite the latest snapshot_id; the host revalidates the window, desktop, geometry, and generation before sending input, and rejects stale observations.

Successful snapshots include capture_provenance, including the backend, session, target PID/HWND, output and source dimensions, scaling, and native capture backend. Preserve that block with screenshots used as evidence. Older images without provenance cannot be reliably attributed to UI Control after the fact.

Capabilities

  • Scoped window targeting — snapshots and actions are bound to a single process or window handle, never the whole desktop.
  • Multi-instance sessions — the gateway selects the DCC instance_id, while the native host namespaces each adapter connection. Separate DCC instances may therefore reuse a logical session_id such as default without sharing capabilities or cleanup state.
  • Semantic accessibility + raw input fallback — prefer stable semantic controls (button, text field, checkbox) resolved by ui_control__find, then fall back to screenshot-relative coordinates when custom-drawn controls have no semantic node.
  • Bounded security model — every action is scoped by the adapter/operator-bound PID/HWND. Raw input is enabled inside that exact scope by default and can be disabled with DCC_MCP_CUA_ALLOW_RAW_INPUT=false. Hard-denied: passwords, authentication controls, LockApp, Windows Security, terminals, and credential manager windows.
  • Visible control markers — the standalone CUA Host owns the target border, banner, agent cursor, and Esc stop affordance.
  • One shared input safety owner — multiple exact-application sessions may remain active. The standalone Host serializes native input and broadcasts Esc, while ordinary stop releases only the selected session.
  • Trajectory recording — start and stop CUA recording around the actions to preserve the finalized CUA artifacts and structured recording state.
  • Audit trail — every snapshot, recording, action, wait, stop, and rejected operation appends a redacted ui_control_operation event to the shared log directory, visible in the Admin Logs panel without exposing entered text or screenshot coordinates.

Tool reference

ToolDescription
ui_control__snapshotCapture a bounded PNG plus accessibility tree from the scoped application
ui_control__findLocate semantic controls by query, role, label, or object name
ui_control__actPerform one scoped semantic or coordinate-based action
ui_control__recording_startStart CUA trajectory/video recording in an absolute output directory
ui_control__recording_stateRead current CUA recording state
ui_control__recording_stopFinalize CUA recording for later rendering
ui_control__wait_forPoll until a UI condition becomes true or times out
ui_control__stop_computer_useRelease the capsule, hotkey, and global input owner

For detailed skill reference and agent workflows, see the ui-control skill.

[Admin Logs panel with redacted ui_control_operation events]

Architecture

[dcc-mcp-core architecture]

The runtime has four useful layers:

  1. DCC service — owns skills and executes tools inside one DCC process.
  2. Sidecar/supervisor — bridges host RPC, readiness, process lifetime, and gateway registration when an adapter uses the packaged runtime.
  3. Gateway daemon — aggregates live instances and owns discovery, routing, REST, Admin UI, audit, and diagnostics.
  4. Client surfaces — CLI, MCP clients, REST clients, and marketplace tools.

The Rust workspace and package membership are defined by the root Cargo.toml. The Python package is a PyO3 extension with pure Python helpers and supports Python 3.7–3.14. Build-from-source requirements come from rust-toolchain.toml and package metadata; the repository does not duplicate version or package counts in this README.

Documentation map

Development

Use the repository-pinned toolchain where possible:

bash
vx just installvx just devvx just testvx just test-rustvx just lintvx just docs-check

docs-check builds the VitePress site and catches documentation links and syntax errors. Markdown lint runs in the docs CI workflow. See CONTRIBUTING.md for coding, testing, and release rules.

License

MIT — see LICENSE.

来源:README.md,提交 807870d

工具

0
工具元数据尚未被收录。

版本历史

1
  1. v0.20.42最新Oct 8, 2026