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 – 可自由使用、修改並嵌入商業工作流程。

相關

  • 專案
  • 專案
  • 專案
  • 專案