Foundational library for the DCC Model Context Protocol (MCP) ecosystem
Project description
dcc-mcp-core
中文 | English
Rust-first control plane for connecting AI agents to live DCC sessions.
dcc-mcp-core turns Maya, Blender, Houdini, Photoshop, and custom studio hosts into 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 desktop sessions.
Choose your entry point
| You want to… | Start with |
|---|---|
| Control a running DCC from an agent or CI job | dcc-mcp-cli |
| Expose a DCC adapter over MCP/REST | create_skill_server |
| Add tools without Python registration code | SKILL.md + tools.yaml |
| Build a new DCC adapter | new-adapter-onboarding.md |
| Understand routing and multi-instance behavior | gateway.md |
| Integrate from any HTTP client | rest-api-surface.md |
The current contract
The default agent path is CLI + REST:
dcc-mcp-cli 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.
Quick start: operate a DCC
Install the standalone CLI when you need the operator/CI control plane without setting up Python:
# Linux/macOS
curl -fsSL https://raw.githubusercontent.com/dcc-mcp/dcc-mcp-core/main/scripts/install-cli.sh | bash
# Windows PowerShell
powershell -c "irm https://raw.githubusercontent.com/dcc-mcp/dcc-mcp-core/main/scripts/install-cli.ps1 | iex"
Then discover a live capability before calling it:
dcc-mcp-cli list
dcc-mcp-cli search --query "create sphere" --dcc-type maya --limit 20
dcc-mcp-cli describe <tool-slug>
dcc-mcp-cli call <tool-slug> --json '{"radius": 2.0}'
Replace the placeholder with the slug returned by search. For remote workstations, register a gateway profile and select it:
dcc-mcp-cli gateway register https://workstation.example:19293 --name pcA
dcc-mcp-cli gateway set pcA
dcc-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.
Quick start: expose skills from Python
pip install dcc-mcp-core
Point the server at a skill directory and start the MCP endpoint:
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(port=8765))
handle = server.start()
print(handle.mcp_url())
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:
my-skill/
├── SKILL.md
├── tools.yaml
└── scripts/
└── do_thing.py
# SKILL.md
---
name: my-skill
description: "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"
---
# tools.yaml
tools:
- 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.
Architecture
The runtime has four useful layers:
- DCC service — owns skills and executes tools inside one DCC process.
- Sidecar/supervisor — bridges host RPC, readiness, process lifetime, and gateway registration when an adapter uses the packaged runtime.
- Gateway daemon — aggregates live instances and owns discovery, routing, REST, Admin UI, audit, and diagnostics.
- 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
- Getting started — install the package and start a first server.
- CLI reference — complete operator commands and flags.
- Gateway guide — daemon, registry, routing, relay, and multi-instance behavior.
- REST API surface — request envelopes, tool_slug, readiness, and error contracts.
- Skills guide — authoring, loading, validation, and persistence.
- Adapter onboarding — the supported adapter implementation and release path.
- Documentation index — the complete guide/API map.
- AI agent guide and AGENTS.md — agent workflow and repository rules.
Development
Use the repository-pinned toolchain where possible:
vx just install
vx just dev
vx just test
vx just test-rust
vx just lint
vx 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.
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 Distributions
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_core-0.19.28.tar.gz.
File metadata
- Download URL: dcc_mcp_core-0.19.28.tar.gz
- Upload date:
- Size: 7.6 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
478da69edb38b357c1f38cdf6bbc528515bd10c3b1210fd60b96115340ce6d06
|
|
| MD5 |
17af00e0f875c1ee7bf713536a18c661
|
|
| BLAKE2b-256 |
ebbad361db1fc6d8a4b93e56b0823382972f588ab0b277cce6998e786c04a897
|
Provenance
The following attestation bundles were made for dcc_mcp_core-0.19.28.tar.gz:
Publisher:
release.yml on dcc-mcp/dcc-mcp-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_core-0.19.28.tar.gz -
Subject digest:
478da69edb38b357c1f38cdf6bbc528515bd10c3b1210fd60b96115340ce6d06 - Sigstore transparency entry: 2152293643
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-core@8ff8b59d855237bdf77180857f0153956c028156 -
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@8ff8b59d855237bdf77180857f0153956c028156 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_core-0.19.28-py3-none-any.whl.
File metadata
- Download URL: dcc_mcp_core-0.19.28-py3-none-any.whl
- Upload date:
- Size: 456.8 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 |
3b24dcb69c881ae23ddc3c01b12ea02beb022d35f753fb0ad3bcb88d40d47edb
|
|
| MD5 |
953b608906b838ace952626dbebaaadb
|
|
| BLAKE2b-256 |
04af3a4f3323c8faaf11f431d614e795d910b6b23f27fd5d3c4f52465fd48c84
|
Provenance
The following attestation bundles were made for dcc_mcp_core-0.19.28-py3-none-any.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_core-0.19.28-py3-none-any.whl -
Subject digest:
3b24dcb69c881ae23ddc3c01b12ea02beb022d35f753fb0ad3bcb88d40d47edb - Sigstore transparency entry: 2152293795
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-core@8ff8b59d855237bdf77180857f0153956c028156 -
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@8ff8b59d855237bdf77180857f0153956c028156 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_core-0.19.28-cp38-abi3-win_amd64.whl.
File metadata
- Download URL: dcc_mcp_core-0.19.28-cp38-abi3-win_amd64.whl
- Upload date:
- Size: 19.1 MB
- Tags: CPython 3.8+, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
80d370d1d6b704b36330c858c38902432dec9ab46d62fe271ea3225f8ec78202
|
|
| MD5 |
4c219c892122d31122eb481f056a8059
|
|
| BLAKE2b-256 |
746788a67d671b38187a34f4d1d1beb14cbc010583c0bb2e8c0a19ff03fafc57
|
Provenance
The following attestation bundles were made for dcc_mcp_core-0.19.28-cp38-abi3-win_amd64.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_core-0.19.28-cp38-abi3-win_amd64.whl -
Subject digest:
80d370d1d6b704b36330c858c38902432dec9ab46d62fe271ea3225f8ec78202 - Sigstore transparency entry: 2152293732
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-core@8ff8b59d855237bdf77180857f0153956c028156 -
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@8ff8b59d855237bdf77180857f0153956c028156 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_core-0.19.28-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dcc_mcp_core-0.19.28-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 19.5 MB
- Tags: CPython 3.8+, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86ed6ba6fe85c68dfe06ecc4267415fb34f21ddf522378f1f79088b7421ad2d3
|
|
| MD5 |
fbe4cf390e2284b5d4e6b1f970d4a06a
|
|
| BLAKE2b-256 |
9c844725f24ded177f950dc3c1219d55468a20dbd9c07e97f487b7b7977a1c32
|
Provenance
The following attestation bundles were made for dcc_mcp_core-0.19.28-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_core-0.19.28-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
86ed6ba6fe85c68dfe06ecc4267415fb34f21ddf522378f1f79088b7421ad2d3 - Sigstore transparency entry: 2152293700
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-core@8ff8b59d855237bdf77180857f0153956c028156 -
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@8ff8b59d855237bdf77180857f0153956c028156 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_core-0.19.28-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl.
File metadata
- Download URL: dcc_mcp_core-0.19.28-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl
- Upload date:
- Size: 36.2 MB
- Tags: CPython 3.8+, macOS 10.12+ universal2 (ARM64, x86-64), macOS 10.12+ x86-64, macOS 11.0+ ARM64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f930c2dcb3682f338a23cb7e2cfe9888f20df7a225d8b45b6584f9eccc373050
|
|
| MD5 |
3891fab3d6005f7662a447bfd6f1beb1
|
|
| BLAKE2b-256 |
87a66fc2ea4054d984e2d0bafefd48b299f3c8ecd8e059af9fd50c1f7a9ec021
|
Provenance
The following attestation bundles were made for dcc_mcp_core-0.19.28-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_core-0.19.28-cp38-abi3-macosx_10_12_x86_64.macosx_11_0_arm64.macosx_10_12_universal2.whl -
Subject digest:
f930c2dcb3682f338a23cb7e2cfe9888f20df7a225d8b45b6584f9eccc373050 - Sigstore transparency entry: 2152293777
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-core@8ff8b59d855237bdf77180857f0153956c028156 -
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@8ff8b59d855237bdf77180857f0153956c028156 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_core-0.19.28-cp37-cp37m-win_amd64.whl.
File metadata
- Download URL: dcc_mcp_core-0.19.28-cp37-cp37m-win_amd64.whl
- Upload date:
- Size: 19.1 MB
- Tags: CPython 3.7m, Windows x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d3daa201caf5d38027a8437bb4af179a8ee16414a3a9c1e3e17f7a25933edfcf
|
|
| MD5 |
90281b711642b6fd2d72a8d8de92f2e9
|
|
| BLAKE2b-256 |
0640cd37ce674748e91beb4fb97f08cb983c729f63ccdb797e9171d281d0d48c
|
Provenance
The following attestation bundles were made for dcc_mcp_core-0.19.28-cp37-cp37m-win_amd64.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_core-0.19.28-cp37-cp37m-win_amd64.whl -
Subject digest:
d3daa201caf5d38027a8437bb4af179a8ee16414a3a9c1e3e17f7a25933edfcf - Sigstore transparency entry: 2152293667
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-core@8ff8b59d855237bdf77180857f0153956c028156 -
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@8ff8b59d855237bdf77180857f0153956c028156 -
Trigger Event:
push
-
Statement type:
File details
Details for the file dcc_mcp_core-0.19.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl.
File metadata
- Download URL: dcc_mcp_core-0.19.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
- Upload date:
- Size: 19.5 MB
- Tags: CPython 3.7m, manylinux: glibc 2.17+ x86-64
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
643ce7962832a28079fb04aac60dcaa723eb17a36e518942426c84943eddfe02
|
|
| MD5 |
9d76abb56309e18913eec7e5d5346a38
|
|
| BLAKE2b-256 |
e3cc48114c2085b0425dcc3cb2ae50209295f8eac0d843fe16c8d33c687bc3a5
|
Provenance
The following attestation bundles were made for dcc_mcp_core-0.19.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-core
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_core-0.19.28-cp37-cp37m-manylinux_2_17_x86_64.manylinux2014_x86_64.whl -
Subject digest:
643ce7962832a28079fb04aac60dcaa723eb17a36e518942426c84943eddfe02 - Sigstore transparency entry: 2152293759
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-core@8ff8b59d855237bdf77180857f0153956c028156 -
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@8ff8b59d855237bdf77180857f0153956c028156 -
Trigger Event:
push
-
Statement type: