Skip to main content
Glama
sharafutdinovdi

Revit Model MCP

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
REVIT_MCP_HOSTNoSet to 'local' for local Windows clients using the Revit user's account. For remote clients, configure an SSH tunnel to the workstation's loopback endpoint.
REVIT_MCP_ALLOW_WRITENoSet to '1' to allow write actions. Both this and the workstation allow-write file are required for actions.
REVIT_MCP_REDACT_PATHSNoSet to '1' to hide directories in response path fields. Default is likely '0' (not redacted).

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}

Tools

Functions exposed to the LLM to take actions

NameDescription
revit_jobsA

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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_compare_link_datumsA

Compare host grids and levels with one loaded Revit link. Changes nothing. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_pingA

Check the connection to Revit without reading the model. Returns data="pong", even when no document is active. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_nwc_settings_checkA

Parse a Navisworks exporter XML file on the Revit workstation without exporting. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_document_infoA

Read the active model's file name, Revit version, levels (elevations in mm), area schemes, worksets and view count. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_documentsA

List every open document in one Revit process, including background documents. Linked documents are listed only when include_linked is set. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_ui_stateA

Read the active document, open views, selection and open documents. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_model_snapshotA

Read a schema version 1 project snapshot for batch audits. Closed worksets can make the result incomplete. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_model_healthA

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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_links_statusA

Read RVT, CAD and image link status. Each list is capped at 100 entries; summary counts cover all links. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_shared_coordinatesA

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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_parameter_fill_checkA

Count filled, empty and missing parameters per parameter and category, with samples of empty and missing element IDs. Numeric zero counts as filled. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_list_catalogA

List catalog names for one section: categories, family-types, levels, area-schemes, views, worksets, phases or parameters. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_aggregate_elementsA

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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_query_elementsB

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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_list_viewsB

List non-template views with id, name, type, level, scale and template. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_view_infoA

Inspect one view's template, display, categories, worksets, filters and links. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_view_summaryA

Read element categories and counts for a selected view. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_schedule_dataA

Read displayed schedule header and body cell text, with paging. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_capture_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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_export_viewA

Export a selected view to a PNG file on the MCP client. Does not change the active view or the model. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_view_elementsA

Read one page of elements in a selected view, with IDs, category, family, type, level and measurements (mm, m2, m3). A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_element_detailsA

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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_view_warningsA

Read warnings involving elements present in a selected view. A warning may also involve elements outside the view. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_list_warningsA

Group model warnings by description text. warning_text with include_elements=true returns the elements of one group. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_list_relationsA

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). A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_list_instancesA

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.

revit_family_auditA

Audit an open family or named project families without saving or loading changes. Project mode takes exact family names or ["*"]; family mode takes none. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

revit_open_documentA

Open a local, UNC or RSN model. Central models open detached by default. Cloud paths are unsupported. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.

revit_activate_documentB

Activate an already open document by title or path reference.

revit_activate_viewC

Activate a non-template view. Zoom to fit, preserve zoom, or frame element IDs.

revit_close_viewsC

Close open UI views in the active document.

revit_new_documentC

Create a project or family from a template on the Revit workstation.

revit_close_documentB

Close a background document. Needs confirm_token from a first call, which changes nothing.

revit_save_documentB

Save a document. Needs confirm_token from a first call, which changes nothing.

revit_sync_documentB

Synchronize a workshared document with central. Needs confirm_token from a first call, which changes nothing.

revit_set_view_visibilityB

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.

revit_remove_linksA

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.

revit_execute_codeA

Compile and run C# against the live Revit API on the Revit thread. Accepts a method body or a public static Script class with Execute(ScriptContext ctx). Auto mode owns one transaction and undo entry; transaction="none" is refused by default. Needs confirm_token from a first call, which runs nothing; dry_run needs none. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.

revit_undo_lastA

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.

revit_align_link_datumsB

Align host grids and levels to a loaded link, with optional creation and rollback preview. Does not create a monitor relationship.

revit_cancel_jobA

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.

revit_selectA

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

revit_showB

Display elements in Revit, optionally selecting them; opens a level plan or 3D view when needed.

revit_isolateB

Temporarily isolate element IDs in the active view; an empty list resets.

revit_moveA

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.

revit_override_graphicsB

Colour elements in selected model views; reset restores overrides saved in this Revit session.

revit_rotateA

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.

revit_copyA

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.

revit_mirrorA

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.

revit_change_typeA

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.

revit_update_parametersA

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.

revit_place_familyA

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.

revit_load_familyA

Load workstation .rfa files in one undo entry. Existing families are skipped unless overwrite is true.

revit_place_familiesC

Load optional families and place instances in one transaction and undo entry.

revit_create_wallB

Create a straight wall on a named level. XY endpoints and height are in mm; a null wall_type uses the first basic type.

revit_create_mep_runA

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.

revit_link_cadB

Link or import a DWG into a plan view on the Revit workstation. Returns CAD layers and extents in mm.

revit_walls_from_cadB

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.

revit_create_viewB

Create a plan, section, 3D or drafting view. Unbounded 3D views show the whole model, shaded, fine detail. Box coordinates are model mm.

revit_duplicate_viewC

Duplicate a view, optionally with detailing or as a dependent view.

revit_apply_view_templateC

Apply a matching view template to one or more views.

revit_create_sheetC

Create a sheet with the first loaded or a named title block.

revit_place_views_on_sheetC

Place views and schedules on a sheet. Coordinates are sheet mm.

revit_tag_elementsA

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.

revit_create_scheduleA

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.

revit_set_parameterA

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.

revit_deleteA

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.

revit_exportA

Export PDF, DWG, IFC or schedule CSV files on the Revit workstation; dry_run returns planned file names. Replacing existing files (overwrite=true) needs a confirm_token from a first call. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.

revit_export_nwcA

Export NWC on the Revit workstation; needs the Navisworks exporter. settings_xml applies exporter XML values, explicit arguments take precedence. Replacing an existing file (overwrite=true) needs a confirm_token from a first call. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.

revit_run_actionsA

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.

revit_process_modelsA

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. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.

revit_edit_familiesA

Edit an open family in place, or named project families (exact names or ["*"]), one load cycle each. A dry run rolls back all changes. A long action can return status=running and jobId when the wait budget expires; it may already have changed the model, and revit_jobs returns its result. Resubmitting repeats the action.

revit_batch_startB

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).

revit_batch_statusB

Read durable run and model status after the initiating client exits.

revit_batch_cancelC

Persist cancellation and prevent unstarted models from running.

revit_batch_fetchC

Download completed snapshots to new local files without overwriting.

revit_build_reportA

Build a local Excel report from snapshots without contacting Revit.

revit_issue_registerB

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. A non-empty skipped list means the result is incomplete; skippedCount counts all skipped entries.

Prompts

Interactive templates invoked by user choice

NameDescription
model_overviewReview one open model: health, warnings, links, coordinates and families, as a findings table.
pre_issue_checkCheck an open model before issuing it: health, warnings, links, coordinates, parameter fill and families.
warnings_triageGroup and prioritize model warnings with affected element IDs.
parameter_fill_reportReport how completely the requested parameters are filled for the requested categories.
batch_auditCollect snapshots from many models in the background and build a comparison report.

Resources

Contextual data attached and managed by the client

NameDescription
coordinator_guideGuide for reviewing a Revit model: tool order, result fields and reporting conventions.

TDQS

B3.2/5.0

Scored across 79 tools

Disambiguation3/5

The 79 tools have many overlapping read-oriented purposes, especially around views and elements: revit_query_elements, revit_view_elements, revit_element_details, revit_aggregate_elements, revit_view_info, revit_view_summary and revit_capture_elements require careful distinction. Descriptions provide enough detail to tell most apart, but the sheer breadth and similar naming create real misselection risk.

Naming Consistency5/5

All tool names use a consistent revit_ prefix and snake_case convention, with no camelCase or mixed-style deviations. Although some tools are noun phrases and others verb phrases, the overall naming pattern is highly predictable and readable.

Tool Count1/5

With 79 tools, the server is far beyond the expected 3-15 range and clearly falls into the extreme over-provisioned category. Even for a complex Revit automation surface, the count is excessive and makes discovery and selection burdensome.

Completeness4/5

The surface covers a very broad lifecycle: reading, editing, family placement, views, sheets, schedules, exports, batch processing and reporting. Some common authoring operations such as floors, roofs, rooms and dimensions are not exposed directly, but revit_execute_code and revit_run_actions provide a workaround.

Maintenance

ActivityActive
ResponsivenessWithin a week