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, 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 against the static OCCT slice in prebuilt/occt/, so it depends on nothing but macOS — checked by the build script rather than assumed.

Release files for zenve3d-mcp 0.6.1

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

Built distribution (wheel)

Table of built distributions (wheels) for zenve3d-mcp 0.6.1
File Interpreter ABI Platform
zenve3d_mcp-0.6.1-py3-none-macosx_14_0_arm64.whl Python 3 none macOS 14.0+ ARM64 Details

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

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

Release history Release notifications | RSS feed

0.11.4

2 release files

0.11.3

1 release file

0.9.0

1 release file

0.8.0

1 release file

0.7.1

1 release file

0.7.0

1 release file

0.6.3

1 release file

This release

0.6.1 This release

1 release file

0.5.1

1 release file

0.4.1

1 release file

0.4.0

1 release file

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