⚠️ 注意:本專案僅支援 (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
🚀 啟動流程
- 啟動 AutoCAD:Ribbon 會出現 “MCP Tools”。
- 啟動監聽:點擊 “Start Server” 按鈕。
- 設定 AI 平台:依據您使用的 AI 工具,參考下方設定。
- 開始使用: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
安装
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"]
}
}
}