Skip to main content

zenve3d-mcp

Model parametric CAD parts for Zenve 3D from Claude, or from any other MCP client.

Ask for a box and you get a project — a sketch, its dimensions, an extrude, a timeline you can go back and edit — not a mesh someone has to live with.

Install

// Claude Desktop ▸ Settings ▸ Developer ▸ Edit Config
{
  "mcpServers": {
    "zenve3d": { "command": "uvx", "args": ["zenve3d-mcp"] }
  }
}

macOS on Apple silicon or Linux on x86_64, and nothing else installed: the wheel carries the engine. Zenve 3D itself is a separate install from the App Store — you need it to open what the agent builds, but not to build it.

The four tools

Tool What it does
guide The complete .zcmd language reference. The agent reads it once, then writes parts.
run Runs a script through the real engine and reports what it saw — regions, faces, edges, solver state, the body table, every feature's state. Saves the script (and, on request, an STL) into ~/Downloads/Zenve.
describe The same report for the project you have open in the app, so the agent can work from what you already have.
apply Edits that project, live in your viewport, as one undoable step.

run is the loop, and the loop is the point. A script cannot predict the enumerations a kernel produces — a plate with a hole is two regions — so the agent writes a few lines, runs them, reads back what exists, and writes the next few against the truth instead of a guess. A refusal names its line and still prints everything before it, which is usually what says what the right answer was.

Each call gets a fresh engine and nothing is remembered between them. The script is the state: to change a part, the agent sends it again with the change in it.

Getting the part into the app

The finished script is already on disk: run saves it as ~/Downloads/Zenve/<name>.zcmd and names the path in what it reports back. One file per part, rewritten on every run, so what is in the folder at the end is the finished thing rather than a dozen numbered attempts. Open it with File ▸ New from Script… in Zenve 3D. On iPad, send the file over AirDrop or through Files and import it there.

Ask for an STL alongside it once the part is right, and it lands beside the script ready to slice.

Set ZENVE_OUTPUT_DIR to put those files somewhere else.

Working on the project you have open

Turn on AI mode — the lock beside the panel buttons — and the agent can read your open project with describe and edit it with apply. The edit appears in the viewport straight away and ⌘Z takes the whole thing back, however many commands were in it.

The lock is the whole contract. It stops the app's own editing while an agent is working, which is what keeps the part it is picking faces and edges off from moving underneath it, and it is what puts the app's pointer to the open project where this server can find it. Turn it off and both tools say so instead of guessing.

Nothing lands silently. apply refuses if the lock is off or if the document has moved since the agent last read it, and if the app does not take the edit within ten seconds it withdraws it and says which of the three likely reasons to check.

The projects folder is ~/zenve3d by default — the one the app asks you to pick on first launch. If you picked somewhere else, set ZENVE_SESSION_DIR to it.

Building from a checkout

./scripts/build-zenve3d.sh     # stages the binary and the guide
cd clients/mcp && uv build --wheel

The binary is built for the machine you run this on — macOS arm64 or Linux x86_64 — against the static OCCT slice in prebuilt/occt/, so it depends on nothing but the OS — checked by the build script rather than assumed. The release lane builds both wheels and publishes them together.

Metadata

Release files for zenve3d-mcp 0.13.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for zenve3d-mcp 0.13.0
File Interpreter ABI Platform Actions
zenve3d_mcp-0.13.0-py3-none-manylinux_2_38_x86_64.whl Python 3 none Linux glibc 2.38+ x86-64 Details for zenve3d_mcp-0.13.0-py3-none-manylinux_2_38_x86_64.whl
zenve3d_mcp-0.13.0-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details for zenve3d_mcp-0.13.0-py3-none-macosx_14_0_arm64.whl

Total release size: 29.4 MB

Release files / zenve3d_mcp-0.13.0-py3-none-manylinux_2_38_x86_64.whl

Download URL zenve3d_mcp-0.13.0-py3-none-manylinux_2_38_x86_64.whl
Size 16.5 MB
Tags Linux glibc 2.38+ x86-64 Python 3
SHA-256 checksum
How to use checksums
6842d4b5bd09cde9ed0a6b809bc507fe903442cbfc9b112183f53f7d5eed905f
BLAKE2b-256 checksum
How to use checksums
d82d1816f9cd72b29f2628c7a643d961ef6687747b0fb957a785ff593fc4b75c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Release files / zenve3d_mcp-0.13.0-py3-none-macosx_14_0_arm64.whl

Download URL zenve3d_mcp-0.13.0-py3-none-macosx_14_0_arm64.whl
Size 12.9 MB
Tags Python 3 macOS 14.0+ ARM64
SHA-256 checksum
How to use checksums
47af3a8c04fc7f1a63870e0e6b3007a69d2ea14ea09bfd0692a03a87aafe163c
BLAKE2b-256 checksum
How to use checksums
564fbcf00fb79868cfedd651221b517e6d28c780730a8a93ceeec47967c2340d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via uv/0.12.23 {"installer":{"name":"uv","version":"0.12.23","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

Security for zenve3d-mcp 0.13.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page