@fingerskier/pi-build123d

extension

build123d CAD MCP plugin for Pi with a self-bootstrapping Python server

by · v2026.5.7 · published 3mo ago

$ pi install npm:@fingerskier/pi-build123d
downloads/mo
76
stars
last push
open issues

Signals

license: MITtestspi manifest: missinginstall size: —deps: 0peer deps: 0

Download trend

206 downloads · last 12 weeks (weekly)

README

build123d-claude-plugin

A Claude Code plugin and MCP server for creating 3D CAD models using build123d, a Python parametric CAD library built on the OpenCascade kernel.

Features

  • AI-assisted CAD modeling — Claude writes build123d code, executes it, and exports artifacts
  • MCP server with 7 tools for the full CAD workflow:
    • execute_build123d — Run build123d code to create 3D models
    • export_stl — Export to STL (for 3D printing)
    • export_step — Export to STEP (for CAD interchange)
    • render_image — Render PNG/SVG images from multiple view angles
    • list_models / get_model_info / delete_model — Session management
  • Sandboxed execution — Code runs in a restricted namespace (no filesystem/network access)
  • CLAUDE.md reference — Comprehensive build123d API guide for Claude

Installation

pip install -e .

Dependencies

  • Python 3.10+
  • build123d (and OpenCascade via cadquery-ocp)
  • mcp (Model Context Protocol SDK)
  • CairoSVG (optional, for PNG rendering)
  • Pillow (fallback image support)

Setup with Claude Code

Add the MCP server to your Claude Code configuration:

{
  "mcpServers": {
    "build123d": {
      "command": "build123d-mcp",
      "args": ["--output-dir", "./cad-output"]
    }
  }
}

Or run from source:

{
  "mcpServers": {
    "build123d": {
      "command": "python",
      "args": ["-m", "build123d_mcp.server", "--output-dir", "./cad-output"]
    }
  }
}

Usage

Once configured, ask Claude to create CAD models:

"Create a box with rounded edges, 40x30x20mm with 3mm fillets"

"Design a parametric enclosure for a Raspberry Pi with screw mounting holes"

"Make an L-bracket with mounting holes and export it as STL for 3D printing"

Claude will:

  1. Write build123d code using the execute_build123d tool
  2. Show you model properties (size, volume, topology)
  3. Render images with render_image
  4. Export to STL/STEP when you're ready

Project Structure

├── CLAUDE.md                      # Build123d reference for Claude
├── pyproject.toml                 # Python package config
├── src/build123d_mcp/
│   ├── server.py                  # MCP server & tool definitions
│   ├── executor.py                # Sandboxed code execution engine
│   ├── exporter.py                # STL/STEP export + model properties
│   └── renderer.py                # SVG/PNG image rendering
├── examples/                      # Example build123d scripts
│   ├── simple_box.py
│   ├── enclosure.py
│   └── bracket.py
└── tests/                         # Unit tests

Running Tests

pip install -e ".[dev]"
pytest

Security

The code executor enforces these constraints:

  • Allowed imports: build123d, math, typing, collections, itertools, functools, dataclasses, enum
  • Blocked builtins: open, exec, eval, __import__, compile, exit, input, and others
  • AST validation: Dangerous patterns (disallowed imports, dunder access) are rejected before execution
  • Timeout: 60-second execution limit

License

MIT