MCP server for AutoCAD for Mac. Transport: file IPC. Each tool writes ~/.acmcp/run.lsp, types (load ...) into AutoCAD's command line via System Events, then polls ~/.acmcp/out.txt (+ .done marker) that the LISP wrapper writes. Pure AutoLISP only - no vla-*/ActiveX on Mac.
Three tools with clear, detailed descriptions (194-250 chars each) and well-structured input schemas. However, critical gaps in output schema documentation, error handling guidance, and parameter validation. Tools lack enum constraints, timeout defaults are hardcoded, and no recovery guidance for common failures. Naming is verb-based but generic ('autocad_lisp', 'autocad_command'). No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Output schemas are inferred from code comments, not formally documented.
Run a native AutoCAD command sequence, e.g. 'ZOOM E' or 'CIRCLE 0,0 10' or '_.LAYER _M IRRIGATION'. Tokens are split on spaces and passed to (command ...). Returns 'OK' or an error.
Run AutoLISP in the active AutoCAD drawing and return the value of the last expression (printed with prin1). Pure AutoLISP only: entget/entmake/ssget/tblnext/getvar/setvar/command work; vla-*/vlax-* (ActiveX) do NOT exist on Mac. Multiple expressions are allowed; the last one is the return value.
Point every following call at this .dwg: launches AutoCAD if it is not running, opens the file if it is not open, answers harmless dialogs (missing fonts), switches to it, and remembers it. No path = re-check the remembered target. Returns 'ready: <name>'. Call this first; nothing else needs the app clicked.
Output schemas not formally documented. Tool descriptions mention return values ('returns the value of the last expression', 'Returns OK or an error') but no structured schema is visible in code. LLMs cannot plan downstream operations without knowing output field names and types.
No error recovery guidance. Errors like 'AutoCAD is blocked by a dialog' or 'drawing did not open within 300s' are raised but tool descriptions do not explain what the LLM should do next (e.g., 'call autocad_dialog(press=...) to dismiss'). Agents cannot self-correct.
Parameter 'timeout' lacks constraints. Default is 30s, but no min/max bounds documented. LLMs could pass absurd values (0, 999999) without validation. Description should state '1 - 300 seconds'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Tool names are generic. 'autocad_lisp' and 'autocad_command' do not clearly distinguish intent. Better names: 'execute_lisp_code', 'run_autocad_command', 'evaluate_lisp_expression'. Current names force LLMs to read full descriptions to decide which to use.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All three tools modify AutoCAD state (open files, run commands, execute code) but are not marked as destructive. Agents cannot reason about side effects or retry safety.