scanbimlabs avatar

Revit MCP

io.scanbimlabs/revit-mcp

Connects Claude to Autodesk Revit models through the APS (Autodesk Platform Services) API. You get programmatic access to building elements, their parameters, schedules, clash detection results, and can trigger IFC exports without opening the Revit desktop client. Useful when you're analyzing model data, debugging parameter issues, or automating documentation tasks where you'd normally need to fire up Revit just to check a few values or run a schedule. The streamable HTTP transport means it works through Claude's web interface without local setup.

tools
8
transport
HTTP
last updated
Apr 12, 2026

Install

From registry metadata
$ npx add-mcp https://revit-mcp.itmartin24.workers.dev/mcp --name revit-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 revit-mcp https://revit-mcp.itmartin24.workers.dev/mcp

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

Tools

Verified live · 8 tools

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

revit_uploadWhen to use: Ingest a Revit (.rvt / .rfa / .rte / .rft) file into Autodesk Platform Services by downloading it from a publicly reachable URL, uploading it to an OSS bucket, and starting an SVF2 translation so downstream revit_* tools can read elements, parameters, sheets, and...3 params

When to use: Ingest a Revit (.rvt / .rfa / .rte / .rft) file into Autodesk Platform Services by downloading it from a publicly reachable URL, uploading it to an OSS bucket, and starting an SVF2 translation so downstream revit_* tools can read elements, parameters, sheets, and...

Parameters* required
file_name*string
Original file name including the Revit extension (.rvt, .rfa, .rte, .rft). Used as the OSS object key; non-alphanumeric characters are sanitized to underscores.
file_url*string
Public HTTPS URL the worker can fetch the Revit file from. Must return 200 with the raw .rvt bytes (no auth gate, no HTML redirect). Max 100MB for direct upload.
project_namestring
Optional human-readable project label echoed back in the response for bookkeeping. No effect on APS processing.
revit_get_elementsWhen to use: After a Revit model has finished translating, fetch the first ~100 elements belonging to a Revit category (e.g. Walls, Doors, Windows, Structural Columns) with their objectid, name, externalId, and property bag. When NOT to use: Do not call before translation comp...2 params

When to use: After a Revit model has finished translating, fetch the first ~100 elements belonging to a Revit category (e.g. Walls, Doors, Windows, Structural Columns) with their objectid, name, externalId, and property bag. When NOT to use: Do not call before translation comp...

Parameters* required
category*string
Revit category name to filter on (case-insensitive substring match). Use canonical Revit category names like Walls, Doors, Windows, Structural Columns, Ducts, Pipes, Mechanical Equipment.
model_id*string
Base64url-encoded URN of the translated Revit model (returned from revit_upload as model_id/urn). Always begins with 'dXJu' (base64 of 'urn:').
revit_get_parametersWhen to use: Enumerate the Revit parameters (type + instance) that appear on elements in a given category, or on one specific element by objectid. Returns unique values per parameter and how many elements carry it — ideal for schema discovery before building a schedule. When N...3 params

When to use: Enumerate the Revit parameters (type + instance) that appear on elements in a given category, or on one specific element by objectid. Returns unique values per parameter and how many elements carry it — ideal for schema discovery before building a schedule. When N...

Parameters* required
category*string
Revit category to filter on (case-insensitive substring match). Ignored when element_id is supplied.
element_idstring
Optional APS Model Derivative objectid of a single element to inspect. When provided, overrides category filtering and returns parameters only for that element.
model_id*string
Base64url-encoded URN of the translated Revit model (returned from revit_upload). Always begins with 'dXJu'.
revit_run_scheduleWhen to use: Build a tabular, spreadsheet-style schedule (rows = elements matching a keyword, columns = up to 15 shared parameters) from a translated Revit model — useful for Door Schedules, Wall Schedules, Room Schedules, and QA/QC exports. When NOT to use: Do not use when yo...2 params

When to use: Build a tabular, spreadsheet-style schedule (rows = elements matching a keyword, columns = up to 15 shared parameters) from a translated Revit model — useful for Door Schedules, Wall Schedules, Room Schedules, and QA/QC exports. When NOT to use: Do not use when yo...

Parameters* required
model_id*string
Base64url-encoded URN of the translated Revit model. Always begins with 'dXJu'.
schedule_name*string
Category name or keyword used to select rows (case-insensitive substring match on Category/name). Common examples: Walls, Doors, Windows, Rooms, Furniture, Mechanical Equipment.
revit_clash_detectWhen to use: Perform a lightweight clash analysis between two Revit categories (e.g. Mechanical Equipment vs Structural Framing) using bounding-box overlap where available, falling back to shared-Level proximity, then annotate with any matching VDC rules stored in the D1 datab...3 params

When to use: Perform a lightweight clash analysis between two Revit categories (e.g. Mechanical Equipment vs Structural Framing) using bounding-box overlap where available, falling back to shared-Level proximity, then annotate with any matching VDC rules stored in the D1 datab...

Parameters* required
category_a*string
First Revit category for the pairwise clash check (case-insensitive substring match). Typical MEP/structural examples: Mechanical Equipment, Ducts, Pipes, Cable Trays.
category_b*string
Second Revit category to compare against category_a. Often a structural/architectural discipline when category_a is MEP.
model_id*string
Base64url-encoded URN of the translated Revit model. Always begins with 'dXJu'.
revit_export_ifcWhen to use: Kick off a Model Derivative translation of a previously uploaded Revit URN into IFC (IFC2x3 Coordination View 2.0 by default) so the model can be exchanged with non-Autodesk tools (Solibri, BIMcollab, Tekla, openBIM workflows). When NOT to use: Do not use for SVF/...2 params

When to use: Kick off a Model Derivative translation of a previously uploaded Revit URN into IFC (IFC2x3 Coordination View 2.0 by default) so the model can be exchanged with non-Autodesk tools (Solibri, BIMcollab, Tekla, openBIM workflows). When NOT to use: Do not use for SVF/...

Parameters* required
include_propertiesboolean
Whether to include Revit property sets in the IFC output. true -> IFC2x3 Coordination View 2.0 (with psets); false -> minimal IFC2x3 geometry.default: true
model_id*string
Base64url-encoded URN of the translated Revit model to export to IFC. Always begins with 'dXJu'.
revit_get_sheetsWhen to use: Enumerate the drawing sheets (title blocks with sheet number + sheet name like 'A-101: First Floor Plan') published from a translated Revit model, so an agent can pick which sheet to render, review, or cross-reference. When NOT to use: Do not use to list model vie...1 params

When to use: Enumerate the drawing sheets (title blocks with sheet number + sheet name like 'A-101: First Floor Plan') published from a translated Revit model, so an agent can pick which sheet to render, review, or cross-reference. When NOT to use: Do not use to list model vie...

Parameters* required
model_id*string
Base64url-encoded URN of the translated Revit model whose sheets you want to list. Always begins with 'dXJu'.
revit_get_viewsWhen to use: Return every view (both 2D — floor plans, ceiling plans, elevations, sections, sheets — and 3D — default {3D}, perspective views, isometric views) in the translated Revit model, including each view's GUID, name, role, and whether it is the master view. When NOT to...1 params

When to use: Return every view (both 2D — floor plans, ceiling plans, elevations, sections, sheets — and 3D — default {3D}, perspective views, isometric views) in the translated Revit model, including each view's GUID, name, role, and whether it is the master view. When NOT to...

Parameters* required
model_id*string
Base64url-encoded URN of the translated Revit model whose views you want to list. Always begins with 'dXJu'.

Sponsors

Details

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

More from scanbimlabs