Reported issues for Revit MCP by shuotao
Pod holds 16 of 23 GitHub reports that passed its relevance review. This can include external user reports, maintainer-confirmed bugs, and concrete feature gaps. Treat them as evidence to inspect, not a count of distinct defects.
Back to Revit MCP by shuotao.
Most discussed
[RFC/提案] 新增可選的 Archicad Backend,並定義跨 Revit/Archicad 的 Skill 與 Domain 邊界
提案背景
我目前已使用 Agy CLI、BIM_MCP 與 tapir-archicad-mcp 完成 Archicad 實機連線測試。
目前已驗證:
- Agy CLI 可以啟動 Archicad MCP Server。
discovery_list_active_archicads可以找到目前開啟的 Archicad 專案。archicad_discover_tools可以取得目前可用的 Archicad command 與 schema。archicad_call_tool可以讀取 Archicad 模型資料,並已成功測試部分模型指令。- Revit MCP 的原始設定與功能維持不變。
- Repository 已提交的 MCP 設定仍維持 Revit-only。
目前的實作:
- Branch: https://github.com/Archwiz-boss/BIM_MCP_study/tree/agent/archicad-mcp-integration-v2
- Commit: https://github.com/A
Read the thread · 2026-07-22 · open · outside contributor · 7 comments
提案:導入 Loader/Core 熱重載架構,降低 Revit 開發過程中的重啟成本
#32 Issues提案
背景
目前上游的 Revit MCP 尚未提供「不重啟 Revit 即可重新載入插件核心邏輯」的機制。
在現行開發流程中,只要修改 Revit 端的插件邏輯,通常就需要:
- 重新編譯插件
- 覆蓋 DLL
- 重啟 Revit
- 重新連線並驗證結果
這個流程雖然可行,但對於高頻調整命令邏輯的開發情境來說,成本很高。
我們已經在 feature/loader-core-r26 分支上實作並驗證一套 Loader/Core 架構。
這個 Issue 的目的,是討論是否要將這套機制正式導入主線。
這個解法可以達成什麼
透過將 Revit Add-in 拆成穩定的 Loader 與可重載的 Core Runtime,這個解法可以做到:
- 在不重啟 Revit 的情況下,重新編譯並替換
RevitMCP.CoreRuntime.dll - 透過 Revit 內的
Core 重載操作重新載入 Core 邏輯 - 加快命令層開發迭代速度,尤其是
CommandExecutor類型的修改 - 將完整 Re
Read the thread · 2026-04-09 · closed · outside contributor · 6 comments
[提案] 將 SC REVIT 的 CAD 點位放置流程整理成 AI 可用工具
這個提案從哪裡來
機電 CAD 圖裡常有大量重複圖塊,例如灑水頭、設備或閥件。這些圖塊已經帶有名稱、位置和旋轉角度,但進到 Revit 後,使用者仍要逐點放置對應族群。
我已在 SC REVIT 中設計一套給 Revit 使用者操作的 CAD 點位放置工具。現在的流程是由人選擇 CAD、圖塊、族群與樓層,查看預覽後再確認放置。
這次提案不是把原本的對話框和按鈕搬進 MCP,也不是讓 AI 模擬人工點選,而是保留已驗證的圖塊辨識與放置邏輯,重新拆成 AI 可以呼叫的「發現、預覽、建立、驗證」流程。
目前給人使用的流程
- 使用者選擇 CAD 與目標 Block。
- 使用者指定 Revit FamilySymbol、Level 與 offset。
- SC REVIT 在 Revit 中顯示偵測或預覽結果。
- 使用者目視確認位置、旋轉與重複項目。
- 使用者確認後,工具實際放置 FamilyInstance。
後續加入 Issue 的 Revit 偵測與放置畫面,會標示為「SC REVIT 現有人工工具」,用來說明既有工作流程,不代表 MCP 功能已完
Read the thread · 2026-07-23 · closed · outside contributor · 5 comments
[提案] 將 SC REVIT 的開孔定位流程整理成 AI 可用工具
這個提案從哪裡來
在機電管線穿過牆、樓板或樑時,工程師通常要逐筆確認穿透位置、需要多大的開孔,以及哪些位置不能直接處理。
我已在 SC REVIT 中設計一套給 Revit 使用者操作的工具。現在的流程是由人選擇來源、執行偵測、查看 Revit 畫面,再決定後續定位或放置。
這次提案不是直接移植 SC REVIT 的 UI,也不是讓 AI 模擬滑鼠操作,而是保留已驗證的工程邏輯,重新整理成 AI 可以穩定呼叫、預覽和驗證的 MCP 工具。
目前給人使用的流程
- 使用者在 Revit 中選擇 MEP 與結構來源。
- 工具掃描管線穿過牆、樓板、樑或柱的位置。
- 使用者從 Revit 畫面查看偵測結果。
- 使用者判斷哪些位置可以處理、哪些需要複核。
- 使用者確認後,才進入開孔定位或放置流程。
後續加入 Issue 的 Revit 偵測與放置畫面,會標示為「SC REVIT 現有人工工具」,用來說明既有工作流程,不代表 MCP 功能已完成。
這個專案已經有很好的基礎
現有的 detect_clashes 已能找出 MEP 與結構元素的交
Read the thread · 2026-07-23 · closed · outside contributor · 5 comments
[Bug] 兩個 MCP 工具有 TS 註冊但無 C# handler,呼叫必拋 NotImplementedException
摘要
main 上有兩個 MCP 工具只註冊了 TS 端、沒有對應的 C# handler,呼叫時會直接落到 dispatcher 的 default: 而拋例外:
sync_room_ceiling_finish_from_ceilingsremap_room_finish_codes
證據(基於目前的 main)
TS 端有註冊:
MCP-Server/src/tools/room-tools.ts:201→name: "sync_room_ceiling_finish_from_ceilings"MCP-Server/src/tools/room-tools.ts:243→name: "remap_room_finish_codes"
C# 端搜不到任何對應:
git grep -n "sync_room_ceiling_finish_from_ceilings\|remap_room_finish_codes" main -- MCP/
# 無輸出
而 `
Read the thread · 2026-08-06 · closed · outside contributor · 3 comments
MCP 工具無法自動觸發 pyRevit 按鈕 / Reload 功能
📋 問題背景 (Problem Statement)
目前 MCP 主要提供 Revit DB API(模型資料庫操作) 的存取介面,但無法主動存取或呼叫 UI API(界面與按鈕觸發)。
這導致使用 AI Agent 自動化開發/維護 pyRevit 工具時,當編輯完 .py 腳本後,仍必須由人工在 Revit 介面中手動點擊 pyRevit → Reload 或手動觸發對應的 pyRevit 按鈕,無法讓MCP自動測試按鈕功能是否有效。
🌐 OSI 網絡模型結構與限制分析 (OSI Layer Analysis)
透過 OSI 7 層模型架構來分析 MCP 與 pyRevit 按鈕呼叫之間的介面隔離問題:
OSI 層級對應表
| OSI 層 | 標準定義 | Revit 生態系對應概念 | MCP 目前涵蓋狀態 |
|---|---|---|---|
| L7 Application (應用層) | 使用者軟體服務 | pyRevit 按鈕 UI / Ribbon Tab / 對話框邏輯 | ❌ 無法存取 |
Read the thread · 2026-08-01 · closed · outside contributor · 2 comments
[複核請求] #86 收攏時重建的 9 個 helper + IFC 柱偵測 0 columns — 請 @Jacky820507 對照原始碼確認
Hi @Jacky820507,你在 #79 / #81 / #82 的實作已由 #86 收攏進 main(自 jacky/main 取回、Windows 端 build 通過 R24+R26、Revit 2024 實跑 16/16 通過)。感謝你的貢獻 🙏
過程中發現一件事需要你複核:你的 domain SOP 引用的 9 個 helper 方法,在你 fork 的任何 branch 都找不到定義(只有被呼叫、沒有本體)——推測是你本機實作、但只推了 domain docs。為了讓程式能編譯執行,維護者依「呼叫點合約 + repo 既有同族程式 + 你的 domain 規格」重建了這 9 個,集中在 MCP/Core/Commands/CommandExecutor.ReclaimedHelpers.cs。
請對照你本機原始碼重點複核(風險高到低)
- 🟠
CollectGeometryFloorBottomHitsAtPoint(幾何版射線)—— 因測試模型偵測不到柱,未能 runtime 驗證,只有射線姊妹版經真實資料確認。
Read the thread · 2026-07-16 · closed · 2 comments
[Feature Request] 新增 analyze_floor_slopes 工具 — 樓板表面幾何坡度分析與參數回寫
需求描述
在建築法規檢討流程中,室外樓板需確認排水坡度是否符合設計標準(例如最小 1~2%)。 目前 Revit 並未內建針對樓板表面幾何的坡度批次計算功能,需手動逐一檢查。
提議的工具功能
新增 analyze_floor_slopes MCP 工具,功能包含:
- 幾何分析:透過 Solid → PlanarFace 的法向量與 Z 軸夾角,計算每片朝上頂面的坡度百分比
- 批次處理:可指定特定 elementIds,或自動收集所有 Function=Exterior 的樓板
- 參數回寫:將計算出的最小/最大坡度寫入使用者指定的參數欄位(預設 Comments)
- 回傳結構化結果:包含 ProcessedCount 及每片樓板的 Min/Max Slope 數據
涉及的程式碼變更
此功能需修改以下受保護的程式碼區域:
MCP/Core/— 新增FloorSlopeAnalyzer.cs(獨立靜態類別)MCP/Core/CommandExecutor.cs— 新增 case 路
Read the thread · 2026-05-07 · closed · external user · 2 comments
Most recent
[Bug] WebSocket 服務未驗證 Origin — 瀏覽器頁面可直接連上 8964 對模型下命令
摘要
MCP/Core/SocketService.cs 接受任何抵達 localhost:8964 的 WebSocket 握手,沒有 Origin 檢查、沒有任何 token。WebSocket 握手不受同源政策保護、也不做 CORS preflight,因此使用者只要瀏覽器開著一個惡意分頁,該頁就能連上 add-in 並對正在編輯的模型下命令(cross-site WebSocket hijacking)。
HttpListener 綁的是 localhost prefix,所以遠端主機打不進來 —— 威脅面是本機,但「本機」包含使用者瀏覽器裡的任何一個分頁,不需要對方在這台機器上有立足點。
ExclusiveLock 不但擋不住,反而是第二個攻擊面:先搶到鎖的一方就是持有者,惡意頁面可以佔住連線,讓真正的 MCP client 一直收 409。
重現
寫了一個 console harness 直接載入建構好的 RevitMCP.dll、跑真的 SocketService(非模擬),用兩種原始 TCP 握手打它:
| 握
Read the thread · 2026-08-25 · closed · external user · 1 comment
dwg-column-import: 梯形/任意四邊形 PolyLine 在退而求其次分支被誤建成矩形柱
症狀
DWG 圖層批次建柱時,ExtractColumns() 對每個 PolyLine 先嘗試 MakeRect(pts)(嚴格矩形判定)。
若判定失敗,會退而求其次走「通用外接矩形」分支,直接用 BuildColFromPoints() 建柱——但這個分支
沒有再檢查來源多邊形是否真的是矩形。梯形、斜切四邊形等非矩形斷面因此會被誤建成矩形柱,尺寸不對。
根因
MCP/Core/DwgColumnExecutor.cs,ExtractColumns() 內:
var c = MakeRect(pts); // 嚴格矩形優先(向後相容)
if (c == null && pts.Count >= 3) // 退而求其次:通用外接矩形
c = BuildColFromPoints(pts, LongestEdgeAngle(pts), diag, "PolyLine(" + pts.Count + "pt)");
`MakeRect
Read the thread · 2026-08-15 · closed · outside contributor · 1 comment
dwg-beam-import: StructuralUsage 設定被 try-catch 吞掉、beamRole 別名不完整
症狀
用 create_beams_from_dwg 批次建樑時,beamRole(大樑/次樑/地樑)對應的 Structural Usage
沒有正確落到新建的樑上;且對正參數(Y_JUSTIFICATION / Z_OFFSET_VALUE / Z_JUSTIFICATION)
設定若失敗會被靜默吞掉,難以排查。
根因
MCP/Core/DwgBeamExecutor.cs:
- Y/Z 對正參數的設定原本包在
try { ... } catch { }裡,且寫在StructuralUsage賦值之前, 例外被整段吞掉、沒有任何錯誤訊息。 MapBeamRoleToUsage()只比對「次樑/次梁」關鍵字,沒有涵蓋「小梁/小樑」這個常見別名, 會導致該類樑的 usage 判定為 null(不設定)。
修正方向(本機已驗證)
- 把對正參數設定移到
StructuralUsage賦值之後,並拿掉外層 try-catch(讓錯誤能被看見)。 MapBeamRoleToUsage()新
Read the thread · 2026-08-15 · closed · outside contributor · 1 comment
[實作] CAD 圖塊點位放置三支工具 — discover / preview / create
背景
規格已定案於 domain/cad-block-point-placement.md,由 @NicheSam 於 #100 提供規格與 Revit 2024 實測證據,特此致謝。
本 issue 追蹤三支工具的實作。
三支工具
get_dwg_block_instances— 唯讀盤點已載入 Linked DWG 中的 Block 名稱、數量、插入點、旋轉與唯一 identity。必須同時回傳「供人辨識的 CAD 名稱」與「供工具精確解析的 Revit identity」,後續工具沿用 identity,不由 agent 自行拼接名稱。preview_family_instances_from_dwg_blocks— 唯讀檢查座標鏈、FamilySymbol、Level、offset 與重複項目,不建立任何 Revit 元素(不建十字線、群組或其他暫時元素)。FamilySymbol / Level / offset 由使用者明確指定,preview 只負責驗證與回報。**`create
Read the thread · 2026-08-10 · open · 1 comment
[Enhancement] ezdxf_worker.py 錯誤訊息補充 Python 路徑與版本,方便診斷環境問題
問題描述
原本 ezdxf 找不到時只顯示:
缺少 ezdxf 套件,請在系統 Python 環境中安裝 (pip install ezdxf)
在多 Python 版本環境(如系統同時有 3.12 和 3.14)下,使用者不知道 Revit 呼叫的是哪個 Python,難以診斷安裝位置是否正確。
建議修正
將 ImportError 改為 Exception(捕捉範圍更廣),並在錯誤訊息中補充 Python 執行路徑與版本資訊,讓使用者能快速確認 Revit 呼叫的是哪個 Python 環境。
Read the thread · 2026-07-18 · closed · outside contributor · 1 comment
[Bug] install-addon.ps1 複製 DLL 路徑與 .addin 設定不符,導致部署後 Revit 載入舊版
問題描述
RevitMCP.addin 指定的 Assembly 路徑為:
<Assembly>RevitMCP\RevitMCP.dll</Assembly>
(子資料夾)
但 install-addon.ps1 實際複製到:
Addins\2024\RevitMCP.dll
(上層)
導致每次重新部署後,Revit 載入的仍是子資料夾裡的舊版 DLL,程式碼修改完全不生效。這個不一致從 commit 6ac1cf0 起就存在。
修正方式
$dllDestDir = Join-Path $addonPath RevitMCP
New-Item -ItemType Directory -Path $dllDestDir -Force
Copy-Item -Path $sourceDll -Destination (Join-Path $dllDestDir RevitMCP.dll)
Newtonsoft.Json.dll 也需要同步複製到子資料夾。
Read the thread · 2026-07-18 · closed · outside contributor · 1 comment
[調查/負面結果] 連結模型基準品類無法 per-link 隱藏 — Revit API 限制(2023–2026)
背景與需求
在疊了多個連結模型(結構+機電)的視圖裡,每個 link 都會帶入自己的網格/樓層/參考平面,造成圖面雜訊。常見需求是:
只隱藏「連結模型」的基準品類,保留「本體」自己的基準(本體基準常是以 Copy/Monitor 從主體模型監視複製而來)。
動機:為什麼需要「自動化」(明明視圖樣板就做得到)
這件事在 UI 上確實做得到——視圖樣板可以透過「Revit Links → 該 link → Custom」逐 link 關掉網格/樓層。問題不在「能不能」,而在「維護成本」:
- 初始設定就很繁瑣:一個視圖疊 8+ 個 link,每個 link 都要進 Custom 逐品類關,一次就要點很多下。
- 真正的痛點——新增 link 後的維護災難:一旦專案中途新增一個連結,這個新 link 不在任何既有樣板的覆寫清單裡,於是每一個已經做好的視圖樣板都得手動再進去、把新 link 的基準關掉。專案樣板數量一多,這是極度耗時且容易漏的重複勞動。
所以理想是:**一個指令,對指定視圖/
Read the thread · 2026-07-06 · closed · outside contributor · 1 comment
車位淨高檢查對應不同車位種類決定數值
[Feature Request] 實作車位淨高檢查 (Parking Clearance Check) 工具
背景與需求
根據 domain/parking-clearance-check.md 的分析,我們需要一個能夠自動檢查特定樓層(例如 B1F)停車位上方淨高的工具。
該工具應具備以下功能:
- 針對指定的車位,透過 Revit API 的射線檢測 (
ReferenceIntersector) 到達天花板、樑、管線等障礙物的距離。 - 針對「法規的一般性要求」自動判別一般車位(需大於 210cm)。
- 針對「特殊的車位種類」,能參照當地土地使用分區管制的要求給予不同寬限值。例如「裝卸車位」通常需大於 270cm。
- 根據檢測結果於視圖中直接以填滿顏色標示:合格為綠色,不合格為紅色。
建議實作方式 (供參考)
為了滿足土地使用分區管制的特殊車位要求,建議在工具的 inputSchema 中增加選填的規則參數,以便在面對不同法規時保有擴展性:
1. `MCP-Server/src/tools/parking-cleara
Read the thread · 2026-04-06 · closed · external user · 1 comment
The remaining reports are on the project's issue tracker.