Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

NavisworksMCP

БесплатноНе проверен

Enables AI platforms to control Autodesk Navisworks via natural language, supporting model analysis, selection, data extraction, and visual management.

GitHubEmbed

Описание

Enables AI platforms to control Autodesk Navisworks via natural language, supporting model analysis, selection, data extraction, and visual management.

README

AI 驅動的 Navisworks 自動化控制系統 透過 Model Context Protocol (MCP) 讓 Claude、Gemini、VS Code Copilot 等 AI 平台直接操控 Autodesk Navisworks。


系統架構

┌──────────────┐      stdio       ┌──────────────┐    WebSocket     ┌──────────────────┐
│  AI 平台      │ ◄──────────────► │  MCP Server  │ ◄──────────────► │  Navisworks 插件  │
│  Claude       │     MCP 協議     │  (Node.js)   │    port 2233    │  (C# Add-in)     │
│  Gemini       │                  │              │                  │                  │
│  VS Code      │                  │  index.ts    │                  │  Application.cs  │
└──────────────┘                  └──────────────┘                  └──────────────────┘

三層分離設計:

  • AI 平台 — 發送自然語言指令,由 MCP 協議轉譯為工具呼叫
  • MCP Server — Node.js/TypeScript 中繼層,管理 WebSocket 連線與命令路由
  • Navisworks Add-in — C# Plugin,在 NW 主執行緒中安全執行 .NET API 操作

快速開始

環境需求

項目 版本
Navisworks Manage 2025
.NET Framework 4.8
Node.js 20+ LTS
Visual Studio 2019+

安裝步驟

# 1. 一鍵安裝 MCP Server 依賴並編譯
scripts\setup.bat

# 2. 在 Visual Studio 開啟解決方案
#    → 確認 NavisworksMCP.csproj 中的 NavisworksPath 正確
#    → Build Release

# 3. 部署 Plugin(需要管理員權限)
powershell -ExecutionPolicy Bypass -File scripts\install-addon.ps1

啟動服務

  1. 開啟 Navisworks Manage 2025
  2. 載入你的 NWF/NWD 模型
  3. Add-ins 面板找到 "MCP 服務 (開/關)" 按鈕,點擊啟動
  4. 看到提示 WebSocket 端口: 2233 即表示服務就緒

連接 AI 平台

VS Code / Claude Code: 已配置 .vscode/mcp.json,開箱即用

Claude Desktop: 在設定中加入:

{
  "mcpServers": {
    "navisworks": {
      "command": "node",
      "args": ["C:/Users/你的帳號/DESKTOP/NV_mcp/MCP-Server/build/index.js"],
      "env": { "NAVIS_MCP_PORT": "2233" }
    }
  }
}

使用模式

NavisworksMCP 提供 27 個工具,設計為五步驟工作流程:

Step 1 — 了解模型

「這個模型有什麼?裡面有幾個來源檔案?主要分類是哪些?」

get_document_info          → 文件名稱、單位、模型數量
get_model_info             → 各來源檔案的根節點與子項目數
get_model_statistics       → 按分類/圖層/來源檔案統計數量  ★ 核心工具
get_all_categories         → 列出所有屬性分類名稱
get_model_tree             → 展開模型樹結構(可指定深度)

典型對話:

用戶:「幫我分析一下這個模型的組成」
AI 呼叫:get_model_statistics(groupBy: "sourceFile")
         → 回傳:Architectural.nwc (3,200 items), MEP.nwc (1,800 items), Structure.nwc (950 items)
AI 呼叫:get_model_statistics(groupBy: "classDisplayName")
         → 回傳:Wall (420), Door (180), Pipe (650), Duct (320)...

Step 2 — 篩選與定位

「找出所有的門」「選擇 Selection Set 裡的機電管線」「用搜尋集過濾」

get_selection_sets         → 列出所有已儲存的選擇集
get_selection_set_items    → 讀取 Set 內容(不改變選擇)   ★ 安全讀取
execute_search_set         → 執行 Search Set 並回傳結果    ★ 搜尋集
search_items               → 自定義搜尋(按分類+屬性+值)
select_items_by_search     → 搜尋並選擇項目
select_items_by_set        → 選擇指定 Set 的所有項目
clear_selection            → 清除選擇

典型對話:

用戶:「模型裡有哪些選擇集?」
AI 呼叫:get_selection_sets
         → 回傳:MEP-Piping (Search Set, 650 items), Clash-Group-A (120 items)...

用戶:「看一下 MEP-Piping 裡面有什麼」
AI 呼叫:get_selection_set_items(name: "MEP-Piping", maxResults: 50)
         → 回傳項目清單(不影響當前選擇狀態)

用戶:「找出所有 Element 分類中 Type 是 Wall-200mm 的項目」
AI 呼叫:search_items(category: "Element", property: "Type", value: "Wall-200mm")

get_selection_set_items vs select_items_by_set 的差別:

工具 改變選擇? 用途
get_selection_set_items 不改變 安全探索,了解 Set 內容
select_items_by_set 改變 需要後續操作(上色、隱藏等)時使用

Step 3 — 偵測現有狀態

「哪些東西被隱藏了?有沒有被凍結的項目?模型的篩選狀態是什麼?」

get_override_status        → 綜合報告:隱藏/凍結概覽       ★ 狀態總覽
get_hidden_items           → 列出所有被隱藏的項目
get_frozen_items           → 列出所有被凍結的項目

典型對話:

用戶:「看看模型現在的篩選狀態」
AI 呼叫:get_override_status(scope: "all", maxResults: 50)
         → 回傳:隱藏 23 項、凍結 5 項,附帶路徑清單

用戶:「哪些管線被隱藏了?」
AI 呼叫:get_hidden_items(maxResults: 200)
         → 回傳所有隱藏項目的名稱、分類、路徑

Step 4 — 資料抽取

「把所有門的 ID 和高度匯出」「讀取選擇集的特定屬性」

get_item_properties        → 單項完整屬性(所有分類)
batch_get_properties       → 批量抽取,可指定欄位          ★ 資料匯出
get_item_geometry_info     → 幾何包圍盒與中心點座標

典型對話:

用戶:「把 MEP-Piping 選擇集裡所有管線的直徑和材質抽出來」
AI 呼叫:batch_get_properties(
           setName: "MEP-Piping",
           fields: ["Element.Diameter", "Element.Material"],
           maxResults: 500
         )
         → 回傳表格式資料,每列包含 displayName、path、指定欄位值

用戶:「看一下選中項目的完整屬性」
AI 呼叫:get_item_properties
         → 回傳所有分類 > 屬性名 > 值 > 資料類型

batch_get_properties 兩種模式:

模式 參數 說明
從 Selection Set setName: "MEP-Piping" 直接讀取,不影響選擇
從當前選擇 不指定 setName 讀取 CurrentSelection

Step 5 — 視覺管理

「把管線標紅色」「隱藏結構柱」「切換到 3D 視點」

set_item_override_color    → 覆蓋選中項目的顯示顏色 (RGB)
clear_override_colors      → 清除顏色覆蓋(重設材質)
hide_items                 → 隱藏選中項目
unhide_all                 → 取消隱藏所有項目
zoom_to_selection          → 視圖對準選中項目
get_viewpoints             → 列出已儲存的視點
set_active_viewpoint       → 切換到指定視點
get_current_selection      → 確認當前選了什麼

典型對話:

用戶:「把碰撞區域的管線標成紅色」
AI 呼叫:select_items_by_set(name: "Clash-Group-A")
AI 呼叫:set_item_override_color(r: 255, g: 0, b: 0)
AI 呼叫:zoom_to_selection

用戶:「隱藏所有結構柱,只看機電」
AI 呼叫:search_items(category: "Element", property: "Category", value: "Structural Columns")
AI 呼叫:select_items_by_search(category: "Element", property: "Category", value: "Structural Columns")
AI 呼叫:hide_items

用戶:「恢復全部顯示」
AI 呼叫:unhide_all
AI 呼叫:clear_override_colors

完整工具清單

讀取工具(不改變模型狀態)— 17 個

工具 說明
get_document_info 文件基本資訊
get_model_info 來源模型清單
get_model_tree 模型樹結構
get_model_statistics 按分類/圖層/來源統計
get_all_categories 屬性分類名稱
get_current_selection 當前選擇清單
get_item_properties 單項屬性詳情
get_item_geometry_info 幾何包圍盒
get_selection_sets 選擇集清單
get_selection_set_items 選擇集內容(不選擇)
get_viewpoints 視點清單
get_clash_tests 碰撞測試清單
get_clash_results 碰撞結果詳情
get_override_status 隱藏/凍結狀態概覽
get_hidden_items 隱藏項目清單
get_frozen_items 凍結項目清單
batch_get_properties 批量屬性抽取

操作工具(會改變模型狀態)— 10 個

工具 改變什麼
search_items 不改變選擇,僅回傳結果
select_items_by_search 改變 CurrentSelection
select_items_by_set 改變 CurrentSelection
execute_search_set 可選擇是否改變 CurrentSelection
clear_selection 清空 CurrentSelection
set_active_viewpoint 切換視點
set_item_override_color 覆蓋顏色
clear_override_colors 重設材質
hide_items 隱藏項目
unhide_all 取消隱藏

工具組合範例

範例 1:模型初始分析

1. get_document_info                          → 了解基本資訊
2. get_model_statistics(groupBy: "sourceFile") → 看各來源檔案佔比
3. get_model_statistics(groupBy: "classDisplayName") → 看分類分佈
4. get_selection_sets                          → 看有哪些預設篩選
5. get_override_status(scope: "all")           → 看是否有已套用的篩選

範例 2:管線資料匯出

1. get_selection_sets                          → 找到 "MEP-Piping" 集
2. get_selection_set_items(name: "MEP-Piping") → 預覽內容
3. batch_get_properties(                       → 批量抽取指定欄位
     setName: "MEP-Piping",
     fields: ["Element.Id", "Element.Diameter", "Element.Material"]
   )

範例 3:碰撞項目視覺化

1. get_selection_sets                          → 找碰撞相關 Set
2. select_items_by_set(name: "Clash-Group-A")  → 選擇碰撞群組
3. set_item_override_color(r:255, g:0, b:0)    → 標紅色
4. zoom_to_selection                           → 對準畫面
5. get_item_properties                         → 看碰撞項目屬性

範例 4:隱藏非相關學科

1. get_model_statistics(groupBy: "sourceFile") → 確認有哪些來源
2. search_items(category: "Item", property: "Source File", value: "Structure.nwc")
3. select_items_by_search(同上參數)             → 選擇結構模型
4. hide_items                                  → 隱藏結構
5. unhide_all                                  → 完成後恢復

專案結構

NV_mcp/
├── NavisworksMCP.sln           # Visual Studio 解決方案
├── CLAUDE.md                   # AI 開發規範
├── README.md                   # 本文件
├── .gitignore
│
├── MCP/                        # C# Navisworks Add-in
│   ├── NavisworksMCP.csproj    # .NET Framework 4.8
│   ├── Application.cs          # Plugin 入口 (Toggle + Log + EventWatcher)
│   ├── Core/
│   │   ├── SocketService.cs    # WebSocket 服務 (port 2233)
│   │   ├── CommandExecutor.cs  # 27 個命令的執行器
│   │   ├── IdleEventManager.cs # 主執行緒安全排程
│   │   └── Logger.cs           # 日誌系統
│   └── Models/
│       ├── NavisCommandRequest.cs
│       └── NavisCommandResponse.cs
│
├── MCP-Server/                 # Node.js MCP Server
│   ├── package.json            # @modelcontextprotocol/sdk + ws
│   ├── tsconfig.json
│   └── src/
│       ├── index.ts            # MCP Server 入口 (stdio transport)
│       ├── socket.ts           # WebSocket 客戶端
│       └── tools/
│           └── navis-tools.ts  # 27 個工具定義
│
├── scripts/
│   ├── setup.bat               # 一鍵安裝
│   └── install-addon.ps1       # Plugin 部署
│
└── .vscode/
    └── mcp.json                # VS Code MCP 配置

注意事項

  • WebSocket 端口固定為 2233,可透過環境變數 NAVIS_MCP_PORT 調整
  • 所有命令在 Navisworks 主執行緒中序列化執行,不會有並發衝突
  • Plugin DLL 部署到 C:\Program Files\Autodesk\Navisworks Manage 2025\Plugins\NavisworksMCP\
  • 日誌存放在 %APPDATA%\NavisworksMCP\Logs\

授權

MIT License

from github.com/shuotao/NAVISWORK_MCP

Установка NavisworksMCP

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/shuotao/NAVISWORK_MCP

FAQ

NavisworksMCP MCP бесплатный?

Да, NavisworksMCP MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для NavisworksMCP?

Нет, NavisworksMCP работает без API-ключей и переменных окружения.

NavisworksMCP — hosted или self-hosted?

Self-hosted: сервер запускается локально на твоей машине командой из раздела установки.

Как установить NavisworksMCP в Claude Desktop, Claude Code или Cursor?

Открой NavisworksMCP на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare NavisworksMCP with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории ai