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