Server data from the Official MCP Registry
Agent-native parametric 3D CAD: model machines, validate them and emit shop drawings
About
Agent-native parametric 3D CAD: model machines, validate them and emit shop drawings
Security Report
This is a well-architected CAD server with proper authentication via environment variables and no obvious malicious patterns. However, there are several moderate security concerns: potential path traversal in file uploads, missing input validation on user-supplied filenames, overly broad exception handling that could mask security issues, and sensitive data appearing in logs. The permissions (network HTTP, file I/O, environment variables, subprocess) are reasonable for a CAD application that needs to call external APIs and manage files, aligning with the Developer Tools category baseline. Supply chain analysis found 5 known vulnerabilities in dependencies (0 critical, 1 high severity). Package verification found 1 issue.
4 files analyzed · 14 issues found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
What You'll Need
Set these up before or after installing:
Environment variable: APOLO_URL
How to Install
Add this to your MCP configuration file:
{
"mcpServers": {
"io-github-mariorojasmz-apolo-cad": {
"env": {
"APOLO_URL": "your-apolo-url-here"
},
"args": [
"-y",
"apolo-ui"
],
"command": "npx"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
English · Español
What it is
Apolo is a headless parametric CAD for designing real machines. Its edge isn't the kernel (it uses OpenCascade, like FreeCAD) but its agent-native architecture:
Every operation is a command against an API. The whole document is an editable command log. And the same JSON Schemas that generate the UI also generate the agent's tools. One single source of truth.
The upshot: an AI agent can design complete machines end to end —not just autocomplete— and verify them: detect interferences, simulate gravity, look at a render (vision) and emit fabricable shop drawings. It's STEP-interoperable, drivable by a human or an AI, and usable as a headless backend that other tools/agents call.
MVP vertical: conveyors / material handling.
What makes it different
- 🤖 Genuinely agent-native. Not a chatbot bolted onto a CAD: the agent is a first-class client of the same API as the UI. It designs, measures, validates and fixes on its own.
- 🧾 Document = command log (event-sourced). Geometry is never stored → KB-sized files, free undo/redo, parametric editing of any past command.
- 🧬 Schema-driven. Adding a command to the registry makes it appear in the toolbar, the dialogs, the properties panel and the agent's tools — without touching anything else.
- 🔢 Variables and expressions. Any numeric field accepts
"=expression"(=width-2*profile). Changing a variable regenerates the whole model. - 🎯 Declarative edge/face selectors (by direction, face, length, proximity) — goodbye to the fragile topological naming problem.
- 🧱 Machine templates = super-commands (e.g.
create_belt_conveyor,create_take_up): they inherit parametric editing, undo, BOM and agent exposure for free.
How to use it
▶ Via an AI agent (MCP) — the primary way
You mostly operate Apolo by talking to an agent. It exposes 79 MCP tools, so any
MCP-compatible client (Claude Code, Claude Desktop, etc.) running a capable model —Claude Opus
or others— can design entire machines. The repo ships a .mcp.json:
{
"mcpServers": {
"apolo-cad": {
"command": ".venv/Scripts/python.exe",
"args": ["-m", "apolo.mcp_server"],
"env": { "APOLO_URL": "http://127.0.0.1:8000" }
}
}
}
With the server up, you ask your agent in plain language:
"Design a 4 m × 600 mm belt conveyor for 1–15 kg parcels, with a hollow-shaft gearmotor and gravity-type take-up tensioning. Check there are no interferences and show me a render."
And the agent:
- Models with
run_batch(atomic batches: one regenerate, one undo step), referencing parts from the same batch with$kand dimensions with=expression. - Perceives with
render_view(returns an image → vision),get_topology,measure. - Validates with
check_interference,engineering_check,gravity_test(simulates what falls). - Documents with
drawing/drawing_set/assembly_manual→ shop drawings, cut lists, BOMs and step-by-step assembly manuals.
The write core is minimal (run_command / run_batch / edit_command + undo/redo +
set_variable) and covers the entire command registry — there is no tool per command. The
rest of the 79 tools are for reading, perception, drawings and validation. Everything the agent
does lives in the log: editable, undoable and reproducible. Changes show up live in the
browser.
🖱 By hand (web UI)
A three.js viewport with PBR materials, shadows and a ViewCube; a schema-driven ribbon (Create / Sketch / Modify / Assemble / Library / Robotics); a parametric properties panel; "pro CAD" shortcuts (move/rotate with snap, isolate, fit, measure, section). The agent and the UI are two equal clients of the same API: what one does, the other sees.
Gallery
| Belt conveyor — maintenance lift, a declared motion study | Folding door — wood + translucent glass |
|---|---|
Everything above is produced by the engine itself: shaded renders and animations come from
render_view / motion.gif (VTK) — the very images the agent looks at to review its own work.
The animation is a named motion study: the agent declares the joint keyframes, then scans the
whole travel for collisions.
Architecture
AI agent (MCP) ───┐ ┌── React + three.js (web UI) equal clients
▼ ▼ of the same API
core/apolo/api FastAPI · REST + WebSocket
│
▼
doc document = command log (event-sourced · undo/redo · KB-sized .apolo)
commands command registry + JSON Schemas (single source of truth)
kernel build123d / OpenCascade (B-rep geometry, render, measure, picking)
library catalog (231 refs) · BOM · machine super-commands
assembly joints · mates · constraints · connectivity / gravity
drawing pro 2D drawings (HLR → SVG/DXF/PDF · sections · dimensions · drawing sets)
physics gravity / stability (MuJoCo)
Clean, non-negotiable boundaries: kernel (pure geometry) ⟂ commands/registry (operations +
schemas) ⟂ doc (log/state) ⟂ api (transport) ⟂ agent/mcp (AI clients) ⟂ ui. Designed to
scale (many commands, modules and clients).
Capabilities
- Modeling — primitives, fillet/chamfer/shell/drill, patterns, mirror, revolve, extrude, sweep/loft (incl. closed loops and helix), sheet metal with flat-pattern DXF/SVG export, constrained 2D sketching (in-house scipy solver), STEP import.
- Assembly & kinematics — persistent face mates (re-solved on edit), joints (fixed/revolute/continuous/prismatic), rail and N-DOF constraints, motion study (animate the joints and scan collisions along the path).
- Library & BOM — a 231-reference catalog populated from real standard dimensions
(ISO/ASTM/DIN/EN: bearings, profiles, fasteners, joinery, hardware…) + super-commands
(
create_belt_conveyor,create_weldment,create_frame,create_sheet_metal,create_take_up,create_drive_roller, robot arm). BOM with cut list and CSV export. - Engineering validation —
engineering_check(vertical rules: belt speed, motor torque, support…),check_interference(OCCT booleans), and gravity-based assembly validation (declare joints/grounds and simulate what falls with convex hulls in MuJoCo). - PRO manufacturing drawings — HLR projections → SVG/DXF/PDF, dimensions with arrows and
tolerances, A-A/B-B sections with per-material hatching, detail views, title block +
revisions, full drawing sets, automatic hole dimensioning, exploded views, light
GD&T, step-by-step assembly manuals, and an Inventor-style color shaded iso. All from a
declarative spec (
drawing(spec)) the agent composes. - FEA (linear static) — per part (tet mesh + safety factor from σ_vm) and bonded multi-material assembly: the whole welded frame under design load, with FS reported per piece and deflection contrasted against the analytical check.
- Engineering deliverables — this is where Apolo beats what a CAD ships by default: a calculation report (A4 PDF with design basis, formula, substitution and safety factor per check, each citing its standard — CEMA/ISO/DIN/EN/AISC), a costed BOM and quotation, tolerance stack-up (worst-case + RSS over ISO 2768 / ISO 286), an installation sheet (anchor load per support) and a delivery check — a green/amber/red gate that refuses to call a design done while it still floats, collides or lacks declared fastening.
- AI — MCP server (79 tools), vision rendering, agent session memory, chat auto mode (execute → verify → fix).
Requirements
- Python 3.11–3.13 (with OCP/build123d binary wheels)
- Node.js 18+
- (Optional) An Anthropic API key (
ANTHROPIC_API_KEY) for the AI assistant embedded in the UI
Installation
# Python core
python -m venv .venv
.venv\Scripts\python -m pip install -e core
.venv\Scripts\python -m pip install pytest httpx # for the tests
# UI
cd ui
npm install
npm run build # builds ui/dist, served by the server itself
Running it
$env:ANTHROPIC_API_KEY = "sk-ant-..." # optional (UI's AI assistant)
.venv\Scripts\python -m uvicorn apolo.api.main:app --port 8000
Open http://localhost:8000. To connect an agent over MCP, keep the server running and point
your MCP client at the repo's .mcp.json. Optional env vars: APOLO_MODEL (default
claude-opus-4-8), APOLO_DB (SQLite path).
Tests
.venv\Scripts\python -m pytest tests -q # 1355 tests
They cover the kernel (per-command volumes/bboxes), the document (undo/redo, incremental
regeneration, .apolo round-trip), expressions and variables, library/BOM/super-commands,
assembly and kinematics, validations (rules, interferences, gravity), drawings, physics and the
MCP client.
The .apolo format
A ZIP with manifest.json (version, name, units, visibility) + commands.json (the full log) +
attachments/. Opening a file = replaying its log. Geometry is never serialized → KB-sized
files and cheap autosave.
Status
A coherent, well-architected MVP within its niche: a FreeCAD-level kernel with an agent-native capability no big CAD has. It does not chase feature-for-feature parity with Fusion/SolidWorks (it's a wedge, not a general replacement). Deliberately out of scope: CAM, real FEA, PCB, multi-user cloud.
License
MIT © 2026 Mario Rojas.
Built on excellent free software: OpenCascade (LGPL), build123d (Apache-2.0), FastAPI (MIT), three.js (MIT) and MuJoCo (Apache-2.0).
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
MarkItDown
Freeby Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
FinAgent
Freeby mcp-marketplace · Finance
Free stock data and market news for any MCP-compatible AI assistant.
