The v1.6 roadmap in five tracks: 154 -> 247 registered tools in 28 groups. Evidence re-measured for the release: - correctness A/B against v1.5.1: 26/48 -> 48/48, 22 fixed, 0 regressed (ab-v1.5.1-vs-v1.6.0.json, replacing the -dev report); - the reference adapter on matrix v7: 21/21 (autocad-mcp-pro.json, which was the v3 run of 1.5); the published-report test follows it to v7; - the 100-point rubric re-scored per category, every withheld point named: 93 (the competitor rows are their July snapshots, not re-reviewed); - the perf lane as medians of five alternating runs, beside a v1.4.0 comparison on one interpreter (perf-v1.4.0-vs-v1.6.0.json). Two roadmap criteria are not green, and the changelog, the README and the roadmap say so: criterion 5 is withdrawn (track D, Plant 3D, dropped) and criterion 7 is not met (creation 1.25x / 1.38x v1.4.0's time, still 1.17x / 1.20x with the timeout off). Carried to 1.7. README rewritten for 1.6: what is new, the mechanical and architectural sheets, the rubric and task-matrix charts, the measured limits (including the four feature tables that ship empty), and the 1.7 roadmap. server.json describes the 1.6 surface and declares TOOL_PACKS. CLAUDE.md corrects the ISO 286 letter set and the empty feature tables. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01FKFStjEFzpGyLq5bMpWxTd
249 lines
16 KiB
Markdown
249 lines
16 KiB
Markdown
# 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-<track>-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.
|