scanbimlabs avatar

Navisworks MCP

io.scanbimlabs/navisworks-mcp

This connects Claude to Autodesk's Navisworks coordination platform through the APS (Autodesk Platform Services) API. You get programmatic access to clash detection reports, model viewpoints, and object data from your coordination workflows. Reach for this when you need to query clash status, extract coordination issues, or pull specific model element properties without opening the desktop application. It's particularly useful for automating reporting workflows or building chat interfaces over your coordination data. The server runs as a Cloudflare Worker and uses streamable HTTP transport.

tools
5
transport
HTTP
last updated
Apr 12, 2026

Install

From registry metadata
$ npx add-mcp https://navisworks-mcp.itmartin24.workers.dev/mcp --name navisworks-mcp

Run in your terminal. add-mcp asks which agents to add it to (Claude Code, Codex, Cursor and more). Add -g to install it for every project.

Review the command, arguments and environment values before installing. MCP servers run with your local permissions.

Other ways

Claude Code

$ claude mcp add --transport http navisworks-mcp https://navisworks-mcp.itmartin24.workers.dev/mcp

Run in your terminal. Add --scope user to make it available in every project.

Tools

Verified live · 5 tools

Verified live against the running server on Nov 6, 2026.

nwd_uploadUpload a Navisworks file (.nwd/.nwf/.nwc) to Autodesk Platform Services (APS) Object Storage and start an SVF2 translation job so the model becomes queryable by the other nwd_* tools. When to use: at the start of a coordination workflow — e.g. the GC hands off a federated NWD...3 params

Upload a Navisworks file (.nwd/.nwf/.nwc) to Autodesk Platform Services (APS) Object Storage and start an SVF2 translation job so the model becomes queryable by the other nwd_* tools. When to use: at the start of a coordination workflow — e.g. the GC hands off a federated NWD...

Parameters* required
file_name*string
Logical filename for the OSS object. Must end in .nwd, .nwf, or .nwc (case-insensitive) so APS picks the correct translator. Avoid spaces and non-ASCII — the worker sanitizes to [A-Za-z0-9._-]. Fol...
file_url*string
Publicly reachable HTTPS URL from which the worker will GET the Navisworks file bytes. Must return the raw binary (not an HTML landing page). Pre-signed S3 URLs, ACC/BIM360 signed-resource URLs, an...
project_idstring
Optional free-form project label stored alongside the upload record for caller-side correlation. Not sent to APS. Typical values: ACC project GUID, internal job number, or short slug.
nwd_get_clashesDetect geometric/logical clashes between two element sets in an already-translated Navisworks model. Uses APS Model Derivative property extraction + same-level proximity heuristics, optionally augmented by VDC rules stored in D1 (table vdc_rules). When to use: when coordinatin...4 params

Detect geometric/logical clashes between two element sets in an already-translated Navisworks model. Uses APS Model Derivative property extraction + same-level proximity heuristics, optionally augmented by VDC rules stored in D1 (table vdc_rules). When to use: when coordinatin...

Parameters* required
category_astring
First element-set filter, case-insensitive substring match against each element's Revit/Navisworks Category. Common values: "Mechanical", "Ducts", "Pipes", "Plumbing", "Electrical", "Structural Fra...
category_bstring
Second element-set filter, same semantics as category_a. Must be supplied together with category_a to take effect — supplying only one is ignored in favor of auto-split. Provide both to also look u...
clash_typestring
Clash severity class. "hard" = solid-solid interference (e.g. duct through beam) — returns severity:critical. "soft" = clearance/tolerance violations (e.g. MEP within 50mm of structure) — returns s...one of hard · soft · all
model_id*string
Base64url-encoded URN of the translated Navisworks model, exactly as returned by nwd_upload.model_id (or the urn field). Do NOT re-encode. Starts with "dXJuOmFkc2sub2JqZWN0czpvcy5vYmplY3Q6" for OSS...
nwd_export_reportBuild a coordination report for a translated Navisworks model: translation status/progress, derivative outputs, available views (2D sheets / 3D viewables), total element count, and a per-category element breakdown. Doubles as the canonical way to poll translation status after...2 params

Build a coordination report for a translated Navisworks model: translation status/progress, derivative outputs, available views (2D sheets / 3D viewables), total element count, and a per-category element breakdown. Doubles as the canonical way to poll translation status after...

Parameters* required
formatstring
Output shape. "json" (default) returns the full structured report object including derivatives[], views[], category_breakdown. "summary" still returns the same keys — the parameter is preserved for...one of json · summary
model_id*string
Base64url-encoded URN of the translated Navisworks model as returned by nwd_upload. Same value used by the other nwd_* tools.
nwd_get_viewpointsList saved viewpoints / camera positions and top-level view containers for a translated Navisworks model. Pulls the metadata view list and enriches each 3D view with its first two levels of the object tree (viewpoint folders typically live there in NWD files). When to use: whe...1 params

List saved viewpoints / camera positions and top-level view containers for a translated Navisworks model. Pulls the metadata view list and enriches each 3D view with its first two levels of the object tree (viewpoint folders typically live there in NWD files). When to use: whe...

Parameters* required
model_id*string
Base64url-encoded URN of the translated Navisworks model as returned by nwd_upload.
nwd_list_objectsList elements (objects) in the translated Navisworks model with their objectid, name, externalId, and full property bag, optionally filtered by a case-insensitive keyword matched against name and Category. When to use: when answering "how many VAV boxes are on Level 3?", "list...2 params

List elements (objects) in the translated Navisworks model with their objectid, name, externalId, and full property bag, optionally filtered by a case-insensitive keyword matched against name and Category. When to use: when answering "how many VAV boxes are on Level 3?", "list...

Parameters* required
filterstring
Optional case-insensitive substring. Matches if present in the element's name OR its Category property. Use Revit category names ("Ducts", "Pipes", "Structural Columns", "Walls") or mark/type fragm...
model_id*string
Base64url-encoded URN of the translated Navisworks model as returned by nwd_upload.

Sponsors

Details

Transport
HTTP
Registry
MCP registry, active
Tools verified
Nov 6, 2026

More from scanbimlabs