DEPLOYMENT 5 Revit 版本 / 一條指令

一個 csproj,五個 Revit 版本

本頁整理 CLAUDE.md 部署規則:保留單一 MCP/RevitMCP.csproj單一 MCP/RevitMCP.addin,透過 Nice3point SDK 與 Release.R{YY} 組態輸出版本化 DLL。新機器跑 scripts/setup.bat 一條指令搞定。

One command fans out to five Revit versions
SECTION 01 · 前提條件

先確認這些

項目需求檢查
OS Windows 10/11(Revit 只支援 Win) winver
.NET Framework 4.8(R22-R24)+ .NET 8 SDK(R25-R26) dotnet --list-sdks
Node.js ≥ 18.x(給 MCP-Server 用) node --version
Revit 2022 / 2023 / 2024 / 2025 / 2026 任一 %ProgramFiles%\Autodesk\Revit ...
git any recent git --version
port 8964 未被佔用 netstat -ano | findstr 8964
SECTION 02 · 一鍵安裝

新機器走這條

建議所有新機器走 setup.bat。它會:(1) 檢查 prerequisites (2) build 所有版本 (3) deploy DLL 到 Revit Add-ins 資料夾 (4) 給 Claude Desktop / Gemini CLI 寫 MCP config (5) 檢查 port 8964。

Setup script builds and deploys into the Revit addins folder
  1. 下載 repo

    git clone https://github.com/<your-fork>/REVIT_MCP.git

  2. 雙擊 scripts/setup.bat

    會用 powershell -ExecutionPolicy Bypass 啟動 setup.ps1,不必預設 unrestricted policy。

  3. 依提示選擇 Revit 版本

    多選——一次裝 2024 + 2025 也行。每版各自輸出 bin/Release.R{YY}/RevitMCP.dll

  4. 選擇要設定哪些 AI client

    Claude Desktop / Gemini CLI / VS Code Copilot / Claude Code 任選。會自動寫對應 config。

  5. setup 完成後重啟對應 client + Revit

    Claude Desktop 重啟,Gemini CLI 不必。Revit 開啟即會載入新 dll。

什麼時候不該用 setup.bat

CI / 自動化 build pipeline 想精確控制 → 走手動流程。debugging 想知道哪一步失敗 → 也走手動。

SECTION 02.5 · 一鍵裝 SKILL(小白版)

把 Skill 一鍵裝進 Claude Code(不用終端機、不用 Git)

先懂一個比喻:Claude Code 就像你的手機;「marketplace(市集)」就像 App Store。第 1 步是「把這個 App Store 加進你的 Claude Code」,第 2 步是「從裡面下載那個 app(skill)」。目前提供 hj-pr-proposal——把你自己的知識整理成可提交的 PR 草案。

⚠️ 最重要的一句:下面兩行是貼進「你跟 AI 聊天的那一格輸入框」、按 Enter 就會執行。不是另開終端機、不是打進命令列。

  1. 加入市集 — 把這行貼進對話框、按 Enter:

    /plugin marketplace add shuotao/REVIT_MCP_study

    因為開頭是 /,Claude Code 會自己當指令處理(這行不會送給 AI)。若跳出「要不要信任這個 marketplace?」確認框,選 Yes/同意

  2. 安裝 skill — 再貼這行、按 Enter:

    /plugin install hj-pr-proposal@revit-mcp-skills

    hj-pr-proposal 是 app 名、revit-mcp-skills 是市集名。)

  3. 開始用 — 之後任何對話打:「使用 hj-pr-proposal,幫我把這份內容轉成可提交的 PR 草案」就會啟動。

💡 更懶人:直接在對話框打一個 /plugin 按 Enter,會跳出互動選單,用上下鍵選「Add marketplace」「Install」跟著點就好,不用背指令。打 / 時若上方清單看得到 plugin,代表你的 Claude Code 支援;看不到就先更新 Claude Code。

會不會中毒?不會。這個「封包」裡只有文字檔(SKILL.mdmarketplace.json),沒有任何可執行程式(.exe/.ps1/.sh)。安裝只是把文字檔讀進你的 ~/.claude/ 資料夾,不是跑安裝程式,所以防毒、Windows SmartScreen、Mac Gatekeeper 都不會攔。而且這個 skill 不會自己亂發 PR,每一步都要你點頭。

跟「裝 Revit 外掛」不一樣:上面那條 add-in 部署用的 setup.ps1 是 Windows 腳本,才可能跳安全警告;裝 skill 是純文字、跨平台(Mac/Windows/Linux 都一樣),沒有這問題。

SECTION 03 · 手動流程

手動 build / deploy(4 步)

  1. 關閉 Revit

    新 DLL 才能取代舊 DLL。沒關閉 → DLL is locked → copy 失敗。
    tasklist | findstr Revit 確認。

  2. Build
    cd MCP
    dotnet build -c Release.R24 RevitMCP.csproj

    把 R24 換成你要的版本(R22/R23/R24/R25/R26)。Output 在 bin/Release.R24/RevitMCP.dll

  3. Deploy DLL
    Copy-Item "bin/Release.R24/RevitMCP.dll" `
      "$env:APPDATA\Autodesk\Revit\Addins\2024\RevitMCP\" -Force

    注意 .addin 檔由 setup.ps1 或 /deploy-addon skill 一次性建立,後續只更新 .dll 不動 .addin

  4. 重啟 Revit + 驗收

    啟動 Revit → 看 Add-Ins 面板有 RevitMCP panel → 按 Connect → MCP server 端 log 應看到 WebSocket 連線。

不可違反的部署規則
SECTION 04 · MATRIX

Build Matrix · 5 個版本

ConfigTarget.NETElementIdOutput
Release.R22Revit 2022Framework 4.8intbin\Release.R22\RevitMCP.dll
Release.R23Revit 2023Framework 4.8intbin\Release.R23\RevitMCP.dll
Release.R24Revit 2024Framework 4.8intbin\Release.R24\RevitMCP.dll
Release.R25Revit 2025.NET 8longbin\Release.R25\RevitMCP.dll
Release.R26Revit 2026.NET 8longbim\Release.R26\RevitMCP.dll

跨版本相容

Revit 2025+ 的 ElementIdint 改為 longMCP/Core/RevitCompatibility.cs 提供 GetIdValue()ToElementId() 擴充方法跨版本相容。預處理符號 REVIT2025_OR_GREATER 用於條件編譯。

SECTION 05 · AI CLIENTS

所有 AI Client 指向同一個 MCP Server

replace {absolute-path} 為你的實際 repo 絕對路徑。第一次使用前必須在 MCP-Server/npm run build

{
  "mcpServers": {
    "revit-mcp": {
      "command": "node",
      "args": ["{absolute-path}/MCP-Server/build/index.js"]
    }
  }
}

Claude Desktop

%APPDATA%\Claude\claude_desktop_config.json

編輯後重啟 app。Mac 路徑 ~/Library/Application Support/Claude/

Gemini CLI

~/.gemini/settings.json

不必重啟,下次 invoke 即生效。

VS Code Copilot

.vscode/mcp.json

可用 ${workspaceFolder} 代替絕對路徑。專案層配置不跨機器分享自動同步。

Claude Code (CLI)

.mcp.json

專案根目錄。或用 claude mcp add 命令。重啟 session 後生效。

SECTION 06 · VERIFY

部署完成 · 5 個 smoke test

CHECKLIST
  • ✅ Revit ribbon 看得到 RevitMCP panel(Add-Ins tab 內)
  • ✅ Port 8964 沒被 PID 4 卡住:netstat -ano | findstr 8964 只看到自己的 Revit PID
  • ✅ MCP Server 能連到 ws://localhost:8964:跑 AI client → get_project_info
  • ✅ Tool round-trip:跑 get_active_view 回傳當前 view 資訊(不是 timeout)
  • ✅ 任一寫入工具:建一面短牆 → undo → 確認 Transaction 走完
WHY 都要過
第 1 條失敗 = DLL 沒部署到對的位置。第 2 條失敗 = port 被搶。第 3-4 條失敗 = MCP Server 路徑或 npm build 沒跑。第 5 條失敗 = ExternalEventManager / Transaction 設定錯。
TECHNIQUE
Five-Stage Smoke Test · Round-Trip Validation · Defensive Deployment Verification
深度