Skip to main content

b123d-print

PyPI CI Docs License: MIT

Vibe CAD for 3D printing. Tell your AI assistant what you need, in plain words, with a photo and a few caliper readings. It designs the part, looks at it from every side, checks it for printing problems and hands you a file for your slicer. No CAD skills needed, and it works with any assistant that supports MCP: Claude, Gemini CLI, Cursor, VS Code Copilot, Codex and more.

What you can make

Ask the way you would ask a friend who owns calipers and a CAD program. These were designed this way, and printed:

  • "A box for this IR blaster board: the LED pointing out the top, a screw-on lid, two tabs to mount it on the wall." A two-part case, checked against a stand-in of the board so it fits.
  • "An outdoor case for this motion sensor. It should slide off a wall plate and keep the rain out." Dovetail rails, a click-in detent, a drain slot, and a cover that prints without supports.
  • "An adapter plate: 2-gang box behind, 1-gang smart switch in front." Counterbored screw holes, and a wall check added after the first print broke through a 0.05 mm skin no render showed.

Or remix a model you downloaded (STL, 3MF or STEP) and change it:

  • "Here's an L bracket STL I downloaded: turn its two mounting holes into slots and add gussets." The original is loaded as a solid and changed, the checks tell the original's flaws from new ones, and a before/after view shows exactly what moved. (A demo for the docs, not printed yet.)

Before a long print, test the fit with a fit-test template: a thin, quick print cut from the real part.

  • "Make a fit-test template of the mounting face so I can check the hole pattern." The assistant shows you the face in red, asks you to confirm, and gives you a 1.2 mm plate with the part's exact holes: minutes to print instead of hours.

And the everyday things: a spacer, a knob, a bracket, a cable clip, a replacement for a broken part you can measure. Then keep talking to it: "make it 5 mm taller", "add a hole for an M4 screw", "the lid is too tight". Every dimension stays a named number in a short build123d script, so each change is exact, and you get STEP files to keep editing in other CAD if you want.

ESP IR blaster box, assembly with board stand-ins Section through the LED: base, lid, board and LED stand-ins
Two-part box for an IR transceiver board, with the board stand-ins Section through the LED: lid cone, board, clearances
Outdoor motion sensor case, arch cover Wall plate section through the counterbores
Outdoor sensor case: dovetail back plate + support-free cover Wall plate: section just past the face, where the wall check looks
Remix: the downloaded L bracket and the version with slots and gussets Remix: the original colored where the remix differs
Remix: a downloaded bracket, before and after Where the remix differs: red cut, grey added

Documentation: https://kd5ryn.github.io/b123d-print/

Get started in 2 minutes

b123d-print's MCP server is a plug-in that gives your AI assistant CAD tools. It runs on your own computer.

The easy way: paste this into your AI assistant (Claude Code, Claude Desktop, Cursor, Gemini CLI, Codex, …):

Install the b123d-print MCP server for me. It runs with
`uvx --from b123d-print b123d-print-mcp --workspace <folder>`
where <folder> is a folder for my parts, such as ~/parts.
Install uv first if it is missing (https://docs.astral.sh/uv/).
Add the server to your MCP settings, tell me when to restart you,
and after the restart check that its tools (list_parts, new_part,
build_part, ...) are available.

It will probably ask to run a few commands (to install uv and add the server): that is expected.

By hand:

  1. Install uv, which fetches Python and everything else b123d-print needs.

  2. Add the server. Claude Code:

    claude mcp add b123d-print -- uvx --from b123d-print b123d-print-mcp --workspace ~/parts
    

    Or install the Claude Code plugin (server + skill) in one step:

    /plugin install b123d-print --marketplace KD5RYN/b123d-print
    

    Claude Desktop (Settings → Developer → Edit Config):

    {
      "mcpServers": {
        "b123d-print": {
          "command": "uvx",
          "args": ["--from", "b123d-print", "b123d-print-mcp", "--workspace", "/Users/you/parts"]
        }
      }
    }
    

    Cursor, VS Code, Gemini CLI, Codex and others: Connect your MCP client.

  3. Restart the assistant.

Then ask: "Design a 40 mm round spacer, 10 mm tall, with an M3 hole." The files land in your parts folder under parts/<name>/out/, ready for your slicer. The first start downloads a few hundred MB and can take a few minutes (Troubleshooting). The assistant checks its work by looking at its renders, so use a client that passes tool images to the model (Claude Desktop and Claude Code do).

Scope: parts for FDM 3D printing, nothing else. Everything is built around a printed part: print orientation with the bed at Z=0, hole compensation, mating clearance, calibration coupons, and print checks built on sourced FDM design rules. It is not a general CAD framework.

What's in it

  • b123d-print package + CLI — export, 6-view renders, colored multi-part cross-sections, and print checks: overlap between mating parts, overhang and bridges in print orientation, thin features and wall thickness around cuts, holes (round tops that sag), bed-edge fillets, gaps between moving parts, probes ("is the roof closed?").
  • b123d-print-mcp — an MCP server, so it works from Claude Desktop, Claude Code, Gemini CLI, Cursor, VS Code, Codex and other MCP clients. Part scripts are model-written code: they run in a sandbox with a timeout and no network.
  • compare — measure a part against a reference STL, 3MF or STEP: size, volume and surface differences, a 0–100 score, pass/fail, and a deviation view (comparing parts).
  • Remix — start from someone else's STL, 3MF or STEP: import_model makes a mesh a solid (coplanar triangles merged), the checks tell the original's problems from the ones the remix added, and a before/after view shows the change (remixing a part).
  • Fit-test templates — a quick thin print of a face, a slice or a region of the real part (same holes and clearances) to check the hole pattern and the fits before the full print (fit-test templates).
  • Design review — after the print checks pass, the assistant reviews the part for a style you pick (functional, modern, least cost, rugged/outdoor, soft/handheld): rough filament and time estimates, supports, edge treatment, layer steps, water traps, and concrete suggestions from sourced design rules. It changes nothing without your OK (design review).
  • The workflow, model-neutral — MCP prompts plus an AGENTS.md any agent can read. The rules come from real prints; one exists because a part broke through a 0.05 mm skin that no render showed.
  • Examples — four parts designed this way and printed, plus calibration coupons for holes, fits, and overhangs and bridges, in src/b123d_print/examples/.

Advanced: run it on another machine

Not needed for most people. To keep the parts on a home server and design from a laptop, use SSH; for many agents sharing one server (eval runs, a team), HTTP with a named token per tool; for the strongest isolation (also on Windows), Docker. Which mode? compares them.

Documentation

Getting started Quick start · MCP clients (Claude Desktop, Claude Code, Gemini CLI, Cursor, VS Code, Codex) · CLI and Python
Advanced Which mode? · Remote over SSH · Over the network (HTTP) · Docker
Using it How a session goes · MCP tools and prompts · Output formats · Settings · Hole compensation · Printer profiles · The checks · Sandbox · Comparing parts · Remixing a part · Fit-test templates
Part scripts The part script · Checks API · Examples · Workflow rules · Design rules (sourced)
More Reference · Updating · Troubleshooting · Contributing · Agent evals · Credits and licenses

Status

0.x — early. The part-script convention may still change. CI tests macOS, Ubuntu and Windows, the built package via uvx, and the Docker image on every push. On Windows the server runs natively for local use, but without an OS sandbox (process isolation and an audit hook only); use WSL2 or Docker for isolation. SSH mode's server side is macOS and Linux only; Windows works as an SSH or HTTP client. Platforms and status.

Credits and license

b123d-print is a thin layer over build123d, Open CASCADE Technology (via OCP), lib3mf, OrcaSlicer's printer data, matplotlib, NumPy, the MCP Python SDK and uv. Details and redistribution notes: THIRD_PARTY.md.

MIT © KD5RYN and contributors.

Metadata

Release files for b123d-print 0.3.2

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

Source distribution (sdist)

Source distribution for b123d-print 0.3.2
File Size Uploaded
b123d_print-0.3.2.tar.gz 220.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for b123d-print 0.3.2
File Interpreter ABI Platform
b123d_print-0.3.2-py3-none-any.whl Python 3 none any Details

Total release size: 461.1 kB

Release files / b123d_print-0.3.2.tar.gz

Download URL b123d_print-0.3.2.tar.gz
Size 220.6 kB
Tags Source
SHA-256 checksum
How to use checksums
c2310f1b0a6452b8a02a87a2e5b3d73cf640116e5c85a83a94fa9c4aa958c548
BLAKE2b-256 checksum
How to use checksums
ebb52934addda0ee5f74ac07123611a02fb1f1587afa5fe4910dc558bbb3a2d5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release files / b123d_print-0.3.2-py3-none-any.whl

Download URL b123d_print-0.3.2-py3-none-any.whl
Size 240.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
23188929037d0041aab863f0b28979e84eb2b3868222113cc57f56d269eab221
BLAKE2b-256 checksum
How to use checksums
523a583fd648c3e4782749931b6f5ec9b1f6ba4ba02c2dde4b13ba38d713d944
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

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.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.3.2 This release

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

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