Files
autocad-mcp-pro/docs/superpowers/specs/2026-09-15-v1.6-roadmap-design.md
T
Umut CANandClaude Opus 5 3430573de1 docs: v1.6 roadmap decomposition and the Track A (P&ID) design spec
Research snapshot of the AutoCAD MCP field (20 READMEs, 2026-09-14), the
seven 1.6 tracks with measurable acceptance criteria, their order
(A -> E -> B -> G -> F -> H -> D), and the tool-pack decision.

Track A: symbol catalogue authored in code (ISO 10628-2 + ISA-5.1), two
generic contracts (block_define, entity_get/set_xdata), nine pid_* tools,
routing, the ISA-5.1 tag grammar, the pid_graph reader, six critique
focuses, TOOL_PACKS, and the test/evidence plan.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FKFStjEFzpGyLq5bMpWxTd
2026-09-15 10:07:23 +03:00

236 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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)
## 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.