AutoCAD自动化服务器

AutoCAD MCP Server是一个用于AutoCAD LT自动化和无头DXF生成的服务,提供文件IPC和ezdxf两种后端支持。

  • by puran-water
  • Python
  • 本地部署
  • 601 星标
  • 更新于
在 GitHub 查看 hvkshetry/autocad-mcp

使用说明

AutoCAD MCP服务器

用于AutoCAD LT自动化和无头DXF生成的MCP服务器。

两个后端,一个API:

后端 运行时 需要AutoCAD吗? 屏幕截图
IPC文件 Windows Python 是--AutoCAD LT 2024+(Windows) Win32打印窗口
ezdxf 任何平台 无(无头) matplotlib渲染

服务器暴露 8个综合工具 (drawing, entity, layer, block, annotation, pid, view, system)通过MCP stdio传输。MCP客户端(Claude Desktop、Claude Code等)通过自然语言请求连接并驱动AutoCAD。

先决条件(文件IPC后端)

  • Windows 10/11 (文件IPC后端使用Win32 API进行无焦点窗口消息传递)
  • AutoCAD LT 2024或更新版本 --LT 2024为Windows添加了AutoLISP支持。AutoCAD LT for Mac存在,但确实存在 不 支持AutoLISP。
  • Python 3.10+ (Windows本机-不是WSL Python)
  • 紫外线 包管理器(安装指南)

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并加载 mcp_dispatch.lsp 使用 应用:

  1. 类型 APPLOAD 在AutoCAD命令行中
  2. 浏览至 <repo>/lisp-code/mcp_dispatch.lsp
  3. 点击 负载
  4. 您应该看到: === 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 在项目venv中(不是WSL python)。
  • AUTOCAD_MCP_BACKEND 可以是 auto (默认--尝试文件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")

你应该看看 backend: "file_ipc" 如果AutoCAD正在运行,或 backend: "ezdxf" 无头模式。

工具

drawing --文件/图纸管理

操作 说明 文件IPC ezdxf
create 重置为干净绘图(全部擦除+清除) 是 是
open 打开现有图形 是 是(DXF)
info 获取实体计数和图层 是 是
save 保存当前图形(如果给定,则保存到路径) 是 是
save_as_dxf 导出为DXF 是 是
plot_pdf 打印为PDF 是 否
purge 清除未使用的对象 是 是
get_variables 按名称获取系统变量 是 是
undo 撤消上次操作 是 否
redo 恢复上次未完成的操作 是 否

entity --实体CRUD+修改

创建: 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 仅支持文件IPC(ezdxf无头后端不支持)。

layer --图层管理

list, create, set_current, set_properties, freeze, thaw, lock, unlock

block --区块操作

操作 文件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工具在线 (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

截图使用 PrintWindow (Win32)用于文件IPC后端——即使在AutoCAD最小化或处于后台时也能工作。ezdxf后端通过matplotlib进行渲染。

system --服务器管理

status, health, get_backend, runtime, init, execute_lisp

execute_lisp 运行任意AutoLISP代码(仅限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后端通过以下方式将按键发送到AutoCAD的MDIClient窗口 PostMessageW(WM_CHAR),触发 (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-ipc-dir* 变量in mcp_dispatch.lsp 为了匹配。

发展

uv sync
uv run pytest tests/ -v

AutoCAD LT与AutoLISP的兼容性

AutoLISP已添加到AutoCAD LT中 **2024版本(仅限Windows)**AutoCAD LT for Mac不支持AutoLISP。

支持(LT 2024+Windows) 不支持
.lsp / .fas / .vlx / .dcl VLIDE(可视化LISP IDE)
全部 vl-* 效用函数 vlax-* (ActiveX/COM)
文件I/O(open, read-line等) 快捷工具
实体访问(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前缀 --在每次调度之前发送2x ESC,以取消之前超时的过时挂起命令。
  • UTF-8/cp1252回退 --处理LISP结果文件中的非ASCII字符(AutoCAD写入Windows-1252)。
  • 可配置IPC超时 — AUTOCAD_MCP_IPC_TIMEOUT env-var(1-300秒,默认值10)。
  • 线程安全后端初始化 — asyncio.Lock 防止并行初始化竞争。

许可证

麻省理工学院