io.github.sandraschi/qcad-mcp MCP Server
io.github.sandraschi/qcad-mcp
AI-driven 2D CAD automation: DXF/DWG parsing, 3D STL extrusion, room analysis, and persistent file depot.
What is the io.github.sandraschi/qcad-mcp MCP server?
The QCAD MCP server is an AI-driven CAD automation tool that parses DXF/DWG floor plans, converts them to SVG previews, extrudes walls into 3D STL meshes, and performs room analysis. It provides 27 MCP tools for programmatic CAD workflows, integrates with the free ezdxf Python engine, and maintains a persistent file depot for CAD file management.
QCAD MCP lets your AI assistant operate as a QCAD Pro operator, processing floor plans programmatically. Convert DXF to 3D for game engines (Resonite, Unity3D), automate drafting workflows, detect rooms and measure areas, and manage a persistent CAD file depot. It includes a web dashboard with 13 pages (viewer, extrude, analyse, batch processing, AI agent workflows) and a REST API for integration.
How to install io.github.sandraschi/qcad-mcp
Copy-paste configuration for popular MCP clients.
Tools & capabilities
Tools this server exposes to the agent.
plan_depot— List files in the persistent CAD depot with metadataplan_info— DXF metadata: layers, entity counts, bounding box, blocksplan_create— Create DXF from primitives (line, rect, circle, text, polyline)plan_to_svg— DXF → SVG preview with layer filteringplan_extrude— DXF walls → 3D STL mesh (configurable height/thickness)plan_export— DXF → SVG/PNG/PDF (ezdxf or QCAD Pro)plan_analyse— Room detection, area calculation, door/window identificationplan_measure— Measure distances and lengths in a DXFplan_wall_data— Extract wall segments as BIM-ready JSON (QCAD Pro)plan_beam_analysis— 2D beam FEM analysis (numpy, no QCAD needed)plan_dimension— Add aligned/linear/angular/radial dimensions (QCAD Pro)plan_text— Add text annotations (QCAD Pro)plan_hatch— Add hatch patterns (QCAD Pro)plan_block_insert— Insert CAD blocks from library (QCAD Pro)plan_array— Rectangular/polar array patterns (QCAD Pro)plan_convert— Convert between DXF and DWG (QCAD Pro)plan_modify— Delete/offset/rename/freeze layersplan_script— Execute arbitrary ECMAScript in QCAD Proplan_render— High-fidelity SVG/PDF/BMP render via QCAD Proplan_exec— Quick ECMAScript snippet execution
Use cases
- Convert scanned or digital floor plans (DXF/DWG) to interactive SVG previews with per-layer visibility control
- Extrude 2D floor plans into 3D STL meshes for import into game engines (Resonite, Unity3D) or 3D modeling software
- Automate room detection, area calculation, and door/window identification for architectural analysis and BIM workflows
- Create parametric floor plans programmatically from natural language descriptions via AI-driven ECMAScript generation
- Batch process multiple CAD files: extract metadata, generate SVG/STL outputs, and perform structural beam analysis in one workflow
io.github.sandraschi/qcad-mcp MCP server FAQ
It's an MCP server that gives AI assistants (Claude, Cursor) 27 tools for CAD automation: parsing DXF/DWG floor plans, converting to SVG/STL, detecting rooms, measuring distances, and managing a persistent file depot. It integrates with the free ezdxf Python engine and optionally QCAD Pro for advanced features.
The server itself is free (MIT license). It uses the free ezdxf library for core operations (parsing, SVG, STL extrusion, analysis). Optional QCAD Pro features (DWG conversion, advanced rendering, ECMAScript scripting) require a €50.40 one-time license.
Download the mcpb binary from the releases page (v0.3.0), then add it to your MCP client config pointing to http://localhost:11966/sse with SSE transport. Run `just bootstrap` and `start.ps1` to start the backend and dashboard.
None. The server runs locally on ports 11966 (backend) and 11967 (dashboard). No API keys or external services required for core ezdxf tools. Optional: Ollama for local LLM chat, QCAD Pro for advanced features.
Yes. Core tools (plan_info, plan_to_svg, plan_extrude, plan_analyse, plan_measure, plan_create, plan_modify) work with ezdxf alone. Tools marked '(QCAD Pro)' require QCAD Pro for DWG conversion, advanced rendering, and ECMAScript execution.
Input: DXF, DWG. Output: SVG, STL (3D mesh), PNG, PDF, BMP. The persistent depot stores DXF/DWG files with metadata (size, dates, description, tags).
README (reference)
Source of truth, from the repository.
QCAD MCP
<p align="center"> <a href="https://github.com/casey/just"><img src="https://img.shields.io/badge/just-ready_to_go-7c5cfc?style=flat-square&logo=just&logoColor=white" alt="Just"></a> <a href="https://github.com/astral-sh/ruff"><img src="https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json" alt="Ruff"></a> <a href="https://python.org"><img src="https://img.shields.io/badge/Python-3.13+-3776AB?style=flat-square&logo=python&logoColor=white" alt="Python"></a> <a href="https://biomejs.dev"><img src="https://img.shields.io/badge/Linted_with-Biome-60a5fa?style=flat-square&logo=biome&logoColor=white" alt="Biome"></a> <a href="https://github.com/PrefectHQ/fastmcp"><img src="https://img.shields.io/badge/FastMCP-3.2-7c5cfc?style=flat-square" alt="FastMCP"></a> </p>AI-driven 2D CAD automation — DXF/DWG parsing, 3D extrusion, persistent file depot, room analysis, and full CRUD management. 7 MCP tools for DXF processing. Your AI assistant becomes a QCAD Pro operator.
| You might use this if… | You want your AI to process floor plans programmatically, convert DXF to 3D for Resonite/Unity3D, maintain a persistent CAD file depot, or automate drafting workflows. |
| What it connects to | ezdxf (free Python engine) for all parsing + rendering + extrusion + analysis |
| Ports | Backend 11966, Dashboard 11967 |
| Start | just bootstrap then start.ps1 |
MCP Tools
| Tool | Access | Purpose |
|---|---|---|
plan_depot | READ | List files in the persistent CAD depot with metadata |
plan_info | READ | DXF metadata: layers, entity counts, bounding box, blocks |
plan_create | MUTATE | Create DXF from primitives (line, rect, circle, text, polyline) |
plan_to_svg | MUTATE | DXF → SVG preview with layer filtering |
plan_extrude | MUTATE | DXF walls → 3D STL mesh (configurable height/thickness) |
plan_export | MUTATE | DXF → SVG/PNG/PDF (ezdxf or QCAD Pro) |
plan_analyse | READ | Room detection, area calculation, door/window identification |
plan_measure | READ | Measure distances and lengths in a DXF |
plan_wall_data | READ | Extract wall segments as BIM-ready JSON (QCAD Pro) |
plan_beam_analysis | READ | 2D beam FEM analysis (numpy, no QCAD needed) |
plan_dimension | MUTATE | Add aligned/linear/angular/radial dimensions (QCAD Pro) |
plan_text | MUTATE | Add text annotations (QCAD Pro) |
plan_hatch | MUTATE | Add hatch patterns (QCAD Pro) |
plan_block_insert | MUTATE | Insert CAD blocks from library (QCAD Pro) |
plan_array | MUTATE | Rectangular/polar array patterns (QCAD Pro) |
plan_convert | MUTATE | Convert between DXF and DWG (QCAD Pro) |
plan_modify | MUTATE | Delete/offset/rename/freeze layers |
plan_script | MUTATE | Execute arbitrary ECMAScript in QCAD Pro |
plan_render | MUTATE | High-fidelity SVG/PDF/BMP render via QCAD Pro |
plan_exec | MUTATE | Quick ECMAScript snippet execution |
plan_blocks | READ | Search 4800+ CAD blocks from part library |
plan_blocks_download | MUTATE | Download a block DXF from library |
plan_scripts_search | READ | Search QCAD ECMAScript scripts gallery |
plan_scripts_download | MUTATE | Download a script from gallery/Gist |
qcad_status | READ | QCAD Pro install/running/version report |
plan_agentic | MUTATE | NL → ECMAScript via AI sampling (MCP only, needs QCAD Pro) |
plan_transpile | MUTATE | AutoLISP → QCAD ECMAScript translation (MCP only, needs QCAD Pro) |
CAD Depot (Persistent File Storage)
All CAD files are stored in a persistent depot at %LOCALAPPDATA%\qcad-mcp\depot — survives server restarts and system reboots. Configurable via QCAD_MCP_DEPOT env var.
Depot CRUD via REST API:
| Endpoint | Method | Description |
|---|---|---|
/api/v1/depot | GET | List all files with metadata (size, dates, description, tags) |
/api/v1/depot/{name} | GET | Download a DXF file |
/api/v1/depot/{name} | PUT | Rename or update description/tags |
/api/v1/depot/{name} | DELETE | Remove file + metadata sidecar |
/api/v1/depot/create | POST | Create DXF from JSON entity spec (line, rect, circle, text, polyline) |
/api/v1/depot/upload | POST | Upload DXF/DWG directly to depot |
REST API
| Endpoint | Method | Description |
|---|---|---|
/api/v1/status | GET | Server health, ezdxf version, QCAD Pro status |
/api/v1/upload | POST | Upload DXF/DWG (also saved to depot) |
/api/v1/download/{name} | GET | Download SVG/STL/PDF/PNG outputs |
/api/v1/files | GET | List all files (depot + outputs) |
/api/v1/depot/* | GET/PUT/DELETE | Full CRUD on the persistent CAD depot |
/api/v1/control/tool | POST | Execute any MCP tool |
/api/v1/logs/stream | GET | SSE live log stream |
/api/v1/chat | POST | Chat with CAD expert via Ollama |
/api/v1/settings | GET/PUT | LLM + extrusion defaults + QCAD Pro path |
Webapp Pages
| Route | Page | Description |
|---|---|---|
/ | Dashboard | Hero banner, QCAD Pro status panel, depot stats, ezdxf version |
/demo | AI CAD Demo | NL → floor plan → SVG → 3D STL. Baroque church, mob compound, art museum presets |
/depot | Depot | Full CRUD file browser with SVG preview, create DXF wizard, upload, rename, delete |
/viewer | Viewer | DXF upload + SVG preview with per-layer toggle |
/extrude | Extrude | DXF → STL with wall height/thickness/wall-layer controls |
/analyse | Analyse | Room detection, area table, door/window list |
/layers | Layers | Layer visibility, freeze/lock, rename, bulk operations |
/blocks | Blocks | Search 4800+ CAD blocks from library with download |
/scripts | Scripts | Browse QCAD ECMAScript scripts gallery + save local scripts |
/agentic | AI Agent | Autonomous multi-step CAD workflow (QCAD Pro) |
/batch | Batch | Run info/analysis/extrude across all depot files. STL batch extrude with gallery |
/pipeline | Pipeline | 5-step wizard: describe → SVG → analyse → STL → FreeCAD wall data export |
/playground | Playground | Tool API tester: select any tool, edit JSON args, execute, view raw response |
/models | Models | Uploads vs outputs listing with download |
/logs | Logs | Live SSE log viewer with filter/export/pause |
/settings | Settings | LLM provider/model, extrusion defaults, QCAD Pro path |
/help | Help | 10-tabbed reference: QCAD, ezdxf, tools, pipeline, formats, fleet |
docs/floorplan-sources.md | — | Free, paid, and historic floorplan sources + raster→DXF pipeline |
Quick Start
just bootstrap # uv sync + npm install
start.ps1 # kills zombies, starts backend + frontend, opens browser
MCP Client Config
{
"mcpServers": {
"qcad": {
"url": "http://localhost:11966/sse",
"transport": "sse"
}
}
}
Raster → DXF Pipeline (Planned)
Scanning a floorplan print into a working DXF is straightforward:
Book/magazine page → scanner (300-600 DPI) inkscape-mcp
↓ (Trace Bitmap)
Potrace / Inkscape ↓
↓ QCAD MCP
Raw vector DXF (plan_modify)
↓
Clean up in QCAD / plan_modify
| Step | Tool | What it does |
|---|---|---|
| Scan | Any scanner | 300-600 DPI, grayscale or B&W, save as PNG/TIFF |
| Vectorize | inkscape-mcp trace_bitmap() or potrace CLI | Converts raster lines to SVG paths |
| Convert | SVG → DXF (via potrace or ezdxf) | Opens in any CAD program |
| Clean | qcad-mcp plan_modify | Merge short segments, delete stray marks, re-layer, re-dimension |
Two approaches:
- inkscape-mcp route — send the scanned PNG to inkscape-mcp's
trace_bitmap()tool, get back SVG with proper path geometry. The SVG imports cleanly into QCAD as workable entities. - potrace in qcad-mcp — add a
plan_raster_to_dxf(file_name)tool that wraps potrace + ezdxf. Self-contained, no external server needed.
Either way, the result goes through plan_modify for cleanup (delete noise, merge wall segments, re-assign layers, re-add dimensions). The baroque church preset in the Demo page proves the parametric geometry works — scanning would let you capture actual existing buildings.
QCAD Pro Pricing — €50? Really?
QCAD Professional sells for €50.40 for a single-user license — lifetime, no subscription. That looks absurd next to AutoCAD at $2,000+/year, but RibbonSoft's revenue model is more nuanced:
| Product | Price | Market |
|---|---|---|
| Community Edition | Free (GPLv3) | Hobbyists, students, tinkerers |
| QCAD Professional | €50.40 | Individual professionals, small firms |
| QCAD Pro Site License | €440.40 | Companies (unlimited seats, single site) |
| QCAD Pro Server License | €583.20 | Self-hosted deployment |
| QCAD Pro Scalable Server | €1,771.20 | Enterprise-scale |
| QCAD/CAM (CNC add-on) | €132.00 | Manufacturing |
| QCAD/CAM Site License | €1,173.60 | CNC shops |
| Books / E-Books | €40–42 each | Documentation, passive income |
The strategy is open-core freemium with enterprise site-license extraction:
- Community Edition is genuinely free and capable (GPLv3). It's a giant funnel — architects, makers, and students learn on it, recommend it, and eventually their employer buys a site license.
- €50 individual is friction-free "impulse buy" pricing — no PO approval needed, no vendor negotiation. You just buy it.
- Site & server licenses (€440–€1,771) are where the real revenue lives. An architecture firm with 20 seats paying €440 beats 200 individuals paying €50. And server licenses for SaaS/on-prem deployment scale further.
- QCAD/CAM at €132 captures the CNC/manufacturing niche — a separate, higher-value market.
- Books at €40 are pure margin — the manual is already written, printing costs are negligible.
RibbonSoft is a Swiss GmbH (limited company) based in Sarnen, not retirees. 100% of their office energy is from Swiss hydropower (they're proud enough to put it in the footer). They've been doing this since 1999 — 26+ years of sustainable bootstrapping.
Who pays? Ganesh in Bangalore runs the Community Edition for his residential projects — it handles DXF perfectly for Indian building code drawings. When a client demands DWG or PDF export, he drops €50 on Pro — one job pays for it. As his practice scales past 5 seats, he graduates to a site license. Meanwhile a European architecture firm pays €440 for compliance reasons and never thinks twice. The Bay Area Autodesk tax ($2,500+/year) only makes sense when someone else is paying.
€50 clears every threshold, everywhere. No PO approval, no vendor negotiation, no subscription clock. You buy it once and own it.
Quality Stack
- Python: Ruff linter — zero errors across 5 MCP tools + depot CRUD
- Frontend: Biome +
tsc— zero errors across 9 TypeScript pages - Protocol: FastMCP 3.2 SSE transport + 10 REST endpoints
- Automation: Justfile recipes for all fleet operations
- AI Protocol: FastMCP 3.2 with SSE transport
License
MIT — see LICENSE.
Related MCP servers
Natural language control of Resonite VR worlds, avatars, and assets through AI chat.

Godot MCP server - Godot 4.x engine control via TCP bridge, STL/GLB/OBJ import, GPU particles, an...
GrandOrgue pipe organ simulator MCP server - MIDI bridge, organ control, sample set management, m...

io.github.sandsower/kronan-mcp
AI-powered grocery shopping for Krónan (Iceland) via Claude—search products, manage carts, track orders, and handle checkout.

io.github.sandsower/vedurstofa-mcp
MCP server for Icelandic weather, forecasts, warnings, and earthquakes from vedur.is.