gitcad
Enables agents to create and manipulate 3D CAD models using natural language via MCP, with git-based versioning and manufacturing output generation.
README
gitcad
Agent-first, headless, git-native CAD.
gitcad is a boundary-representation CAD system designed from the ground up to be
driven by agents over MCP, with git as the
source of truth and a browser as the (optional) viewer. It leans on the mature
OpenCASCADE geometry kernel via
cadquery-ocp rather than reinventing
b-rep math — the value lives in the layers around the kernel:
- an intent-based API agents can author without visualizing raw NURBS,
- a verification/render loop so agents model by checking, not hoping,
- associative 2D drawings derived from the 3D model (mechanical drafting),
- a git-native text format so models diff, branch, and merge like code, and
- a privacy-preserving bug loop where failures are auto-reduced to minimal, synthetic, shareable repros.
Website: gitcad.xyz
Why this exists
Agents fall back to shelling out to FreeCAD for anything with complex curves — not because that's good, but because it's what's in the training distribution, and they model blind. gitcad's thesis: wrap the same proven kernel (OCCT) in an intent API plus a deterministic inspect/render loop, make the model text so git works, and make MCP the primary interface so the product is agent-legible from day one.
The six seams
Everything swappable lives behind a small, stable interface (gitcad.seams):
| Seam | Responsibility | Default backend |
|---|---|---|
Kernel |
b-rep geometry ops | OCCT via cadquery-ocp (gitcad.kernel.occt) |
IdentityService |
stable entity IDs (topological naming) | lineage-hash (gitcad.identity) |
DocumentModel |
the feature tree + text (de)serialization | gitcad.document |
Renderer |
headless tessellate → image/glTF | stub |
DrawingEngine |
3D → 2D HLR projection + dimensions | stub |
Storage |
git-backed model + artifact store | stub |
A "major architecture change" should mean replacing one backend, not a rewrite.
Layout
src/gitcad/
seams.py # the six Protocol interfaces — the load-bearing boundaries
errors.py # structured errors that double as bug-repro payloads
identity.py # IdentityService: stable IDs from construction lineage
document.py # DocumentModel: feature tree + canonical text format
kernel/
null.py # pure-Python test backend (no OCCT dependency)
occt.py # OCCT via cadquery-ocp (the real kernel)
report/
fingerprint.py # deterministic failure fingerprints (for dedup)
reduce.py # delta-debug reducer: proprietary model -> minimal synthetic repro
mcp/
server.py # the MCP tool surface (the PRIMARY interface)
docs/adr/ # architecture decision records (the durable intent)
tests/
invariants/ # permanent, architecture-independent properties
golden/ # curated user-visible contracts
regression/ # auto-generated, second-class, expirable
Quick start
pip install --no-deps -e packages/gitcad-core -e packages/gitcad-mech -e packages/gitcad-ecad -e packages/gitcad && pip install pytest
pytest # runs against the pure-Python null kernel
pip install cadquery-ocp # add the real OCCT kernel (~large wheel)
The test suite runs with no geometry kernel installed — the null backend
covers identity, document round-tripping, and reduction. Tests that need real
geometry are marked @pytest.mark.occt and skip when cadquery-ocp is absent.
Status — v0.1
Manufacturing outputs work end to end. From a text model, gitcad produces files you can send to a manufacturer today:
| Domain | Outputs |
|---|---|
| Mechanical | STEP (ISO 10303-21) · STL · dimensioned 2D drawings (SVG + PDF, third-angle front/top/right/iso via OCCT HLR) |
| Electrical | Gerber X2 (copper ×2, mask ×2, silk, profile) · Excellon drill · pick-and-place CSV · manifest |
Working: OCCT kernel (primitives, booleans, fillets, transforms, validation, measurement, entity enumeration) · drawing engine · 2-layer board model with fab-readiness validation · MCP tools for all of it · deterministic, byte-stable outputs (same source → identical Gerbers).
Try it:
pip install cadquery-ocp # after the editable installs above
python examples/bracket.py # → bracket.step, bracket.pdf, bracket.svg, bracket.stl
python examples/blinky.py # → full Gerber/drill/PnP fab package
Next: the cross-domain part standard (interfaces, ports, lockfile versioning),
schematic capture + ERC, DRC engine, associative feature-level dimensions, the
component registry. See docs/adr/ for the reasoning, docs/research/ for the
competitive feature map, and CLAUDE.md for the rules agents must follow.
License
Apache-2.0. The OCCT kernel it binds is LGPL-2.1-with-exception; see NOTICE.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.