MCP server: One MCP server.

QCAD

@sandraschiMCP server · External

QCAD 2D CAD automation: DXF/DWG floor plans to SVG and STL, via MCP tools and REST

Freeno charge per call

Runs on your machine from its package; the steps are below.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: creates or changes data: records, files, settings.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

Runs locally over stdio

This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).

MCP Bundlehttps://github.com/sandraschi/qcad-mcp/releases/download/v0.5.0/qcad-mcp-v0.5.0.mcpb

Distributed as an MCP bundle (`https://github.com/sandraschi/qcad-mcp/releases/download/v0.5.0/qcad-mcp-v0.5.0.mcpb`) — download it and import the bundle in your MCP client.

README8 min read

QCAD MCP

Just Ruff Python Biome FastMCP

AI-driven 2D CAD automation — DXF/DWG parsing, 3D extrusion, persistent file depot, room analysis, and full CRUD management. 12 MCP tools (8 portmanteaus + 4 Prefab cards) 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 toezdxf (free Python engine) for all parsing + rendering + extrusion + analysis
PortsBackend 11966, Dashboard 11967
Startjust bootstrap then start.ps1

MCP Tools

v0.5.0 portmanteau surface: each tool takes an op discriminator plus the op's parameters (old per-op names survive only as webapp-internal aliases).

ToolAccessPurpose
planREAD/MUTATECore ezdxf ops: info, to_svg, extrude, stack, obj, glb, drawings, export, analyse, create, depot
plan_editMUTATEconvert (DWG↔DXF via QCAD Pro), modify (layers/entities)
plan_annotateREAD/MUTATEdimension, measure, text, hatch, block_insert, array, wall_data, beam_analysis
plan_proMUTATEQCAD Pro: script, render, exec (ECMAScript)
plan_libraryREAD/MUTATEblocks, blocks_download, scripts_search, scripts_download
plan_aiMUTATEgenerate (NL floor plan), agentic (NL workflow), transpile (AutoLISP), sampling (host LLM reason)
plan_bimREAD/MUTATEauto_dimension, building_meta, to_ifc_data (BIM handoff)
qcadREADstatus (QCAD Pro install), help (live catalog), shutdown (orderly exit)
show_qcad_status_cardREADPrefab card: QCAD Pro status
show_depot_cardREADPrefab card: depot files
show_beam_analysis_cardREADPrefab card: beam FEA results
show_building_meta_cardREADPrefab card: building metadata

Fleet Crossconnects (Companions)

qcad-mcp works completely standalone. You can optionally connect it with companion servers in the sandraschi fleet to unlock extended features:

Companion ServerFeature UnlockedStatusSetup
blender-mcp3d-scene-extrusion, render-dxf-layoutsOptionalInstall Guide
freecad-mcp2d-draft-to-parametric-3dOptionalInstall Guide

Self-Contained Companions: Fleet companions operate independently. Installing companions does not trigger transitive dependency chains.

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:

EndpointMethodDescription
/api/v1/depotGETList all files with metadata (size, dates, description, tags)
/api/v1/depot/{name}GETDownload a DXF file
/api/v1/depot/{name}PUTRename or update description/tags
/api/v1/depot/{name}DELETERemove file + metadata sidecar
/api/v1/depot/createPOSTCreate DXF from JSON entity spec (line, rect, circle, text, polyline)
/api/v1/depot/uploadPOSTUpload DXF/DWG directly to depot

REST API

EndpointMethodDescription
/api/v1/statusGETServer health, ezdxf version, QCAD Pro status
/api/v1/uploadPOSTUpload DXF/DWG (also saved to depot)
/api/v1/download/{name}GETDownload SVG/STL/PDF/PNG outputs
/api/v1/filesGETList all files (depot + outputs)
/api/v1/depot/*GET/PUT/DELETEFull CRUD on the persistent CAD depot
/api/v1/control/toolPOSTExecute any MCP tool
/api/v1/logs/streamGETSSE live log stream
/api/v1/chatPOSTChat with CAD expert via Ollama
/api/v1/settingsGET/PUTLLM + extrusion defaults + QCAD Pro path

Webapp Pages

RoutePageDescription
/DashboardHero banner, QCAD Pro status panel, depot stats, ezdxf version
/demoAI CAD DemoNL → floor plan → SVG → 3D STL. Preset cards, pipeline stepper, tabbed results
/chatChatStreaming LLM chat, skill-first, 6 personalities, history, export
/inboxInboxNew-file review queue with inline preview and Viewer links
/toolsToolsPortmanteau catalog with op chips + Playground deep-links
/skillsSkillsSkill browser (same files the Chat uses as system prompt)
/depotDepotFull CRUD file browser with SVG preview, create DXF wizard, upload, rename, delete
/viewerViewerDXF upload + SVG preview with per-layer toggle
/extrudeExtrudeDXF → STL with wall height/thickness/wall-layer controls
/analyseAnalyseRoom detection, area table, door/window list
/layersLayersLayer visibility, freeze/lock, rename, bulk operations
/blocksBlocksSearch 4800+ CAD blocks from library with download
/scriptsScriptsBrowse QCAD ECMAScript scripts gallery + save local scripts
/agenticAI AgentAutonomous multi-step CAD workflow (QCAD Pro)
/batchBatchRun info/analysis/extrude across all depot files. STL batch extrude with gallery
/pipelinePipeline5-step wizard: describe → SVG → analyse → STL → FreeCAD wall data export
/playgroundPlaygroundTool API tester: select any tool, edit JSON args, execute, view raw response
/modelsModelsUploads vs outputs listing with download
/logsLogsLive SSE log viewer with filter/export/pause
/settingsSettingsLLM provider/model, extrusion defaults, QCAD Pro path
/helpHelp10-tabbed reference: QCAD, ezdxf, tools, pipeline, formats, fleet
docs/floorplan-sources.md—Free, paid, and historic floorplan sources + raster→DXF pipeline

Quick Start

powershell
just bootstrap   # uv sync + bun install
start.ps1        # kills zombies, starts backend + frontend, opens browser

Install (Claude Desktop, Windows)

powershell
irm https://github.com/sandraschi/qcad-mcp/releases/latest/download/install.ps1 | iex

Installs the stable qcad-mcp.mcpb bundle into Claude Desktop. Other clients (Cursor, VS Code, OpenCode): use uvx with the stdio entry:

json
{
  "mcpServers": {
    "qcad-mcp": {
      "command": "uv",
      "args": ["run", "--directory", "D:\\Dev\\repos\\qcad-mcp", "run_server.py"]
    }
  }
}

MCP Client Config

json
{
  "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_edit(op="modify"))
                         ↓
                    Clean up in QCAD / plan_edit(op="modify")
StepToolWhat it does
ScanAny scanner300-600 DPI, grayscale or B&W, save as PNG/TIFF
Vectorizeinkscape-mcp trace_bitmap() or potrace CLIConverts raster lines to SVG paths
ConvertSVG → DXF (via potrace or ezdxf)Opens in any CAD program
Cleanqcad-mcp plan_edit(op="modify")Merge short segments, delete stray marks, re-layer, re-dimension

Two approaches:

  1. 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.
  2. 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_edit(op="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:

ProductPriceMarket
Community EditionFree (GPLv3)Hobbyists, students, tinkerers
QCAD Professional€50.40Individual professionals, small firms
QCAD Pro Site License€440.40Companies (unlimited seats, single site)
QCAD Pro Server License€583.20Self-hosted deployment
QCAD Pro Scalable Server€1,771.20Enterprise-scale
QCAD/CAM (CNC add-on)€132.00Manufacturing
QCAD/CAM Site License€1,173.60CNC shops
Books / E-Books€40–42 eachDocumentation, passive income

The strategy is open-core freemium with enterprise site-license extraction:

  1. 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.
  2. €50 individual is friction-free "impulse buy" pricing — no PO approval needed, no vendor negotiation. You just buy it.
  3. 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.
  4. QCAD/CAM at €132 captures the CNC/manufacturing niche — a separate, higher-value market.
  5. 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 + format, Pyright typecheck (0 errors) — src/ + run_server.py
  • Frontend: Biome + tsc --noEmit + bun lockfile — 22 TypeScript pages
  • Protocol: FastMCP 3.4 (stdio + HTTP /mcp) + 40 REST routes
  • Tools: 12 MCP tools (8 portmanteaus + 4 Prefab cards) with READ_ONLY/MUTATING annotations
  • Automation: Justfile recipes for all fleet operations
  • Tests: pytest (78+) + Playwright e2e specs

License

MIT — see LICENSE.

Similar modules

Browse Interior design & architecture