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
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
revit_jobsB

List queued and running jobs in the selected Revit process.

Supply cancel_job_id to cancel one of this server process's own jobs. A running action finishes without interruption.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_compare_link_datumsB

Compare host grids and levels with one loaded Revit link. No model change is made.

A geometric match does not create a monitor relationship or later Coordination Review warnings.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_pingA

Check the RevitModelMcp connection without reading the model.

Returns a response with data="pong", even when no document is active. Connection failures and timeouts raise errors; no partial result is returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_nwc_settings_checkA

Parse a Navisworks exporter XML file on the Revit workstation without exporting.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_document_infoA

Read general information about the active Revit model.

Returns data with file name, Revit version, levels (elevations in mm), area schemes, worksets and view count. Absent collections are empty; non-workshared models have no worksets. Call revit_list_views next for view analysis. A missing active document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_documentsA

List every open document in one Revit process, including background documents.

Linked documents are excluded unless include_linked is set. Returns title, path, isActive, isLinked, isFamilyDocument, isWorkshared, isDetached, isModified, openedByMcp and centralPath when available. An empty process returns [].

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_model_snapshotA

Read a schema version 1 project snapshot for batch audits.

Each parameter rule pairs one category with one parameter. Warning groups include at most 200 affected element IDs. Closed worksets can make the result incomplete.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_model_healthA

Read model quality counts before an export or hand-over.

Returns data with project metadata, file size in bytes, counts, unit settings and the ten most frequent warning groups. Absent objects have zero counts; unavailable metrics are null and described in top-level skipped entries. Use revit_list_warnings to inspect affected elements. A missing active document, overall read failure or timeout raises an error; timeout partials are not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_links_statusA

Read RVT, CAD and image link status before an export or hand-over.

Returns data with summary counts and rvtLinks, cadLinks and images lists containing status, paths and instance counts. Each list is capped at 100 entries by ID without pagination; summary counts cover all entries. No links produce empty lists; per-entry failures appear in error with status Other. A missing active document, overall read failure or timeout raises an error; timeout partials are not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_shared_coordinatesA

Read project and survey coordinates before an export or hand-over.

Returns data with base/survey points, the active site, project locations and link offsets in mm and rotations in degrees, rounded to one decimal. Location and link lists are capped at 100 without pagination, with total counts; no links produce an empty sharedSiteFromLinks list. A missing active document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_parameter_fill_checkA

Count filled, empty and missing parameters before an export or hand-over.

Returns data with scope, per-parameter and per-category counts, instance/type ownership, storage types and empty/missing element ID samples. No matching elements produce zero counts and empty samples; absent parameters count as missing, and numeric zero counts as filled. A missing document, invalid scope or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_list_catalogA

Discover valid model names before filtering.

Returns data with section and items containing names and section-specific IDs, categories, types or counts; an empty catalog returns items=[]. section is required: categories, family-types, levels, area-schemes, views, worksets, phases or parameters. The parameters section reports localized names, categories and value types. Start universal queries here, then prefer revit_aggregate_elements for counts and breakdowns; use revit_query_elements only for individual rows. An unknown section, missing document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_aggregate_elementsA

Summarize matching elements by one or two fields after revit_list_catalog.

Returns data with matchedElements and groups containing keys, count and optional numericCount, sum, average and unit. Lengths use mm, areas m2 and volumes m3; groups without numeric values have null sum and average. No matches return groups=[]; invalid field or filter names raise errors even for empty results. Call revit_list_catalog first; prefer this tool for counts and breakdowns, and revit_query_elements only for individual rows. For area totals, group by level and select the area scheme. A missing document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_query_elementsA

Read a page of matching element rows after revit_list_catalog.

Returns data with elements (id and values), fields, total, offset, limit and hasMore; values include availability, source and units when available. Lengths use mm, areas m2 and volumes m3; optional geometry uses model mm rounded to one decimal, and unavailable geometry is omitted. Use roomCenterMm for placement inside rooms; a bounding-box centre can lie outside the room. No matches or an offset beyond the result return elements=[]; advance offset while hasMore=true. Call revit_list_catalog first and prefer revit_aggregate_elements for counts and breakdowns. Invalid fields or filters, a missing document, read failure or timeout raise errors; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_list_viewsA

Find non-template views before analyzing a view.

Returns data with views containing id, name, type, level, scale and template, plus total and processed counts for scanned non-template views. No filter matches return views=[]. Use a returned name with revit_view_summary before requesting element pages. A missing document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_view_infoA

Inspect one view's template, display, categories, worksets, filters and links.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_view_summaryA

Read element categories and counts for a selected view.

Returns data with header metadata and categories containing count and differentTypes; an empty view returns categories=[]. Prefer this tool for view counts; select relevant categories before calling revit_view_elements for individual rows. A missing document, unknown or unsupported view, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_export_viewA

Export a selected view to PNG when numbers do not explain geometry.

Returns data with localPath on the MCP client, image width/height in pixels, sizeBytes and view metadata, without base64. The export does not change the active view or write to the model; use it to inspect outlines, zones and room boundaries. A missing document, unknown or unsupported view, existing destination, missing PNG or download failure raises an error. Uses the default 120-second response and 300-second pickup budgets; timeouts raise errors without partial data.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_view_elementsA

Read one page of elements in a selected view.

Returns data with elements, total, offset, limit and hasMore; rows include IDs, category, family, type, level and available measurements in mm, m2 and m3. No matches or an offset beyond the result return elements=[]; advance offset while hasMore=true. Prefer revit_view_summary for counts and category discovery; use this tool for individual rows and revit_element_details for all parameters. A missing document, unknown or unsupported view, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_element_detailsA

Read parameters and geometry of an element by Revit ID.

Returns data with element, instance parameters, available typeElement parameters and related warnings; no warnings return an empty list. Rooms include level, area in m2, volume in m3 and boundaries in mm; parameter values include display/internal values and metric units when available. Location and boundingBox use model mm rounded to one decimal; unavailable geometry is omitted. Use roomCenterMm for placement inside rooms; boundingBox.centerMm may lie outside a nonrectangular room. An absent element or document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_view_warningsA

Read warnings involving elements present in a selected view.

Returns data with view and warnings containing text, severity and element IDs with presentOnView flags; no related warnings return warnings=[]. A warning may also involve elements outside the view. Use revit_view_summary to inspect view contents, or revit_list_warnings for model-wide warning groups. A missing document, unknown or unsupported view, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_list_warningsA

Group model warnings by description text.

Returns data with totalWarnings and groups containing text, severity, count, affectedElementCount and optional element rows. Start without filters, then repeat with a returned warning_text and include_elements=true to inspect one group. No model warnings return groups=[]; an unmatched warning_text raises an error. A missing document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_list_relationsA

Read model object membership or dependencies.

Returns data with relation, source and elements containing IDs, names, categories, families and types; no related objects return elements=[]. relation is required: level-rooms, area-scheme-elements or view-template-dependents with source_name, or group-elements or nested-family with source_id. Obtain source names from revit_list_catalog and IDs from element queries. An invalid relation, missing or wrong source, missing document, read failure or timeout raises an error; partial data is not returned.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_list_instancesA

List Revit processes and their active documents.

Returns instances with documentName, documentPath, revitVersion, processId and pluginResponding; heartbeats also expose fileChannelVersion, startedUtc and httpPort when available. For file channel v2, pluginResponding means a bounded correlated ping confirmed the PID and startup identity. Busy or unresponsive processes remain listed with pluginResponding=false; processes without a fresh heartbeat remain visible when no document filter is given. Legacy heartbeat presence is only a pre-check. No matching instances return instances=[]. Local and SSH modes use add-in heartbeats with process fallback; fallback records have an empty document and pluginResponding=false. HTTP mode reports only its connected process; transport failures raise errors. Use this tool before choosing a unique document substring for other tools. Every successful result has skipped=[] and skippedCount=0; non-empty skipped means the answer is incomplete.

revit_family_auditA

Audit an open family or named project families without saving or loading changes.

In project mode, pass exact names or ["*"]. In family mode, omit families. Unused shared parameters may still carry schedule or tag data in the project.

If more than one Revit instance is running, document is required; otherwise any instance may respond. Non-empty skipped means the answer is incomplete; skippedCount includes entries beyond the first 100.

revit_open_documentB

Open a local, UNC or RSN model. Central models default to detached. Cloud paths are unsupported.

revit_close_documentB

Close a background document. Show confirmationText and retry with the token only after explicit chat approval.

revit_save_documentC

Save only after showing confirmationText and receiving explicit chat approval for the token retry.

revit_sync_documentC

Synchronize only after showing confirmationText and receiving explicit chat approval for the token retry.

revit_set_view_visibilityB

Change category, workset and filter visibility in one view; preview with dry_run. Categories accept the Revit UI name, the BuiltInCategory name (OST_StructuralColumns), the English name or an ID.

revit_remove_linksB

Delete selected link types and their instances; preview with dry_run.

revit_undo_lastA

Undo the last MCP action in Revit, through Revit's own undo command.

Allowed only when the target document is active, no command is pending in Revit, and Revit's last undo entry is still the one this session recorded. Otherwise the action result carries a clear refusal reason instead of running. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_align_link_datumsC

Align host grids and levels to a loaded link, with optional creation and rollback preview.

Geometric alignment does not create a monitor relationship or later Coordination Review warnings.

revit_selectA

Select element IDs for inspection in Revit; an empty list clears selection; IDs are unitless. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_showA

Show elements, optionally selecting them; open a level plan or 3D view when needed. Returns activeView, viewOpened and dialogsSuppressed; IDs are unitless. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_isolateA

Temporarily isolate IDs for visual review in the active view, or reset with an empty list; IDs are unitless. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_moveA

Move elements when adjusting their position; dx_mm, dy_mm and dz_mm are offsets in millimetres on model axes. dry_run executes and rolls back, returning the same verification block without changing the model. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_place_familyA

Place a loaded unhosted family on a named level for layout.

family accepts a family name or Family: Type, case-insensitively. null type_name uses the embedded type or the first type. Conflicting types are rejected. Missing families return similar names with categories. Model XY is in millimetres and Z rotation in degrees. Use roomCenterMm when placing something inside a room.

dry_run executes and rolls back, returning the same verification block without changing the model. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_create_wallA

Create a straight wall for layout on a named level; model XY endpoints and height are millimetres; null wall_type chooses the first basic type. dry_run executes and rolls back, returning the same verification block without changing the model. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_set_parameterA

Set exactly one instance or type parameter. Supply parameter_id to select by BuiltInParameter name, shared GUID or positive ParameterElement ID. Without parameter_id, parameter accepts a localized Revit UI name, BuiltInParameter name or supported English alias; ambiguous matches are refused with candidate details. Use a JSON string for String, integer for Integer and number for Double. Lengths use mm, areas m2 and other doubles internal units. dry_run executes and rolls back, returning the same verification block without changing the model. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_deleteA

Delete elements and their Revit dependencies when removal is intended; IDs are unitless and the returned count includes dependents. dry_run executes and rolls back, returning the same verification block without changing the model. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_export_nwcB

Export NWC on the Revit workstation. Requires the Navisworks exporter; refused in read-only mode. The file stays on the workstation; settings_xml applies exporter XML values; explicit arguments take precedence.

revit_batchA

Execute up to 50 actions with one undo step; roll back the batch on its first failure.

dry_run executes and rolls back, returning the same verification block without changing the model. Pass document to address a specific open model when several are open; an unknown or ambiguous reference is rejected.

revit_edit_familiesB

Edit an open family in place or named project families in one load cycle each.

In project mode, pass exact family names or ["*"]. A dry run rolls back all changes. Refused in read-only mode.

revit_batch_startC

Start a persistent, read-only run over local, UNC, or RSN models.

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.

Prompts

Interactive templates invoked by user choice

NameDescription
model_overview
pre_issue_check
warnings_triage
parameter_fill_report
batch_audit

Resources

Contextual data attached and managed by the client

NameDescription
coordinator_guide

TDQS

B3.2/5.0

Scored across 49 tools

Disambiguation3/5

Many read and audit tools overlap (multiple warning sources, element query paths, view summaries), but descriptions provide explicit ordering and usage guidance such as calling revit_list_catalog first or preferring revit_aggregate_elements for counts. Still, with 49 tools an agent must follow prescribed call sequences carefully to avoid misselection.

Naming Consistency4/5

All tools share the revit_ prefix and snake_case, making names predictable. However, several names are noun-only (revit_jobs, revit_documents) or bare verbs (revit_show, revit_select), so the strict verb_noun pattern is not universal.

Tool Count2/5

49 tools is far above the 3-15 sweet spot and approaches the extreme mismatch threshold. The domain is complex, but many tools are specialized audit/export variants, making the surface heavy.

Completeness4/5

The surface covers document lifecycle, element query/aggregation, views, warnings, links, parameters, editing (move, place, create, set, delete), batch runs and exports. Gaps exist for higher-level operations like view/sheet creation, schedules, and copy/rotate/array editing, but core workflows are representable.

Maintenance

ActivityMaintained
ResponsivenessWithin a week