English · Tiếng Việt · 简体中文 · 日本語
nwd-mcp is a professional-grade Model Context Protocol (MCP) gateway for Autodesk Navisworks Manage automation. It enables AI agents to query, inspect, navigate, and script Autodesk Navisworks Manage desktop sessions locally over stdin/stdout.
- Supported Host: Autodesk Navisworks Manage only. (Freedom and Simulate are not supported).
- Supported Versions: 2022, 2023, 2024, 2025, 2026, and 2027.
- Two-Process Model: Lightweight
.NET 8console server communicating with a version-specific in-process plug-in. Wire transport is TCP NDJSON over loopback for every supported year (2022–2027); all six plug-in shells target.NET Framework 4.8/net48. (Unlike the rest of the bimwright family, nwd-mcp does not use Named Pipe transport — the loopback-TCP convention applies uniformly across all versions.) - Security First: Per-session random cryptographic token validation, loopback-only binding for the TCP transport, and absolute file path sanitization in model responses.
- Multi-Instance Routing: Automatically detects multiple running Navisworks Manage instances and supports switching targets dynamically.
| Component | Status |
|---|---|
| MCP gateway server (.NET 8) | ✅ Builds warning-clean (Debug + Release) |
| Unit tests (45 xUnit) | ✅ All passing |
| Plug-in handler implementations | ✅ Verified against a live Navisworks Manage session |
| Plug-in projects (net48) | ✅ Compile against the Navisworks Manage SDK |
Note: The plug-in handler layer uses real Navisworks .NET API calls (not stubs or fabricated data) and has been exercised against a live Navisworks Manage instance. See walkthrough.md for the first-run checklist.
Phase 1 provides exactly 30 tools when all toolsets are enabled. Every tool uses the nwd_* prefix.
nwd_list_available_targets— List all active discovered Navisworks sessions.nwd_get_current_target— Report which session the server is currently pointed at.nwd_switch_target— Point the gateway at a different active session.
nwd_health_check— Check active session status and heartbeat.nwd_get_document_info— Retrieve active document name, file path, and model count.nwd_get_model_statistics— Retrieve counts of elements, models, and selections.nwd_get_model_tree— Retrieve a bounded model tree node hierarchy.nwd_get_item_properties— Retrieve property categories and property lists for an element.nwd_batch_get_properties— Retrieve properties for multiple elements at once.nwd_find_items— Query elements using advanced property/category filters.nwd_find_items_by_name— Search elements by display name.
nwd_get_current_selection— Retrieve element IDs of the active user selection.nwd_clear_selection(Write) — Clear the active selection.nwd_select_items_by_search(Write) — Select items matching property/name filters.
nwd_list_sets— Retrieve selection and search sets, recursing folders.nwd_get_selection_set_items— Retrieve elements inside a set.nwd_execute_search_set(Mixed) — Execute a search set; optionally select matches.
nwd_list_viewpoints— Enumerate saved viewpoints and folders.nwd_get_current_viewpoint— Retrieve current camera and view state.nwd_goto_viewpoint(Write) — Navigate the viewport camera to a saved viewpoint.nwd_save_viewpoint(Write) — Save the active view as a named viewpoint.
nwd_hide_items(Write) — Hide/show specified elements.nwd_unhide_all(Write) — Reset all hidden elements to visible.
nwd_send_code(Write, Opt-in) — Compile and execute in-process C# code against the Navisworks API.
nwd_list_baked_tools— List all verified compiled reusable tools.nwd_run_baked_tool(Write) — Run an accepted baked tool by name with parameters.nwd_list_bake_suggestions— List adaptive workflow suggestions.nwd_accept_bake_suggestion(Write) — Validate, compile, and deploy a suggested tool.nwd_dismiss_bake_suggestion(Write) — Dismiss/snooze an active suggestion.nwd_create_bake_issue_draft— Generate a draft GitHub issue for requested tools.
Strict read-only mode can be enforced via the --read-only flag or the BIMWRIGHT_NWD_READ_ONLY=1 environment variable.
- All write-capable toolsets are omitted from registration.
- Mixed tools (e.g.
nwd_execute_search_set) are modified to force read-only parameter bounds (select=false) and output aread_only_enforcedresponse marker. - The total read-only tool surface is exactly 20 tools.
Dynamic C# scripting (nwd_send_code) is disabled by default. The MCP server exposes it only when booted with --enable-send-code or BIMWRIGHT_NWD_ENABLE_SEND_CODE=1 — this server-side gate is the authoritative control that prevents the tool from being registered. The plug-in additionally reads BIMWRIGHT_NWD_PLUGIN_ENABLE_SEND_CODE=1 from its environment as a second, documented opt-in signal.
ToolBaker sqlite storage (bake.db) and usage audit logs (audit.jsonl) are persisted locally under:
%LOCALAPPDATA%\Bimwright\nwd-mcp\baked\
Autodesk Navisworks API DLLs are not redistributed in this repository.
- Server and Tests: Can be built and run on any machine without Navisworks.
dotnet test tests\Bimwright.Nwd.Tests\Bimwright.Nwd.Tests.csproj -c Debug - Plug-In Compilation: Requires a local Navisworks Manage installation.
If Navisworks Manage is installed in a non-default path, override the hint property:
dotnet build src\plugin-navis26\Bimwright.Nwd.Plugin.Navis26.csproj -c Debug /p:NavisworksInstallDir="C:\Program Files\Autodesk\Navisworks Manage 2026"
dotnet build src\plugin-navis26\Bimwright.Nwd.Plugin.Navis26.csproj -c Debug /p:NavisworksInstallDir="D:\Autodesk\Navisworks 2026"
Hand-forged MCP gateways for the AEC toolchain — one architecture, predictable / auditable / reversible:
- rvt-mcp — Autodesk® Revit®
- dwg-mcp — Autodesk® AutoCAD®
- nwd-mcp — Autodesk® Navisworks®
- ipt-mcp — Autodesk® Inventor®
- bim-wiki — Vietnamese-first BIM knowledge base
Apache-2.0. See LICENSE for details.
Navisworks and Autodesk are registered trademarks of Autodesk, Inc. bimwright is an independent open-source project and is not affiliated with, sponsored by, or endorsed by Autodesk, Inc.
