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 一个简单的解析器,将自由格式文本转换为上述工具调用(为向后兼容而保留)。

内部工作原理

  1. MCP 服务器src/server.py 运行一个 FastMCP 服务器,支持两种传输方式:
    • stdio – 本地单客户端模式(默认)。
    • streamable‑http – HTTP 端点(/mcp),允许多个远程客户端共享一个 CAD 实例。
  2. COM 桥接cad_controller.py 使用 Windows 的 pywin32 COM 接口与已安装的 CAD 程序通信,发出命令并读取实体数据。
  3. 结构化输出 – 每个工具返回符合 models.py 中定义的 outputSchema 的 JSON 对象。该模式包含 structuredContentreadOnlyHintdestructiveHint 等字段,使客户端可自动决定是否需要用户确认。
  4. 进度通知 – 长时间操作(如 CAD 启动、文件保存)会发出增量消息,MCP 客户端可将其显示为进度条。
  5. 遗留 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 – 可自由使用、修改并嵌入商业工作流。

相关

  • 项目
  • 项目
  • 项目
  • 项目