Skip to content

Back to the catalog

Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)
github.comrepo

Show HN: SolidCraft – Open-Source Parametric CAD in Rust (With MCP Support)

SolidCraft is an open-source parametric 3D CAD application written in pure Rust. It has constrained sketches with its own solver, a feature timeline, assemblies, sheet metal, and STEP/IGES/3MF/STL export. It runs on desktop (egui+wgpu), in the browser, and as a headless CLI. The built-in MCP server (`solidcraft-cli mcp`) gives agents tools such as execute, batch, inspect_design, measure, set_parameter, screenshot and export. They can model headless or drive the running app over a JSON-lines control channel. A rover with 3,323 timeline steps was built entirely through MCP, which shows agent-driven parametric modelling working at scale.

TL;DR Open-source Rust parametric CAD with a built-in MCP server that lets AI agents model, measure and screenshot parts.
Document

What it claims

SolidCraft is MIT OR Apache-2.0 licensed (your choice) and developed under clean-room contribution rules. The authors call it "early but usable for simple parts." Their correctness evidence is a reference suite of 76 public parts: 75 match analytic or FreeCAD-computed volume, area, centre of mass and bounding box, and the remaining one is a tracked bug. The page states that these checks "do not establish complete geometric or workflow equivalence."

How it works

Sketch solver

  • Points that the constraints fix relative to known geometry are placed exactly, by construction. This uses loci intersections and rigid-cluster decomposition, following Owen 1991 and Fudos–Hoffmann 1997.
  • Levenberg–Marquardt solves the remaining points.
  • The rank of the Jacobian gives the remaining degrees of freedom.
  • Over-constraining edits are rejected.
  • While dragging, the sketch is solved every frame, but the model rebuilds only once, when the drag ends.

Scripting. Every UI action is a registered command, and a script is a JSON list of those same commands:

{"commands": [
  {"command": "sketch.create", "params": {"plane": "XY"}},
  {"command": "sketch.rectangle.two_point", "params": {"p0": [0, 0], "p1": [40, 30]}},
  {"command": "solid.extrude", "params": {"distance": 20}},
  {"command": "solid.fillet", "params": {"edges": [[0, 0, 10]], "radius": 3}}
]}

MCP modes. The MCP server runs on stdio in one of two modes:

  • Headless: it runs its own design session.
  • Connected: with --connect 127.0.0.1:PORT, it drives a desktop app started with solidcraft --control PORT, so you can watch the agent work.

MCP tools. The full list is list_commands, execute, batch, inspect_design, measure, body_topology, set_parameter, screenshot (returns the image), export, undo, redo, new_design, open, save.

MCP file access is limited to:

  • the open design's folder, but only when it lies inside your home folder, and never the home folder itself or a hidden folder;
  • SolidCraft's recovery folder;
  • folders passed with --allow-path DIR.

How to use it

Prebuilt downloads are available for:

  • Windows: x64, ARM64 and 32-bit, as an installer or portable zip
  • macOS: Apple silicon and Intel
  • Linux: AppImage, .deb, .rpm, Flatpak and Snap, with ARM64 builds as AppImage, .deb and .rpm
  • A browser build

Snap install:

sudo snap install solidcraft

Registering the MCP server with Claude Code:

claude mcp add solidcraft -- solidcraft-cli mcp

From source:

cargo run --release -p solidcraft -- --sample          # desktop app with a sample part
cargo run --release -p solidcraft-cli -- commands      # the command registry
cargo run --release -p solidcraft-cli -- run examples/bracket.json --out bracket.step
cargo run --release -p solidcraft-cli -- snapshot examples/bracket.json --out bracket.png
cargo run --release -p solidcraft-cli -- eval part.step # measure an imported STEP file
cargo xtask ci                                          # fmt, clippy, tests, assets, layers, wasm

The web build uses WebGPU, or WebGL2 if you add ?webgl to the URL:

cd apps/solidcraft-web && trunk build --release --public-url ./

Interop beyond export

  • STEP import supports AP203, AP214 and AP242 solids and assemblies, and IGES import supports manifold B-reps and sewn trimmed surfaces. An imported model becomes a base feature that later features can build on.
  • STEP export (AP242) writes revolved faces as native analytic surfaces.
  • Sheet metal produces exact line/arc/circle DXF flat patterns.

3D mouse. 3Dconnexion devices are supported on Windows and Linux. On Linux you need a udev rule, for example:

SUBSYSTEM=="hidraw", ATTRS{idVendor}=="256f", TAG+="uaccess"

Limits

  • Maturity: the project is early-stage, with one known reference-part failure. Supported operations and limitations are listed in ROADMAP.md, which the page does not reproduce.
  • Unsigned downloads: you will have to bypass SmartScreen on Windows and Gatekeeper on macOS.
  • Mesh import: 3MF, STL and OBJ come in as mesh bodies, which solid features cannot use. Convert Mesh only reconstructs closed constant-section parts with planar and circular-cylindrical faces.
  • Flatpak: the 3D mouse does not work because the sandbox does not expose hidraw devices.
  • Affiliation: the project is not affiliated with Autodesk. Fusion-like workflows are modelled on public documentation, not on compatibility with Autodesk's file formats.

Organisations named here

  • Autodesk
  • 3Dconnexion
  • Claude Code
  • Model Context Protocol
  • SELENE

Technologies named here

  • SolidCraft
  • solidcraft-cli
  • SolidCraft MCP server
  • Claude Code
  • FreeCAD
  • egui
  • wgpu
  • Rust
  • Model Context Protocol
  • WebAssembly
  • Flatpak

Techniques named here

  • Agent-driven CAD modelling via MCP