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.7.
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 first version ships three bundled skills:
| Skill | Purpose |
|---|---|
openusd-project |
Create self-contained project folders and snapshots. |
openusd-stage |
Create stages, list prims, define xforms, and add references. |
openusd-validate |
Validate stage invariants and package a USDZ-style archive. |
Agents should follow the normal DCC-MCP flow:
search_skills(query="openusd stage")load_skill("openusd-stage")- Call a typed tool such as
openusd_stage__create_stage - 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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dcc_mcp_openusd-0.4.1.tar.gz.
File metadata
- Download URL: dcc_mcp_openusd-0.4.1.tar.gz
- Upload date:
- Size: 39.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
16b1dc36e46225c11da7d85038ddea1966ee3fa7b7aff70afc312b2455629417
|
|
| MD5 |
a7fd00d98ebbb919239a1af09a1aac74
|
|
| BLAKE2b-256 |
ee5b8cac8f20938a00d6a0c599eb6647ac3ef765008da7d1e5d783e262644e72
|
Provenance
The following attestation bundles were made for dcc_mcp_openusd-0.4.1.tar.gz:
Publisher:
release.yml on dcc-mcp/dcc-mcp-openusd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_openusd-0.4.1.tar.gz -
Subject digest:
16b1dc36e46225c11da7d85038ddea1966ee3fa7b7aff70afc312b2455629417 - Sigstore transparency entry: 1755697164
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-openusd@1c10dcfacadb1d9ca30f3c00b1cd3cfd26de1c0c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/dcc-mcp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1c10dcfacadb1d9ca30f3c00b1cd3cfd26de1c0c -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_openusd-0.4.1-py3-none-any.whl.
File metadata
- Download URL: dcc_mcp_openusd-0.4.1-py3-none-any.whl
- Upload date:
- Size: 50.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed31e1ececf5d6d9cb25f963fa7339468964c96834801ec18580541a4761ebd9
|
|
| MD5 |
092a4204af9a59e8a23b3ac54e342854
|
|
| BLAKE2b-256 |
4053c184c489471febf432e1122ab7021e57181907be41cc12349108f11a4295
|
Provenance
The following attestation bundles were made for dcc_mcp_openusd-0.4.1-py3-none-any.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-openusd
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_openusd-0.4.1-py3-none-any.whl -
Subject digest:
ed31e1ececf5d6d9cb25f963fa7339468964c96834801ec18580541a4761ebd9 - Sigstore transparency entry: 1755697232
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-openusd@1c10dcfacadb1d9ca30f3c00b1cd3cfd26de1c0c -
Branch / Tag:
refs/heads/main - Owner: https://github.com/dcc-mcp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@1c10dcfacadb1d9ca30f3c00b1cd3cfd26de1c0c -
Trigger Event:
push
-
Statement type: