Skip to main content
Glama
Model MCP

Model MCP

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.

CI Latest release PyPI Revit 2022-2027 OpenSSF Scorecard MIT OpenSSF Best Practices Downloads PyPI downloads

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-mcp

For 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_only control one lock across running Revit versions for the Windows user. Chat unlock requires explicit confirmation. Machine policy remains enforced.

  • Model audits. revit_model_audit checks one model against YAML, JSON, inline rules, or a builtin pack. Saved results support history comparisons. revit_audit_report produces XLSX and HTML reports. See model audit.

  • Sheet inspection. revit_list_sheets reads sheets, title blocks, revisions, placed views, and unplaced views.

  • Revit API lookup. revit_api_lookup reads 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_code and revit_run_tool accept transaction="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."

revit_document_info, revit_list_catalog, revit_aggregate_elements, revit_list_warnings

Health check

"Run a health check before we issue this model and list what fails."

revit_model_health, revit_parameter_fill_check

Find and show

"Find the doors on this floor and show me where they are in 3D."

revit_query_elements, revit_capture_elements

Highlight

"Colour those doors red on the L2 plan and fade everything else."

revit_activate_view, revit_override_graphics

Change, then undo

"Move the selected elements 500 mm along X. Preview it first, then do it, then undo it."

revit_move with dry_run, revit_undo_last

Batch over a folder

"Collect read-only snapshots of every model in this folder and tell me which ones have parameters left empty."

revit_batch_start, revit_batch_status, revit_build_report

ISO 19650 register

"Check this model against our EIR and write an issue register to Excel with element snapshots."

revit_issue_register, with the ISO 19650 skill

Export

"Export the L2 plan as PDF, and a Navisworks file of the whole model."

revit_export, revit_export_nwc

Run from a Mac

"Call revit_ping and tell me which model is open on the workstation."

revit_ping, over SSH (see remote workstations)

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

revit_ping, revit_ui_state, revit_documents, revit_document_info, revit_list_instances

Find and count elements

revit_list_catalog, revit_aggregate_elements, revit_query_elements, revit_element_details, revit_list_relations

Read views and schedules

revit_list_views, revit_view_info, revit_view_summary, revit_view_elements, revit_schedule_data, revit_list_sheets

Read warnings

revit_list_warnings, revit_view_warnings

Check model quality

revit_model_health, revit_parameter_fill_check, revit_family_audit, revit_model_audit

Get a picture

revit_export_view, revit_capture_elements

Point at things in Revit

revit_activate_view, revit_select, revit_show, revit_isolate, revit_override_graphics

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

revit_links_status, revit_shared_coordinates

Compare and align datums

revit_compare_link_datums, revit_align_link_datums

Work with CAD links

revit_link_cad, revit_walls_from_cad

Remove links

revit_remove_links

Navisworks export

revit_nwc_settings_check, revit_export_nwc

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

revit_move, revit_rotate, revit_copy, revit_mirror, revit_change_type, revit_set_parameter, revit_update_parameters, revit_delete

Control the workstation lock

revit_set_read_only

Save, discover, review, run, and delete approved procedures

revit_save_tool, revit_list_tools, revit_get_tool, revit_run_tool, revit_delete_tool

Run many steps as one undo

revit_run_actions

Create elements

revit_create_wall, revit_create_mep_run

Work with families

revit_load_family, revit_place_family, revit_place_families, revit_edit_families

Work with views and sheets

revit_create_view, revit_duplicate_view, revit_apply_view_template, revit_set_view_visibility, revit_create_sheet, revit_place_views_on_sheet

Tag elements and create schedules

revit_tag_elements, revit_create_schedule

Open, save and close documents

revit_open_document, revit_new_document, revit_activate_document, revit_close_views, revit_close_document, revit_save_document, revit_sync_document

Export files

revit_export

Look up the API and run C# in Revit

revit_api_lookup, revit_execute_code

Undo

revit_undo_last

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

revit_process_models

Collect snapshots without changing models

revit_batch_start, revit_batch_status, revit_batch_cancel, revit_batch_fetch

Follow and cancel long jobs

revit_jobs, revit_cancel_job

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

revit_model_snapshot

Write an issue register

revit_issue_register

Build a report from snapshots

revit_build_report

Report saved audit results

revit_audit_report

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 return errorCode: "read_only"; enforced machine policy returns policy_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_last works 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, and revit_process_models accept dry_run to 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 bind dry_run intent; 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=1 hides directories in response path fields. Names, parameter values, and errors can still contain sensitive data.

  • Unreachable workstation. errorCode: "transport_unavailable" with retryable: true means 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 authenticated set-read-only remain 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, truncated and 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.

Contributors

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 tools
revit_activate_documentActivate DocumentB
Read-only

Activate an already open document by title or path reference.

Inputs: document (required), process_id. Returns: object

revit_activate_viewActivate ViewB
Read-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 ElementsA
Read-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_api_lookupLook up Revit API types and membersA
Read-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 TemplateC
Destructive

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 statusB
Read-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 JobA
Destructive

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 TypeA
Destructive

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 DocumentB
Destructive

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 ViewsC
Read-only

Close open UI views in the active document.

Inputs: views, process_id, keep_active. Returns: object

revit_copyCopy ElementsA
Destructive

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 RunA
Destructive

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 ScheduleA
Destructive

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 SheetC
Destructive

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 ViewB
Destructive

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 WallB
Destructive

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 ElementsA
Destructive

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 ToolC
Destructive

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 InfoA
Read-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 DocumentsA
Read-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 ViewC
Destructive

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 FamiliesB
Destructive

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 DetailsA
Read-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# CodeA
Destructive

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 FilesA
Destructive

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 NWCB
Destructive

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 FamiliesA
Read-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 ToolC
Read-onlyIdempotent

Return approved source and schema without execution.

Inputs: name (required). Returns: object

revit_isolateIsolate ElementsA
Read-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 JobsA
Read-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_list_catalogList CatalogB
Read-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 InstancesA
Read-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 RelationsB
Read-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 SheetsB
Read-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 ToolsB
Read-onlyIdempotent

List saved tools and schemas without source.

Inputs: no named parameters. Returns: object

revit_list_viewsList ViewsB
Read-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 WarningsA
Read-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 FamiliesA
Destructive

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 ElementsA
Destructive

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 SnapshotA
Read-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 ElementsA
Destructive

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 DocumentC
Destructive

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 SettingsA
Read-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 DocumentA
Destructive

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 ElementsB
Destructive

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 CheckA
Read-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 ConnectionA
Read-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 FamiliesC
Destructive

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 FamilyA
Destructive

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 SheetB
Destructive

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 ModelsB
Destructive

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 ElementsB
Read-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_rotateRotate ElementsA
Destructive

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 ActionsA
Destructive

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 ToolA
Destructive

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 DocumentB
Destructive

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 ToolC
Destructive

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 DataB
Read-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 ElementsA
Read-onlyIdempotent

Select element IDs for inspection in Revit; an empty list clears the selection.

Inputs: element_ids (required), document. Returns: object

revit_set_parameterSet ParameterA
DestructiveIdempotent

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-onlyA
Destructive

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 VisibilityB
Destructive

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_shared_coordinatesShared CoordinatesA
Read-onlyIdempotent

Read project and survey coordinates: base and survey points, active site, project locations and link offsets (mm, degrees). Lists are capped at 100 with total counts. skipped means incomplete; skippedCount is the total skipped.

Inputs: document, process_id, timeout_seconds. Returns: object

revit_showShow ElementsA
Read-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 DocumentB
Destructive

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 ElementsA
Destructive

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 StateB
Read-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 ActionA
Destructive

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 ParametersA
Destructive

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 ElementsA
Read-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 InfoB
Read-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 SummaryB
Read-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 WarningsA
Read-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 CADB
Destructive

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

    B3.1/5.0

    Scored across 89 tools

    Disambiguation3/5

    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.

    Naming Consistency4/5

    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.

    Tool Count1/5

    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.

    Completeness4/5

    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

    ActivityActive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      D
      maintenance
      Enables 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.
      13
      59 npm
      MIT
    • A
      license
      A
      quality
      F
      maintenance
      Enables AI to interact with Revit via MCP, allowing data retrieval and element creation, modification, and deletion.
      13
      59 npm
      MIT