MCP server for AutoCAD LT automation and headless DXF generation
Critical gaps across all 8 tools. Tool definitions rely on operation dispatch via string parameters rather than discrete, well-named tools. Descriptions are present but generic and lack LLM-optimized guidance. Input schemas exist but are incomplete: most tools accept a generic 'data' dict with no nested schema definition, forcing LLMs to guess parameter structure. No output schemas documented. Error handling is minimal. Only the 'drawing' tool has moderately detailed description; others (block, annotation, pid, view) have single-sentence descriptions. Tool naming violates verb_noun convention, 'drawing', 'entity', 'layer' are nouns, not action verbs.
Text, dimension, and annotation creation.
Block definition, insertion, and attribute management.
Drawing file management. Operations: create — Create a new empty drawing. data: {name?} open — Open an existing drawing. data: {path} info — Get drawing extents, entity count, layers, blocks. save — Save current drawing. data: {path?} (saves to path if given, else QSAVE) save_as_dxf — Export as DXF. data: {path} plot_pdf — Plot to PDF. data: {path} purge — Purge unused objects. get_variables — Get system variables. data: {names: [...]} undo — Undo last operation. redo — Redo last undone operation.
Entity creation, querying, and modification. Create operations: create_line — x1, y1, x2, y2, layer? create_circle — data: {cx, cy, radius}, layer? create_polyline — points: [[x,y],...], data: {closed?}, layer? create_rectangle — x1, y1, x2, y2, layer? create_arc — data: {cx, cy, radius, start_angle, end_angle}, layer? create_ellipse — data: {cx, cy, major_x, major_y, ratio}, layer? create_mtext — data: {x, y, width, text, height?}, layer? create_hatch — entity_id, data: {pattern?} Read operations: list — layer? → list entities count — layer? → count entities get — entity_id → entity details Modify operations: copy — entity_id, data: {dx, dy} move — entity_id, data: {dx, dy} rotate — entity_id, data: {cx, cy, angle} scale — entity_id, data: {cx, cy, factor} mirror — entity_id, x1, y1, x2, y2 offset — entity_id, data: {distance} array — entity_id, data: {rows, cols, row_dist, col_dist} fillet — data: {id1, id2, radius} chamfer — data: {id1, id2, dist1, dist2} erase — entity_id
Operation dispatch via string parameter instead of discrete tools. Tools named 'drawing', 'entity', 'layer' are nouns, not action verbs. LLMs cannot infer intent from tool names alone. Violates verb_noun convention (get_, create_, update_, delete_, list_, search_). Each operation (create_line, create_circle, move, rotate) should be a separate tool.
Generic 'data' parameter with no nested schema definition. LLMs cannot determine what fields are required or optional. E.g., entity.create_circle expects data: {cx, cy, radius}, but schema shows only 'type: object' with no properties. Violates constrained-input pattern.
Four tools (block, annotation, pid, view) have single-sentence descriptions under 20 characters. Descriptions do not explain WHAT the tool does, WHEN to use it, or what it returns.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 29 | <=2025-11-25 | v2 |
Layer creation and management. Operations: list — List all layers with properties. create — data: {name, color?, linetype?} set_current — data: {name} set_properties — data: {name, color?, linetype?, lineweight?} freeze — data: {name} thaw — data: {name} lock — data: {name} unlock — data: {name}
P&ID (Piping & Instrumentation Diagram) operations using CTO symbol library.
System status and backend information.
Viewport and view management.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. E.g., drawing.info returns 'extents, entity count, layers, blocks' but no structured schema. Violates response-shaper pattern.
Error handling minimal. No recovery guidance, error classification, or actionable messages. E.g., 'Unknown drawing operation: {operation}' tells LLM nothing about how to proceed. Violates recovery-guide pattern.