
ParCAD
io.github.ierehon1905Published by GitHub account ierehon1905v0.0.15Updated Nov 7, 2026
Parametric CAD as code: model 3D-printable parts on an exact B-rep kernel, measured.
Overview
ParCAD lets an assistant write parametric CAD scripts for small mechanical parts, build them on an exact B-rep kernel, measure them and export STEP.
- What you can do
- Write and evaluate parametric part scripts in a code DSL, with descriptive edge and face selectors that fail loudly when a count is wrong
- Build exact B-rep geometry through OpenCASCADE, with unions, cuts, fillets and blends, and export STEP
- Measure parts: volume, wall thickness, whether bores meet, plus other checked geometry
- Render reading-oriented views that share one scale, sections through the inside, and surfaces coloured by tag
- Read the language documentation in a single call, and call the same tools from the command line
- When to use it
- Useful when you want an assistant to design or iterate on small machined or 3D-printed parts such as brackets, flanges, manifolds or heat sinks, and to verify them by measurement rather than by looking at a screen.
- Requirements
- Either a local install (Homebrew on macOS or Linux, a desktop app, or a CLI archive) or the hosted endpoint, which requires a bearer token in the Authorization header. Local use needs no account; a client connecting by URL to a local host needs that host running. Building from source needs Rust, Bun, CMake, a C++ compiler, patch and Python 3.11+.
Installation
In SourceWeft
- Open ParCAD in the dashboard and add it to a workspace.
- Connect Authorization token credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/io.github.ierehon1905%2Fparcad/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"parcad": {
"type": "http",
"url": "https://mcp.parcad.dev/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}README
ParCAD
Parametric CAD you write as code — for people, and for agents.
Status: 0.0.15, experimental. Made by Maging Studio, and the DSL still moves. Every operation is checked against measured geometry (eval/cases/), but none of it has had the years of abuse that make a CAD kernel trustworthy. Measure a part before you machine it.
Start here: Getting started, five minutes in a browser tab.
[A bracket built by the script below, in the parcad viewport]
You never name an edge by index. You describe it — the circular rims that open onto the top face — and the description still works after you move a hole.
One graph, one exact kernel
Your script builds a small JSON graph, and an exact kernel reads it — OpenCASCADE: real faces and edges, STEP export, and a refusal rather than an approximation when it cannot do something faithfully. The graph is what keeps today's script working after tomorrow's kernel swap.
Every kernel returns valid-looking wrong answers somewhere, OpenCASCADE and NVIDIA's newly open SMLIB included. ParCAD carries five patches to OpenCASCADE 8.0.1 for the cases its parts ran into, and checks each build itself after the kernel reports success.
[The same manifold block cut open on a plane, cut faces in orange]
Parts get measured, not assumed — volume, wall thickness, whether two bores actually meet. An agent gets the same numbers over MCP, with no screen to look at.
And when it does look, it gets pictures made for reading: views that share one scale, sections through the inside, and every surface coloured by the tag that built it.
[What an agent is shown: four views at one scale, two sections, and faces coloured by tag]
It is aimed at small mechanical parts — brackets, flanges, manifolds, heat sinks, the things you print or machine one of. examples/ has thirty-one.
Why not CadQuery, build123d or OpenSCAD
Those are good, and much older. Three differences. Selectors are descriptive and
checked — .expect({ count: 4 }) turns a selector that silently started
matching three edges into a build error, which is the failure mode that makes
code-CAD fragile. What you see, what you measure and what you export come off
one exact B-rep, so the preview and the STEP file are one model, not two
projects. And measurement is an output rather than something you eyeball,
which is what makes the MCP surface real instead of a wrapper.
Install it
With Homebrew, on macOS or Linux (Linux from 0.0.6), which installs the host and no window:
Then add it to your agent, which starts parcad when it
needs it. To use the app yourself, run parcad serve and open
http://127.0.0.1:4242 — the whole app is there, in your browser.
Nothing on the Homebrew path is quarantined. The same parcad is the headless driver
(parcad part.js), and a client of the running host: parcad tools
lists what an agent can call over MCP and parcad call <tool> calls it from
a shell.
Or the desktop app, from Releases:
Each platform's build measures the whole eval corpus with the worker it ships
before it is uploaded. The Mac app is not notarised yet, so macOS refuses it the
first time: run xattr -dr com.apple.quarantine /Applications/ParCAD.app once.
The Windows installer is not signed yet: SmartScreen warns, More info, then
Run anyway. Every
platform also has a parcad-cli-* archive — parcad, its worker beside it and
the seed parts — for running the host without a window. Keep the two binaries
together.
Build it
macOS, Linux and Windows. Day-to-day development is on macOS; the release workflow builds and measures on all three, and Linux on arm64 builds too.
You need Rust (the toolchain is pinned; rustup honours it),
Bun, CMake, a C++ compiler, patch(1) and Python 3.11+. A
full build wants around 20 GB free. On Linux the window also needs WebKitGTK
(libwebkit2gtk-4.1-dev), and libclang-dev for the script sandbox's
bindings. On Windows, use MSVC (Visual Studio Build Tools) and run the scripts
from Git Bash, which also provides patch.
cargo build produces a dev app whatever the profile — Tauri's switch is the
custom-protocol feature, not --release — so launch the window through tauri dev or tauri build, never the bare binary. And a root cargo build
deliberately does not build OpenCASCADE; tools/build-worker.sh does.
Or headless:
The app serves its UI and an MCP endpoint on http://127.0.0.1:4242. Parts live
in ~/Library/Application Support/parcad as plain .js files you can edit anywhere.
Use it from an agent
With nothing installed: open ParCAD web, choose Connect your AI, and give your client the link it shows — Claude Code, the Claude app as a custom connector, Cursor, VS Code, or any client that connects to a URL. The tab is the server, with the same tools as the app, and it has to stay open; a relay passes the messages and keeps none (relay/README.md).
Every route below runs the same parcad on your machine: the one Homebrew
installs, which the desktop app carries too. Install either first.
As a plugin, which brings the MCP server and a skill that says how to use it:
In Codex, which finds parcad on PATH, so the Homebrew install:
In Cursor or VS Code, with parcad on PATH:
[Install in Cursor] [Install in VS Code]
Or add the server by hand, in any client that launches stdio servers:
parcad mcp relays to the app or parcad serve when one is running, so the
agent shares the live session with your window. When none is running it hosts
one itself, for as long as the client stays connected. A client that connects
by URL can use http://127.0.0.1:4242/mcp directly, but only while a host is
up; brew services start parcad keeps one up from login.
The same tools are on the command line, with the same names and arguments —
parcad tools lists them, parcad call evaluate_part --set [email protected]
calls one — and they work whether or not the app is open.
ParCAD is also in the official MCP Registry
as io.github.ierehon1905/parcad, so clients that browse it can install it by
that name.
Start the agent on the read_docs tool, which hands over the whole language in
one call.
More
- docs/GETTING_STARTED.md — five minutes, from the browser to your own agent
- examples/ — thirty-one parts, from a bracket to a hydraulic manifold
- CONTRIBUTING.md — the gate, and what a change has to satisfy
- docs/ARCHITECTURE.md — how the pieces fit, and why
- docs/GOTCHAS.md — traps that have already cost a day each
- docs/NEXT.md — what's missing, in order
Privacy
ParCAD collects nothing about you: no accounts, no analytics, no telemetry. PRIVACY.md lists everything that touches the network.
Licensing
ParCAD is free software under the GNU AGPL-3.0 or later: use it,
change it and share it, but a modified ParCAD you distribute or run as a service
must publish its source too. The parts you make are yours — part scripts and
everything ParCAD exports from them can be licensed however you like, and the
seed parts in examples/ are MIT. Releases through v0.0.9 stay MIT or
Apache-2.0.
Built on components under other licences: OpenCASCADE
and its bindings under vendor/ are LGPL-2.1, and one file of our own,
crates/parcad-core/src/occlusion.rs, is MPL-2.0 because it was ported from
fidget. Building from source is
unencumbered; redistributing a binary carries obligations —
NOTICE.md spells them out, including how to swap in your own
OpenCASCADE.
This software makes use of facilities provided by the Open CASCADE Technology software.
Source: README.md at commit 48a4523
Tools
0Version history
7- v0.0.15LatestNov 7, 2026
- v0.0.13Oct 13, 2026
- v0.0.11Sep 27, 2026
- v0.0.9Sep 18, 2026
- v0.0.8Sep 18, 2026
- v0.0.7Sep 17, 2026
- v0.0.6Sep 16, 2026
Score
60% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declaredRequired10 pts
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts