Skip to main content

dcc-mcp-zbrush

PyPI Python 3.9+ License: MIT Status: Pre-Alpha

ZBrush adapter for the DCC Model Context Protocol ecosystem.

Requires ZBrush 2026.1+ with the official Python SDK (CPython 3.11 embedded in ZBrush).

Quick install

1. Install the Python package

pip install dcc-mcp-zbrush

This installs the dcc-mcp-zbrush Python package — the MCP HTTP server that bridges AI agents to ZBrush. It does not include ZBrush plugin files (see step 2).

2. Install the ZBrush plugin

The plugin files (auto-start script, socket bridge) are distributed separately. Download the plugin ZIP from the latest GitHub Release:

dcc-mcp-zbrush-plugin-<version>.zip

Then run the install script inside the ZIP:

Windows (PowerShell):

.\install\install-windows.ps1

macOS (Terminal):

chmod +x install/install-macos.sh && ./install/install-macos.sh

The installer resolves the ZBrush Asset Directory or ZBRUSH_PLUGIN_PATH and places the selected entry script directly at that scan root. It fails instead of reporting success when no valid scan root is available; pass -Target explicitly in that case.

3. Restart ZBrush

Launch or restart ZBrush. The plugin auto-starts the MCP server in embedded mode.

4. Health check

Verify the server is running:

curl http://127.0.0.1:8765/mcp

5. Configure your AI client

Add the MCP server to your AI client config (Cursor, Claude Desktop, etc.):

{
  "mcpServers": {
    "zbrush": {
      "url": "http://127.0.0.1:8765/mcp"
    }
  }
}

How it works

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 Inside ZBrush 2026.1+ (plugin auto-start) Python plugin inside ZBrush → dcc-mcp-core MCP HTTP server → zbrush.commands
Sidecar + socket plugin (CLI default) 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)

  • DccServerBase adapter with progressive skill loading
  • Bundled skills: zbrush-scripting, zbrush-scene, zbrush-subtool, zbrush-interchange
  • 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.7

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
zbrush-subtool select_subtool, get_subtool_status
zbrush-interchange export_active_subtool_obj

Path concepts

  • PYTHONPATH — where Python looks for packages (pip install handles this)
  • ZBRUSH_USER_ASSETS_DIR / ZBRUSH_PLUGIN_PATH — plugin scan roots used by ZBrush 2026.1+

pip install dcc-mcp-zbrush puts the Python package on PYTHONPATH.
The plugin ZIP goes into ZBRUSH_PLUGIN_PATH (handled by the install scripts above).

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)

Sidecar mode (optional)

If you cannot install the embedded plugin or need the MCP server to run outside ZBrush:

  1. The plugin ZIP includes sidecar/mcp_socket_bridge.py; install it directly at the Asset Directory/plugin scan root (install-windows.ps1 -Mode sidecar).
  2. Start ZBrush.
  3. Run the MCP server outside ZBrush:
dcc-mcp-zbrush --mode sidecar --port 8765 --socket-port 9876

Development

See docs/development.md for source-based setup, testing, and contribution workflow.

References

License

MIT

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_zbrush-0.2.13.tar.gz (57.0 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_zbrush-0.2.13-py3-none-any.whl (32.2 kB view details)

Uploaded Python 3

File details

Details for the file dcc_mcp_zbrush-0.2.13.tar.gz.

File metadata

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

File hashes

Hashes for dcc_mcp_zbrush-0.2.13.tar.gz
Algorithm Hash digest
SHA256 b73e382dd57d3f33d1452a7ade0e24070476e3d92ceafb3026f6c7e791c4eaa2
MD5 c72aaff0e493815b58f27da931a92c70
BLAKE2b-256 15701f99485462e4657eac4bc9e97f2f1a3fd77a2da2d105d9b669db8700156c

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_zbrush-0.2.13.tar.gz:

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

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_zbrush-0.2.13-py3-none-any.whl.

File metadata

  • Download URL: dcc_mcp_zbrush-0.2.13-py3-none-any.whl
  • Upload date:
  • Size: 32.2 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_zbrush-0.2.13-py3-none-any.whl
Algorithm Hash digest
SHA256 1ab53178343d37180e9f9577404a939be87c2a36929d7fe03aeda7e776dd2704
MD5 d1e3ae04fe4eb60db8f8fe31789d7cbc
BLAKE2b-256 a346d2b22ce6fe891b243ac9ac5deda6056ce42c5a43cab33ee6e3ba5c41f744

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_zbrush-0.2.13-py3-none-any.whl:

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

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

Release history Release notifications | RSS feed

0.2.25

2 files

0.2.24

2 files

0.2.23

2 files

0.2.22

2 files

0.2.21

2 files

0.2.20

2 files

0.2.19

2 files

0.2.18

2 files

0.2.17

2 files

0.2.16

2 files

0.2.15

2 files

0.2.14

2 files

This release

0.2.13 This release

2 files

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

0.2.9

2 files

0.2.8

2 files

0.2.7

2 files

0.2.6

2 files

0.2.5

2 files

0.2.4

2 files

0.2.3

2 files

0.2.2

2 files

Supported by

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