Model MCP
Connect an MCP client to a live Revit project to inspect, review, visualize, edit, batch-process, and report on models with safety gates and undo support.
Inspect: check connection, Revit instances, open documents, active UI state, document metadata, views, sheets, schedules, elements, parameters, warnings, and relations.
Review quality: run model health checks, parameter-fill checks, family audits, rule-based model audits, snapshots, issue registers, and audit/snapshot reports.
Check links and datums: inspect link status and shared coordinates; compare or align grids and levels; link CAD, build walls from CAD, and check/export Navisworks NWC settings.
Visualize and export: activate views, select/show/isolate elements, override graphics, capture highlighted PNGs, export views/model files (PDF, DWG, IFC, CSV), and export NWC.
Edit models safely: move, rotate, copy, mirror, delete, change types, set/update parameters; create walls/MEP runs; load/place/edit families; create/duplicate views, apply templates, create sheets, place views, tag elements, create schedules, save/sync/open/close documents, and undo MCP actions.
Automate: look up Revit API types/members, execute C#, save/run/delete approved custom tools, run action batches as one undo step, and process many models.
Batch and report: start persistent read-only batch collection, poll/cancel/fetch batch results, build local Excel reports, and manage long-running jobs.
Stay controlled: use dry runs, confirmation tokens, workstation read-only lock, job polling/cancellation, path redaction, and local/SSH/HTTP transport options.
Connects to live Autodesk Revit projects to query, review, and modify BIM models. It supports reading model information, elements, views, schedules, warnings, links, and coordinates; editing elements, parameters, families, sheets, and views; exporting PDF/DWG/IFC/CSV/NWC; and performing model health checks and batch operations.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Model MCP What model is open, and which level has the most room area?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Model MCP for Autodesk® Revit® connects Claude Desktop, Claude Code or any MCP client that starts a stdio server to a live Revit project. Ask questions about the model, check it, and change it in plain language. Committed transactional model edits create one named Undo entry in Revit. Read-only mode is one switch away.
Install with an AI agent
On Windows, paste this prompt into Claude Code, Codex, Cursor, or another agent:
Install Model MCP for Revit from https://github.com/sharafutdinovdi/revit-model-mcp. Follow docs/agent-install.md exactly.
The agent install guide uses the published MSI and client registration, with no checkout or .NET SDK.
The one-command installer arrives with the next release; the current release does not contain install.ps1.
Related MCP server: revit-mcp
Quick start
You need two parts: the add-in inside Revit on Windows, and the server next to your MCP client. Details and requirements are in requirements and installation. Tested with Claude Desktop over SSH; other clients are listed on the tested clients page.
1. Install the add-in.
On the Windows machine with Revit, download RevitModelMcp-<version>-SingleUser.msi (current user) or RevitModelMcp-<version>-MultiUser.msi (all users) from the latest release.
Install only one of them.
WinGet publication is pending.
The submission is open, and the package is not yet in the catalog.
Use an MSI from the latest release until it is accepted.
Keep Revit closed during installation, then start Revit and open a model. Revit asks whether to load the add-in, because release builds are not code-signed yet.
2. Add the server to your MCP client. In Revit, Model MCP > Model MCP > Connect AI app registers the bundled server in Claude Desktop, Cursor, VS Code, or Codex (the ChatGPT app or codex CLI); Claude Code gets a copy-paste command. The MSI includes the server executable, so this path needs no separate Python or uv installation.
If you prefer the PyPI server: Install uv, then register the server. For Claude Code on the same Windows machine:
claude mcp add revit-model-mcp -e REVIT_MCP_HOST=local -e REVIT_MCP_REDACT_PATHS=1 -- uvx revit-model-mcpFor Claude Desktop, open the revit-model-mcp-<version>.mcpb bundle from the latest release, or add this to its MCP configuration:
{
"mcpServers": {
"revit-model-mcp": {
"command": "uvx",
"args": ["revit-model-mcp"],
"env": {
"REVIT_MCP_HOST": "local",
"REVIT_MCP_REDACT_PATHS": "1"
}
}
}
}On macOS or Linux, use a remote workstation instead of REVIT_MCP_HOST=local.
The Claude Desktop bundle page explains its settings form.
3. Ask a first question.
Restart the client, keep a model open in Revit and ask: "Call revit_ping, then tell me which model is open."
success: true means both parts are connected.
From a clone, uv run --directory server revit-model-mcp runs the same server without installing the package.
For updates, the release add-in checks GitHub daily and notifies by default; the PyPI server checks PyPI, or install the newer MSI (updates). Report bugs in Issues, ask questions in Discussions, and report vulnerabilities through SECURITY.md.
Why Model MCP
Model edit controls. Transactional model edits create one named Undo entry, and one workstation lock enables read-only mode.
Confirmation first. Saving, syncing and other irreversible steps wait for your explicit approval.
Installs like normal software. MSI installers, with deployment guides for SCCM, Intune and Group Policy.
Works from a Mac. MCP stdio runs through SSH to the Windows workstation, so no port opens.
Features in 2.0
Model MCP ribbon tab. The product menu contains About, Check for updates, and Settings. The panel provides Connect AI app, Activity, My tools, Read-only, Help, Report issue, and Support developer. After a channel permission refusal, Activity explains the problem. Model MCP > Repair channel permissions offers a confirmed repair of the reviewed folder permissions. See channel permissions. Update checks depend on the release channel. Buttons have contextual help and themed tooltips. See the ribbon guide.
Workstation read-only lock. The ribbon and
revit_set_read_onlycontrol one lock across running Revit versions for the Windows user. Chat unlock requires explicit confirmation. Machine policy remains enforced.Model audits.
revit_model_auditchecks one model against YAML, JSON, inline rules, or a builtin pack. Saved results support history comparisons.revit_audit_reportproduces XLSX and HTML reports. See model audit.Sheet inspection.
revit_list_sheetsreads sheets, title blocks, revisions, placed views, and unplaced views.Revit API lookup.
revit_api_lookupreads public types and members from the running Revit API before C# execution.Progress notifications. Clients that supply a progress token receive queue state, Revit API availability, and batch step counters during long requests. See progress notifications.
Document tab highlight. A border marks the document handling MCP work and clears after completion. The ribbon guide covers timing and settings.
Grouped C# authoring.
revit_execute_codeandrevit_run_toolaccepttransaction="group"for procedures that need their own transactions or edit scopes. The runner keeps the group within one Undo entry and rolls it back for dry runs or failures.Reusable skills. Coordinator, daily QA, sheet set, and ISO 19650 issue register workflows ship in the repository. See prompts and skills.
Upgrading from 1.x
REVIT_MCP_READ_ONLY is no longer used.
Remove it from client configuration and set the workstation lock with the Revit ribbon or revit_set_read_only.
The lock applies across clients and running Revit versions for the Windows user.
Chat unlock requires explicit confirmation, and administrator policy remains enforced.
See read-only mode and the 2.0.0 changelog.
Try these prompts
Paste any of these into your MCP client with a model open in Revit. The last column names the tools each prompt uses.
Goal | Prompt | Tools |
Review | "Give me an overview of the open model: levels, element counts by category, links and the biggest problems." |
|
Health check | "Run a health check before we issue this model and list what fails." |
|
Find and show | "Find the doors on this floor and show me where they are in 3D." |
|
Highlight | "Colour those doors red on the L2 plan and fade everything else." |
|
Change, then undo | "Move the selected elements 500 mm along X. Preview it first, then do it, then undo it." |
|
Batch over a folder | "Collect read-only snapshots of every model in this folder and tell me which ones have parameters left empty." |
|
ISO 19650 register | "Check this model against our EIR and write an issue register to Excel with element snapshots." |
|
Export | "Export the L2 plan as PDF, and a Navisworks file of the whole model." |
|
Run from a Mac | "Call revit_ping and tell me which model is open on the workstation." |
|
What it can do
The tables list every tool by name; the tool reference has arguments, units and limits.
Review a model
Read the model, find problems and show them in Revit. Reads change nothing in the document.
Task | Tools |
Check the connection and open documents |
|
Find and count elements |
|
Read views and schedules |
|
Read warnings |
|
Check model quality |
|
Get a picture |
|
Point at things in Revit |
|
Coordinate links and datums
Compare and align grids and levels with linked models, inspect links and shared coordinates, and prepare CAD and Navisworks hand-overs.
Task | Tools |
Inspect links and coordinates |
|
Compare and align datums |
|
Work with CAD links |
|
Remove links |
|
Navisworks export |
|
Change the model safely
Edit elements, families, views and sheets.
Committed transactional model edits create one named Undo entry.
High-risk MCP calls use a client token handshake.
Ribbon runs do not use the client token handshake: a person at the workstation reviews the revision in a Revit dialog on first use per session and confirms action runs.
All other execution gates are identical.
ExecuteCode=off or ToolDeny for run-tool disables both saved-tool paths; there is no separate switch for local runs only.
The same machine-policy rule applies in the store channel.
Labels and last used arguments are stored unencrypted in the user's profile; secrets do not belong in tool arguments or labels.
See safety.
Task | Tools |
Edit elements |
|
Control the workstation lock |
|
Save, discover, review, run, and delete approved procedures |
|
Run many steps as one undo |
|
Create elements |
|
Work with families |
|
Work with views and sheets |
|
Tag elements and create schedules |
|
Open, save and close documents |
|
Export files |
|
Look up the API and run C# in Revit |
|
Undo |
|
Process many models at once
Run the same checks, edits, exports and saves over a folder of models, or collect read-only snapshots from many models in a persistent run.
Long jobs return a jobId that survives client restarts.
Task | Tools |
Open, change, export and save many models |
|
Collect snapshots without changing models |
|
Follow and cancel long jobs |
|
Write an issue register with snapshots
Review a model against your requirements and write an Excel register with severity totals, element rows and element snapshots. Snapshots also let you audit models later without Revit running.
Task | Tools |
Take a snapshot of a model |
|
Write an issue register |
|
Build a report from snapshots |
|
Report saved audit results |
|
My tools
Successful C# procedures can be saved as named tools with validated parameters after explicit source review and confirmation. The My tools ribbon pulldown runs approved tools locally; Settings offers Run, Show code, display labels, icons, ribbon visibility and confirmed deletion. Local runs and MCP clients share the execution, read-only lock, policy and Undo pipeline; local review and MCP token confirmation remain independent. See My tools for saving, running, reviewing, deleting, and the security model.
Prompts and skills
The prompts and coordinator guide describes read-only model review workflows.
For Claude Code, copy skills/revit-model-coordinator into ~/.claude/skills/.
For Claude Desktop, zip that skill folder and upload it as a skill.
The hand-written ISO 19650 issue register skill reviews a model against EIR/BEP requirements and writes an Excel register with element snapshots.
Install it the same way: copy skills/iso19650-issue-register into ~/.claude/skills/, or zip the folder and upload it in Claude Desktop.
The daily QA skill checks model health, warnings, links, parameters, and families without changing the model. The family authoring skill creates and checks families against company rules, with Revit flex, hosting, and connector evidence. The family authoring evaluation profile supports controlled workstation checks. The evaluation guide documents verifier coverage and cases that still need calibration. No live comparative result is published. The sheet set skill resolves a sheet list, confirms the layout, and creates sheets with placed views. Install these folders with the same copy or ZIP procedure.
Safety
Actions are on by default. The workstation read-only lock refuses ordinary actions across clients and running Revit versions for the Windows user. Enable it with the Read-only ribbon button or
revit_set_read_only. Chat unlock requires explicit confirmation. Action tools stay listed. User locks returnerrorCode: "read_only"; enforced machine policy returnspolicy_blocked. Policy overrides the user lock. See actions.One Undo entry per transactional model edit. Committed edits appear in Revit's Undo list and the Activity pane with a summary. Session operations, saves, synchronization, exports, and link removal have separate limits. Link removal cannot be undone.
revit_undo_lastworks only while the latest Revit change remains eligible; temporary isolation also makes it ineligible.Confirmation tokens. For MCP calls, tokens guard saves, synchronization, committed C#, real link removal, saved-tool saves and deletions, first saved-tool runs per Revit session, and every committed action-mode saved-tool run. Conditional gates cover destructive closes, large deletions, existing-file overwrites, and batch writes or code. See confirmation exceptions for dry runs and detached documents. The first call changes nothing and returns confirmation text. The AI app returns the token on retry. Tokens are single use and expire after five minutes. Ribbon runs use local revision review and action confirmation instead of MCP tokens.
Dry runs. Model-changing tools such as
revit_move,revit_delete,revit_run_actions,revit_export, andrevit_process_modelsacceptdry_runto preview the result without committing it. The first saved-tool run per name and revision in each Revit process still requires confirmation for read mode and dry runs. Execution tokens binddry_runintent; a preview token cannot authorize a commit.Summaries and verification. Completed actions report a summary. Model-editing actions include verification where supported. A timeout or failed verification can follow a committed change; inspect Revit before retrying. Recover a lost reply with the original request ID through
revit_jobs; progress notifications are not final results. Missing or expired retry journals refuse re-execution instead of repeating an uncertain action.Path redaction.
REVIT_MCP_REDACT_PATHS=1hides directories in response path fields. Names, parameter values, and errors can still contain sensitive data.Unreachable workstation.
errorCode: "transport_unavailable"withretryable: truemeans the transport cannot reach Revit. If an action may have been submitted, inspect its job and the model before resubmitting. See errors and refusals.HTTP. Direct requests require the bearer token except for
/health. Reads and authenticatedset-read-onlyremain available while locked. Ordinary actions are refused by either the user lock or enforced policy.Files and completeness. Client report and download destinations are write-new, including when another process creates the destination during publication. Read completeness includes
skipped,skippedCount, nested diagnostics,partial,truncatedand paging indicators. See the contract evidence for implementations and workstation-only validation limits.
For unattended runs, switch on read-only mode. confirm_token is a two-step handshake with the AI app. The AI app is expected to show the action to you; Model MCP does not show its own dialog. The token does not prove human approval.
A confirmation token guards against mistakes and injected instructions, but a client that confirms by itself can send it back. See actions for gates, exceptions and verification failures, security details for authentication and privacy boundaries, and SECURITY.md to report a vulnerability.
Remote workstations
Local Windows clients use REVIT_MCP_HOST=local under the Revit user's account.
Remote clients run the whole server on the workstation over SSH, as the same Windows user that runs Revit.
Install it there once with uv tool install revit-model-mcp, then register ssh as the command:
{
"mcpServers": {
"revit-model-mcp": {
"command": "ssh",
"args": ["revit-pc", "revit-model-mcp", "--redact-paths"]
}
}
}Replace revit-pc with the workstation's SSH host alias.
MCP stdio flows through the SSH session and the remote server uses the named pipe, so no port opens.
REVIT_MCP_HOST=ssh:<alias> (file channel over SSH) and HTTP through an SSH tunnel remain available; HTTP requires a bearer token except for /health and binds to loopback by default.
See transport setup.
Compatibility
Revit 2022 to 2027 on Windows 10 and 11.
The add-in targets .NET Framework 4.8 for Revit 2022-2024, .NET 8 for 2025 and 2026, and .NET 10 for 2027.
Every year builds, installs and runs live reads and actions.
The MSI bundles a server executable for Windows that needs no separate Python or uv installation.
The PyPI server needs Python 3.11 or newer and runs on Windows, macOS or Linux; uv can start it with uvx revit-model-mcp.
See validation evidence for dates and limits, and known gaps.
Privacy
Model MCP returns requested model data to the selected MCP client.
The bundle enables response path redaction by default.
The project has no telemetry.
The privacy policy covers collection, update checks, the AI client data flow, storage, retention and contact information.
The server checks for a newer stable release once a day; set REVIT_MCP_NO_UPDATE_CHECK=1 to opt out.
For administrators
The deployment guide covers silent MSI installs, SCCM, Intune, Group Policy, offline server installs and proxies. The policy reference lists every setting and its precedence. For security reviews, use the security whitepaper and the questionnaire answers. See also the MCP specifications, the tested clients and what Model MCP deliberately does not do.
Code signing policy
Release builds are not code-signed yet, so Revit asks whether to load the add-in after install and after each update.
Verify downloads with SHA256SUMS.txt and the build provenance attestation; see the code signing policy and download verification.
See automatic updates for update modes and installation.
Contributing and support
Documentation covers setup, tools and transport. Start with CONTRIBUTING.md, ask questions in Discussions, or report bugs and request features through the issue forms. CI runs the C# and Python test suites and builds the supported Revit configurations. If Model MCP saves you time, a :star: on GitHub helps other Revit users find it.
License
MIT, maintained by Dinar Sharafutdinov. See third-party notices for dependency licenses.
Trademarks
Autodesk and Revit are registered trademarks or trademarks of Autodesk, Inc., and/or its subsidiaries and/or affiliates in the USA and/or other countries. Model MCP is an independent project and is not affiliated with or endorsed by Autodesk.
Available Tools
89 toolsrevit_activate_documentActivate DocumentBRead-only
Activate an already open document by title or path reference.
Inputs: document (required), process_id. Returns: object
revit_activate_viewActivate ViewBRead-only
Activate a non-template view. Zoom to fit, preserve zoom, or frame element IDs.
Inputs: view (required), zoom, document, view_type, +2 more. Returns: object
revit_aggregate_elementsAggregate ElementsARead-onlyIdempotent
Summarize matching elements by one or two fields, with optional sum and average. Lengths use mm, areas m2, volumes m3. For area totals, group by level and select the area scheme. skipped means incomplete; skippedCount is the total skipped.
Inputs: group_by (required), view, level, phase, +10 more. Returns: object
revit_align_link_datumsAlign Link DatumsBDestructive
Align host grids and levels to a loaded link, with optional creation and rollback preview. Does not create a monitor relationship.
Inputs: link (required), kinds, prefix, suffix, +13 more. Returns: object
revit_api_lookupLook up Revit API types and membersARead-onlyIdempotent
Look up public Revit API types and members. The agent calls this before writing C# for an unfamiliar type. Results describe the running Revit's API version only. XML summaries are optional. skipped means incomplete; skippedCount is the total skipped.
Inputs: query (required), kind, limit, document, +4 more. Returns: object
revit_apply_view_templateApply View TemplateCDestructive
Apply a matching view template to one or more views.
Inputs: views (required), template (required), dry_run, document. Returns: object
revit_audit_reportBuild Audit ReportA
Write new XLSX and self-contained HTML reports from a local audit JSON file. Paths resolve on the server machine. Existing files are refused.
Inputs: audit (required), output (required), format. Returns: object
revit_batch_cancelCancel batch collectionB
Persist cancellation and prevent unstarted models from running.
Inputs: run_id (required). Returns: object
revit_batch_fetchFetch batch snapshotsB
Download completed snapshots to new local files without overwriting.
Inputs: run_id (required), output_dir (required). Returns: object
revit_batch_startStart batch collectionC
Start a persistent, read-only run over local, UNC or RSN models. open_timeout_minutes is the per-model open deadline (default 30, 45 when upgrading in memory).
Inputs: paths, years, folder, recursive, +2 more. Returns: object
revit_batch_statusBatch collection statusBRead-onlyIdempotent
Read durable run and model status after the initiating client exits.
Inputs: run_id (required). Returns: object
revit_build_reportBuild Snapshot ReportA
Build a local Excel report from snapshots without contacting Revit.
Inputs: output_path (required), snapshots_dir (required), findings, previous_dir. Returns: object
revit_cancel_jobCancel Action JobADestructive
Request cancellation of an action jobId. Process-models stops before the next model and marks unstarted models cancelled; a single running Revit operation finishes, and completed changes stay committed.
Inputs: job_id (required), document, process_id. Returns: object
revit_capture_elementsCapture ElementsA
Render a highlighted PNG that marks 1 to 500 elements, for issue evidence. Supports 3d or plan mode over local or SSH transport. The temporary view is rolled back. skipped means incomplete; skippedCount is the total skipped.
Inputs: element_ids (required), mode, document, padding_mm, +3 more.
revit_change_typeChange Element TypeADestructive
Change each element to one compatible type; family resolves duplicate type names. dry_run rolls back. Group members are reported in skipped.inGroup; the call is refused if every element is a group member.
Inputs: type_name (required), element_ids (required), family, dry_run, +1 more. Returns: object
revit_close_documentClose DocumentBDestructive
Close a background document. Needs confirm_token from a first call, which changes nothing.
Inputs: document (required), save, process_id, confirm_token. Returns: object
revit_close_viewsClose ViewsCRead-only
Close open UI views in the active document.
Inputs: views, process_id, keep_active. Returns: object
revit_compare_link_datumsCompare Link DatumsBRead-onlyIdempotent
Compare host grids and levels with one loaded Revit link. Changes nothing. skipped means incomplete; skippedCount is the total skipped.
Inputs: link (required), kinds, prefix, suffix, +7 more. Returns: object
revit_copyCopy ElementsADestructive
Create 1 to 100 successive copies at multiples of the model-axis offset in mm. dry_run rolls back. Group members are reported in skipped.inGroup; the call is refused if every element is a group member.
Inputs: dx_mm (required), dy_mm (required), element_ids (required), count, +3 more. Returns: object
revit_create_mep_runCreate MEP RunADestructive
Create connected duct, pipe, cable tray or conduit segments from model mm points. A missing Z uses the level elevation plus the kind's default offset. Unplaceable elbows are reported as unjoined pairs.
Inputs: kind (required), level (required), points_mm (required), dry_run, +8 more. Returns: object
revit_create_scheduleCreate ScheduleADestructive
Create a schedule for one category with the named fields in the given order, using Revit UI names such as Mark, Level or Count. filters keep rows by field, operator and value; sort orders and, with header or footer, groups rows. Lengths in mm, areas in m2, volumes in m3. itemized=false collapses identical rows. Returns viewId and the resolved fields; unknown names are listed in skipped. dry_run rolls back.
Inputs: fields (required), category (required), name, sort, +4 more. Returns: object
revit_create_sheetCreate SheetCDestructive
Create a sheet with the first loaded or a named title block.
Inputs: name (required), number (required), dry_run, document, +1 more. Returns: object
revit_create_viewCreate ViewBDestructive
Create a plan, section, 3D or drafting view. Unbounded 3D views show the whole model, shaded, fine detail. Box coordinates are model mm.
Inputs: kind (required), box, name, level, +8 more. Returns: object
revit_create_wallCreate WallBDestructive
Create a straight wall on a named level. XY endpoints and height are in mm; a null wall_type uses the first basic type.
Inputs: level (required), end_mm (required), start_mm (required), wall_type (required), +3 more. Returns: object
revit_deleteDelete ElementsADestructive
Delete elements and their Revit dependencies; the count includes dependents. dry_run returns the count. Above 500 elements including dependents a confirm_token from a first call is needed; revit_run_actions refuses such deletions.
Inputs: element_ids (required), dry_run, document, confirm_token. Returns: object
revit_delete_toolDelete My ToolCDestructive
Delete all revisions with confirm_token after a first confirmation challenge. No Undo. Uses a two-step AI app token handshake.
Inputs: name (required), confirm_token. Returns: object
revit_document_infoDocument InfoARead-onlyIdempotent
Read the active model's file name, Revit version, levels (elevations in mm), area schemes, worksets and view count. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, process_id, timeout_seconds. Returns: object
revit_documentsOpen DocumentsARead-onlyIdempotent
List every open document in one Revit process, including background documents. Linked documents are listed only when include_linked is set. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, process_id, include_linked, timeout_seconds. Returns: object
revit_duplicate_viewDuplicate ViewCDestructive
Duplicate a view, optionally with detailing or as a dependent view.
Inputs: view (required), mode, name, dry_run, +1 more. Returns: object
revit_edit_familiesEdit FamiliesBDestructive
Edit an open family in place, or named project families (exact names or ["*"]), one load cycle each. A dry run rolls back all changes. May commit; revit_jobs polls; retry repeats.
Inputs: operations (required), dry_run, document, families, +3 more. Returns: object
revit_element_detailsElement DetailsARead-onlyIdempotent
Read parameters and geometry of an element by Revit ID, with its type parameters and related warnings. Geometry is in model mm; roomCenterMm is a point inside the room. skipped means incomplete; skippedCount is the total skipped.
Inputs: element_id (required), document, process_id, timeout_seconds. Returns: object
revit_execute_codeExecute C# CodeADestructive
Run a C# body or public static Script.Execute(ScriptContext ctx) on the Revit thread. revit_api_lookup supplies API metadata. Auto owns a Transaction; group lets scripts own Transactions and edit scopes inside one Undo group. Close all scopes before returning; transaction="none" is refused. Needs confirm_token except dry_run, which rolls back. May commit; revit_jobs polls; retry repeats.
Inputs: code (required), dry_run, document, transaction, +2 more. Returns: object
revit_exportExport Model FilesADestructive
Save PDF, DWG, IFC or schedule CSV files to a folder the user names with output_dir on the Revit workstation; dry_run returns planned file names. Replacing existing files (overwrite=true) uses a two-step confirm_token handshake with the AI app. The AI app is expected to show the action to you; Model MCP does not show its own dialog. May commit; revit_jobs polls; retry repeats.
Inputs: format (required), views, sheets, dry_run, +8 more. Returns: object
revit_export_nwcExport Navisworks NWCBDestructive
Save an NWC file to a folder the user names through path on the Revit workstation; needs the Navisworks exporter. settings_xml applies exporter XML values, explicit arguments take precedence. Replacing an existing file (overwrite=true) uses a two-step confirm_token handshake with the AI app. The AI app is expected to show the action to you; Model MCP does not show its own dialog. May commit; revit_jobs polls; retry repeats.
Inputs: path (required), view, scope, dry_run, +20 more. Returns: object
revit_export_viewExport View to PNGA
Save a picture of the selected view as a PNG file in a folder the user names on the AI app computer. output_path names the new file; without it, a temporary folder is used. Existing files are refused. The active view and model stay unchanged. skipped means incomplete; skippedCount is the total skipped.
Inputs: view (required), document, pixel_size, process_id, +1 more. Returns: object
revit_family_auditAudit FamiliesARead-onlyIdempotent
Audit an open family or named project families without saving or loading changes. Project mode takes exact family names or ["*"]; family mode takes none. detail="summary" returns parameter counts and up to 20 unused parameter names; detail="full" returns all parameter metadata with group IDs and groupName labels. The wildcard audits the first 200 editable families sorted by name; data.skipped lists each remaining name and reason, with skippedCount. skipped means incomplete; skippedCount is the total skipped.
Inputs: detail, document, families, process_id, +1 more. Returns: object
revit_get_toolReview My ToolCRead-onlyIdempotent
Return approved source and schema without execution.
Inputs: name (required). Returns: object
revit_isolateIsolate ElementsARead-onlyIdempotent
Temporarily isolate element IDs in the active view; an empty list resets.
Inputs: element_ids (required), reset, document. Returns: object
revit_issue_registerIssue RegisterA
Write a new local .xlsx issue register with element snapshots and review documents. Takes 1 to 60 issues; captures at most 25 snapshots (by severity) within a 210-second budget, and failed snapshots become cell notes. Snapshots need local or SSH transport. Existing output files are refused. skipped means incomplete; skippedCount is the total skipped.
Inputs: issues (required), project (required), output_path (required), document, +2 more. Returns: object
revit_jobsList Revit JobsARead-onlyIdempotent
List recent jobs, or wait up to wait_seconds (0 to 50, default 40) for the result of an action jobId. Results stay on the workstation for 24 hours, across server restarts. skipped means incomplete; skippedCount is the total skipped.
Inputs: job_id, document, process_id, wait_seconds, +1 more. Returns: object
revit_link_cadLink CAD DrawingBDestructive
Link or import a DWG into a plan view on the Revit workstation. Returns CAD layers and extents in mm.
Inputs: path (required), link, view, level, +6 more. Returns: object
revit_links_statusLinks StatusARead-onlyIdempotent
Read RVT, CAD and image link status. Each list is capped at 100 entries; summary counts cover all links. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, process_id, timeout_seconds. Returns: object
revit_list_catalogList CatalogBRead-onlyIdempotent
List catalog names for one section: categories, family-types, levels, area-schemes, views, worksets, phases or parameters. name_contains filters names case-insensitively; limit bounds results (default 200, maximum 2000). Returns total before the limit and hasMore. skipped means incomplete; skippedCount is the total skipped.
Inputs: section (required), limit, document, process_id, +2 more. Returns: object
revit_list_instancesList InstancesARead-onlyIdempotent
List Revit processes with documentName, documentPath, revitVersion, processId and pluginResponding. Busy or unresponsive processes stay listed with pluginResponding=false. HTTP mode reports only its connected process.
Inputs: document. Returns: object
revit_list_relationsList RelationsBRead-onlyIdempotent
Read model object membership or dependencies. relation is level-rooms, area-scheme-elements or view-template-dependents (with source_name), or group-elements or nested-family (with source_id). skipped means incomplete; skippedCount is the total skipped.
Inputs: relation (required), document, source_id, process_id, +2 more. Returns: object
revit_list_sheetsList SheetsBRead-onlyIdempotent
List sheets with title blocks, revisions and placed view IDs, plus unplaced views. skipped means incomplete; skippedCount is the total skipped.
Inputs: limit, offset, document, process_id, +1 more. Returns: object
revit_list_toolsList My ToolsBRead-onlyIdempotent
List saved tools and schemas without source.
Inputs: no named parameters. Returns: object
revit_list_viewsList ViewsBRead-onlyIdempotent
List non-template views with id, name, type, level, scale and template. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, view_type, process_id, name_contains, +1 more. Returns: object
revit_list_warningsList WarningsARead-onlyIdempotent
Group model warnings by description text. warning_text with include_elements=true returns the elements of one group. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, process_id, warning_text, timeout_seconds, +1 more. Returns: object
revit_load_familyLoad FamiliesADestructive
Load workstation .rfa files in one undo entry. Existing families are skipped unless overwrite is true.
Inputs: paths (required), dry_run, document, overwrite, +2 more. Returns: object
revit_mirrorMirror ElementsADestructive
Mirror across a model X or Y parallel line through point_mm; copy keeps originals. dry_run rolls back. Group members, pinned, hosted and constrained elements are reported in skipped.inGroup, skipped.pinned, skipped.hosted and skipped.constrained and are not changed; the call is refused if every element is a group member.
Inputs: axis (required), point_mm (required), element_ids (required), copy, +2 more. Returns: object
revit_model_auditAudit the model against rulesA
Audit one model with local YAML or JSON rules, or pack:model-health by default. Reads only. Save immutable history on the server machine and compare with previous, a result path, or none. Unsupported evidence is not_assessed. The run is bounded to ten minutes. skipped means incomplete; skippedCount is the total skipped.
Inputs: save, rules, document, process_id, +3 more. Returns: object
revit_model_healthModel Health CheckB
Read model quality counts: project metadata, file size, counts, units and the ten most frequent warning groups. Unavailable metrics are null and listed in skipped. output_path also writes an .xlsx health report with up to five snapshots. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, process_id, output_path, timeout_seconds. Returns: object
revit_model_snapshotModel SnapshotARead-onlyIdempotent
Read a schema version 1 project snapshot for batch audits. Closed worksets can make the result incomplete. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, process_id, parameter_rules, timeout_seconds. Returns: object
revit_moveMove ElementsADestructive
Move elements by dx_mm, dy_mm and dz_mm on model axes. dry_run rolls back and returns the verification block. Group members, pinned, hosted and constrained elements are reported in skipped.inGroup, skipped.pinned, skipped.hosted and skipped.constrained and are not changed; the call is refused if every element is a group member.
Inputs: dx_mm (required), dy_mm (required), element_ids (required), dz_mm, +2 more. Returns: object
revit_new_documentNew DocumentCDestructive
Create a project or family from a template on the Revit workstation.
Inputs: kind, name, save_as, activate, +2 more. Returns: object
revit_nwc_settings_checkCheck NWC SettingsARead-onlyIdempotent
Parse a Navisworks exporter XML file on the Revit workstation without exporting. skipped means incomplete; skippedCount is the total skipped.
Inputs: settings_xml (required), document, process_id, timeout_seconds. Returns: object
revit_open_documentOpen DocumentADestructive
Open a local, UNC or RSN model. Central models open detached by default. Cloud paths are unsupported. May commit; revit_jobs polls; retry repeats.
Inputs: path (required), mode, audit, activate, +2 more. Returns: object
revit_override_graphicsHighlight ElementsBDestructive
Colour elements in selected model views; reset restores overrides saved in this Revit session.
Inputs: element_ids (required), fill, color, reset, +6 more. Returns: object
revit_parameter_fill_checkParameter Fill CheckARead-onlyIdempotent
Count filled, empty and missing parameters per parameter and category, with samples of empty and missing element IDs. Numeric zero counts as filled. skipped means incomplete; skippedCount is the total skipped.
Inputs: categories (required), parameters (required), view, level, +6 more. Returns: object
revit_pingCheck Revit ConnectionARead-onlyIdempotent
Check the connection to Revit without reading the model. Returns data="pong", even when no document is active. skipped means incomplete; skippedCount is the total skipped.
Inputs: document, process_id, timeout_seconds. Returns: object
revit_place_familiesPlace FamiliesCDestructive
Load optional families and place instances in one transaction and undo entry.
Inputs: load, dry_run, at_rooms, document, +3 more. Returns: object
revit_place_familyPlace FamilyADestructive
Place a loaded unhosted family on a named level. family is a name or Family: Type; a null type_name uses the embedded or first type. XY is in mm, rotation in degrees.
Inputs: x_mm (required), y_mm (required), level (required), family (required), +4 more. Returns: object
revit_place_views_on_sheetPlace Views on SheetBDestructive
Place views and schedules on a sheet. Coordinates are sheet mm.
Inputs: sheet (required), views (required), dry_run, document. Returns: object
revit_process_modelsProcess Many ModelsBDestructive
Open each model in the interactive session, run steps and C# code, export, save as requested, and close. In-place saves and code need a confirm_token from the preview response. dry_run replaces only code.transaction="none" with "auto" and reports the override in warnings. May commit; revit_jobs polls; retry repeats.
Inputs: code, open, save, paths, +10 more. Returns: object
revit_query_elementsQuery ElementsBRead-onlyIdempotent
Read a page of matching element rows. Lengths use mm, areas m2, volumes m3; optional geometry is in model mm. roomCenterMm is a point inside the room, a bounding-box centre can lie outside it. hasMore=true means further pages exist. skipped means incomplete; skippedCount is the total skipped.
Inputs: view, level, limit, phase, +14 more. Returns: object
revit_remove_linksRemove LinksADestructive
Delete selected link types and their instances; dry_run previews. Cannot be undone in Revit. Needs confirm_token from a first call, which changes nothing.
Inputs: links (required), kinds, dry_run, document, +2 more. Returns: object
revit_rotateRotate ElementsADestructive
Rotate elements about a vertical axis through center_mm, or through their combined bounding box center. dry_run rolls back. Group members, pinned, hosted and constrained elements are reported in skipped.inGroup, skipped.pinned, skipped.hosted and skipped.constrained and are not changed; the call is refused if every element is a group member.
Inputs: angle_deg (required), element_ids (required), dry_run, document, +1 more. Returns: object
revit_run_actionsRun ActionsADestructive
Execute up to 50 actions with one undo step; the whole batch rolls back on its first failure. dry_run rolls back and returns the verification block.
Inputs: steps (required), dry_run, document. Returns: object
revit_run_toolRun My ToolADestructive
Run saved C#. First run per Revit session needs confirm_token, even read/dry_run. Action commits need a token. Read/dry_run roll back. transaction=group permits script-owned transactions and edit scopes in one Undo group. Uses execute_code gates; store runs require machine ExecuteCode=confirm, including read mode and dry runs. Timeouts may follow commit. Uses a two-step AI app token handshake.
Inputs: args (required), name (required), dry_run, document, +3 more. Returns: object
revit_save_documentSave DocumentBDestructive
Save a document. Needs confirm_token from a first call, which changes nothing.
Inputs: document (required), compact, save_as, overwrite, +2 more. Returns: object
revit_save_toolSave My ToolCDestructive
Compile C# and schema without execution, then save a revision after the token handshake. Returns full source, hash and confirm_token. Uses a two-step AI app token handshake.
Inputs: code (required), name (required), parameters (required), description (required), +3 more. Returns: object
revit_schedule_dataRead Schedule DataBRead-onlyIdempotent
Read displayed schedule header and body cell text, with paging. skipped means incomplete; skippedCount is the total skipped.
Inputs: schedule (required), offset, document, max_rows, +1 more. Returns: object
revit_selectSelect ElementsARead-onlyIdempotent
Select element IDs for inspection in Revit; an empty list clears the selection.
Inputs: element_ids (required), document. Returns: object
revit_set_parameterSet ParameterADestructiveIdempotent
Set one instance or type parameter. parameter_id selects by BuiltInParameter name, shared GUID or ParameterElement ID; otherwise parameter takes a localized UI name, BuiltInParameter name or English alias, and ambiguous matches are refused. Value is a string, integer or number by storage type; lengths in mm, areas in m2. Group members fail with a clear message. dry_run rolls back and returns the verification block.
Inputs: value (required), parameter (required), element_id (required), dry_run, +2 more. Returns: object
revit_set_read_onlySet Workstation Read-onlyADestructive
Set the workstation read-only lock for all Revit versions of this Windows user. Locking needs no token. Unlocking requires a user request and explicit confirmation. The first call returns confirmationText and a token; the second call with confirm_token unlocks. Workstation policy cannot be changed.
Inputs: enabled (required), confirm_token. Returns: object
revit_set_view_visibilitySet View VisibilityBDestructive
Change category, workset and filter visibility in one view; dry_run previews. Categories accept the Revit UI name, the BuiltInCategory name (OST_StructuralColumns), the English name or an ID.
Inputs: view (required), dry_run, filters, document, +6 more. Returns: object
revit_showShow ElementsARead-onlyIdempotent
Display elements in Revit, optionally selecting them; opens a level plan or 3D view when needed.
Inputs: element_ids (required), select, document. Returns: object
revit_sync_documentSynchronize DocumentBDestructive
Synchronize a workshared document with central. Needs confirm_token from a first call, which changes nothing.
Inputs: comment (required), document (required), compact, process_id, +4 more. Returns: object
revit_tag_elementsTag ElementsADestructive
Tag elements in a view, chosen by category names or by element IDs (exactly one of the two). Returns created tag IDs in createdElementIds; already tagged elements are skipped unless skip_tagged is false, and untaggable inputs are listed in skipped. tag_type matches a tag type name, a family name or "Family: Type"; the default tag type is used otherwise. Room tags need a plan view. dry_run rolls back and returns the tags that would be created.
Inputs: view (required), leader, dry_run, document, +6 more. Returns: object
revit_ui_stateRevit UI StateBRead-onlyIdempotent
Read the active document, open views, selection and open documents. skipped means incomplete; skippedCount is the total skipped.
Inputs: process_id. Returns: object
revit_undo_lastUndo Last ActionADestructive
Undo the last MCP action through Revit's own undo command. Runs only when the target document is active, no command is pending and Revit's last undo entry is the one this session recorded; otherwise the result carries a refusal reason.
Inputs: document. Returns: object
revit_update_parametersUpdate ParametersADestructive
Update a parameter on elements matching the same filters as revit_query_elements. Group members are reported in skipped.inGroup instead of failing the call; dry_run predicts this.
Inputs: value (required), filters (required), parameter (required), dry_run, +4 more. Returns: object
revit_view_elementsView ElementsARead-onlyIdempotent
Read one page of elements in a selected view, with IDs, category, family, type, level and measurements (mm, m2, m3). skipped means incomplete; skippedCount is the total skipped.
Inputs: view (required), limit, offset, document, +3 more. Returns: object
revit_view_infoView InfoBRead-onlyIdempotent
Inspect one view's template, display, categories, worksets, filters and links. skipped means incomplete; skippedCount is the total skipped.
Inputs: view (required), document, process_id, timeout_seconds. Returns: object
revit_view_summaryView SummaryBRead-onlyIdempotent
Read element categories and counts for a selected view. skipped means incomplete; skippedCount is the total skipped.
Inputs: view (required), document, process_id, timeout_seconds. Returns: object
revit_view_warningsView WarningsARead-onlyIdempotent
Read warnings involving elements present in a selected view. A warning may also involve elements outside the view. skipped means incomplete; skippedCount is the total skipped.
Inputs: view (required), document, process_id, timeout_seconds. Returns: object
revit_walls_from_cadBuild Walls from CADBDestructive
Bridge openings, pair parallel CAD lines and join basic walls in one undo entry. Dimensions are mm. Joins Revit rejects are left out and reported as unjoinedEnds with unjoinedReasons; dry_run reports the same join numbers.
Inputs: level (required), cad_id (required), layers (required), join, +9 more. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 89 tools
Many tools are individually distinct, but there are substantial overlapping clusters: revit_run_tool/revit_execute_code/revit_run_actions, revit_place_family/revit_place_families, revit_update_parameters/revit_set_parameter, and several query/read/audit tools. Detailed descriptions help, but an agent still needs careful selection among similar capabilities.
All tools use a consistent revit_ snake_case prefix, and most follow a clear verb_noun or noun-action pattern. A few names such as revit_document_info, revit_ui_state, and revit_jobs are less verb-oriented, but the overall convention remains readable and predictable.
With 89 tools, this server is far beyond a practical toolset for agent selection, even for a broad Revit automation domain. The surface is comprehensive but heavily overloaded, with many niche and overlapping operations that increase cognitive load and misselection risk.
The surface covers model and element CRUD, views and sheets, documents and worksharing, families, exports, auditing, batch runs, and C# escape hatches. Some direct creation operations such as levels, grids, rooms, dimensions, or text notes are not exposed as first-class tools, but they can be worked around through code execution.
Maintenance
Related MCP Connectors
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
Read-only AI access to HAVN properties, leads, tasks, files, media, and analytics.
Read-only connector: ask your AI about construction and ad-platform data. It never writes.
AI Hub for AEC — 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceAllows AI assistants to interact with Autodesk Revit through the MCP protocol, enabling the AI to create, modify, and delete elements in Revit projects.1559 npm1-
- AlicenseAqualityDmaintenanceEnables AI assistants to interact with Autodesk Revit to query project data, manage elements, and execute generated code via the Model Context Protocol. It provides full compatibility with GitHub Copilot and Claude to automate BIM modeling workflows.1359 npmMIT
- AlicenseAqualityFmaintenanceEnables AI to interact with Revit via MCP, allowing data retrieval and element creation, modification, and deletion.1359 npmMIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to connect to Revit 2024 via MCP, inspect documents and selections, query and modify elements, and validate, preview, or commit plans with audit logging and rollback.MIT