autocad-mcp
by liqi82
README.md
# AutoCAD-mcp
> 用自然语言 / AI 驱动你电脑上正在运行的 **AutoCAD** 完成 2D 制图自动化。
> 通过 MCP 协议把 AutoCAD 的绘图、标注、图层/块、机械图框/标题栏/BOM/球标等能力暴露给 WorkBuddy 及任意 MCP 客户端;支持 AutoCAD 2014 及兼容版本。
[](LICENSE)
[](https://www.python.org)

---
## 它能做什么
通过 Windows COM(ActiveX) 连接本机 AutoCAD,把以下能力以 **MCP 工具**暴露给 WorkBuddy / 任意 MCP 客户端:
- 🖊️ **绘制**:直线、圆、多段线、矩形、单行/多行文字
- 📐 **标注**:线性、对齐、半径、直径
- 🗂️ **图层 / 块 / 样式管理**:新建图层、切换当前层、块定义与插入、中文文字样式(宋体,不乱码)
- 📐 **机械制图**:A3 图框、GB 标准中文标题栏、BOM 明细表、球标
- 🔍 **查询 / 清理**:列出实体、按图层擦除、按 Handle 平移
## 能力清单(MCP 工具)
| 能力 | 对应工具 |
|---|---|
| 连接 / 环境探测 | `connect` / `capabilities` / `list_documents` |
| 绘制 线/圆/多段线/矩形/文字 | `draw_line` / `draw_circle` / `draw_polyline` / `draw_rect` / `add_text` / `add_mtext` |
| 查询图面 | `query_entities` |
| 标注 线性/对齐/半径/直径 | `dim_linear` / `dim_aligned` / `dim_radial` / `dim_diameter` |
| 图层 / 块 / 样式 | `ensure_layer` / `set_current_layer` / `ensure_block` / `insert_block` |
| 机械图框 / 标题栏 / BOM / 球标 | `a3_frame` / `title_block` / `bom_grid` / `balloon` |
| 清理 / 变换 | `erase_layer` / `move_entity` |
> 机械图框、GB 标准标题栏、BOM 明细表、球标等均以几何 + 文字直接生成,开箱即用、无需依赖任何 CAD 私有向导。
---
## 环境要求
- **Windows**(COM/ActiveX 仅 Windows 可用)
- **AutoCAD 已安装并打开至少一张 DWG**(2014 及兼容版本;理论上支持 R2010+ 的 ActiveX 接口)
- 运行环境:首次启动会自动拉取 `mcp`(v1) + `pywin32`
> ⚠️ 本连接器仅支持 **AutoCAD**,需要本机已安装并运行 AutoCAD(依赖 Windows COM/ActiveX)。
---
## 安装与运行
### 方式一:uvx / pipx(推荐,发布后)
```bash
uvx autocad-mcp # 自动下载并启动 MCP 服务(stdio)
# 或
pipx run autocad-mcp
```
### 方式二:从源码
```bash
git clone https://github.com/liqi82/autocad-mcp.git
cd autocad-mcp
pip install -e .
autocad-mcp # 或 python -m autocad_mcp.server
```
本地开发时也可直接进入 `src` 目录用托管 Python 运行:
```bash
cd autocad-mcp/src
python -m autocad_mcp.server
```
---
## 接入 WorkBuddy(连接器)
1. 把下面内容合并进 WorkBuddy 的 `~/.workbuddy/mcp.json` 的 `mcpServers`:
```json
{
"mcpServers": {
"autocad-2d": {
"command": "uvx",
"args": ["autocad-mcp"],
"env": { "PYTHONUTF8": "1" }
}
}
}
```
2. 在连接器管理页面对 **「autocad-2d」** 点击 **信任 / 启用**。
3. 确认 AutoCAD 已打开一张 DWG。
4. 在对话里直接说,例如:*"在 Drawing2.dwg 画一个直径 300 的圆"*、*"插入 A3 图框并填写标题栏"*。
> 本地未发布时,可把 `command` 改为你的 Python 解释器、`args` 改为 `["-m","autocad_mcp.server"]`、`cwd` 指向 `src` 目录。
---
## 使用示例(MCP 工具直接调用)
```text
connect() → 连接当前活动图纸,返回能力信息
a3_frame(landscape=true) → 插入 A3 横式外框
title_block(fields={"图名":"总布置图","图号":"SC-001","比例":"1:200"})
draw_circle(cx=210, cy=148.5, radius=150) → 直径 300 的圆
bom_grid(origin_x=20, origin_y=360,
headers=["序号","名称","数量","材料"],
rows=[["1","船体","1","钢"],["2","电机","2","—"]],
col_widths=[20,80,30,40])
balloon(x=120, y=200, number="1", leader_x=160, leader_y=230)
dim_linear(x1=0,y1=0,x2=420,y2=0,tx=210,ty=-15) → 水平尺寸标注
query_entities() → 列出模型空间所有实体
erase_layer("HW_TEST_TMP") → 清理临时图层
```
---
## 快速演示(一键跑通全套能力)
仓库内置一个端到端演示脚本 `examples/demo_showcase.py`,它通过**真实 MCP stdio 服务器**在目标图纸上画出一张带标注的机械示例图(矩形轮廓 + 孔 + 线性标注 + 球标 + BOM 明细表 + 文字),全部画在独立图层 `HW_DEMO`,便于一键清理。
```bash
# 1) 先装好连接器(见上文「方式二:从源码」)
pip install -e .
# 2) 打开 AutoCAD 与目标图纸(默认 Drawing2.dwg,可在脚本顶部的 TARGET_DOC 改)
# 3) 运行演示(用托管 Python)
python examples/demo_showcase.py
```
演示会依次调用 `connect → ensure_layer → draw_rect → draw_circle → dim_linear → balloon → bom_grid → add_text`,并输出每个工具的返回值(Handle)。效果等价于你亲口说:"在 Drawing2 画一个矩形零件,开个孔,标个尺寸,加球标和 BOM"。
> 想看真实渲染,直接用 AutoCAD 打开该图纸、切到 `HW_DEMO` 图层即可;清理时删除该图层内容或调用 `erase_layer(layer="HW_DEMO")`。
---
## 局限与注意事项
- **仅 Windows + AutoCAD**:依赖 COM/ActiveX,无法在 macOS/Linux 或非 AutoCAD 环境使用。
- **需 AutoCAD 运行中**:服务启动后通过 `GetActiveObject` 连接已运行的 AutoCAD 实例;未启动会报错。
- **单实例**:多开 AutoCAD 时可能连到非预期窗口,建议用 `connect(doc_name=...)` 显式指定。
- **中文**:文字默认使用 `HW_CN`(宋体 TTF)样式以避免方框乱码。
- **安全**:删除实体、保存、关闭文档等写操作请先确认;本服务只新增实体、不自动保存,便于 Ctrl+Z 撤销。
## FAQ
**Q:需要联网吗?**
A:不需要。连接器完全在本机通过 COM 与已运行的 AutoCAD 通信,不上传你的图纸。
**Q:支持 AutoCAD 哪个版本?**
A:ActiveX 接口自 R2010 起基本稳定,已在 AutoCAD 2014(19.1s 中文版)验证;更高版本通常也可用。
**Q:能画 3D 吗?**
A:当前聚焦 2D 制图自动化。3D 可后续扩展。
**Q:坐标单位是什么?**
A:当前图纸的单位(通常毫米)。角度为弧度。
---
## 发布与分享
本项目设计为可发布、可分享:
- **GitHub**:`git tag v0.1.0` 后发布 Release;`pyproject.toml` 已配置 `autocad-mcp` 控制台入口,可 `uvx autocad-mcp` 直接使用。
- **WorkBuddy 技能市场**:将本仓库的 `SKILL.md` 与 `src/` 按 WorkBuddy 技能/连接器规范打包上传,即可在「推荐市场」被发现与一键安装。
- **私有分发**:直接把整个文件夹发给同事,`pip install -e .` 后即可用。
欢迎提 Issue / PR,一起把 AutoCAD 自动化能力补全。
## License
[MIT](LICENSE) © 2026 John Zhang, ZWCAD-2D contributors, 李琦 (liqi8209@qq.com)
_author:李琦/liqi(Email: liqi8209@qq.com)_
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues