ZBrush adapter for the DCC Model Context Protocol (MCP) ecosystem — embedded Python SDK + optional socket bridge
Project description
dcc-mcp-zbrush
ZBrush adapter for the DCC Model Context Protocol ecosystem.
Requires ZBrush 2026.1+ with the official Python SDK (CPython 3.11 embedded in ZBrush).
Architecture decision
ZBrush does not ship a built-in HTTP REST server. The pre-alpha scaffold that assumed Preferences > Network > Enable HTTP Server was incorrect.
The supported integration paths are:
| Mode | When to use | Stack |
|---|---|---|
| Embedded (recommended) | ZBrush 2026.1+ with Python SDK | Python plugin inside ZBrush → dcc-mcp-core MCP HTTP server → zbrush.commands |
| Sidecar + socket plugin | External MCP process / restricted installs | External Python → TCP :9876 → bridge/plugin/mcp_socket_bridge.py inside ZBrush |
Rust is not used inside ZBrush. Like Maya/Houdini, Rust lives in the dcc-mcp-core wheel (PyO3) that powers the MCP HTTP server. The ZBrush-facing code is Python only.
GoZ C++ SDK is for mesh exchange between DCC apps, not general MCP automation — we do not build the primary adapter on GoZ.
Embedded mode (default inside ZBrush):
AI Agent → MCP HTTP :8765 → ZBrushMcpServer (inside ZBrush) → zbrush.commands
Sidecar mode:
AI Agent → MCP HTTP :8765 → ZBrushMcpServer (external Python)
→ TCP :9876 → mcp_socket_bridge.py (inside ZBrush) → zbrush.commands
Features (v0.2.0)
DccServerBaseadapter with progressive skill loading- Bundled skills:
zbrush-scripting,zbrush-scene - In-process executor for ZBrush's embedded Python VM
- Optional socket bridge plugin for sidecar deployments
- Gateway election compatible with
dcc-mcp-core
Requirements
- ZBrush 2026.1+
- Python 3.9+ on the sidecar host (ZBrush itself ships 3.11)
dcc-mcp-core >= 0.18.2
Installation
Embedded mode (inside ZBrush)
- Install the package into a directory on
PYTHONPATHorZBRUSH_PLUGIN_PATH:
pip install dcc-mcp-zbrush -t /path/to/zbrush/python/libs
- Copy the auto-start plugin:
# Windows
copy bridge\plugin\dcc_mcp_zbrush %USERPROFILE%\Documents\ZBrushData\ZStartup\ZPlugs64\dcc_mcp_zbrush
# macOS
cp -R bridge/plugin/dcc_mcp_zbrush ~/Library/Application\ Support/ZBrush/ZStartup/ZPlugs64/
- Restart ZBrush. MCP endpoint:
http://127.0.0.1:8765/mcp
Or from ZBrush Python console:
import dcc_mcp_zbrush
dcc_mcp_zbrush.start_server(mode="embedded")
Sidecar mode (external process)
- Install the socket bridge plugin in ZBrush (
bridge/plugin/mcp_socket_bridge.py). - Start ZBrush.
- Run the MCP server outside ZBrush:
dcc-mcp-zbrush --mode sidecar --port 8765 --socket-port 9876
Environment variables
| Variable | Default | Purpose |
|---|---|---|
DCC_MCP_ZBRUSH_PORT |
8765 |
MCP HTTP port |
DCC_MCP_ZBRUSH_MODE |
auto | embedded or sidecar |
DCC_MCP_ZBRUSH_AUTOSTART |
1 |
Auto-start embedded server from plugin |
DCC_MCP_ZBRUSH_SOCKET_PORT |
9876 |
Socket bridge port (sidecar) |
DCC_MCP_GATEWAY_PORT |
9765 |
Gateway election port |
DCC_MCP_MINIMAL |
1 |
Progressive skill loading |
Bundled skills
| Skill | Tools |
|---|---|
zbrush-scripting |
execute_python, get_session_info |
zbrush-scene |
get_scene_info, list_subtools |
Cursor / Claude MCP config
{
"mcpServers": {
"zbrush": {
"url": "http://127.0.0.1:8765/mcp"
}
}
}
With gateway:
{
"mcpServers": {
"zbrush": {
"url": "http://127.0.0.1:9765/mcp"
}
}
}
Skill authoring
Skills lazy-import zbrush.commands and run on the main thread (affinity: main).
from dcc_mcp_core.skill import skill_entry
from dcc_mcp_zbrush.api import import_zbc, with_zbrush, zb_success
@skill_entry
@with_zbrush
def my_tool(**kwargs) -> dict:
zbc = import_zbc()
count = zbc.get_subtool_count()
return zb_success(f"{count} subtool(s)", count=count)
References
- ZBrush Python SDK 2026.1
- ZBrush Python environment
- GoZ SDK (mesh exchange only)
- Community reference: newsbubbles/zbrush-mcp (socket bridge pattern)
License
MIT
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_zbrush-0.2.2.tar.gz.
File metadata
- Download URL: dcc_mcp_zbrush-0.2.2.tar.gz
- Upload date:
- Size: 29.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
da1879ea8ed3b9c9bdd929656be29c12e659e47a502c1bbc0c695cc8d0e756db
|
|
| MD5 |
b9be399b14804ae4f9ae761dda9c2f8b
|
|
| BLAKE2b-256 |
1853093cc1a31d0f93cdca80b7a42184192497751ecab6ab821ec70f91c51a53
|
Provenance
The following attestation bundles were made for dcc_mcp_zbrush-0.2.2.tar.gz:
Publisher:
release.yml on dcc-mcp/dcc-mcp-zbrush
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_zbrush-0.2.2.tar.gz -
Subject digest:
da1879ea8ed3b9c9bdd929656be29c12e659e47a502c1bbc0c695cc8d0e756db - Sigstore transparency entry: 1739911543
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-zbrush@88344420d9d5d7c4acb34deb6e388f21b250b56f -
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@88344420d9d5d7c4acb34deb6e388f21b250b56f -
Trigger Event:
workflow_dispatch
-
Statement type:
File details
Details for the file dcc_mcp_zbrush-0.2.2-py3-none-any.whl.
File metadata
- Download URL: dcc_mcp_zbrush-0.2.2-py3-none-any.whl
- Upload date:
- Size: 27.9 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 |
228bd0089e9f11983f742af7d565acae4f25a603318b40aaa8fe781dfac942bf
|
|
| MD5 |
6b650b8ca947f59e5d02ecc40952115d
|
|
| BLAKE2b-256 |
45e83e9e0f179e773361438733a3cb4f804df07bf080cf0c138a9580d2febc03
|
Provenance
The following attestation bundles were made for dcc_mcp_zbrush-0.2.2-py3-none-any.whl:
Publisher:
release.yml on dcc-mcp/dcc-mcp-zbrush
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dcc_mcp_zbrush-0.2.2-py3-none-any.whl -
Subject digest:
228bd0089e9f11983f742af7d565acae4f25a603318b40aaa8fe781dfac942bf - Sigstore transparency entry: 1739911562
- Sigstore integration time:
-
Permalink:
dcc-mcp/dcc-mcp-zbrush@88344420d9d5d7c4acb34deb6e388f21b250b56f -
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@88344420d9d5d7c4acb34deb6e388f21b250b56f -
Trigger Event:
workflow_dispatch
-
Statement type: