Skip to main content

dcc-mcp-openusd

DCC-MCP · OPENUSD

Agent workflow

AI agents should use the shared gateway through dcc-mcp-cli; IDE users may continue to use the MCP endpoint. Prefer typed skills and tools over raw scripts.

Install or update the CLI

dcc-mcp-cli is the preferred control path for every shell-capable agent. If it is missing, ask the user before installing the latest official release:

# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/dcc-mcp/dcc-mcp-core/main/scripts/install-cli.sh | sh

# Windows PowerShell
powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/dcc-mcp/dcc-mcp-core/main/scripts/install-cli.ps1 | iex"

Keep an official build current through the release manifest:

dcc-mcp-cli update check
dcc-mcp-cli update apply

update apply downloads and stages the latest CLI for the next launch. It does not update a running dcc-mcp-server; update that server in its own environment.

dcc-mcp-cli dcc-types
dcc-mcp-cli list
dcc-mcp-cli search --query "<task>" --dcc-type openusd
dcc-mcp-cli describe <tool-slug>
dcc-mcp-cli call <tool-slug> --json '{"key":"value"}'

dcc-types reports release-catalog support; list reports live sessions. If a tool belongs to an inactive progressive skill, call dcc-mcp-cli load-skill <skill-name> --dcc-type openusd before retrying. For post-task improvement, attach a stable session id with --meta-json, query dcc-mcp-cli stats --range 24h --session-id <task-id>, then pass the bounded evidence to the review_skill_improvement prompt from dcc-mcp-skills-creator.

OpenUSD adapter and skills for the DCC Model Context Protocol ecosystem.

dcc-mcp-openusd runs a headless OpenUSD-oriented MCP server that can create portable USD project folders, author simple stages, add references, validate stages, and package USDZ-like archives. It is designed to plug into the dcc-mcp-core gateway and skills-first workflow.

Install

Follow the wheel-first installation and lifecycle guide. The adapter requires dcc-mcp-core>=0.19.45. After installing a trusted wheel, run:

dcc-mcp-openusd doctor --json
dcc-mcp-openusd verify --json

The base install operates in text-fallback mode: it reads and writes USDA text without requiring the Pixar USD runtime. This mode is suitable for lightweight agents, CI gates, and environments where native USD libraries are unavailable.

For full OpenUSD runtime behavior, install the optional Pixar USD bindings:

python -m pip install --only-binary=:all: "dcc-mcp-openusd[openusd]"

The [openusd] extra pulls in usd-core>=24.11 (the Pixar open-source USD Python bindings, importable as pxr). With pxr installed, all stage authoring, material binding, camera/light definition, time-sampled animation, and composition-arc operations go through the native USD runtime.

Runtime mode detection

from dcc_mcp_openusd.runtime import detect_runtime

runtime = detect_runtime()
print(runtime.has_pxr)  # True when pxr is installed
print(runtime.version)  # API tuple label, for example "0.26.5"

Every public function returns a "runtime" field in its result dict — "pxr" when the native runtime was used, "text-fallback" otherwise.

Feature boundary

Feature Text-fallback pxr runtime
create_stage, create_project USDA text Native Usd.Stage
list_stage, define_xform, define_prim USDA parse + insert Native API
add_reference, set_xform_ops USDA text Native API
validate_stage Shared rule set (USDA parse) Shared rule set (Sdf specs)
fix_reference_path (report + rewrite) USDA text Shared readback
suggest_material_bind (suggest) USDA parse Shared readback
snapshot_stage File copy File copy
package_usdz zipfile UsdUtils.CreateNewUsdzPackage
Material binding (UsdShade) — Requires pxr
Camera / Light (UsdGeomCamera, UsdLux) — Requires pxr
Time-sampled animation — Requires pxr
Sublayer / payload composition — Requires pxr

Advanced features that cannot be expressed through text-fallback raise OpenUsdError("... requires the Pixar USD (pxr) package. Install it with: pip install usd-core") when pxr is absent.

validate_stage is the exception: it runs the same rule set on both runtimes. pxr is used only to parse the file (Sdf.Layer); both runtimes report facts for the root layer only — prims composed in from references and sublayers are out of scope — so the two collectors stay equivalent and reference asset paths are always resolved against the root layer's directory. The registry is dcc_mcp_openusd.runtime.VALIDATION_RULES.

The result is a ValidationResult ({success, message, stage_file, issues, summary, next_steps}): summary counts issues per severity, and next_steps aggregates every issue's steps so an agent can act without walking issues. Each issue is a ValidationIssue ({code, severity, message, location, strict_promoted, suggested_fix, next_steps}) whose location is a discriminated object — {"kind": "prim"|"layer"|"line", "path": …, "line": …, "label": …} — so callers tell a prim path from a layer or a line number by reading kind instead of re-parsing brackets. strict_promoted marks issues that only became errors because the run was strict. See dcc_mcp_openusd.validation for the schema and openusd-validate/SKILL.md for the agent-facing contract.

Issues point at the skill that can fix them: UNRESOLVED_REFERENCE suggests openusd_stage__fix_reference_path, and UNBOUND_MATERIAL / DANGLING_MATERIAL_BINDING suggest openusd_material__suggest_material_bind. Both fix skills run on the shared facts, so they agree with the validator on every runtime, and both read back what they write instead of claiming a fix that did not happen. Reporting needs no pxr; applying a material binding does.

Run

dcc-mcp-openusd

The instance uses an OS-assigned direct port. Connect through the stable local gateway, or discover the exact direct URL with dcc-mcp-cli list.

Daemon startup, explicit pidfiles, identity-verified platform-specific stop, upgrade, and uninstall are documented in install.md. Doctor and verify never start the service or daemon.

Bundled Skills

The package ships seven bundled skills:

Skill Purpose
openusd-project Create self-contained project folders and snapshots.
openusd-stage Create stages, list prims, define xforms, set xform ops, modify stage metadata, add references, and repair broken reference paths.
openusd-validate Validate stage invariants and package a USDZ-style archive.
openusd-material Create UsdShadeMaterial prims, attach UsdPreviewSurface shaders, bind materials to geometry, and suggest missing bindings.
openusd-light-camera Create cameras (UsdGeomCamera) and lights (DistantLight, SphereLight) with transforms.
openusd-animation Set stage time codes and author translate/rotate/scale time samples.
openusd-composition Add sublayers, payloads, variant sets, and variant selections for multi-layer scenes.

Agents should follow the normal DCC-MCP flow:

  1. search_skills(query="openusd stage")
  2. load_skill("openusd-stage")
  3. Call a typed tool such as openusd_stage__create_stage
  4. Validate with openusd_validate__validate_stage
  5. Follow each issue's suggested_fix to repair the stage

Scope

This repository is intentionally an adapter/domain-skill package, not a new core USD engine. dcc-mcp-core remains the shared transport, gateway, validation, telemetry, and skill-loading foundation. This package owns OpenUSD-specific project semantics, stage authoring tools, validation policy, and packaging workflows.

Development

# Minimal setup (text-fallback, fast CI gate)
pip install -e ".[dev]"
pytest tests/ --ignore=tests/e2e

# Full setup (pxr runtime, material/light/animation/composition tests)
pip install -e ".[dev,openusd]"
pytest tests/e2e/ -v
ruff check src tests tools
python -m build

The CI matrix enforces both modes:

  • test-minimal — no pxr, runs unit tests + contract test (text-fallback baseline)
  • test-openusd — with pxr, runs the e2e golden-path suite

Release

The repository uses release-please; PyPI publishing is wired through the pypi GitHub environment.

Metadata

Release files for dcc-mcp-openusd 0.9.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for dcc-mcp-openusd 0.9.0
File Size Uploaded
dcc_mcp_openusd-0.9.0.tar.gz 115.7 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for dcc-mcp-openusd 0.9.0
File Interpreter ABI Platform
dcc_mcp_openusd-0.9.0-py3-none-any.whl Python 3 none any Details

Total release size: 207.0 kB

Release files / dcc_mcp_openusd-0.9.0.tar.gz

Download URL dcc_mcp_openusd-0.9.0.tar.gz
Size 115.7 kB
Tags Source
SHA-256 checksum
How to use checksums
db14fa4b9b20e437ab2a17670f512d3e5cd13b7d75b7bf02e3aada519e8eab78
BLAKE2b-256 checksum
How to use checksums
a5d6be1cea197119eb5e3b7e65bd54d904968d642059f38bfd0077068fb01df0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release files / dcc_mcp_openusd-0.9.0-py3-none-any.whl

Download URL dcc_mcp_openusd-0.9.0-py3-none-any.whl
Size 91.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
2103a180ed43d8a2586a755ee7172d3aebec6724a27c8ee297c0f2a277b3328a
BLAKE2b-256 checksum
How to use checksums
33af68bf71a702c804aed3eaad2d805989acc3af75520229f03c5a30b10c2fa0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Sep 27, 2026.

Transparency log

Release history Release notifications | RSS feed

0.11.2

2 release files

0.11.1

2 release files

0.11.0

2 release files

0.10.0

2 release files

This release

0.9.0 This release

2 release files

0.8.2

2 release files

0.8.1

2 release files

0.8.0

2 release files

0.7.0

2 release files

0.6.0

2 release files

0.5.0

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.0

2 release files

0.2.2

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.1

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page