Skip to main content

3ds Max plugin for the DCC Model Context Protocol (MCP) ecosystem — embeds a Streamable HTTP MCP server directly inside 3ds Max

Project description

dcc-mcp-3dsmax

3ds Max MCP adapter screenshot

3ds Max plugin for the DCC Model Context Protocol (MCP) ecosystem.

Status: This project is under active development. APIs, packaging, and 3ds Max integration details may change quickly while the adapter tracks the latest dcc-mcp-core releases.
Direct image link: 3dsmax-mcp-readme-hero.png


Features

  • Sidecar MCP Server: Starts dcc-mcp-server.exe sidecar and keeps 3ds Max scene edits on the main thread
  • Progressive Skill Loading: Discover skills without loading them immediately
  • Shared Gateway: Registers with the stable gateway at http://127.0.0.1:9765/mcp
  • Job Persistence: SQLite-based job storage for long-running operations
  • Prometheus Metrics: Optional /metrics endpoint for monitoring

Agent install (recommended)

The fastest way to install is to let your AI agent do it. In Cursor, Claude, or any MCP-capable agent host, ask:

Please install and verify dcc-mcp-3dsmax.

First clone or locate the dcc-mcp-3dsmax repository and resolve its absolute
path as REPO_ROOT. Then read these absolute-path files before making changes:

- <REPO_ROOT>\install.md
- <REPO_ROOT>\skills\dcc-mcp-3dsmax-setup\SKILL.md

Follow the setup skill exactly:

1. Locate my 3dsmaxpy.exe. If it cannot be found, ask me for the absolute path.
2. Install dcc-mcp-3dsmax and dependencies. Prefer PyPI for end-user installs;
   use the local checkout only when I am already working from REPO_ROOT.
3. Install the 3ds Max startup hook so opening or restarting 3ds Max starts
   the runtime automatically.
4. Generate MCP Streamable HTTP config pointing to http://127.0.0.1:9765/mcp.
5. Ask me to open or restart 3ds Max, then run the generated smoke prompt to
   prove the agent can discover and call typed 3ds Max tools.

The agent reads install.md, runs the setup script against your 3ds Max 3dsmaxpy.exe, installs a startup hook, generates the MCP host config, asks you to open or restart 3ds Max, and runs a live smoke prompt to confirm the connection.

Installation

pip install dcc-mcp-3dsmax

Quickstart (inside 3ds Max MAXScript Listener)

import dcc_mcp_3dsmax

# Start on a random instance port; the public gateway stays fixed.
server = dcc_mcp_3dsmax.start_server()

# Progressive loading — discover skills without loading them immediately
n = server.discover_skills()        # scan paths, register tool metadata
server.load_skill("3dsmax-scene")  # lazy-load a specific skill

dcc_mcp_3dsmax.stop_server()

Runtime Bridge

Start the runtime bootstrap inside 3ds Max:

python.ExecuteFile @"C:\path\to\dcc-mcp-3dsmax\examples\start_sidecar_bridge.py"

This starts the agent-callable embedded MCP runtime, registers bundled 3ds Max skills/tools, and routes main-affinity scene edits through the shared dcc-mcp-core 0.18.20 UI dispatcher, pump abstractions, gateway guardian, and six-state readiness probe (process, dispatcher, dcc, skill_catalog, host_execution_bridge, main_thread_executor). The legacy random-port /dispatch bridge remains available for local diagnostics. The 3ds Max instance is registered with the stable gateway at http://127.0.0.1:9765/mcp. See docs/SIDECAR.md and the bundled skill index in docs/BUNDLED_SKILLS.md.

The bootstrap also installs a DCC MCP menu with Start Server, Stop Server, Open Gateway Admin, and Print Status commands. 3ds Max shutdown triggers the same stop path via #preSystemShutdown, so the runtime and local bridges are cleaned up when the host exits.

Skill Development

Create a skill with SKILL.md metadata file and Python scripts:

# my_skill/action_create_box.py
from dcc_mcp_3dsmax.api import max_success, with_max

@with_max
def main(width: float = 100.0, height: float = 100.0, depth: float = 100.0) -> dict:
    import pymxs
    rt = pymxs.runtime

    box_obj = rt.Box(width=width, height=height, depth=depth)
    return max_success("Created box", object_name=str(box_obj))

Environment Variables

Variable Description Default
DCC_MCP_3DSMAX_METRICS Enable Prometheus /metrics endpoint 0
DCC_MCP_3DSMAX_JOB_STORAGE Path to SQLite job database platform default
DCC_MCP_3DSMAX_DISABLE_EXECUTE_PYTHON Disable execute_python tool 0
DCC_MCP_3DSMAX_DISABLE_ARBITRARY_SCRIPT Disable all arbitrary script execution 0
DCC_MCP_3DSMAX_ENABLE_GATEWAY_FAILOVER Enable gateway failover 1
DCC_MCP_3DSMAX_SKILL_PATHS Extra skill search paths (semicolon-separated) None
DCC_MCP_3DSMAX_BRIDGE_PORT Runtime bridge localhost port random
DCC_MCP_3DSMAX_BOOTSTRAP_PATHS Extra package Python roots for startup bootstrapping None
DCC_MCP_PYTHONPATHS Shared package Python roots for Rez/pipeline launchers None
DCC_MCP_3DSMAX_ROOT Adapter package root; startup probes python, python37, src, and root None
DCC_MCP_CORE_ROOT dcc-mcp-core package root; startup probes python, python37, src, and root None
DCC_MCP_SERVER_ROOT Fallback dcc-mcp-server package root for Rez/pipeline launches None
DCC_MCP_SERVER_BIN Explicit dcc-mcp-server executable path for sidecar mode bundled payload
DCC_MCP_REGISTRY_DIR Optional shared gateway/sidecar registry override core default

Normal MZP installs do not need DCC_MCP_3DSMAX_PORT or DCC_MCP_GATEWAY_PORT: the adapter uses an internal ephemeral MCP port and the shared gateway default.

For Rez-style deployment, launch 3ds Max with package roots in the environment instead of copying packages into the user scripts folder. A pipeline package cache can expose paths such as <package-cache>/dcc_mcp_core, <package-cache>/dcc_mcp_3dsmax, and <package-cache>/dcc_mcp_server through the root variables above. The MZP installer uses isolated version directories under <user scripts>/dcc_mcp_3dsmax/versions/, so installing a new payload does not delete the version that may already be loaded by the running 3ds Max process. After install, the active payload is added to sys.path, obsolete payload directories are cleaned up where possible, and the runtime is started. The generated startup script repeats that activation on future 3ds Max launches, so the bridge comes back automatically after restart. Uninstall cleanup uses the import-light lifecycle helpers from dcc-mcp-core when available, so locked native files are reported as restart-required instead of disappearing into a generic PermissionError.

Requirements

  • 3ds Max 2017 or later (Python 3.x with pymxs support)
  • Python >= 3.7
  • dcc-mcp-core >= 0.18.20
  • dcc-mcp-server >= 0.18.20

License

MIT

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_3dsmax-0.1.32.tar.gz (1.7 MB view details)

Uploaded Source

Built Distribution

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

dcc_mcp_3dsmax-0.1.32-py3-none-any.whl (266.7 kB view details)

Uploaded Python 3

File details

Details for the file dcc_mcp_3dsmax-0.1.32.tar.gz.

File metadata

  • Download URL: dcc_mcp_3dsmax-0.1.32.tar.gz
  • Upload date:
  • Size: 1.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for dcc_mcp_3dsmax-0.1.32.tar.gz
Algorithm Hash digest
SHA256 9dcea237406ce55d09099db437ae2acbd81c79961d67c8ec72c452573e0ff4b4
MD5 4b5baba51f6bd8298ed3cdc19b5d80ba
BLAKE2b-256 1e521ac53732f950a802b16c49f3323dffc0a8c304140eeef0d9458f5c458265

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_3dsmax-0.1.32.tar.gz:

Publisher: release.yml on dcc-mcp/dcc-mcp-3dsmax

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_3dsmax-0.1.32-py3-none-any.whl.

File metadata

  • Download URL: dcc_mcp_3dsmax-0.1.32-py3-none-any.whl
  • Upload date:
  • Size: 266.7 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_3dsmax-0.1.32-py3-none-any.whl
Algorithm Hash digest
SHA256 22259851b6d217348c84ed1bff6249d2e0d7c5faf977811aa5d3af1045592283
MD5 0c73a7f024c5e3f6993617afad91bb3a
BLAKE2b-256 d2ccdf5b2e33b4138430f341f82f9f4f0ea0c737006c50ebc6bc5c9e1467f73e

See more details on using hashes here.

Provenance

The following attestation bundles were made for dcc_mcp_3dsmax-0.1.32-py3-none-any.whl:

Publisher: release.yml on dcc-mcp/dcc-mcp-3dsmax

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