关于 AutoCAD LT AutoLISP MCP Server
这是一个用于 AutoCAD LT 自动化和无头 DXF 生成的 MCP 服务。它面向需要通过自然语言驱动 CAD 绘图的用户,并支持 File IPC 与 ezdxf 两种后端。
主要功能
- 018 个整合工具覆盖图纸、实体、图层等操作
- 02File IPC 后端通过 AutoLISP 调度 AutoCAD LT
- 03ezdxf 后端可在无 AutoCAD 的环境中生成 DXF
- 04支持撤销、重做与 P&ID 符号插入
- 05提供 execute_lisp 以执行任意 AutoLISP 代码
适用场景
- 01通过 MCP 客户端在 AutoCAD LT 中批量创建实体与标注
- 02在 Linux 或 macOS 上离线生成 DXF 文件
- 03为 P&ID 图纸插入 CTO 符号库中的设备与阀门
MCP 相关
该项目是一个 MCP 服务,向 MCP 客户端暴露 drawing、entity、layer、block、annotation、pid、view 和 system 等工具。客户端通过 stdio 传输连接并调用这些工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
AutoCAD MCP 服务
用于 AutoCAD LT 自动化和无头 DXF 生成的 MCP 服务。
两个后端,一个 API:
| 后端 | 运行环境 | 是否需要 AutoCAD? | 截图 |
|---|---|---|---|
| File IPC | Windows Python | 是 — AutoCAD LT 2024+(Windows) | Win32 PrintWindow |
| ezdxf | 任意平台 | 否(无头模式) | matplotlib 渲染 |
该服务通过 MCP stdio 传输协议公开 8 个整合工具(drawing、entity、layer、block、annotation、pid、view、system)。MCP 客户端(Claude Desktop、Claude Code 等)连接后,可通过自然语言请求驱动 AutoCAD。
前置条件(File IPC 后端)
- Windows 10/11(File IPC 后端使用 Win32 API 发送无需聚焦窗口的消息)
- AutoCAD LT 2024 或更高版本 — Windows 版 LT 2024 开始支持 AutoLISP。虽然有 Mac 版 AutoCAD LT,但它不支持 AutoLISP。
- Python 3.10+(原生 Windows 版,不是 WSL Python)
- uv 包管理器(安装指南)
ezdxf 无头后端可在任何平台(Linux、macOS、WSL)上运行,无需安装 AutoCAD,即可离线生成 DXF。
快速开始
1. 克隆并安装
git clone https://github.com/puran-water/autocad-mcp.git
cd autocad-mcp
uv sync
2. 在 AutoCAD LT 中加载 LISP 分发器
打开 AutoCAD LT,并使用 APPLOAD 加载 mcp_dispatch.lsp:
- 在 AutoCAD 命令行中输入
APPLOAD - 浏览到
<repo>/lisp-code/mcp_dispatch.lsp - 点击 Load
- 你应看到:
=== MCP Dispatch v3.1 loaded ===和Ready for commands via (c:mcp-dispatch)
提示: 将该文件添加到 AutoCAD 启动套件(位于 APPLOAD 对话框中),这样每次打开图形时都会自动加载。
3. 配置 MCP 客户端
将以下内容添加到 MCP 客户端配置中(例如 Claude Desktop 的 claude_desktop_config.json):
{
"mcpServers": {
"autocad-mcp": {
"command": "C:\\path\\to\\autocad-mcp\\.venv\\Scripts\\python.exe",
"args": ["-m", "autocad_mcp"],
"env": { "AUTOCAD_MCP_BACKEND": "auto" }
}
}
}
要点:
command必须指向项目虚拟环境中的 Windows Python(不是 WSL python)。AUTOCAD_MCP_BACKEND可以设为auto(默认值 — 尝试使用 File IPC,失败时回退到 ezdxf)、file_ipc(需要 AutoCAD)或ezdxf(仅无头模式)。
从 WSL 运行
如果 MCP 客户端在 WSL 中运行(例如 Claude Code),请通过 cmd.exe 启动服务,使其作为原生 Windows 进程运行:
{
"mcpServers": {
"autocad-mcp": {
"type": "stdio",
"command": "cmd.exe",
"args": ["/d", "/s", "/c", "cd /d C:\\path\\to\\autocad-mcp && .venv\\Scripts\\python.exe -m autocad_mcp"],
"env": { "AUTOCAD_MCP_BACKEND": "auto" }
}
}
}
4. 验证
在 MCP 客户端中调用:
system(operation="status")
如果 AutoCAD 正在运行,你应看到 backend: "file_ipc";无头模式下则应看到 backend: "ezdxf"。
工具
drawing — 文件/图形管理
| 操作 | 说明 | File IPC | ezdxf |
|---|---|---|---|
create | 重置为干净图形(全部擦除 + 清理) | 是 | 是 |
open | 打开现有图形 | 是 | 是(DXF) |
info | 获取实体数量和图层 | 是 | 是 |
save | 保存当前图形(如提供路径,则保存到该路径) | 是 | 是 |
save_as_dxf | 导出为 DXF | 是 | 是 |
plot_pdf | 绘制为 PDF | 是 | 否 |
purge | 清理未使用的对象 | 是 | 是 |
get_variables | 按名称获取系统变量 | 是 | 是 |
undo | 撤销上一个操作 | 是 | 否 |
redo | 重做上一个撤销的操作 | 是 | 否 |
entity — 实体增删改查
创建: create_line、create_circle、create_polyline、create_rectangle、create_arc、create_ellipse、create_mtext、create_hatch
读取: list、count、get
修改: copy、move、rotate、scale、mirror、offset*、array、fillet*、chamfer*、erase
*
offset、fillet、chamfer仅支持 File IPC(ezdxf 无头后端不支持)。
layer — 图层管理
list、create、set_current、set_properties、freeze、thaw、lock、unlock
block — 块操作
| 操作 | File IPC | ezdxf |
|---|---|---|
list | 是 | 是 |
insert | 是 | 是 |
insert_with_attributes | 是 | 是 |
get_attributes | 是 | 是 |
update_attribute | 是 | 是 |
define | 否 | 是 |
annotation — 文字、尺寸、引线
create_text、create_dimension_linear、create_dimension_aligned、create_dimension_angular、create_dimension_radius、create_leader
pid — P&ID 操作(CTO 符号库)
setup_layers、insert_symbol、list_symbols、draw_process_line、connect_equipment、add_flow_arrow、add_equipment_tag、add_line_number、insert_valve、insert_instrument、insert_pump、insert_tank
插入 P&ID 符号需要安装 CAD Tools Online(CTO)P&ID 符号库,安装路径为
C:\PIDv4-CTO\。ezdxf 后端内置了对 CTO 符号库的支持。对于 File IPC 后端,某些 P&ID 操作需要额外的 LISP 辅助程序——请参阅 wiki 中的 P&ID 部分,了解设置详情。
view — 视口和屏幕截图
| 操作 | 描述 |
|---|---|
zoom_extents | 缩放以显示所有实体 |
zoom_window | 缩放到指定窗口 |
get_screenshot | 将当前 AutoCAD 视图截取为 PNG |
File IPC 后端使用 PrintWindow(Win32)截取屏幕截图,即使 AutoCAD 最小化或在后台运行也能正常工作。ezdxf 后端通过 matplotlib 渲染。
system — 服务管理
status、health、get_backend、runtime、init、execute_lisp
execute_lisp可运行任意 AutoLISP 代码(仅限 File IPC)。传入data: {code: "(+ 1 2)"}。这使服务成为可扩展的自动化平台——可以执行任何有效的 AutoLISP 表达式。
架构
MCP Client (Claude)
│ stdio (JSON-RPC)
▼
Python MCP Server (autocad_mcp)
│
├── File IPC Backend ──► C:/temp/*.json ──► mcp_dispatch.lsp (AutoCAD LT)
│ PostMessageW(WM_CHAR) to MDIClient — no focus steal
│
└── ezdxf Backend ──► in-memory DXF (headless, no AutoCAD needed)
File IPC 后端通过 PostMessageW(WM_CHAR) 向 AutoCAD 的 MDIClient 窗口发送按键,从而触发 (c:mcp-dispatch) AutoLISP 命令。此方法不会抢占窗口焦点——运行自动化时,你可以继续使用其他应用程序。
环境变量
| 变量 | 默认值 | 描述 |
|---|---|---|
AUTOCAD_MCP_BACKEND | auto | 后端选择:auto、file_ipc、ezdxf |
AUTOCAD_MCP_IPC_DIR | C:/temp | IPC 命令/结果 JSON 文件的目录(Python 和 LISP 两端必须一致) |
AUTOCAD_MCP_IPC_TIMEOUT | 10.0 | IPC 命令超时时间,单位为秒(1-300) |
AUTOCAD_MCP_ONLY_TEXT | false | 禁用屏幕截图捕获(仅提供文本反馈) |
注意: 如果更改
AUTOCAD_MCP_IPC_DIR,还必须更新mcp_dispatch.lsp中的*mcp-ipc-dir*变量,使其保持一致。
开发
uv sync
uv run pytest tests/ -v
AutoCAD LT AutoLISP 兼容性
AutoLISP 于 2024 版本(仅限 Windows) 加入 AutoCAD LT。Mac 版 AutoCAD LT 不支持 AutoLISP。
| 支持(LT 2024+ Windows) | 不支持 |
|---|---|
.lsp / .fas / .vlx / .dcl | VLIDE(Visual LISP IDE) |
所有 vl-* 实用函数 | vlax-*(ActiveX/COM) |
文件 I/O(open、read-line 等) | Express Tools |
实体访问(entget、entmod 等) | 3D 操作 |
| 选择集 | Mac 上的 AutoLISP |
mcp_dispatch.lsp 分发器完全兼容 LT 2024 及更高版本。
v3.1 新增内容
execute_lisp— 通过临时文件模式运行任意 AutoLISP 代码。将服务从一组固定命令扩展为可扩展的自动化平台。- 撤销 / 重做 — 通过
drawing工具执行单步撤销和重做。 - 打开图形 — 以编程方式打开现有的
.dwg文件(已禁止 FILEDIA)。 - 创建图形 — 现在会重置当前图形(全部擦除并清理),而不是使用
_.NEW,从而保留 LISP 分发器命名空间。 - 保存图形并指定路径 —
save使用path参数时会使用 SAVEAS;不指定路径时则使用 QSAVE。 get_variables修复 — 正确处理names参数,并以适当的类型处理方式返回所请求的变量。- 多段线 / 引线修复 — 使用分号分隔格式正确编码点数组。
- ESC 前缀 — 每次分发前发送 2 次 ESC,以取消先前超时遗留的待处理命令。
- UTF-8 / cp1252 回退 — 处理 LISP 结果文件中的非 ASCII 字符(AutoCAD 使用 Windows-1252 编码)。
- 可配置的 IPC 超时 — 环境变量
AUTOCAD_MCP_IPC_TIMEOUT(1–300 秒,默认值为 10)。 - 线程安全的后端初始化 — 使用
asyncio.Lock防止并行初始化竞争。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。