Atlas / MCP servers / sam-aec / Revit

RevitCAUTION

mcp/sam-aec/revit-5

Independent Revit MCP ( Model Context Protocol integration for Revit software ).

Verdict
CAUTION
Grade
B
Trust score
88 /100
Exposed tools
200 131r · 71w · 3d
Transport
stdio
License
GPL-3.0
Stars
68
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

AEC Model Bridge is the open, secure runtime that puts Revit, Rhino, Navisworks, and Power BI behind one MCP call center — so an AI agent orchestrates them directly, instead of you manually dumping data between disconnected apps.

[](https://registry.modelcontextprotocol.io/?q=io.github.Sam-AEC%2Faec-model-bridge) [](LICENSING.md) [](https://www.python.org/) [](https://www.autodesk.com/products/revit/)

Available now

In progress

Coming soon

Install | Tools | Documentation | [Latest release](https://github.com/Sa

Read from source at commit 626cf70de10cOBSERVED · 2026-10-08
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add aec-model-bridge --env AEC_MODEL_BRIDGE_REVIT_TOKEN=${AEC_MODEL_BRIDGE_REVIT_TOKEN} --env APS_CLIENT_SECRET=${APS_CLIENT_SECRET} --env AUTODESK_CLIENT_SECRET=${AUTODESK_CLIENT_SECRET} --env MCP_REVIT_BRIDGE_TOKEN=${MCP_REVIT_BRIDGE_TOKEN} -- uvx aec-model-bridge
claude-desktop
{
  "mcpServers": {
    "aec-model-bridge": {
      "command": "uvx",
      "args": [
        "aec-model-bridge"
      ],
      "env": {
        "AEC_MODEL_BRIDGE_REVIT_TOKEN": "${AEC_MODEL_BRIDGE_REVIT_TOKEN}",
        "APS_CLIENT_SECRET": "${APS_CLIENT_SECRET}",
        "AUTODESK_CLIENT_SECRET": "${AUTODESK_CLIENT_SECRET}",
        "MCP_REVIT_BRIDGE_TOKEN": "${MCP_REVIT_BRIDGE_TOKEN}"
      }
    }
  }
}
03

Exposed tools (200)

131 read · 71 write · 3 destructive. Blast radius: 3 tools can delete or overwrite — an agent that can be talked into calling a tool can be talked into calling this one.

ToolRiskDescription
aec_map_workspace_pathreadMap and convert workspace paths between relative formats, Windows absolute format, and POSIX path format.
aec_register_mappingreadRegister custom relationship links between different BIM workflows (e.g. Revit element ID to Rhino object UUID).
aec_translate_idreadTranslate an element identifier between Revit UniqueId/GUID, IFC GlobalId, and custom registered workflows.
approve_planreadApprove a pending ActionPlan for execution.
autodesk_data_auth_statusreadGet Autodesk OAuth authentication status.
autodesk_data_checkout_versionreadCheckout Autodesk version metadata.
autodesk_data_create_issuewriteCompatibility alias for create_topic.
autodesk_data_create_topicwriteCreate a BCF-compatible issue/topic through a configured endpoint.
autodesk_data_get_version_metadatareadRead Autodesk item/version metadata.
autodesk_data_healthreadCheck Autodesk Data provider health.
autodesk_data_list_hubsreadList Autodesk Construction Cloud hubs.
autodesk_data_list_itemsreadList Autodesk items in a project folder or container.
autodesk_data_list_projectsreadList Autodesk projects in a hub.
autodesk_data_oauth_exchange_codereadExchange an Autodesk OAuth authorization code.
autodesk_data_oauth_refreshreadRefresh the Autodesk OAuth access token.
autodesk_data_oauth_startwriteGenerate an Autodesk OAuth authorization URL using PKCE.
execute_planwriteRun every action in an approved ActionPlan. Report-and-continue: a partial
exporter_db_healthreadCheck health and readiness of the local database exporter.
exporter_graph_to_sqlitereadExtract the active semantic network graph and dump its nodes, properties, and typed edges to a local SQLite database in the workspace.
exporter_to_sqlitereadExport a structured payload of BIM elements, parameters, and relationships to a local SQLite database in the workspace.
fake_mutatereadMock mutating tool
fake_toolreadA fake tool for testing
graph_add_relationwriteAdd a typed relation between two existing nodes.
graph_audit_clashesreadAudit axis-aligned bounding boxes for clashes using a tolerance value.
graph_audit_disconnectedreadAudit disconnected nodes or components using degree and connectivity rules.
graph_audit_structural_loadsreadAudit structural load-bearing and support consistency using SUPPORTED_BY relations.
graph_compilereadCompile workspace model nodes and relations into the in-memory semantic graph.
graph_healthreadCheck graph provider health and current graph size.
graph_query_relationsreadQuery relations by node, related node, relation type, and direction.
ifc_get_bounding_boxreadGet bounding box dimensions and placement information for a specific element
ifc_get_metadatareadGet file schema, header metadata, units, and georeferencing summary from an IFC file
ifc_get_propertiesreadGet property sets, quantities, and direct attributes for a specific element in an IFC file
ifc_get_spatial_structurereadGet the spatial hierarchy (Project -> Site -> Building -> Storey -> Element Types/Counts) from an IFC file
ifc_healthreadCheck status of IfcOpenShell and get version info
ifc_query_elementsreadQuery elements by IFC class, GUID, name, or simple property name/value criteria
ifc_validatereadPerform schema validation on the IFC file and return errors/warnings list
job_cancelreadCancel a running or queued background job.
job_statusreadGet the status, progress, results, or error details of a background job.
list_pending_plansreadList all pending ActionPlans waiting for review.
module_list_commandsreadList all registered modules and their commands for dockable panels
navisworks_activate_viewpointreadActivate a saved viewpoint by Guid
navisworks_append_filereadAppend a file (e.g. NWD, NWG, IFC) to the active document
navisworks_create_viewpointwriteCreate a new saved viewpoint from the current view
navisworks_get_clash_resultsreadGet results for a clash test by Guid
navisworks_get_document_inforeadGet info about the active Navisworks document
navisworks_get_model_treereadGet the model hierarchy tree in Navisworks
navisworks_get_selectionreadGet active selection items in Navisworks
navisworks_healthreadCheck if Navisworks is running and get status information
navisworks_invoke_methodwriteInvoke a C# method in Navisworks via reflection
navisworks_list_clash_testsreadList clash tests defined in Clash Detective
navisworks_list_viewpointsreadList saved viewpoints
navisworks_reflect_getreadGet a C# property value from a Navisworks object via reflection
navisworks_reflect_setwriteSet a C# property value on a Navisworks object via reflection
navisworks_refreshreadRefresh all updated files in the active document
navisworks_run_clash_testwriteRun a clash test by Guid
plan_actionswriteCreate a draft ActionPlan of proposed modifications, capturing their before-states.
powerbi_execute_daxwriteExecute a DAX query against the active Power BI dataset
powerbi_healthreadCheck if Power BI External Tool Bridge is running
powerbi_invoke_methodwriteInvoke a C# method in Power BI bridge via reflection
powerbi_reflect_getreadGet a C# property value from a Power BI bridge object via reflection
powerbi_reflect_setwriteSet a C# property value on a Power BI bridge object via reflection
reject_planreadReject and archive a pending ActionPlan.
revit_apply_view_templatewriteApply view template to a view
revit_batch_create_sheets_from_csvwriteCreate multiple sheets from a CSV file
revit_batch_set_parameterswriteSet a parameter value for multiple elements
revit_batch_set_parameters_by_filterwriteSet a parameter value on all elements matching a filter (category, type, level, or parameter value).
revit_calculate_material_quantitiesreadCalculate material volumes for a category
revit_change_element_typereadSwap all instances of one element type to another type.
revit_check_clashesreadCheck clashes between categories
revit_close_documentreadClose active document
revit_convert_to_groupreadConvert elements into a group
revit_copy_elementreadCopy an element
revit_create_3d_viewwriteCreate a new 3D view
revit_create_beamwriteCreate structural beam
revit_create_columnwriteCreate structural column
revit_create_conduitwriteCreate electrical conduit
revit_create_dimensionwriteCreate linear dimension between elements
revit_create_ductwriteCreate duct
revit_create_floorwriteCreate a floor in Revit with a rectangular or custom boundary
revit_create_floor_plan_viewwriteCreate a floor plan view for a level
revit_create_foundationwriteCreate foundation
revit_create_gridwriteCreate a grid line in Revit
revit_create_groupwriteCreate a group
revit_create_levelwriteCreate a new level in Revit
revit_create_materialwriteCreate a new material with color and properties
revit_create_new_documentwriteCreate new project
revit_create_pipewriteCreate pipe
revit_create_project_parameterwriteCreate a new project parameter
revit_create_roofwriteCreate a roof in Revit
revit_create_roomwriteCreate a room at a specific point on a level
revit_create_schedulewriteCreate a schedule
revit_create_section_viewwriteCreate a section view
revit_create_shared_parameterwriteCreate a new shared parameter
revit_create_sheetwriteCreate a new sheet
revit_create_tagwriteTag an element
revit_create_text_notewriteCreate a text note
revit_create_wallwriteCreate a wall in Revit between two points
revit_delete_elementdestructiveDelete an element by ID
revit_delete_sheetdestructiveDelete a sheet
revit_duplicate_sheetreadDuplicate a sheet
revit_edit_familywriteOpen a family for editing
revit_execute_pythonwriteExecute arbitrary Python/IronPython code inside Revit with broad access to the public Revit API.
revit_export_dwgreadExport view to DWG
revit_export_ifcreadExport to IFC
revit_export_imagereadExport view to Image
revit_export_navisworksreadExport to NWC
revit_extract_snapshotreadExtract a semantic BIM snapshot of the active document. Streams to a JSON file in the workspace directory.
revit_get_categoriesreadList Revit categories
revit_get_design_optionsreadGet design options
revit_get_document_inforeadGet information about the active Revit document
revit_get_element_bounding_boxreadGet element bounding box
revit_get_element_geometryreadGet geometric data for an element: location point or curve endpoints, bounding box, level, area, volume, and length.
revit_get_element_parametersreadGet all parameters of an element
revit_get_element_typereadFind element types/families
revit_get_elements_by_typereadGet element IDs and key parameters, filtered by type, category, and/or level.
revit_get_group_membersreadGet group members
revit_get_link_instancesreadGet link instances
revit_get_parameter_valuereadGet a specific parameter value
revit_get_phase_filtersreadGet phase filters
revit_get_phasesreadGet project phases
revit_get_revision_sequencesreadGet list of revision sequences
revit_get_rvt_linksreadGet RVT links
revit_get_schedule_datawriteGet schedule data
revit_get_selectionreadGet currently selected element IDs
revit_get_sheet_inforeadGet detailed information about a sheet
revit_get_snapshot_deltareadGet lists of unique IDs for elements added, modified, or deleted during the active session.
revit_get_type_parametersreadGet type parameters for an element
revit_get_view_templatesreadGet list of view templates
revit_get_warningsreadGet current project warnings
revit_get_worksetsreadGet all worksets
revit_healthreadCheck if Revit is running and get status information
revit_invoke_methodwriteInvoke any Revit API method dynamically using Reflection
revit_list_elementsreadList elements by category (Walls, Floors, Roofs, Doors, Windows, etc.)
revit_list_familiesreadList all loaded families and their types
revit_list_levelsreadList all levels in the Revit project
revit_list_project_parametersreadList project parameters
revit_list_shared_parametersreadList shared parameters in the document
revit_list_sheetsreadList all sheets
revit_list_titleblocksreadList available titleblocks
revit_list_viewsreadList all views in the Revit project
revit_mirror_elementreadMirror an element
revit_move_elementwriteMove an element
revit_pin_elementreadPin an element
revit_place_doorreadPlace a door in a wall
revit_place_family_instancereadPlace a family instance (e.g., furniture, equipment)
revit_place_viewport_on_sheetreadPlace a view on a sheet
revit_place_windowreadPlace a window in a wall
revit_populate_titleblockreadPopulate titleblock parameters
revit_reflect_getreadGet any Revit property value dynamically
revit_reflect_setwriteSet any Revit property value dynamically
revit_relinquish_allreadRelinquish all elements and worksets
revit_render_3dreadRender 3D view to image
revit_renumber_sheetsreadBatch renumber sheets
revit_replace_family_typereadReplace all instances of one family/type combination with another, identified by name.
revit_rotate_elementreadRotate an element
revit_save_documentwriteSave the current Revit document
revit_select_by_unique_idsreadSelect and zoom to elements in the active view by their UniqueId
revit_set_element_materialwriteSet material for an element or specific face
revit_set_parameter_valuewriteSet a parameter value for an element
revit_set_selectionwriteSet selection by element IDs
revit_set_type_parameterwriteSet a type parameter value
revit_sync_to_centralwriteSync to central model
revit_tag_all_in_viewreadTag all elements of a category in view
revit_ungroupreadUngroup a group
revit_unpin_elementreadUnpin an element
rhino_boolean_differencereadSubtract cutter Breps from a base Brep; returns new object GUIDs
rhino_boolean_unionreadBoolean union a list of Brep objects by GUID; returns new object GUIDs
rhino_clear_scenedestructiveDelete all objects in the Rhino document, or only objects on a specific layer
rhino_create_boxwriteCreate a box (rectangular prism) from two corner points in metres
rhino_create_cylinderwriteCreate a capped cylinder from base point, height, and radius in metres
rhino_create_spherewriteCreate a sphere by centre point and radius in metres
rhino_generate_diagrid_towerreadGenerate a parametric diagrid skyscraper with aluminum mullion sweeps and glass panel solids. All dims in metres.
rhino_get_document_inforeadGet the active Rhino document name, path, unit system, and object count
rhino_get_linesreadGet all curves/lines from the active Rhino document
rhino_get_scenereadGet all objects in the Rhino scene with their type, layer, and bounding box
rhino_healthreadCheck if the Rhino bridge is running and healthy
rhino_invoke_methodwriteInvoke a C# method on a Rhino object via reflection
rhino_list_layersreadList all layers in the Rhino document with name, color, visibility, and lock state
rhino_reflect_getreadGet a C# property value from a Rhino object via reflection
rhino_reflect_setwriteSet a C# property value on a Rhino object via reflection
rhino_run_pythonwriteExecute arbitrary IronPython code inside Rhino with full RhinoCommon access. stdout is captured and returned.
rhino_set_materialwriteApply a material to objects by GUID list or by layer name
rhino_set_viewwriteSet the active Rhino viewport display mode or projection
rhino_transform_objectswriteMove, rotate, or scale objects by GUID. Provide exactly one of: translation, rotation, or scale
rollback_planreadRollback an executed ActionPlan using inverse values.
snapshot_diffreadCompare two saved snapshots and identify differences (added, deleted, modified).
snapshot_queryreadQuery element records within a saved snapshot using filter DSL.
snapshot_takewriteExtract and save a complete semantic BIM snapshot of the active Revit model.
speckle_auth_statusreadGet Speckle OAuth authentication status.
speckle_checkout_versionreadCheckout Speckle version metadata.
speckle_create_branchwriteCreate an isolated Speckle branch for compatibility with model workflows.
speckle_create_modelwriteCreate an isolated Speckle model.
speckle_get_version_metadatareadRead Speckle version metadata.
speckle_healthreadCheck Speckle provider health.
speckle_list_modelsreadList Speckle models for a project. Branch aliases are included for compatibility.
speckle_list_projectsreadList Speckle projects.
speckle_list_versionsreadList Speckle versions for a model or branch.
speckle_merge_branchwriteCompatibility alias for merge_model.
speckle_merge_modelwriteMerge one Speckle model or branch into another through GraphQL.
speckle_oauth_exchange_codereadExchange a Speckle OAuth authorization code.
04

Trust audit

CAUTIONgrade B · trust 88/100 Install with care. The audit found things worth knowing before you trust its output.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeWARN
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfaceWARN
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (1 observation(s))
Network
declared (8 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
found

Findings (7)

MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:10
# Bridge URL (default: http://127.0.0.1:3000)
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:11
MCP_REVIT_BRIDGE_URL=http://127.0.0.1:3000
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
packages/mcp-server-revit/src/revit_mcp_server/bridge/client.py:12
def __init__(self, base_url: str = "http://127.0.0.1:3000", timeout: int = 30, token: str | None = None):
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/mcp-server-revit/tests/test_cloud_providers.py:479
received_base.token = "sensitive_token_to_redact"
MEDIUMFilesystem / path · mcp.destructive_tools · CWE-22, CWE-59
revit_delete_element, revit_delete_sheet, rhino_clear_scene
Why it matters. 3 tool(s) can delete or overwrite
Fix. prefer a read-only mode or scoped tokens; the page states the blast radius
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
docs/0002-switch-contract-v2.md:20
"endpoint": "http://127.0.0.1:<port>",
LOWNetwork egress · net.raw_ip · CWE-200, CWE-319
fixtures/canonical-model/README.md:11
The script discovers the active Revit bridge from `%LOCALAPPDATA%\AECModelBridge\registry\`, falls back to `http://127.0.0.1:3000`, and saves to `fixtures/canonical-model/generated/canonical_test_mode

Gates applied: no_behavioural_pass.

Audited 2026-10-08 · audit v0.4.1 · source sha 626cf70de10cfull audit observations/trust-audit/mcp-server/sam-aec__revit-5.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-08626cf70de10cCAUTIONB88first audit
06

Questions

What is the Revit MCP server?

Independent Revit MCP ( Model Context Protocol integration for Revit software ).

What tools does Revit expose?

200 in total: 131 read-only, 71 that write, and 3 that can delete or overwrite (revit_delete_element, revit_delete_sheet, rhino_clear_scene). Every one is listed on this page with its risk.

Is Revit safe to connect to an agent?

With care. The audit graded it B (88/100) and found 7 things worth knowing before you trust this server, listed below with the exact line each was found on. Separately from the audit: 3 of its tools can destroy data, so scope the token you give it to what you actually need.

What credentials does Revit need?

It reads AEC_MODEL_BRIDGE_REVIT_TOKEN, APS_CLIENT_SECRET, AUTODESK_CLIENT_SECRET and MCP_REVIT_BRIDGE_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Revit run?

It speaks stdio, so it runs as a local process your client starts. It is published on PyPI as aec-model-bridge.

How current is this page?

The grade is for one exact copy of the source (626cf70de10c), read on 2026-10-08. The repository is watched and re-audited when it changes.

Advertisement