daobataotie/CAD-MCP
CAD MCP Server
CAD‑MCP 服务器 – 通过自然语言控制 CAD
是什么 – 一个基于 Python 的服务器,可通过发送由纯文本指令生成的 JSON 编码命令,来驱动流行的 Windows CAD 程序(AutoCAD、GstarCAD、ZWCAD)。它实现了 Model‑Context‑Protocol(MCP),使 LLM 驱动的客户端(Claude、Cursor 等)可以调用 35 个明确定义的工具,完成绘图、查询、编辑和 CAD 文件管理。
为何重要 – 通过结构化、自描述的 API 暴露 CAD 操作,该项目连接了自然语言处理与传统 CAD 自动化。LLM 可以向服务器请求“在‘Walls’图层上绘制半径为 5 米的圆,然后列出所有实体并显示截图”,服务器将此转换为对 CAD 应用程序的 COM 调用,返回结构化结果,并可流式传输进度通知。
核心功能(如 README 所列)
| 类别 | 工具(示例) | 可执行操作 |
|---|---|---|
| 基本绘图 | draw_line, draw_circle, draw_arc, draw_ellipse, draw_rectangle, draw_polyline, draw_text, draw_hatch, add_dimension |
从文本命令直接创建几何图形并添加注释。 |
| 查询 | list_layers, list_entities, get_entity_properties, screenshot |
获取当前模型状态,检查单个实体句柄,并获取 CAD 窗口的 PNG 预览。 |
| 编辑 | erase_entity, move_entity, rotate_entity, scale_entity, copy_entity, mirror_entity, offset_entity, array_linear_entity, array_polar_entity, undo, redo |
程序化修改现有对象,支持典型的 CAD 编辑工作流。 |
| 图层与绘图管理 | create_layer, set_current_layer, new_drawing, open_drawing, close_drawing, save_drawing |
在不同图层上组织工作,并在不打开 CAD UI 的情况下处理 DWG/DXF 文件。 |
| 块操作 | create_block, insert_block, list_blocks |
将组合几何图形作为 CAD 块重复使用。 |
| 命令透传 | send_command |
在预定义工具未覆盖的情况下,发送任意原始 CAD 命令字符串。 |
| 遗留 NLP 接口 | process_command |
一个简单的解析器,将自由格式文本转换为上述工具调用(为向后兼容而保留)。 |
内部工作原理
- MCP 服务器 –
src/server.py运行一个 FastMCP 服务器,支持两种传输方式:stdio– 本地单客户端模式(默认)。streamable‑http– HTTP 端点(/mcp),允许多个远程客户端共享一个 CAD 实例。
- COM 桥接 –
cad_controller.py使用 Windows 的pywin32COM 接口与已安装的 CAD 程序通信,发出命令并读取实体数据。 - 结构化输出 – 每个工具返回符合
models.py中定义的outputSchema的 JSON 对象。该模式包含structuredContent、readOnlyHint和destructiveHint等字段,使客户端可自动决定是否需要用户确认。 - 进度通知 – 长时间操作(如 CAD 启动、文件保存)会发出增量消息,MCP 客户端可将其显示为进度条。
- 遗留 NLP 处理器 –
nlp_processor.py从自然语言字符串中提取颜色、形状关键词和动作动词,用于填充旧版process_command工具的参数。
快速上手(来自 README)
# 克隆仓库并以可编辑方式安装
pip install -e .
# 运行服务器(默认 stdio 模式)
python src/server.py
# 或使用 HTTP 传输模式供远程客户端使用
python src/server.py --transport streamable-http --port 8000
将服务器命令添加到任何 MCP 兼容客户端配置(Claude Desktop、Cursor 等)中,即可开始发出命令。
典型使用场景
- 快速原型设计 – 用纯英文描述房间,LLM 生成
draw_*和create_layer调用序列,快速绘制平面图。 - 自动检查 – LLM 可查询模型(
list_entities,get_entity_properties)并验证设计规则,再请求用户批准修正编辑。 - 批量绘图 – 通过循环遍历自然语言规格列表,生成多个相似图纸(如组件布局)。
- 教学/演示 – 向新手展示 CAD 命令如何映射到视觉结果,而无需手动点击 UI 工具。
限制与要求
- 仅限 Windows – 依赖 COM 接口(
pywin32),因此仅在安装支持的 CAD 产品且运行于 Windows 的系统上运行。 - 必须安装 CAD 软件 – AutoCAD、GstarCAD 或 ZWCAD 需已安装并授权。
- Python 3.10+ – 项目使用现代类型注解(
pydantic>=2)。 - 无内置 AI 模型 – 服务器不包含 LLM;需外部 MCP 客户端(Claude、Cursor 等)生成工具调用。
- 遗留 NLP 简单关键词匹配 – 对复杂语言理解,应依赖完整的 MCP 工具集,而非
process_command。
许可证
MIT – 可自由使用、修改并嵌入商业工作流。
相关
- 项目
- 项目
- 项目
- 项目