root-ext-cad
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@root-ext-cadvalidate DFM for flange.step"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
root-ext-cad
CAD-engineering MCP tool server — code-CAD builds (build123d/CadQuery), model inspection, meshing, DFM-lite validation, and mechanical calculators. Built as the mechanical-engineering pack for [ROOT Workspace], but it speaks plain MCP stdio and works with any MCP host.
The workspace client stays domain-free by doctrine; this repo is where the CAD knowledge lives. Tools reach both ROOT runtimes (the brain-governed deployment and the lite Tier-0 harness) through the client's mcp-bridge, and every call is governed — write-class tools gate like any write; network tools park for approval.
The charter (binding)
Source is truth; artifacts are derived. The pack never overwrites
a user's file in place: geometry writes land in a caller-named output
directory (default derived/ beside the source), and every write tool
refuses an output path that collides with its input.
tests/test_server.py::test_no_inplace_mutation_tools_exist and the
collision-refusal tests enforce this in CI, not just in prose.
Parametric source (a build123d or CadQuery .py script) is the
model; STEP/STL/glTF/3MF are exports. model_build executes scripts —
it says so plainly, runs them in this pack's own venv as a
resource-capped subprocess, and is classed write, never read.
Related MCP server: build123d-mcp
Tools
Tool | Class* | What it does |
| read | STEP/BREP/STL → bounding box, volume/area, mass (given density), topology counts, per-solid summary |
| read | DFM-lite lint: open (non-watertight) shells, invalid B-rep, tiny edges/faces, pairwise interference & clearance — every finding carries its evidence and threshold |
| write | Run a build123d/CadQuery parametric script (sandboxed subprocess, CPU/memory/wall caps) → STEP/STL/glTF/3MF into the output dir + a build report |
| write | STEP/BREP → tessellated STL/glTF/3MF with linear + angular tolerance controls |
| read | ISO 286 limits & fits (hole-basis subset), clearance/interference verdicts |
| read | Metric coarse threads: pitch, stress area, tap & clearance drills, preload/torque first-cut |
| read | Beam bending first-cut: cantilever / simply-supported, point / UDL, rect / round / tube sections |
| read | Assembly mass + 3D center of gravity from a component list, envelope check |
| read | Geometric diff of two revisions: volume/area/bbox deltas, bodies unchanged/moved/added/removed by shape signature — geometry, not a feature tree, and the report says so |
| write | Named-view (front/top/…/iso) SVG or DXF projection: visible edges + dashed hidden layer — a silhouette for hand-off, not a dimensioned drawing |
| external | Starter model from a text prompt via Zoo's ML-ephant API (+ its editable KCL source when returned); needs |
* Classes derive fail-safe from annotations in the ROOT client:
read tools declare readOnlyHint: true, openWorldHint: false; write
tools declare readOnlyHint: false, openWorldHint: false (the
closed-world write class); network tools (Phase CAD-D: text_to_cad)
will declare openWorldHint: true and refuse by name without their
key.
Connect it to ROOT Workspace
Settings → Connected tools → the connect form:
Name:
cad-engCommand:
uv run --project /path/to/root-ext-cad root-ext-cad(a local checkout), or once published:uvx root-ext-cad
Run the row's Check (doctor) after connecting. Keep model files
and build scripts inside granted folders so the agent can cross-read
them with fs.*. Builds must finish inside the bridge's call ceiling
(120 s; 90 s once promoted) — the default subprocess wall cap is 75 s.
Development
uv venv .venv
uv pip install --python .venv/bin/python -e ".[dev]"
.venv/bin/pytestLayering rule: server.py is wiring only; every capability lives in a
plain-Python module (inspection.py, meshing.py, validate.py,
buildrun.py, calc.py, geometry.py) with logic separated from
I/O so the rules stay unit-testable on synthetic shapes — no fixture
model files required.
Roadmap
Later, each behind its own ADR: FreeCAD GUI-bridge companion, Onshape connector, KCL as a second source dialect, FEA hand-off recipes, PMI/GD&T presence reporting
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-qualityDmaintenanceMCP server that exposes CAD geometry reasoning over STEP files to LLMs, allowing natural language queries about parts, assemblies, dimensions, holes, and mass properties.
- AlicenseAqualityAmaintenanceMCP server for Python build123d to help AIs develop and reason about 3D models and CAD3842Apache 2.0
- Alicense-qualityAmaintenanceMCP server for interacting with Creo Parametric CAD software. Enables tool calls like file_open, feature_set, and J-Link execution through a Python-based server and optional Java gateway.MIT
- Alicense-qualityCmaintenanceEnables AI agents to programmatically build, analyze, and export 3D CAD geometry using FreeCAD through REST or MCP tools.1MIT
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
MCP server exposing the Backtest360 engine API as tools for AI agents.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/graphgrow/root-ext-cad'
If you have feedback or need assistance with the MCP directory API, please join our Discord server