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:
co-authored by
Claude Opus 5
parent
abc2a82e71
commit
3430573de1
@@ -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.
|
||||
Reference in New Issue
Block a user