Skip to main content

OpenUSD MCP server with daemon runtime — uvx-launchable, defaults to Pixar USD bindings

Project description

dcc-mcp-openusd

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

pip install dcc-mcp-openusd

This release train requires dcc-mcp-core>=0.18.34.

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.

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:

pip install "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)   # e.g. "24.11"

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, snapshot_stage, package_usdz USDA checks Native validation
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.

Run

dcc-mcp-openusd --port 8765

Then connect an MCP client to:

http://127.0.0.1:8765/mcp

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, and add references.
openusd-validate Validate stage invariants and package a USDZ-style archive.
openusd-material Create UsdShadeMaterial prims, attach UsdPreviewSurface shaders, and bind materials to geometry.
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

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. The baseline version is 0.0.0 so the first release PR will cut v0.1.0. PyPI publishing is wired through the pypi GitHub environment.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dcc_mcp_openusd-0.5.0.tar.gz (44.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dcc_mcp_openusd-0.5.0-py3-none-any.whl (53.3 kB view details)

Uploaded Python 3

File details

Details for the file dcc_mcp_openusd-0.5.0.tar.gz.

File metadata

  • Download URL: dcc_mcp_openusd-0.5.0.tar.gz
  • Upload date:
  • Size: 44.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dcc_mcp_openusd-0.5.0.tar.gz
Algorithm Hash digest
SHA256 f617c029cc01a22fca6d9d2e7c9eadf73763bd24bda500e840eb5ad70097c0dc
MD5 f1b9e385d7bea96f4abff3a1de4dbab1
BLAKE2b-256 9477dc1824e3f2da199bba45834cca07c3fbb72738b134407d15133a40fc98ca

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_openusd-0.5.0.tar.gz:

Publisher: release.yml on dcc-mcp/dcc-mcp-openusd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file dcc_mcp_openusd-0.5.0-py3-none-any.whl.

File metadata

  • Download URL: dcc_mcp_openusd-0.5.0-py3-none-any.whl
  • Upload date:
  • Size: 53.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dcc_mcp_openusd-0.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efb30bcbf47a3e38dfb245d20bf8e9e807a4901b3a8d7dd064180431496bfd5f
MD5 af6889b9c81ba6cefb0ee79146f9c989
BLAKE2b-256 bf5237b8a8299fa811348358ceb4734772f7c398aaa686de4b671c513ffc7f44

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_openusd-0.5.0-py3-none-any.whl:

Publisher: release.yml on dcc-mcp/dcc-mcp-openusd

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page