# AutoCAD MCP Pro v1.6.0 — Roadmap and decomposition **Date:** 2026-09-15 · **Status:** decomposition approved; every track below gets its own design spec and implementation plan before code · **Baseline:** v1.5.1 (154 registered tools, 19 groups, 1369 tests) > **Status at release (1.6.0, 2026-09-25).** Tracks A, E, B, G, F and H shipped: > 247 registered tools in 28 groups. Criteria 1–4, 6 and 8 are met. 1 and 3 are > the `pid_roundtrip` and `mech_assembly` benchmark tasks; 2 is the foreign-P&ID > fixture test; 4 is the three topology focuses plus the correctness check > `diff_detects_known_edits`, on synthetic revisions rather than the README hero > sheet; 6 is `ab-v1.5.1-vs-v1.6.0.json` (48 / 48, 0 regressions); 8 is the > per-category rubric in `benchmarks/source_review.json` (93). **Criterion 5 is > withdrawn**: track D was dropped because the maintainer does not use Plant 3D. > **Criterion 7 is not met**: creation is 1.25× and 1.38× v1.4.0's time > (`perf-v1.4.0-vs-v1.6.0.json`), still 1.17× and 1.20× with the timeout off, and > it moves to 1.7. §4's rule that 1.6.0 waits for every criterion was set aside > for these two by the maintainer's decision to release. ## 1. Goal An LLM driving this server can — without guessing coordinates, to a named standard, and with the result verified by the server itself — - (A) draw a **P&ID** and read one back as a graph, instrument index and line list; - (B) produce a complete **machine-part / assembly sheet** (views, sections, standard parts, symbols, BOM, balloons); - (C/H) **understand** an existing or foreign drawing (topology, standards, revision diff); - (D) query an **AutoCAD Plant 3D** project read-only; - (E) control **AutoCAD's own settings** (styles, page setup, templates, preferences, documents); - (F) draft an **architectural** floor plan and read rooms back from one. The bar is "best in every category, and evidenced" — not the longest checklist. Features ship when their contracts and limitations are testable (README, "Roadmap (1.6)"). ### Success criteria (measured, not asserted) | # | Criterion | Where it is measured | |---|---|---| | 1 | `pid_roundtrip`: a three-equipment P&ID drawn with the tools is read back by `pid_graph` with the expected edge count, zero dangling lines, a correct instrument index and line list; `drawing_critique` returns 0 issues; `drawing_finalize` score ≥ 90 | new benchmark task + correctness suite | | 2 | A foreign P&ID (plain blocks + `TAG` attributes, no catalog) yields a graph whose every node carries a confidence < 1.0 — no fabricated certainty | unit test on a hand-authored fixture | | 3 | `mech_assembly`: a flange-coupling / bearing-housing style sheet (views + section + BOM + balloons + ISO 129 dims) from generators; critique 0 issues; score ≥ 90 | new benchmark task | | 4 | Topology DRC parity with beiming v4 (`DANGLING_ENDPOINT`, `NEAR_MISS`, `INTERIOR_CROSSING`) and `drawing_diff` on two revisions of the README hero sheet | tests + benchmark task | | 5 | Plant 3D line list / BOM / weld list correct on a synthetic `.dcf` fixture built from the public projects' schema, and manually checked against the three public projects | tests + `scripts/verify_plant3d_public.py` | | 6 | Correctness A/B vs v1.5.1: zero regressions (`python benchmarks/compare_versions.py v1.5.1`) | release gate | | 7 | Headless creation throughput back to v1.4.0 numbers (timeout armed only where a call can block) | perf lane | | 8 | Re-score on the 100-point rubric in `benchmarks/source_review.json` ≥ 90 **with evidence per category**, published next to the competitor rows | docs | ## 2. Competitive research (snapshot 2026-09-14) Method: `gh search repos` / `gh api` over GitHub, 20 READMEs read in full (Firecrawl was unavailable — HTTP 402). Stars as of the snapshot. | Repository | ★ | What it has that v1.5.1 does not | |---|---:|---| | puran-water/autocad-mcp v3.1 | 506 | `pid` tool (`insert_valve/pump/tank/instrument`, `draw_process_line`, `connect_equipment`, `add_line_number`) — bound to the **commercial** CAD Tools Online symbol library at `C:\PIDv4-CTO\`; 8 consolidated tools; freehand AutoLISP | | LokmenoWer/best-cad-mcp v1.6 | 16 | 322 tools (profiles 114/215/322). **Drawing understanding**: CAD-IR, semantic objects and graphs, dimension binding, constraint checks; CADPlan dry-run; BOM + balloons; image-to-CAD tracing; VLM grounding with pixel/world mapping. COM-only | | beiming183-cloud/AutoCAD-MCP v4.0 + AutoCAD-skills | 7 + 7 | Native .NET transaction worker; topology DRC (`DANGLING_ENDPOINT`, `NEAR_MISS_CONNECTION`, `INTERIOR_CROSSING`), view-source consistency, plot-scale truth; product/industrial features; the skill expects threads, springs, bearings, splines | | varavista/autocad-mcp v5.0 | — | `xref` (attach/detach/reload/bind), `validate` (connectivity, orphans, duplicates, qc_report), `export` (BOM, data_extract, Excel), `electrical` (NEC calcs, panel schedule, wire numbers), `titleblock_fill`, `batch_plot`, `page_setup`, natural-language commands | | john0909/ZWCAD-Mechanical-MCP | 13 | 37 tools: `manage_bom` / `create_partlist`, `insert_balloon`, `manage_frame`, `manage_title_block(set_field)`, `query_dimensions`, `manage_style` (layer/linetype/textstyle/dimstyle), `manage_xdata`, `manage_dictionary`, `manage_document` | | Romeraaa/autocadplant3d-mcp | 1 | Plant 3D project queried **read-only through its SQLite files** (`.dcf`, `.pspc`): line list, component list, BOM, pipe lengths, weld list, bolt/gasket list, `validate_specs`, `find_untagged` — no .NET plugin, no open session | | AnCode666/multiCAD-mcp | — | Multi-CAD COM (AutoCAD/ZWCAD/GstarCAD/BricsCAD), multi-document switching, Excel export | | thepiruthvirajan/autocad-mcp-server | 62 | Walls, doors, windows, building structures over COM | | xstaar/autocad-mcp | 6 | YQArch architectural add-on, 684 commands | | OmniZenRaj/dxf-mcp | 0 | Read-only DXF: BOM from block attributes, `check_standards` (required/forbidden layers, units) | | mattmohandiss/cad-mcp-server | 5 | STEP inspection, DFM checks, `diff_step` revision compare (OCCT) | | daobataotie/CAD-MCP | 547 | Basic COM drawing over three CAD brands; NL command parsing — stars, not capability | | mixelpixx/KiCAD-MCP-Server | 2246 | Not AutoCAD; the most-starred CAD MCP, shows the ceiling of the category | P&ID ecosystem outside MCP: - **Coldbari/IPD-Studio** (25★) defines "intelligent P&ID": ISA-5.1 tag parsing (`FIC` → Flow Indicating Controller), loop derivation, instrument index and line list *generated from the model*, 16 line classes, off-page connectors, live validation (duplicate/missing/illegal tags, dangling lines, incompatible connections), DEXPI-shaped XML, R12 DXF export. - **process-intelligence-research/pyDEXPI** (222★) — DEXPI 1.3 data model in Pydantic, Proteus XML loader, NetworkX graph. **AGPL-3.0**: cannot be a dependency of an MIT server. DEXPI export is therefore out of 1.6. - **Public Plant 3D projects with real `.dcf` / `.pspc` files**: `Aggie-Propulsion-Lab/Mu-Propellant-Feed` (Piping.dcf 397 KB, ProcessPower.dcf 1.0 MB, 30 spec sheets), `bnguyen07/AutoCAD` ("Project 1"), `marianabucsa/University` (Lab10). None carries a licence, so they are **schema sources only** — never committed; tests run on a synthetic fixture generated by our own script with the same schema. Today's P&ID support in v1.5.1 is a prompt template (`prompt_pid_diagram`) that tells the model to hand-draw pumps as circle + triangle — the "no coordinate guessing" rule, violated by our own prompt. ## 3. Tracks Each track: scope · not in 1.6 · headline evidence. Detailed designs live in their own specs (`2026-MM-DD-v1.6--design.md`). ### A · P&ID — expert and reader (`engineering/pid/`) - Symbol catalogue authored **in code** (ISO 10628-2 equipment and valves, ISA-5.1 instrumentation): ~41 base symbols, valve × actuator variants, 4 × 5 instrument-bubble variants, parametric vessels; every symbol a real block with `TAG` attributes and named **ports** (position + direction). - Two new generic contracts: `block_define(name, entities, attdefs)` and `entity_get/set_xdata`. - `pid_symbol_list/insert`, `pid_line_draw` (port-to-port orthogonal routing, ISA-5.1 line classes → layer/linetype/marker, line numbers), `pid_tag_parse` (ISA-5.1 grammar), `pid_graph`, `pid_instrument_index`, `pid_line_list`, `pid_equipment_list`, `pid_from_spec`; critique focuses `pid_*`; `prompt_pid_diagram` rewritten onto the tools. - Not in 1.6: DEXPI export, ISA-5.2 logic symbols, obstacle-avoiding routing, cross-file off-page links (same-file layouts only). - Evidence: criteria 1 and 2. ### E · AutoCAD settings and environment - `dimstyle_*`, `textstyle_*`, `mleaderstyle_*`, `tablestyle_*` (ISO-25 / ISOCPEUR authored, both engines); `drawing_settings` extended (limits, grid, snap, ortho, polar, LTSCALE/PSLTSCALE, CANNOSCALE, INSUNITS/LUNITS/AUNITS) over a **validated whitelist** plus `system_variable_describe`. - `page_setup_*` with CTB selection, `batch_plot`; `.dwt` templates (`drawing_new(template=)`, bundled ISO A3-mech / A1-arch / A3-P&ID). - COM-only, refused headlessly: `system_preferences_get/set`, `drawing_properties` (DWGPROPS), `document_list/activate/close`, `system_launch`. Both engines: `layer_state_*`, `view_named_*`, `ucs_*`. - Evidence: settings round-trip tests both engines; a page-setup PDF whose mediabox is read back (beiming's "plot-scale truth"). ### B · Mechanical 2D — the complete part drawer (`engineering/mech/`) - Standard parts as generators: ISO 4014/4017 bolts, ISO 4032 nuts, ISO 7089 washers, ISO 4762 cap screws, ISO 6410 thread representation, DIN 471/472 ring grooves, DIN 509 undercuts, DIN 332 centre holes, ISO 15 / ISO 8826 bearings, ISO 3601 O-ring grooves. - Part generators from one parameter source: `shaft_draw` (steps, chamfers, fillets, keyways, threads, grooves → front view + section + auto dims), `plate_draw` (outline + holes/slots/pockets → front + side, hidden lines for through features), `flange_draw`; `mech_part_from_spec` does the whole sheet in one call. - Annotation symbols: surface texture ISO 21920-1 / ISO 1302, welding ISO 2553, centre marks and centrelines, section line A-A, detail view; material hatch map (ISO 128-50). - BOM / parts list ISO 7573 with balloons; `bom_extract` from block attributes; `data_extract` → CSV/XLSX. - Not in 1.6: a general 3D → 2D projection kernel (views come from generators, not from arbitrary solids), splines DIN 5480, springs. - Evidence: criterion 3. ### G · Sheet and delivery standard - `sheet_frame_iso5457(size)` with zone letters, centring and trimming marks; A4–A0 title blocks (ISO 7200); revision block + `revision_add` (with revcloud); `xref_attach/bind/reload/detach`; `image_attach` (raster underlay); headless real DWG through `odafc` when the ODA converter is installed, refused otherwise. - Evidence: frame geometry pinned against ISO 5457 tables; xref round-trip. ### F · Architectural 2D (`engineering/arch/`) - `arch_grid`, `arch_wall` (thickness, justification, corner clean-up), `arch_door` (opens the wall, leaf + swing), `arch_window`, `arch_stair`, `arch_room_label` (area measured, not typed), `arch_north_arrow`, `arch_section_mark`, `arch_schedule(doors|windows|rooms)`; furniture and sanitary block catalogue over `block_define`; ISO 13567 layers (existing), ISO 4157 numbering, ISO 7519 / ISO 128-23 line rules, annotative text at 1:50 / 1:100. - Reader: `arch_room_detect` — rooms and an area schedule from a foreign plan, over `boundary_trace`. - Not in 1.6: AutoCAD Architecture / Revit objects, 3D walls, IFC. - Evidence: a two-room plan drawn, read back, schedule matches. ### H · Understanding and QA - Topology DRC as critique focuses: `dangling_endpoint`, `near_miss`, `interior_crossing`, `overlap`, `zero_length`; `check_standards` (required/forbidden layers, units, text heights, dim styles); `query_dimensions`; `drawing_scan` (view clusters, title block, tables); `drawing_diff(a, b)` by handle and geometry digest. - Evidence: criterion 4. ### D · Plant 3D, read-only (`plant3d/`) - SQLite reads of `.dcf` / `.pspc`: `plant3d_list_projects/detect_project`, `line_list`, `component_list`, `bom`, `pipe_length`, `weld_list`, `bolt_gasket_list`, `validate_specs`, `find_untagged`. Never writes. - Evidence: criterion 5. ### Cross-cutting (inside the tracks above) - **I · Speed** — per-call timeout armed only where a call can block; `*_from_spec` one-call sheets; perf lane re-measured (criterion 7). - **K · Human in the loop** — `user_pick_point`, `user_select` (COM `GetPoint` / `GetSelection`), `system_prompt_message`; refused headlessly. - **L · Knowledge resources** — MCP resources for authored standard tables (`autocad://standards/iso286`, `isa51_letters`, `layers/{set}`, `pid/symbols`): zero tool-budget cost. ## 4. Order and dependencies **A → E → B → G → F → H → D.** - A first: the loudest gap (three rivals ship `pid`, we ship a prompt), and it builds the block/port/graph infrastructure F reuses. - E second, small: B and F need ISO dimstyles, text styles and templates. - B before F: the existing engineering package, critique and score are mechanical-shaped — proven pattern, deepened. - G before F: frames, title blocks and revision block serve every sheet. - H after the drawing tracks so the DRC has three domains to run against. - D last: isolated, read-only, no shared code. Each track = its own spec → plan → implementation → CHANGELOG entry. 1.6.0 is released once every track's criterion is green; pre-release tags (`1.6.0a1`…) after each track are optional and decided at that point. ## 5. Cross-cutting decisions 1. **Tool packs.** `TOOL_PACKS` (comma list; default `all`) with packs `core`, `mech`, `pid`, `arch`, `plant3d`, `settings`. A client advertises only the packs it uses; `TOOL_PROFILE` filters within enabled packs; `DISCOVERY_MODE` indexes every enabled pack; `system_about` reports packs; idle token cost is published per pack. Rationale: ~300 tools would push `full` to ~80k idle tokens — best-cad-mcp's most criticised trait. 2. **Dual-engine by default; `@capability` only for real engine boundaries** (unchanged rule). Every COM path added in 1.6 is executed once against the live AutoCAD on the author's machine and recorded in the changelog; "written against the ActiveX reference, never executed" is no longer an acceptable final state where AutoCAD is available. 3. **Every tool** has an alias-corpus entry, a docstring, tests on both engines (fake-ActiveX for COM), and refusals that were measured rather than assumed. 4. **Authored standards data is pinned by provenance tests** (the `fits.py` pattern): symbol geometry, ISA letter tables, ISO 5457 frames, thread tables — each with a test a reader can check against the standard. 5. **Benchmarks.** Each track adds a task to the matrix; competitor reports are never back-filled (chart shows `not run`). The correctness suite grows per track and the A/B gate runs against v1.5.1. 6. **Domain packs must not degrade other domains**: every new critique focus returns nothing on a drawing with no entities of its domain, so a mechanical sheet is not scored on P&ID rules and vice versa. 7. **No licence contamination**: pyDEXPI (AGPL) and the CTO library (commercial) are excluded; public Plant 3D projects are schema sources only. ## 6. Explicitly out of 1.6 Electrical schematics IEC 60617 (**1.7** — cheap once A's symbol/graph infrastructure exists), DEXPI export, image-to-CAD tracing, a STEP/3D kernel, a bundled VLM judge, BricsCAD/ZWCAD/GstarCAD verification, Plant 3D writes, ISA-5.2 logic symbols, Revit/IFC.