SC

shuotao/cad_mcp_study

部署与 DevOps
3 stars 9 forks 质量 60 趋势 10

⚠️ 注意:本專案僅支援 (2021+)。 ⚠️ 本機開發備註:因權限限制,本專案提供 build_release.ps1 供製作攜帶版安裝包。

概览

⚠️ 注意:本專案僅支援 (2021+)。 ⚠️ 本機開發備註:因權限限制,本專案提供 build_release.ps1 供製作攜帶版安裝包。 本專案參考 架構,採用 Socket 通訊模式 (Port 8964)。AI 透過 MCP Server 發送指令,由 C# Add-in 在 AutoCAD 內部執行。 - AutoCAD-MCP-Addin/: C# 插件原始碼 - MCP-Server/: Python MCP 伺服器 - install.ps1: 自動安裝腳本 (需本機權限) - build_release.ps1: 製作發佈包腳本 (可複製到其他電腦) 這會在專案目錄下產生 Output\AutoCADMCP.bundle 資料夾。 將 Output\AutoCADMCP.bundle 資料夾完整複製到以下任一路徑: - : %APPDATA%\Autodesk\ApplicationPlugins\ - : %ProgramData%\Autodesk\ApplicationPlugins\ (需管理員權限) 1. :Ribbon 會出現 "MCP Tools"。 2. :點擊 "Start Server" 按鈕。 3. :依據您使用的 AI 工具,參考下方設定。 4. :AI 現在可以透過指令控制 AutoCAD。 將以下內容加入 %APPDATA%\Claude\claude_desktop_config.json: ⚠️ 請將 替換為您的實際專案路徑,例如 C:\Projects\AutoCAD-MCP

README

AutoCAD MCP - AI 驅動的建築繪圖助手 (.NET Add-in 版)

⚠️ 注意:本專案僅支援 AutoCAD 完整版 (2021+)。 ⚠️ 本機開發備註:因權限限制,本專案提供 build_release.ps1 供製作攜帶版安裝包。

本專案參考 Revit MCP 架構,採用 Socket 通訊模式 (Port 8964)。AI 透過 MCP Server 發送指令,由 C# Add-in 在 AutoCAD 內部執行。

📋 前置需求 (Pre-requisites)

在進行部署之前,請確保您的環境已安裝以下組件:

組件 用途 備註
Python 3.8+ 執行 MCP Server 下載 Python 3.12
.NET SDK 8.0+ 編譯 C# Add-in 必要
AutoCAD 完整版 2021-2024 不支援 LT 版

⚠️ 首次 Clone 使用者注意:Clone 完成後,請先執行以下指令安裝 Python 套件:

cd MCP-Server
pip install -r requirements.txt

🏗️ 系統架構

本專案支援兩種運作模式:

模式 A:外部 AI 平台 (Claude/Gemini/VS Code)

外部 AI 平台 (Claude Desktop / VS Code / Antigravity)
      ↓ MCP Protocol (stdio)
MCP-Server (Python)
      ↓ TCP Socket (127.0.0.1:8964)
AutoCADMCP.dll (C# Add-in)
      ↓ .NET API
AutoCAD

模式 B:內嵌 Add-in 聊天視窗 (開發中)

AutoCAD Ribbon 內嵌聊天視窗
      ↓ HTTP API (OpenAI/Azure)
AI 雲端服務
      ↓ 回傳指令
AutoCADMCP.dll (C# Add-in)
      ↓ .NET API
AutoCAD

📁 主要檔案

  • AutoCAD-MCP-Addin/: C# 插件原始碼
  • MCP-Server/: Python MCP 伺服器
  • install.ps1: 自動安裝腳本 (需本機權限)
  • build_release.ps1: [推薦] 製作發佈包腳本 (可複製到其他電腦)

📦 部署指南 (針對權限受限環境)

若您無法在本機執行 install.ps1,請使用以下方式製作安裝包:

1. 製作安裝包

執行 build_release.ps1:

.\build_release.ps1

這會在專案目錄下產生 Output\AutoCADMCP.bundle 資料夾。

2. 手動安裝 (在目標電腦上)

將 Output\AutoCADMCP.bundle 資料夾完整複製到以下任一路徑:

  • 目前使用者: %APPDATA%\Autodesk\ApplicationPlugins\
  • 所有使用者: %ProgramData%\Autodesk\ApplicationPlugins\ (需管理員權限)

3. 設定 MCP Server

在目標電腦上設定 Python 環境:

cd MCP-Server
pip install -r requirements.txt

🚀 啟動流程

  1. 啟動 AutoCAD:Ribbon 會出現 “MCP Tools”。
  2. 啟動監聽:點擊 “Start Server” 按鈕。
  3. 設定 AI 平台:依據您使用的 AI 工具,參考下方設定。
  4. 開始使用:AI 現在可以透過指令控制 AutoCAD。

🤖 AI 平台設定指南

本專案支援多種 AI 平台,請依據您的環境選擇對應設定:

方法 1:Claude Desktop

將以下內容加入 %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "autocad": {
      "command": "python",
      "args": ["\\MCP-Server\\server.py"]
    }
  }
}

⚠️ 請將 `` 替換為您的實際專案路徑,例如 C:\Projects\AutoCAD-MCP

📁 範例檔案:configs/claude_desktop.json


方法 2:VS Code (Copilot / Continue)

在 VS Code 設定中加入 MCP Server:

{
  "servers": {
    "autocad": {
      "command": "python",
      "args": ["MCP-Server/server.py"],
      "cwd": "${workspaceFolder}"
    }
  }
}

📁 範例檔案:configs/vscode_mcp.json


方法 3:Google Antigravity (Gemini)

在 Antigravity 設定中加入:

{
  "mcpServers": {
    "autocad": {
      "command": "python",
      "args": ["MCP-Server/server.py"],
      "cwd": ""
    }
  }
}

⚠️ 請將 `` 替換為您的實際專案路徑

📁 範例檔案:configs/antigravity_settings.json


方法 4:內嵌 AutoCAD Add-in 聊天視窗 (開發中)

未來版本將支援直接在 AutoCAD Ribbon 內嵌 AI 聊天視窗,無需外部 AI 工具。

規劃功能:

  • 內建聊天介面
  • 支援 OpenAI / Azure OpenAI API
  • 指令歷史記錄
  • 自動補全建議

📑 完整 Tools 清單

類別 指令 說明 參數
繪圖 draw_line 繪製直線 start_x, start_y, end_x, end_y, layer
draw_circle 繪製圓形 center_x, center_y, radius, layer
draw_wall 繪製雙線牆 start_x, start_y, end_x, end_y, width
圖層 create_layer 建立新圖層 name, color
get_layers 查詢所有圖層 無
set_layer_color 設定圖層顏色 layer, color (0-256)
圖塊 get_blocks_in_view 查詢視圖內圖塊 無
rename_block 重新命名圖塊 old_name, new_name
update_block_description 更新圖塊描述 name, description
整理 find_overlaps 查詢重疊線段 layer (optional)
clean_overlaps 刪除重疊短線 layer (optional)
connect_lines 線段端點接合 layer, tolerance
其他 create_new_drawing 建立新圖面 無

💡 使用情境與指令範例

情境 1:圖面整理 - 清除重疊線段

適用:從其他軟體匯入的圖面,或經過多次編輯後產生的冗餘線段

用戶:幫我檢查目前圖面有沒有重疊的線段
AI:[呼叫 find_overlaps] 找到 23 組重疊線段對...

用戶:把這些重疊的短線段刪掉
AI:[呼叫 clean_overlaps] 已清除 18 條短重疊線段

用戶:順便把 A-WALL 圖層上斷開的線條接起來
AI:[呼叫 connect_lines layer="A-WALL" tolerance=5] 已接合 12 個端點 (容許值 5mm)

情境 2:圖塊標準化

適用:統一專案內圖塊命名規範,或為圖塊補充描述方便日後查詢

用戶:列出目前視圖內有哪些圖塊
AI:[呼叫 get_blocks_in_view] 找到以下圖塊:
    - "DOOR-01" (x15) - 描述: 無
    - "WIN_A" (x8) - 描述: 無
    - "CHAIR" (x20) - 描述: 辦公椅

用戶:把 DOOR-01 改名為 A-DOOR-SINGLE,並加上描述「單扇門 900x2100」
AI:[呼叫 rename_block] 已將 "DOOR-01" 改名為 "A-DOOR-SINGLE"
    [呼叫 update_block_description] 已更新描述為「單扇門 900x2100」

情境 3:建築圖層設定

適用:新建專案時快速建立標準圖層結構

用戶:幫我建立標準建築圖層,包含牆、門、窗、標註
AI:[呼叫 create_layer] 已建立:
    - A-WALL (紅色)
    - A-DOOR (青色)
    - A-WIND (藍色)
    - A-DIMS (綠色)

用戶:把結構圖層改成紅色
AI:[呼叫 set_layer_color layer="S-COLS" color=1] 已將 S-COLS 圖層顏色改為紅色

情境 4:繪製建築元素

適用:快速產生基本圖面元素

用戶:在 (0,0) 到 (6000,0) 畫一道 200mm 厚的牆
AI:[呼叫 draw_wall] 已繪製牆體,長度 6000mm,厚度 200mm

用戶:在 (3000, 3000) 畫一個半徑 500 的圓
AI:[呼叫 draw_circle] 已繪製圓形,圓心 (3000, 3000),半徑 500

用戶:列出目前有幾個圖層
AI:[呼叫 get_layers] 目前有 8 個圖層:0, A-WALL, A-DOOR...

🛠️ 開發參考 (Revit MCP Style)

本專案代碼結構致敬 Revit MCP:

  • App.cs: 實作 IExtensionApplication,負責 UI 初始化。
  • SocketServer.cs: 非同步 TCP 監聽器,確保不卡住 AutoCAD 主執行緒。
  • CommandHandler.cs: 集中管理所有指令邏輯,易於維護。
  • PackageContents.xml: 標準 Autoloader 格式,支援隨插即用。

🔐 安全性注意事項

⚠️ 重要安全須知

警告: 本專案設計用於本機開發環境,請勿將 Socket Port 暴露於公網!

網路安全

  • ✅ Socket 僅監聽 127.0.0.1:8964 (localhost)
  • ❌ 禁止將 Port 8964 對外開放 (防火牆/NAT)
  • ❌ 禁止修改為 0.0.0.0 綁定

輸入驗證

本專案已實作以下安全措施:

  • ✅ 參數型別檢查 (數值、字串長度)
  • ✅ 數值範圍驗證 (防止極端值)
  • ✅ 圖層/圖塊名稱長度限制 (max 255 字元)
  • ✅ JSON 解析錯誤處理

IT 合規建議

項目 風險等級 說明
本機通訊 🟢 低 僅限 localhost
無認證機制 🟡 中 適用單機環境,企業部署需評估
檔案操作 🟢 低 僅透過 AutoCAD API 操作

🔍 QA/QC 審查結果

審查日期: 2024-12

程式碼品質 ✅

  • [x] C# 端所有公開方法皆有錯誤處理
  • [x] Python 端所有 Tools 皆有輸入驗證
  • [x] 無硬編碼密碼或敏感資訊
  • [x] Socket 通訊有 timeout 設定 (5 秒)

安全性審查 ✅

  • [x] 僅監聽 localhost (127.0.0.1)
  • [x] 輸入參數驗證
  • [x] 數值範圍檢查 (防止溢位攻擊)
  • [x] 字串長度限制 (防止緩衝區溢位)

相容性 ✅

  • [x] 支援 AutoCAD 2021+
  • [x] 支援 .NET Framework 4.8
  • [x] 支援 Python 3.8+

📄 授權

MIT License

在 GitHub 查看完整 README

安装

This server does not publish a one-line install command.

Open the repository installation guide 新手?先看 mcpskill.org 教程 →

配置

{ "mcpServers": { "autocad": { "command": "python", "args": ["<YOUR_PROJECT_PATH>\\MCP-Server\\server.py"] } } }