Thanks to visit codestin.com
Credit goes to github.com

Skip to content
 
 

Latest commit

 

History

229 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

友善提醒:本專案預設使用 Port: 8964,請確保該埠號未被佔用

Revit MCP - AI-Powered Revit Control

Revit 2022-2026 Node.js .NET 4.8 | 8.0 MCP Protocol

透過 Model Context Protocol (MCP) 讓 AI 語言模型直接控制 Autodesk Revit,實現 AI 驅動的 BIM 工作流程。

🎥 示範影片:Revit MCP - AI 驅動的 BIM 工作流程示範


Important

🌍 部署者必讀:設定全域 AI 邊界

若您使用 Google AntigravityGemini CLI,為了確保 AI 進入本專案時不會繞過專案內的實作邊界(如 L1-L5 限制),請務必在您的全域規則中設定專案級文件的最高優先級。

  1. 請自行使用編輯器建立或開啟(若目錄不存在請先建立):
    • Mac/Linux: ~/.gemini/GEMINI.md
    • Windows: %USERPROFILE%\.gemini\GEMINI.md
  2. 複製並加入以下極簡的「全域先決條件」範本:
# Global Agent Rules
1. Before executing any task, ALWAYS check the current workspace root for `GEMINI.md`, `CLAUDE.md`, or `.agents/rules/`.
2. If present, MUST READ them first. These project-level files act as your absolute constitution. 
3. Their instructions and capability boundaries STRICTLY OVERRIDE any default behaviors or global rules.

(遵循原廠邏輯:將全域規則保持極簡,純粹作為「引導 AI 尋找專案憲法」的入口,避免過多指令干擾造成幻覺。)


Tip

你是誰?從這裡開始

本專案有多個入口文件,請依你的身份選擇閱讀路徑:

你的身份 先讀這個 再讀這個
想安裝使用 Revit MCP 本檔下方「一鍵安裝」段
想貢獻 domain 知識 / SOP / 規則 CONTRIBUTING.md domain/README.md
想開發新工具 / 修改程式碼 CLAUDE.md 執行 /dev-guide 命令
想了解整體架構 CLAUDE.md docs/DOCS_STRUCTURE.md
我是學生上課 教材/README.md
我是 AI Agent(Claude / Gemini / Copilot) CLAUDE.md必讀 依任務觸發對應 skill

關鍵原則(所有角色都要遵守)

  • AI 規範唯一性GEMINI.mdAGENTS.md 皆重定向至 CLAUDE.md,為專案唯一 AI 規範文件
  • Safety First:所有 Revit 操作必須可逆,使用 Transaction 確保可復原
  • Workflow Compliance:AI Agent 執行任務前,必須先檢查 domain/ 目錄是否已有對應的工作流程
  • 貢獻邊界:程式碼由維護者管理,外部貢獻者只修改 domain/ 知識檔案(詳見 CONTRIBUTING.md

Caution

Git Pull 後必讀:重新編譯 Revit Add-in

如果您執行了 git pull 更新專案,且更新內容包含 C# 程式碼變更MCP/*.cs 檔案),必須重新編譯並部署 Revit Add-in DLL,否則新功能將無法使用!

快速步驟:

  1. 關閉 Revit(否則無法覆蓋 DLL)
  2. 執行編譯:
    cd "您的專案路徑/MCP"
    # 根據您的 Revit 版本選擇對應的組態:
    dotnet build -c Release.R22   # Revit 2022
    dotnet build -c Release.R23   # Revit 2023
    dotnet build -c Release.R24   # Revit 2024
    dotnet build -c Release.R25   # Revit 2025
    dotnet build -c Release.R26   # Revit 2026
  3. 複製 DLL 到 Revit Addins 資料夾:
    Copy-Item "bin/Release/RevitMCP.dll" "C:\ProgramData\Autodesk\Revit\Addins\2024\RevitMCP\" -Force
  4. 重新啟動 Revit
更新類型 需重新編譯 DLL? 需重啟 Revit?
C# 程式碼 (MCP/*.cs) ✅ 是 ✅ 是
MCP Server (MCP-Server/*.ts) ❌ 否 ❌ 否(只需重啟 MCP Server)
設定檔 (*.json, *.addin) ❌ 否 ⚠️ 視情況

💡 使用 Claude Code 的使用者:本專案內建 Claude Code 技能可自動化上述步驟:

/build-revit             # 選擇 Revit 版本後自動編譯
/build-revit --all       # 一次編譯所有版本(2022-2026)
/deploy-addon            # 自動部署 DLL 到正確路徑(僅 Windows)

一鍵安裝(推薦新手使用)

完全不需要任何程式知識! 只要三步:

  1. git clone 本專案(不會 clone?看這裡
  2. scripts 資料夾中找到 setup.bat
  3. 雙擊執行 — 不需要管理員權限

腳本會自動完成所有安裝步驟:

  • 檢查並安裝 Node.js 和 .NET SDK
  • 編譯 MCP Server
  • 讓您選擇 Revit 版本(支援多選,用方向鍵和空白鍵操作)
  • 編譯並部署 Revit Add-in
  • 自動設定 AI 客戶端(Claude Desktop、Gemini CLI、VS Code)

AI Agent 模式:如果您透過 AI 助手操作,可使用非互動模式:

powershell -ExecutionPolicy Bypass -File scripts/setup.ps1 -NonInteractive -RevitVersions "2024,2025"

🎯 功能特色

  • AI 直接控制 Revit - 透過自然語言指令操作 Revit
  • 支援多種 AI 平台 - Claude Desktop、Gemini CLI、VS Code Copilot、Google Antigravity
  • 豐富的 Revit 工具 - 建立牆、樓板、門窗、查詢元素等
  • 即時雙向通訊 - WebSocket 即時連線

專案結構

REVIT-MCP/
├── MCP/                    # Revit Add-in (C#)
│   ├── Application.cs           # 主程式進入點
│   ├── ConnectCommand.cs        # 連線命令
│   ├── RevitMCP.addin           # Add-in 配置
│   ├── RevitMCP.csproj          # 統一專案檔 (Revit 2022–2026, Nice3point SDK)
│   ├── Core/                    # 核心功能
│   │   ├── SocketService.cs     # WebSocket 服務
│   │   ├── CommandExecutor.cs   # 命令執行器
│   │   ├── RevitCompatibility.cs # 跨版本相容層 (ElementId int→long)
│   │   └── ExternalEventManager.cs
│   ├── Models/                  # 資料模型
│   └── Configuration/           # 設定管理
├── MCP-Server/             # MCP Server (Node.js/TypeScript)
│   ├── src/
│   │   ├── index.ts                 # MCP Server 主程式
│   │   ├── socket.ts                # Socket 客戶端
│   │   └── tools/
│   │       └── revit-tools.ts       # Revit 工具定義
│   ├── build/                       # 編譯輸出
│   ├── package.json
│   └── tsconfig.json
└── README.md

🔧 系統需求

項目 需求
作業系統 Windows 10 或更新版本
Revit Autodesk Revit 2022 / 2023 / 2024 / 2025 / 2026
.NET .NET Framework 4.8 (Revit 2022–2024) / .NET 8 (Revit 2025–2026)
Node.js LTS 版本 (20.x 或更新)

重要提醒:此教學以 Revit 2022 為例,但適用於 2022、2023、2024、2025、2026 版本。
安裝時請根據您的 Revit 版本調整資料夾名稱(見下方各步驟的版本對照表)。 Revit 2025/2026 使用 .NET 8,請確保已安裝對應的 .NET SDK。

透過 Git Clone 的首次設定

如果您是透過 git clone 取得此專案,必須先完成以下步驟,否則 MCP Server 無法運作:

Important

以下檔案不包含在 Git 儲存庫中(被 .gitignore 排除):

  • MCP-Server/build/ - MCP Server 編譯輸出
  • MCP-Server/node_modules/ - Node.js 相依套件
  • MCP/bin/ - Revit Add-in 編譯輸出

必要步驟

1️⃣ 安裝 Node.js(如果尚未安裝)

# 檢查是否已安裝
node --version

# 如果沒有安裝,請前往 https://nodejs.org 下載 LTS 版本

2️⃣ 編譯 MCP Server

# 進入 MCP-Server 資料夾
cd "您的專案路徑/MCP-Server"

# 安裝相依套件
npm install

# 編譯 TypeScript
npm run build

3️⃣ 設定 AI 平台設定檔

設定檔中的路徑需要根據您的環境修改:

  • Gemini CLI (MCP-Server/gemini_mcp_config.json):

    "args": ["您的實際路徑/MCP-Server/build/index.js"]
  • Claude Desktop:在應用程式中手動設定路徑

  • VS Code / Antigravity (.vscode/mcp.json): 使用 ${workspaceFolder} 變數,無需修改

4️⃣ 編譯 Revit Add-in

# 進入 MCP 專案資料夾
cd "您的專案路徑/MCP"

# 根據您的 Revit 版本選擇對應的組態:
dotnet build -c Release.R22   # Revit 2022
dotnet build -c Release.R23   # Revit 2023
dotnet build -c Release.R24   # Revit 2024
dotnet build -c Release.R25   # Revit 2025
dotnet build -c Release.R26   # Revit 2026

提示:您也可以執行 scripts/install-addon.ps1,此腳本會自動偵測 Revit 版本、編譯並複製檔案到 Revit Addins 資料夾。


📦 安裝步驟

步驟 1:安裝 Revit Add-in(只需複製檔案)

簡單說:我們需要把一個檔案放到 Revit 的特定資料夾裡。

重要:在開始前,請確認您的 Revit 版本

  • 開啟 Revit
  • 點擊左上角的「Autodesk Revit 202X」(X 是您的版本號)
  • 再點擊「幫助」→「關於 Autodesk Revit」
  • 查看版本號並記住它(例如:2022、2023、2024、2025 或 2026)

方式 A:使用自動化腳本(推薦)

最簡單的方法:執行自動安裝指令稿

  1. 前往 scripts 資料夾

    • 開啟檔案總管,進入專案的 scripts/ 資料夾
  2. 執行安裝腳本

    • 右鍵選擇 install-addon.ps1
    • 選擇「以 PowerShell 執行」

    如果遇到權限問題: 請以系統管理員身分開啟 PowerShell,並執行:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
    .\install-addon.ps1
  3. 腳本會自動執行

    • 編譯 C# 專案
    • 偵測您的 Revit 版本(2022、2023、2024)
    • 複製 DLL 和 .addin 檔案到正確位置
  4. 完成

    • 看到「安裝成功」訊息即完成
    • 重新啟動 Revit

提示:如果腳本執行失敗,請確認已安裝 .NET SDK 並可執行 dotnet 命令。

方式 B:手動編譯與安裝

  1. 確認已安裝 .NET SDK

    # 檢查 .NET SDK
    dotnet --version
    
    # 如果未安裝,請前往 https://dotnet.microsoft.com/download
  2. 編譯專案

    # 進入專案目錄
    cd "您的專案路徑\MCP"
    
    # 根據您的 Revit 版本選擇對應的組態
    dotnet build -c Release.R22   # Revit 2022
    dotnet build -c Release.R23   # Revit 2023
    dotnet build -c Release.R24   # Revit 2024
    dotnet build -c Release.R25   # Revit 2025
    dotnet build -c Release.R26   # Revit 2026

    編譯成功後,DLL 檔案會產生在 bin\Release 資料夾中。

  3. 複製檔案到 Revit Addins 資料夾

    # 開啟 Revit Addins 資料夾(將 2022 改為您的版本)
    explorer %APPDATA%\Autodesk\Revit\Addins\2022
    
    # 或使用指令複製
    Copy-Item "bin\Release\RevitMCP.dll" "%APPDATA%\Autodesk\Revit\Addins\2022\" -Force
    Copy-Item "RevitMCP.addin" "%APPDATA%\Autodesk\Revit\Addins\2022\" -Force

    版本對照:Revit 2022 → Addins\2022 | Revit 2023 → Addins\2023 | Revit 2024 → Addins\2024 | Revit 2025 → Addins\2025 | Revit 2026 → Addins\2026

  4. 重新啟動 Revit

步驟 2:安裝 MCP Server(AI 和 Revit 的「翻譯官」)

簡單說:我們需要安裝一些軟體工具,讓 AI 能和 Revit 溝通。

前置準備:檢查是否已安裝 Node.js

MCP Server 需要 Node.js 才能執行。先檢查您是否已安裝:

  1. 打開命令提示字元

    • Win + R
    • 輸入 cmd,按 Enter
  2. 檢查 Node.js

    • 在命令提示字元輸入:node --version
    • 如果看到版本號(例如 v20.0.0),表示已安裝,跳過下載步驟
    • 如果看到「找不到命令」,表示未安裝,請按以下步驟下載
  3. 下載並安裝 Node.js(如果需要)

    • 打開瀏覽器,訪問 https://nodejs.org
    • 點擊左邊的「LTS」按鈕(推薦版本)
    • 下載 Windows 安裝程式(.msi 檔案)
    • 執行下載的安裝程式,一直點「Next」直到完成
    • 重新啟動電腦

安裝步驟

  1. 打開命令提示字元

    • Win + R
    • 輸入 cmd,按 Enter
  2. 進入 MCP Server 資料夾

    • 複製貼上以下指令,按 Enter(注意:把路徑中的使用者名稱改成您電腦的帳號,版本號保持不變或根據需要修改):
      cd C:\Users\您的使用者名稱\Desktop\MCP\REVIT_MCP_study\MCP-Server
      
    • 提示:「您的使用者名稱」是您 Windows 登入時用的帳號名稱

    路徑可能不同?

    • 如果您把專案資料夾放在不同位置(例如 C:\MCP),請自行調整上面的路徑
    • 要找到專案資料夾:用滑鼠右鍵點擊 MCP-Server 資料夾 → 內容 → 位置,複製該路徑即可
  3. 安裝軟體相依套件

    • 在命令提示字元輸入:
      npm install
      
    • 會自動下載並安裝所需的軟體
    • 等待完成(可能需要 1-5 分鐘)
    • 完成時應該看到「added XXX packages」
  4. 製作程式(轉換成可執行的檔案)

    • 輸入以下指令:
      npm run build
      
    • 等待完成
    • 完成時應該看到一個 build/ 資料夾被建立

恭喜!您已經完成安裝了。 現在可以進行下一步的設定。

步驟 3:設定 AI 平台

請參考下方的 多方案 AI Agent 設定 章節。


啟動方式

1️⃣ 啟動 Revit 並開啟 MCP 服務

  1. 開啟 Revit 2022
  2. 載入或建立專案
  3. 在「MCP Tools」面板點擊「MCP 服務 (開/關)」按鈕
  4. 確認看到「WebSocket 伺服器已啟動,監聽: localhost:8964」

關於埠號 (Port) 的說明

  • 8964 是 MCP Server 預設的通訊埠號
  • 埠號是一個任意號碼,有可能被其他程式佔用
  • 常見問題:Port 8964 被 System (PID: 4) 佔用
    • 原因:Revit 異常關閉後,HTTP.sys 的 Request Queue 殘留
    • 修復:在系統管理員 PowerShell 中執行 net stop http /y; net start http
    • 或執行:powershell -ExecutionPolicy Bypass -File scripts\release-port.ps1
    • 若 HTTP 服務卡在 STOP_PENDING,需重新開機
  • 如果是被其他程式佔用(非 PID 4),可手動調整埠號:
    1. 開啟本專案的設定檔 MCP-Server/src/index.ts
    2. 找到 PORT = 8964 的這一行
    3. 改成其他未被使用的埠號,例如 87669000
    4. 重新編譯:npm run build
    5. 所有使用此 MCP Server 的 AI 應用程式也要更新埠號設定(改為同樣的新埠號)

2️⃣ 透過 AI 平台連線

依您選擇的 AI 平台,參考下方的設定說明。


多方案 AI Agent 設定

核心概念:MCP Clients 與 MCP Server

在開始設定之前,需要理解本架構的核心概念:

什麼是 MCP Client?

MCP Client(客戶端) 是指能夠理解並使用 MCP 工具的 AI 應用程式。簡單來說,就是:

  • Claude Desktop
  • Gemini CLI
  • VS Code Copilot
  • Google Antigravity

這些應用程式內部內建了「MCP 客戶端」功能,讓它們可以讀取和調用 MCP Server 提供的工具。

什麼是 MCP Server?

MCP Server 是本專案中的 Node.js 應用程式(MCP-Server/build/index.js),它:

  • 定義了 Revit 操作工具(create_wall、query_elements 等)
  • 透過 WebSocket 與 Revit Add-in 通訊
  • 將 AI 指令轉換為 Revit API 調用

4+1 方案架構說明

本專案提供了 5 種使用方案,分為兩大類:

外部調用方案(4 種)

這些方案都遵循相同的架構:

┌─────────────────┐
│   AI 應用程式   │  (Claude Desktop / Gemini CLI / VS Code / Antigravity)
│  (MCP Client)   │
└────────┬────────┘
         │ 1. 讀取 MCP Server 地址
         │
┌────────▼────────┐
│   MCP Server    │  (Node.js - 本專案提供)
│  (Revit Tools)  │
└────────┬────────┘
         │ 2. WebSocket 連接
         │
┌────────▼────────┐
│  Revit Add-in   │  (C# - RevitMCP.dll)
│  (WebSocket)    │
└────────┬────────┘
         │ 3. Revit API 調用
         │
┌────────▼────────┐
│  Revit 應用程式  │
└─────────────────┘

特點:

  • AI 應用程式已經內建 MCP 支援,不需要 API Key
  • MCP Server 只負責 Revit 工具的定義和通訊
  • 所有 API 金鑰都由 AI 應用程式自己管理(如 Claude Desktop 有自己的 API Key)

內嵌方案(1 種)

┌────────────────────────────────┐
│     Revit 應用程式             │
├────────────────────────────────┤
│  Revit Add-in with AI Chat     │
│                                │
│  ┌──────────────────────────┐  │
│  │  Chat Window UI (WPF)    │  │
│  └──────────────────────────┘  │
│           │ 使用 API Key        │
│  ┌────────▼──────────────────┐  │
│  │  GeminiChatService        │  │
│  │  (C# 直接呼叫 Gemini)     │  │
│  └────────┬──────────────────┘  │
│           │                     │
└───────────┼─────────────────────┘
            │ HTTP 請求到 Gemini API
            │
        ┌───▼──────┐
        │ Gemini   │
        │ API      │
        └──────────┘

特點:

  • 完全在 Revit 內部運行,無需啟動外部應用程式
  • 直接調用 Gemini API,需要 API Key
  • 使用者體驗最流暢(在 Revit 內直接對話)

為什麼只有內嵌方案需要 API Key?

這是關鍵的差異:

方案 是否需要 API Key 原因
Claude Desktop 不需要 Claude Desktop 已綁定您的 Anthropic 帳戶和 API Key
Gemini CLI 不需要 Gemini CLI 已綁定您的 Google 帳戶
VS Code Copilot 不需要 GitHub Copilot 已綁定您的 GitHub 帳戶和授權
Antigravity 不需要 Antigravity 已綁定您的 Google Cloud 帳戶
內嵌 Chat(Gemini API) ** 需要** 這是直接調用 Gemini API,不透過應用程式中介

簡單說:

  • 外部 4 種方案:AI 應用程式已經是「付費客戶」,你直接使用它
  • 內嵌方案:你自己直接成為 Gemini API 的「付費客戶」,需要提供 API Key

MCP Server 在各方案中的角色

無論用哪種方案,MCP Server 的作用都一樣

MCP Server 的責任:
1. 定義 Revit 工具 (create_wall、query_elements 等)
2. 接收 AI 應用程式的工具調用請求
3. 透過 WebSocket 將請求轉發給 Revit Add-in
4. 返回執行結果給 AI 應用程式

MCP Server 不直接與任何 AI API 通訊,它只是一個「翻譯官」。


方案選擇建議

場景 推薦方案 原因
日常使用,最簡單 Claude Desktop 無需額外配置,直接用現成應用
想在 Revit 內對話 內嵌 Chat(Gemini API) 最流暢的使用體驗
偏好 Google Gemini CLI 用自己的 Google 帳戶
程式開發者 VS Code Copilot 在開發環境中無縫使用
進階 AI 開發 Antigravity 多視窗與 Agent 同步執行

方案 1️⃣:Gemini CLI

Gemini CLI 是 Google 的命令列 AI 工具,可以在終端機直接與 Gemini 2.5 Flash 對話。

步驟 1:安裝 Gemini CLI(適合初學者)

什麼是 Gemini CLI? 它是一個可以在 Windows 命令提示字元或 PowerShell 執行的工具。

  1. 下載 Node.js(如果還沒安裝)

    • 前往 https://nodejs.org
    • 點擊「LTS」版本下載
    • 執行下載的安裝程式,一直點「Next」到完成
    • 重新啟動電腦
  2. 開啟 PowerShell

    • Win + X
    • 選擇「Windows PowerShell (系統管理員)」
    • 複製貼上下方指令,按 Enter:
    npm install -g @google/gemini-cli
    • 等待安裝完成(會看到綠色的勾勾)

    如果遇到「已停用指令碼執行」錯誤: 先執行此指令允許腳本執行,然後再重試安裝:

    Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser

步驟 2:設定 MCP Server 連線

Important

Gemini CLI 使用 settings.json 設定 MCP,而非 --config 參數!

這與 Claude Desktop 和其他工具不同。Gemini CLI 會讀取使用者目錄下的 ~/.gemini/settings.json 檔案。

設定方式:編輯 settings.json 檔案

  1. 開啟設定檔位置

    Windows

    • Win + R,輸入以下路徑,按 Enter:
      %USERPROFILE%\.gemini
      
    • 如果資料夾不存在,手動建立 .gemini 資料夾

    macOS / Linux

    cd ~/.gemini
    # 如果不存在,先建立
    mkdir -p ~/.gemini
    • 找到 settings.json 檔案並用記事本開啟(如果不存在就新建一個)
  2. 加入 MCP Server 設定

    將檔案內容修改為(如果檔案已有其他內容,請保留並加入 mcpServers 區塊):

    {
      "mcpServers": {
        "revit-mcp": {
          "command": "node",
          "args": [
            "C:\\您的路徑\\REVIT MCP\\MCP-Server\\build\\index.js"
          ],
          "env": {
            "REVIT_VERSION": "2022"
          }
        }
      }
    }

    請將路徑改為您實際的專案位置!

    例如:C:\\Users\\YourName\\Desktop\\REVIT MCP\\MCP-Server\\build\\index.js

  3. 儲存檔案並重新啟動 Gemini CLI

步驟 3:啟動並測試

  1. 先啟動 Revit

    • 開啟 Revit 2022
    • 在「MCP Tools」面板點擊「MCP 服務 (開/關)」按鈕
    • 看到「WebSocket 伺服器已啟動」就成功了
  2. 開啟 Gemini CLI

    • 開啟 PowerShell
    • 執行:
    gemini
  3. 確認 MCP 已連接

    /mcp list
    
    • 應該會看到 revit-mcp 伺服器
  4. 測試對話

    > 請列出 Revit 專案中的所有樓層
    > 請幫我建立一面 5 米長的牆
    

方案 2️⃣:VS Code (GitHub Copilot)

在程式碼編輯器 VS Code 中直接與 AI 對話並控制 Revit。

步驟 1:安裝 VS Code

  1. 前往 https://code.visualstudio.com
  2. 點擊藍色的「Download」按鈕
  3. 執行下載的安裝程式
  4. 一直點「Next」直到完成,重新啟動電腦

步驟 2.5:使用本專案的已配置版本(推薦!)

好消息:我們已經為您準備好了設定檔!

  1. 開啟本專案資料夾

    • 用滑鼠右鍵點擊 c:\Users\User\Desktop\REVIT MCP 資料夾
    • 選擇「以 VS Code 開啟
    • 或者在 VS Code 中點擊 File → Open Folder,選擇此資料夾
  2. 設定檔已在 .vscode/mcp.json

    • 檔案已經準備好,您無需修改任何東西
    • 系統會自動載入這個設定

步驟 3:啟動(初學者版)

  1. 確認 Revit MCP 服務已啟動

    • 開啟 Revit 2022
    • 點擊「MCP 服務 (開/關)」
  2. 在 VS Code 中開啟 Copilot Chat

    • 按快捷鍵 Ctrl + Shift + I
    • 或點擊左邊 Copilot 圖示
  3. 開始提問

    • 在聊天框輸入:「請幫我在 Revit 中查詢所有的柱子」
    • AI 會自動使用 Revit 工具執行您的指令

方案 3️⃣:Claude Desktop(推薦初學者!)

Anthropic 官方桌面應用程式,這是最簡單的方式

步驟 1:安裝 Claude Desktop

  1. 前往 https://claude.ai/download
  2. 點擊「Download for Windows」
  3. 執行下載的 .exe 安裝程式
  4. 安裝完成後重新啟動電腦

步驟 2.5:在 Claude Desktop 中直接添加 MCP(最簡單!)

無需複製檔案!直接在應用程式中設定:

  1. 打開 Claude Desktop 應用程式

  2. 點擊右上角的「 設定」

    • 或在左下角找到「Settings」
  3. 找到「MCP Servers」選項

  4. 點擊「Add Server」或「新增伺服器」

  5. 填入以下資訊

    • 名稱revit-mcp
    • 命令node
    • 參數C:\Users\User\Desktop\REVIT MCP\MCP-Server\build\index.js
    • 環境變數
      REVIT_VERSION: 2022
      

    版本不同?修改環境變數

    • Revit 2022:改為 REVIT_VERSION: 2022
    • Revit 2023:改為 REVIT_VERSION: 2023
    • Revit 2024:改為 REVIT_VERSION: 2024
  6. 點擊「Save」或「儲存」 - 完成!

步驟 3:啟動(初學者版)

  1. 啟動 Revit

    • 開啟 Revit 2022
    • 點擊「MCP 服務 (開/關)」
  2. 使用 Claude Desktop

    • Claude 應用程式會自動連接 Revit
    • 直接在聊天框輸入對話,例如:
    請幫我在 Revit 中建立一個 3m × 5m 的樓板
    
  3. Claude 會自動為您執行操作!


方案 4️⃣:Google Antigravity

Google Antigravity 是 Google 推出的「以代理程式為主」的開發平台,將 IDE 帶入 AI Agent 時代。

主要特色:

  • 以開放原始碼的 VS Code 為基礎,但大幅改變使用者體驗
  • 介面分成兩個主要視窗:Editor(編輯器)和 Agent Manager(代理程式管理員)
  • 可同時派遣多個代理程式處理不同工作(非線性、非同步執行)
  • 內建 Antigravity Browser(瀏覽器子代理程式)可執行網頁測試與錄影
  • 代理程式會產生「構件」(Artifacts)如工作計畫、程式碼差異、螢幕截圖等
  • 目前僅適用於個人 Gmail 帳戶的預先發布版(免費使用)

步驟 1:安裝 Google Antigravity

  1. 前往下載頁面

  2. 啟動 Antigravity 並完成設定

    • 開啟 Antigravity 應用程式
    • 選擇設定流程(可從現有 VS Code 或 Cursor 設定匯入,或重新開始)
    • 選擇編輯器主題(深色/淺色)
    • 選擇代理程式使用模式:
      • 代理程式導向開發:Agent 自主執行,較少人為介入
      • 代理程式輔助開發(推薦):Agent 做出決策後返回給使用者核准
      • 以審查為導向的開發:Agent 一律要求審查
      • 自訂設定:完全自訂控制
  3. 使用 Google 帳戶登入

    • 點選「Sign in to Google」
    • 使用個人 Gmail 帳戶登入
    • 系統會為此建立新的 Chrome 設定檔

步驟 2:設定瀏覽器代理程式(Antigravity Browser)

Antigravity 的一大特色是內建瀏覽器子代理程式,可讓 AI 直接操作網頁。

  1. 在 Agent Manager 中開始對話

    • 選取 Playground 或任意工作區
    • 輸入需要瀏覽器的指令(例如:「前往 antigravity.google」)
  2. 安裝 Chrome 擴充功能

    • Agent 會提示需要設定瀏覽器代理程式
    • 點選 Setup,按照指示安裝 Chrome 擴充功能
    • 安裝完成後,Agent 即可控制瀏覽器執行工作

步驟 3:設定 MCP Server 連接 Revit

注意:Antigravity 執行在本機,MCP Server 也需要在同一台 Windows 電腦上運行(因為需要連接 Revit)。

  1. 開啟工作區

    • 在 Agent Manager 中點選 Workspaces
    • 選擇本專案的 MCP-Server 資料夾作為工作區
  2. 透過對話啟動 MCP 連接

    • 在 Agent Manager 中開始新對話
    • 告訴 Agent:「請執行 node build/index.js 啟動 MCP Server」
    • 或直接在編輯器的終端機中執行:
      cd C:\Users\您的使用者名稱\Desktop\REVIT MCP\MCP-Server
      node build/index.js
      
  3. 開始與 Revit 互動

    • 確認 Revit 已啟動且 MCP 服務已開啟
    • 在 Agent Manager 中輸入指令,例如:
      請幫我在 Revit 中建立一面 5 米長的牆
      

🎯 Antigravity 的獨特優勢

功能 說明
多代理程式並行 可同時派遣 5 個以上的代理程式處理不同工作
構件(Artifacts) 代理程式會產生工作計畫、實作計畫、程式碼差異、螢幕截圖、瀏覽器錄影等
瀏覽器整合 內建 Chrome 瀏覽器子代理程式,可點選、捲動、輸入、讀取控制台等
收件匣(Inbox) 集中追蹤所有對話與工作狀態
Google 文件風格註解 可對構件和程式碼差異加上註解,Agent 會根據意見回饋進行修改

📚 更多資訊:請參閱 Google Antigravity 官方教學


🛠️ 可用的 MCP 工具

基礎建模工具

工具名稱 說明
create_wall 建立牆
create_floor 建立樓板
create_door 建立門
create_window 建立窗
create_column 建立柱子
create_dimension 建立尺寸標註

資訊查詢工具

工具名稱 說明
get_project_info 取得專案資訊
query_elements 查詢元素(支援篩選條件)
get_element_info 取得元素詳細資訊
get_all_levels 取得所有樓層
get_all_grids 取得所有網格線(含座標,可計算交會點)
get_column_types 取得柱類型清單(含尺寸資訊)
get_furniture_types 取得家具類型清單
get_room_info 取得房間詳細資訊(中心點、邊界範圍)
get_rooms_by_level 取得樓層所有房間清單(含面積統計)
get_wall_info 取得牆的詳細資訊
query_walls_by_location 依位置查詢牆

視圖與導航工具

工具名稱 說明
get_all_views 取得所有視圖清單
get_active_view 取得目前使用中的視圖
set_active_view 切換使用中的視圖
select_element 選取元素
zoom_to_element 縮放至指定元素
measure_distance 量測兩點距離

元素操作工具

工具名稱 說明
modify_element_parameter 修改元素參數
delete_element 刪除元素
place_furniture 放置家具

視覺化工具

工具名稱 說明
override_element_graphics 覆寫元素圖形(顏色、線型等)
clear_element_override 清除元素的圖形覆寫
unjoin_wall_joins 取消牆接合(用於上色前)
rejoin_wall_joins 恢復牆接合(上色後還原)

進階功能:Revit Add-in 中整合 AI API(Gemini 2.5 Flash)

功能說明

讓 Revit 使用者直接在 Add-in 中開啟一個對話視窗,與 Gemini 2.5 Flash AI 交互式對話並控制 Revit。無需額外啟動外部工具。

┌─────────────────────────────────────┐
│        Revit 視窗                   │
├─────────────────────────────────────┤
│  MCP Tools                          │
│  ┌──────────────────────────────┐  │
│  │ MCP 服務(開/關)              │  │
│  ├──────────────────────────────┤  │
│  │ MCP 設定                     │  │
│  ├──────────────────────────────┤  │
│  │ 🆕 AI Chat 助手(新功能)    │  │
│  └──────────────────────────────┘  │
│                                     │
│  ┌─────────────────────────────────┐│
│  │ AI Chat 視窗 (WPF 對話框)       ││
│  ├─────────────────────────────────┤│
│  │ 您:請幫我建立一個 3mx5m 的樓板 ││
│  │ AI: 我已建立樓板,ID: 123456   ││
│  │                                 ││
│  │ [輸入框] [傳送按鈕]             ││
│  └─────────────────────────────────┘│
└─────────────────────────────────────┘

開發步驟

步驟 1:取得 Gemini API Key

  1. 前往 Google AI Studio

  2. 登入您的 Google 帳戶

    • 如果沒有,請建立一個
  3. 點擊「Create API Key」

    • 選擇「Create new secret key in new project」
    • Google 會自動建立一個免費的 API Key
  4. 複製 API Key

    • 會看到一個長的字串,例如:
    AIzaSyDx...xyz123abc
    
    • 務必妥善保管此 Key,不要分享給他人!

步驟 2:在 C# 中建立 AI 聊天服務

MCP/Core/ 資料夾中建立新檔案 GeminiChatService.cs

using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace RevitMCP.Core
{
    /// <summary>
    /// Gemini 2.5 Flash API 整合服務
    /// </summary>
    public class GeminiChatService
    {
        private readonly string _apiKey;
        private readonly string _apiUrl = "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash:generateContent";
        private readonly HttpClient _httpClient;

        public GeminiChatService(string apiKey)
        {
            _apiKey = apiKey ?? throw new ArgumentNullException(nameof(apiKey));
            _httpClient = new HttpClient();
        }

        /// <summary>
        /// 與 Gemini AI 交互式對話
        /// </summary>
        public async Task<string> ChatAsync(string userMessage, string context = "")
        {
            try
            {
                // 構建請求
                var requestBody = new
                {
                    contents = new[]
                    {
                        new
                        {
                            parts = new[]
                            {
                                new
                                {
                                    text = $"{context}\n\n用戶問題: {userMessage}"
                                }
                            }
                        }
                    },
                    generationConfig = new
                    {
                        temperature = 0.7,
                        maxOutputTokens = 1024
                    }
                };

                var jsonContent = JsonConvert.SerializeObject(requestBody);
                var content = new StringContent(jsonContent, Encoding.UTF8, "application/json");

                // 發送請求到 Gemini API
                var response = await _httpClient.PostAsync(
                    $"{_apiUrl}?key={_apiKey}",
                    content
                );

                if (!response.IsSuccessStatusCode)
                {
                    throw new Exception($"Gemini API 錯誤: {response.StatusCode}");
                }

                // 解析回應
                var responseContent = await response.Content.ReadAsStringAsync();
                dynamic result = JsonConvert.DeserializeObject(responseContent);
                
                string aiResponse = result.candidates[0].content.parts[0].text;
                return aiResponse;
            }
            catch (Exception ex)
            {
                return $"AI 服務錯誤: {ex.Message}";
            }
        }
    }
}

步驟 3:建立 WPF 對話視窗

MCP/Commands/ 中建立 ChatCommand.cs

using System;
using Autodesk.Revit.UI;
using RevitMCP.Core;

namespace RevitMCP.Commands
{
    public class ChatCommand : IExternalCommand
    {
        public Result Execute(ExternalCommandData commandData, ref string message, ElementSet elements)
        {
            try
            {
                // 從設定中讀取 API Key
                var apiKey = System.Environment.GetEnvironmentVariable("GEMINI_API_KEY");
                
                if (string.IsNullOrEmpty(apiKey))
                {
                    TaskDialog.Show("設定錯誤", 
                        "請設定環境變數 GEMINI_API_KEY\n\n" +
                        "在 Windows 中:\n" +
                        "1. 按 Win + Pause\n" +
                        "2. 進階系統設定\n" +
                        "3. 環境變數\n" +
                        "4. 新增:GEMINI_API_KEY = 您的 API Key");
                    return Result.Failed;
                }

                // 建立聊天服務
                var chatService = new GeminiChatService(apiKey);

                // 開啟對話視窗
                var chatWindow = new ChatWindow(chatService, commandData.Application);
                chatWindow.Show();

                return Result.Succeeded;
            }
            catch (Exception ex)
            {
                TaskDialog.Show("錯誤", $"開啟 AI Chat 失敗: {ex.Message}");
                return Result.Failed;
            }
        }
    }
}

步驟 4:建立 WPF 視窗 UI

MCP/ 中建立 ChatWindow.xaml

<Window x:Class="RevitMCP.ChatWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Revit AI Chat 助手"
        Height="600"
        Width="500"
        Background="#F5F5F5">
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"/>
            <RowDefinition Height="Auto"/>
        </Grid.RowDefinitions>

        <!-- 聊天歷史 -->
        <ListBox x:Name="ChatHistory"
                 Grid.Row="0"
                 Margin="10"
                 Background="White"
                 BorderThickness="1"
                 BorderBrush="#DDD">
            <ListBox.ItemTemplate>
                <DataTemplate>
                    <Border Margin="5" Padding="10" CornerRadius="5">
                        <TextBlock Text="{Binding}"
                                   TextWrapping="Wrap"
                                   Foreground="#333"/>
                    </Border>
                </DataTemplate>
            </ListBox.ItemTemplate>
        </ListBox>

        <!-- 輸入區域 -->
        <Grid Grid.Row="1" Margin="10" Background="White" Height="80">
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="*"/>
                <ColumnDefinition Width="Auto"/>
            </Grid.ColumnDefinitions>

            <TextBox x:Name="InputBox"
                     Grid.Column="0"
                     VerticalAlignment="Top"
                     Padding="10"
                     TextWrapping="Wrap"
                     AcceptsReturn="True"
                     PlaceholderText="輸入您的問題..."/>

            <Button x:Name="SendButton"
                    Grid.Column="1"
                    Margin="5"
                    Padding="15,10"
                    Background="#007ACC"
                    Foreground="White"
                    Content="傳送"
                    Click="SendButton_Click"/>
        </Grid>
    </Grid>
</Window>

步驟 5:後端代碼 (ChatWindow.xaml.cs)

using System.Collections.ObjectModel;
using System.Windows;
using Autodesk.Revit.UI;
using RevitMCP.Core;

namespace RevitMCP
{
    public partial class ChatWindow : Window
    {
        private readonly GeminiChatService _chatService;
        private readonly UIApplication _uiApp;
        private readonly ObservableCollection<string> _messages;

        public ChatWindow(GeminiChatService chatService, UIApplication uiApp)
        {
            InitializeComponent();
            _chatService = chatService;
            _uiApp = uiApp;
            _messages = new ObservableCollection<string>();
            ChatHistory.ItemsSource = _messages;

            _messages.Add(" AI 助手已就緒。請輸入您的問題來控制 Revit。");
            _messages.Add(" 例如:請建立一個 5 米長的牆");
        }

        private async void SendButton_Click(object sender, RoutedEventArgs e)
        {
            string userInput = InputBox.Text.Trim();
            if (string.IsNullOrEmpty(userInput)) return;

            // 顯示用戶訊息
            _messages.Add($"👤 您: {userInput}");
            InputBox.Clear();

            // 獲取 AI 回應
            SendButton.IsEnabled = false;
            SendButton.Content = "處理中...";

            try
            {
                string context = $"您是 Revit BIM 專家助手。可用的 Revit 命令包括: " +
                    "create_wall, create_floor, query_elements, get_project_info 等。" +
                    "請用中文簡潔回答,並說明您的操作。";

                string response = await _chatService.ChatAsync(userInput, context);
                _messages.Add($" AI: {response}");

                // 如果 AI 建議執行操作,可以在這裡添加自動執行邏輯
            }
            finally
            {
                SendButton.IsEnabled = true;
                SendButton.Content = "傳送";
            }
        }
    }
}

步驟 6:在 Add-in 中註冊新按鈕

修改 Application.cs 中的 OnStartup 方法,加入 AI Chat 按鈕:

public Result OnStartup(UIControlledApplication application)
{
    try
    {
        RibbonPanel panel = application.CreateRibbonPanel("MCP Tools");
        
        string assemblyPath = Assembly.GetExecutingAssembly().Location;

        // 現有按鈕...
        
        // 🆕 新增 AI Chat 按鈕
        PushButtonData chatButtonData = new PushButtonData(
            "MCPChat",
            "AI Chat\n助手",
            assemblyPath,
            "RevitMCP.Commands.ChatCommand");
        chatButtonData.ToolTip = "開啟 AI 對話助手,與 Gemini 2.5 Flash 交互式控制 Revit";
        PushButton chatButton = panel.AddItem(chatButtonData) as PushButton;

        return Result.Succeeded;
    }
    catch (Exception ex)
    {
        TaskDialog.Show("錯誤", "載入 MCP Tools 失敗: " + ex.Message);
        return Result.Failed;
    }
}

步驟 7:設定環境變數(給最終使用者)

  1. Win + PauseWin + X → 系統

  2. 點擊「進階系統設定」

  3. 點擊「環境變數」按鈕

  4. 在「系統變數」中點擊「新增」

  5. 填入以下資訊

    • 變數名稱:GEMINI_API_KEY
    • 變數值:您從步驟1複製的 API Key
  6. 點擊「確定」並重新啟動 Revit

步驟 8:編譯並測試

  1. 編譯 C# 專案

    cd MCP
    dotnet build -c Release
  2. 複製 DLL 到 Revit Add-in 目錄

    $target = "$env:APPDATA\Autodesk\Revit\Addins\2022"
    Copy-Item "bin\Release\RevitMCP.dll" $target
  3. 重新啟動 Revit

  4. 點擊「AI Chat 助手」按鈕

    • 應該會看到聊天視窗
    • 開始與 AI 對話!

實際使用示例

👤 用戶:我想在 Level 2 建立 3 個方形樓板,尺寸都是 5m × 5m

 AI:我可以幫您建立 3 個方形樓板。我會在以下位置建立它們:
- 樓板1:(0, 0) 到 (5, 5)
- 樓板2:(6, 0) 到 (11, 5)  
- 樓板3:(12, 0) 到 (17, 5)

現在建立中...完成!已建立 3 個樓板,ID 分別為 123456, 123457, 123458

👤 用戶:請把樓板1 的高度改成 4m

 AI:我已將樓板1 的高度改為 4m。修改完成!

🔒 安全注意事項

重要安全提醒

  1. Port 管理 - MCP Server 預設監聽 localhost:8964,僅限本機存取
  2. 防火牆 - 不建議對外開放連接埠
  3. 程式碼審查 - 執行前請確認程式碼來源可信
  4. 備份 - 操作前請備份 Revit 專案
  5. API Key 保管 - 絕不要將 API Key 提交到 GitHub,使用環境變數管理

📝 常見問題

Q: Revit 沒有顯示 MCP Tools 面板?

A: 確認 RevitMCP.addin 已正確放置在 Add-in 目錄,並重新啟動 Revit。

Q: MCP Server 無法連線到 Revit?

A:

  1. 確認 Revit 中已點擊「MCP 服務 (開/關)」啟動服務
  2. 確認 Port 8964 未被其他程式佔用
  3. 若顯示「Port 8964 被 System (PID: 4) 佔用」,執行 scripts\release-port.ps1(需系統管理員)
  4. 檢查防火牆設定

Q: AI 說找不到 Revit 工具?

A: 確認 MCP Server 設定檔路徑正確,並重新啟動 AI 應用程式。


📖 附錄:技術補充說明

以下內容為進階技術說明,一般使用者可略過此章節。

A. 什麼是 WebSocket?

本專案使用 WebSocket 作為 MCP Server 與 Revit Add-in 之間的通訊協議。

WebSocket 是一種網路通訊標準(非本專案自創名詞),具有以下特點:

特性 說明
雙向通訊 伺服器和客戶端可隨時互相傳送訊息
低延遲 建立連接後保持開啟,無需每次重新連接
即時性 適合需要快速回應的操作(如 Revit 即時控制)

簡單類比:

  • 傳統 HTTP = 每次打電話,講完就掛斷
  • WebSocket = 保持通話中,雙方隨時可以說話

B. 為什麼選擇 WebSocket?

本專案選擇 WebSocket 的理由:

  1. 即時性需求 - Revit 操作需要立即回應
  2. 持久連接 - 多個 AI 命令會持續發送,單一連接更有效率
  3. 雙向通訊 - Revit 有時需要主動通知(如進度更新、錯誤訊息)
  4. 跨語言支援 - Node.js 和 C# 都原生支援
  5. MCP 標準 - Model Context Protocol 官方即採用 WebSocket

C. 其他通訊技術比較

如果您有興趣了解其他技術選項:

技術 延遲 雙向 易用性 適用場景
WebSocket ⭐⭐⭐⭐ 本專案選用
HTTP REST ⭐⭐⭐⭐⭐ 簡單查詢
gRPC 最低 ⭐⭐ 高性能場景
Named Pipes 最低 ⭐⭐ 純本機通訊
SignalR ⭐⭐⭐⭐ .NET 生態系

D. 埠號 (Port) 補充說明

本專案預設使用 8964 埠號,這是一個任意選擇的數字。

常見埠號範圍:

  • 0-1023:系統保留埠(如 80=HTTP, 443=HTTPS)
  • 1024-49151:註冊埠(常見應用程式使用)
  • 49152-65535:動態/私有埠(可自由使用)

8964 屬於註冊埠範圍,通常不會與系統服務衝突,但仍可能被其他應用程式佔用。


❓ 常見問題與疑難排解

如果您在安裝過程中遇到問題,請參考以下解法:

1. 執行 .bat 批次檔時閃退或報錯

  • 症狀:點擊 install-addon.bat 視窗一閃即逝,或顯示 The system cannot find the path
  • 原因:若您是透過 Git 在不同作業系統間同步(如 Mac 到 Windows),檔案的換行格式可能變成了 LF,但 Windows 批次檔需要 CRLF
  • 解法
    1. 放棄 .bat,改用 PowerShell 執行 .ps1 腳本。
    2. 或者使用 VS Code 將檔案右下角的換行格式切換回 CRLF 並存檔。

2. PowerShell 出現大量亂碼紅字

  • 症狀:執行 .ps1 時出現問號亂碼(如 ?誘 蠟幅??),導致安裝失敗。
  • 原因:PowerShell 對於繁體中文環境的編碼支援問題。
  • 解法
    1. 用「記事本」開啟 install-addon.ps1 檔。
    2. 選擇「另存新檔」,編碼改選 「具有 BOM 的 UTF-8」(UTF-8 with BOM)
    3. 存檔後重新執行指令。

3. 顯示「找不到 DLL」

  • 原因:本專案目前未上傳預編譯的二進位檔案 (Release)。
  • 解法:請務必確認您已執行過 dotnet build -c Release 編譯指令(請參閱上方的安裝步驟)。

📄 授權

MIT License

🤝 貢獻

歡迎提交 Issue 和 Pull Request!


📚 文件導覽

文件 說明
AI 規範
CLAUDE.md 專案唯一規範文件:架構、建構指令、部署規則、程式碼慣例
GEMINI.md 重定向至 CLAUDE.md(供 Gemini CLI / Google AI 讀取)
AGENTS.md 重定向至 CLAUDE.md(供 OpenAI / Copilot 讀取)
專案文件
CHANGELOG.md 版本變更日誌(v1.0.0 ~ v1.5.1)
CONTRIBUTING.md 貢獻指南:如何提交工作流程與經驗規則
README.en.md English version of this README
domain/
domain/README.md 領域知識目錄(AI 工作流程 SOP)
domain/lessons.md 開發經驗與避坑規則(由 /lessons 指令維護)
log/
log/README.md 事件日誌系統說明(Karpathy LLM Wiki pattern,跨 AI 自動維護)
docs/
docs/DOCS_STRUCTURE.md 文件目錄結構說明
docs/MIGRATION_GUIDE.md 統一建構遷移指南(舊版升級必讀)
docs/tools/ MCP 工具 API 技術文件
docs/workflows/ 工作流程設計文件
scripts/
scripts/README.md 安裝腳本使用說明
教材/
教材/README.md 教材總目錄(8 堂課 × 3 小時)
教材/05-Skill遷移實戰篇.md 第五堂:從 domain/ 升級至 Agent Skill 架構
Claude Code 自動化
.claude/skills/ Claude Code 技能(/build-revit/deploy-addon
.claude/commands/ 斜線指令定義(/lessons/domain/review

**Enjoy your AI-powered Revit development! **

About

LEARN HOW TO BUILD UP YOUR REVIT MCP

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages