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
This commit is contained in:
Umut CAN
2026-09-15 10:07:23 +03:00
co-authored by Claude Opus 5
parent abc2a82e71
commit 3430573de1
2 changed files with 1049 additions and 0 deletions
@@ -0,0 +1,235 @@
# 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.