MCP server connecting AI assistants to Autodesk Revit through a local bridge.
Runs on your machine from its package; the steps are below.

At most: moves money, runs code or commands, deletes data, or sends messages for you.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Distributed as an MCP bundle (`https://github.com/Sam-AEC/Autodesk-Revit-MCP-Server/releases/download/v0.1.1/revit-mcp-server-0.1.1.mcpb`) — download it and import the bundle in your MCP client.
English | 简体中文 | Español | हिन्दी | العربية | Português (BR) | Русский | 日本語 | Deutsch | Français | Bahasa Indonesia | Türkçe | 한국어 | Tiếng Việt | Italiano | Polski | 繁體中文
Ask your AI about the Revit model you have open. By default, write tools are blocked until you approve a plan.
Open-source MCP server and native add-in for Revit 2024 – 2027. Works with Claude, Codex and other MCP clients.
Get started | Example workflows | Tools | Documentation | Download
Status: on the dev branch, not yet released.
AEC Model Bridge is the open-source Revit MCP server that lets Claude, Codex, Cursor and other AI assistants read and edit your open Revit model. By default you approve every change first. It has two parts: a Python MCP server and a native Revit add-in. Read-only tools inspect the model straight away. Model changes need an approved plan by default. See the approval flow.
Who it is for. BIM coordinators and managers who want an AI assistant to check model quality, find affected elements and prepare parameter fixes, while a person stays in control of every change. You do not need to write scripts.
Status and limits. This is pre-release software.
Setup is documented for Claude Desktop, VS Code with GitHub Copilot, Cursor and Codex. The server is a standard MCP stdio server, so other clients such as Claude Code, Windsurf, Cline, Continue, Zed and Gemini CLI should work too. The compatibility page lists what is documented and what is untested.
The same server also inspects IFC files, automates Rhino and Grasshopper, and connects to Speckle. Integration status shows which providers are available and which are still in progress.
For BIM coordinators: check model quality, review the affected elements, approve a parameter fix, then check the result and export a report. These examples use tools in the current catalog.
| Workflow | Example request | Tools used |
|---|---|---|
| Model review | "Show the active document, list its warnings and find affected elements." | revit_get_document_info, revit_get_warnings, revit_get_elements_by_type |
| Parameter updates | "Find walls on Level 02, show their Comments values, and propose a batch update." | revit_get_elements_by_type, revit_get_element_parameters, revit_batch_set_parameters |
| Drawing production | "Prepare a sheet list from this CSV, then propose creating the sheets and placing the views." | revit_batch_create_sheets_from_csv, revit_place_viewport_on_sheet |
| IFC review | "Show this IFC file's storeys, inspect the wall properties and report schema validation issues." | ifc_get_spatial_structure, ifc_get_properties, ifc_validate |
For a first run in Revit, try:
Read the active model's warnings. Group them by description and show the
affected element IDs. Then suggest which issues to investigate first.
Then try a parameter correction, replacing the level and value for your project:
Find walls on Level 02 and show their current Comments values. Propose setting
Comments to "Coordination reviewed" for the elements I choose. After I approve
the plan in Revit, apply it and read the values back to confirm the result.
For edits, the assistant creates a plan with plan_actions. You review it in
the Revit panel, and only then does execute_plan apply it. IFC review runs
without Revit.
The snapshot QA/QC and report modules need a compatible saved snapshot. The
handoff from Revit to these modules currently needs the filename and workspace
to match. If you leave out snapshot_id, most of these modules now refuse in
bridge mode with a clear message, and return generated sample data only in mock
mode. Not every module has that guard yet (model_bloat does not), so always
pass snapshot_id. For live inspection, use the direct Revit tools above.
Planned fixes and demo.
In 60 seconds, without Revit (mock mode)
"MCP_REVIT_MODE": "mock". The one-click buttons below start in bridge
mode, which needs Revit.bridge.One-click install
The buttons need uv
and nothing else. The server uses ~/Documents/AEC Model Bridge as its
workspace unless you set your own. For Claude Desktop, download the .mcpb
file from the latest release and open it. Live Revit work still needs Revit and
the add-in. Mock mode needs neither.
Manual setup
For live Revit automation you need Windows, a licensed Revit 2024 to 2027,
Python 3.11 or newer, uv, and the Revit add-in
(install steps). Then add this to your
claude_desktop_config.json (Codex, Cursor and VS Code use the same values;
the two directory variables are optional and default to the workspace above):
{
"mcpServers": {
"aec-model-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/Sam-AEC/aec-model-bridge#subdirectory=packages/mcp-server-revit",
"aec-model-bridge"
],
"env": {
"MCP_REVIT_MODE": "bridge",
"MCP_REVIT_WORKSPACE_DIR": "C:\\RevitProjects",
"MCP_REVIT_ALLOWED_DIRECTORIES": "C:\\RevitProjects"
}
}
}
}
Want to look at the tools first, without Revit? Set "MCP_REVIT_MODE": "mock".
The server then starts on any machine, lists every tool with its schema and
returns canned responses. It does not touch a model. A Dockerfile for the same mock
mode is in the repository root (docker build -t aec-model-bridge ., then
docker run -i --rm aec-model-bridge).
Using VS Code? The extension source and local install steps register the MCP server and show the Revit connection status. It has not been published to the Marketplace.
| Area | Tools | What they do |
|---|---|---|
| Revit | 103 | Read the model, create and edit elements, parameters, views, sheets, schedules, exports, worksharing |
| Approval | 6 | Plan, review, approve, execute and roll back model changes |
| Modules | 34 | Snapshot inspection, parameter grids, QA/QC checks, recipes, reports, selections |
| Rhino and Grasshopper | 19 | Geometry, layers, materials, boolean operations |
| Speckle | 17 | Projects, models, versions, send and receive |
| Navisworks | 15 | Model tree, viewpoints, clash tests (in progress) |
| IFC | 7 | Read IFC files without Revit: structure, properties, validation |
| Graph, snapshots, exports, jobs | 18 | Semantic graph audits, snapshot diffs, SQLite export, background jobs |
219 tools are listed in the default setup (counted from the current server in mock
mode). The Autodesk Data tools appear when APS credentials are configured. The
tool reference lists every tool. Each tool carries
MCP annotations (readOnlyHint, destructiveHint, idempotentHint,
openWorldHint), so clients can tell reads from writes.
Alongside model queries and parameter updates, Revit tools create building elements, views, sheets, schedules, tags and dimensions, and export IFC, DWG, images and Navisworks files. See the tool reference for supported operations and inputs.
For anything the tool catalog does not cover, revit_invoke_method,
revit_reflect_get and revit_reflect_set work with public Revit API members.
revit_execute_python runs IronPython inside Revit. These advanced tools have
the same permissions as the Revit process. Use them only with MCP clients and
prompts you trust.
The MCP client talks to one Python hub. The hub sends each call to the provider that owns the tool. Providers for desktop apps talk to a small add-in inside that app over localhost.
Diagram source: architecture.mmd. Regenerate the images with python scripts/render_diagrams.py.
Teal boxes work today. The amber dashed boxes are in progress. Indigo shapes are data and external services.
In plain words:
look_only lets the assistant read but refuses
every tool that changes the model. ask_first (the default, also written
required) lets it draft changes, but nothing runs until a person approves.
A third value, auto, switches the check off and is meant only for
controlled pipelines.aec-model-bridge-approve command.The hub stops any tool call that changes the model unless it carries an
approved plan. The AI proposes a plan, you review it, and the add-in runs it on
Revit's main thread. The panel's Plans list shows each pending plan's tools,
arguments and, when one was captured, the before-value. For the full review of
a plan, including any reasoning and warnings the assistant attached, run
aec-model-bridge-approve show <plan_id>; the panel does not show that review
text. Parameter and model-edit actions each run in their own named
transaction; some actions (save, sync, scripts) do not, so Ctrl+Z does not
cover them.
Diagram source: approval-flow.mmd. Regenerate the images with python scripts/render_diagrams.py.
If a plan turns out wrong, undo it with Revit's Ctrl+Z. Each parameter write is
its own named transaction, so one plan can take several presses. A one-step undo
for a whole plan is planned, not built. A second route is a revert plan: the
assistant drafts one with plan_revert from the proof of an executed plan, and
you approve it like any other plan. rollback_plan also writes the recorded
before-values back in reverse order and can skip an action when no before-value
was recorded, but it is for people only and has no panel button or command-line
command yet, so do not count on it. None of these paths is verified in a live
Revit session yet (UNVERIFIED). Operations that cannot be reversed, such as
file output, are not undone by any of them and do not get a second confirmation
yet (planned). The panel's Plans list shows pending plans only; aec-model-bridge-approve show <plan_id>
works for a plan in any state, while proofs/ bundles exist only for plans that
were executed (or attempted). The lifecycle is in
ADR 0008.
For unattended pipelines you can set MCP_REVIT_APPROVAL_MODE=auto. That turns
the human check off, so use it only in a controlled environment.
| Revit version | Add-in target | Build tools |
|---|---|---|
| 2024 | .NET Framework 4.8 | .NET 8 SDK and .NET Framework 4.8 developer pack |
| 2025 | .NET 8 for Windows | .NET 8 SDK |
| 2026 | .NET 8 for Windows | .NET 8 SDK |
| 2027 | .NET 10 for Windows | .NET 10 SDK |
These are the build targets. CI compiles the add-in for all four years, but no year has been verified in a live Revit session yet.
You also need Windows 10 or 11, Python 3.11 or later, and a licensed Revit installation for the version you use. Mock mode runs the server without Revit, which is useful for development and tests.
| Integration | Status |
|---|---|
| Revit | Available. Native C# add-in. |
| IFC (IfcOpenShell) | Available. Reads IFC files without Revit running. |
| Rhino and Grasshopper | Available. Connects to the Rhino add-in on localhost:3004. |
| Speckle | Available. Needs a Speckle client ID in your environment. |
| Navisworks Manage | In progress. The provider and its tools are registered. The Navisworks add-in is not finished. |
| Power BI | In progress. The provider and tool exist but are not registered in the hub. |
| Excel, Parquet and DuckDB | Planned. |
Product names and logos belong to their owners. The banner uses them only to show what this project works with.
Easiest (Windows): download AECModelBridge-Setup-<version>.exe from the latest release, double-click it, pick your Revit versions and restart Revit. It installs the add-in and the bundled Python server. If you tick the box, it also sets up Claude Desktop and VS Code, and it backs up your current settings first. Uninstall it from Windows Settings. The steps below are for building from source.
You install two parts: the Python MCP server and the Revit add-in. Live Revit automation needs both.
git clone https://github.com/Sam-AEC/aec-model-bridge.git
cd aec-model-bridge
py -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -e packages/mcp-server-revit
Set the version to match your Revit installation. If Windows blocks the
downloaded scripts, right-click each .ps1 file, open Properties, and select
Unblock before running them.
$RevitVersion = Read-Host "Revit year (2024, 2025, 2026, or 2027)"
.\scripts\package.ps1 -RevitVersion $RevitVersion
.\scripts\install.ps1 -RevitVersion $RevitVersion
The installer places version-specific binaries in:
C:\ProgramData\AECModelBridge\bin\<year>
The add-in manifest is installed per user in:
%APPDATA%\Autodesk\Revit\Addins\<year>
Use -AllUsers with install.ps1 to install the manifest under
C:\ProgramData\Autodesk\Revit\Addins\<year> instead.
To prepare binaries for every supported version in one pass:
.\scripts\package.ps1 -RevitVersion All
Each GitHub release
has a ready-made package per Revit year, for example
aec-model-bridge-revit-2026-<version>.zip. Unzip it and run
.\install.ps1 -RevitVersion 2026 instead of building from source. For a double-click
Windows installer, scripts/build-installer.ps1 builds one with Inno Setup.
The full guide, with troubleshooting, is in docs/install.md.
Add the server to your MCP client configuration. For Claude Desktop, that is
the mcpServers section of claude_desktop_config.json. Codex, Cursor, VS
Code and other MCP clients use the same command, args and env values in
their own config format.
Use the Python executable from your virtual environment, and choose a workspace folder the server may access:
{
"mcpServers": {
"aec-model-bridge": {
"command": "C:\\path\\to\\aec-model-bridge\\.venv\\Scripts\\python.exe",
"args": ["-m", "revit_mcp_server.mcp_server"],
"env": {
"MCP_REVIT_MODE": "bridge",
"MCP_REVIT_WORKSPACE_DIR": "C:\\RevitProjects",
"MCP_REVIT_ALLOWED_DIRECTORIES": "C:\\RevitProjects"
}
},
"aec-model-bridge-revit-2026": {
"command": "C:\\path\\to\\aec-model-bridge\\.venv\\Scripts\\python.exe",
"args": ["-m", "revit_mcp_server.mcp_server"],
"env": {
"MCP_REVIT_MODE": "bridge",
"MCP_REVIT_HOST_VERSION": "2026",
"MCP_REVIT_WORKSPACE_DIR": "C:\\RevitProjects",
"MCP_REVIT_ALLOWED_DIRECTORIES": "C:\\RevitProjects"
}
}
}
}
Leave out MCP_REVIT_HOST_VERSION to target the newest open Revit instance.
Set it to a year such as 2024 or 2026 to lock a client entry to that Revit
version. MCP_REVIT_BRIDGE_URL overrides the endpoint for advanced setups.
VS Code users can start from .vscode/mcp.json. Hermes
Desktop users can start from docs/examples/hermes-desktop.json after replacing the
placeholder Python path. Clients that support MCP Bundles can install the
.mcpb file from the
latest release.
The Revit add-in is still required, because the server talks to the running
desktop application.
Restart Revit after installing the add-in, open a model, and run:
$registry = Get-ChildItem "$env:LOCALAPPDATA\AECModelBridge\registry\revit-*.json" | Select-Object -First 1
$switch = Get-Content $registry.FullName -Raw | ConvertFrom-Json
Invoke-RestMethod "$($switch.endpoint)/health"
The response should report healthy and the running Revit version. In Revit,
look for the AEC Bridge ribbon tab. Its Workflows panel has Open Panel,
Health Check, Pending Actions and Reports. Its Tools panel has Config, Help
and About.
MCP_REVIT_ALLOWED_DIRECTORIES.look_only mode refuses them outright.Details are in docs/security.md. To report a vulnerability, follow SECURITY.md.
The Model Context Protocol (MCP) is an open standard that lets AI assistants call tools in other software. An MCP server for Revit publishes Revit operations as tools. The assistant picks the tools, and the add-in runs them inside Revit.
Any MCP client that can start a local stdio server. Setup is documented for
Claude Desktop, VS Code with GitHub Copilot, Cursor and Codex, and for clients
that read a standard mcpServers configuration. Windsurf, Cline, Roo Code,
Continue, Zed, Claude Code and Gemini CLI should work the same way but have not
been tested. See compatibility. The panel chat can also
use an Anthropic API key, or the claude or codex command-line tools if they
are installed. See ADR 0012.
Not in the default mode. Tools that change the model are blocked until a plan
is approved by a person, in the Revit panel or with the
aec-model-bridge-approve command. Read-only tools run without approval. In
look_only mode nothing that changes the model runs at all. If you set
MCP_REVIT_APPROVAL_MODE=auto, approval is skipped.
The server and the add-in run on your machine, and the bridge listens on localhost. The AI assistant sees what the tools return, and those results go to the model provider behind your client. Cloud providers, such as Speckle, only run when you configure them and call their tools.
Yes. The IFC provider reads files with IfcOpenShell. It can return file metadata, the spatial structure, element properties and bounding boxes, run queries by class, GUID, name or property, and validate the schema. It does not edit IFC files.
Only in mock mode, which is meant for development and tests. Live model work needs Revit 2024 to 2027 and the add-in.
AEC Model Bridge follows Semantic Versioning. Releases are tagged vX.Y.Z on
GitHub, and a root VERSION file holds the version number. See
docs/versioning.md for the release process and
CHANGELOG.md for what changed in each version.
# Python tests
python -m pytest packages/mcp-server-revit/tests
# Build one Revit version, for example 2026
.\scripts\build-addin.ps1 -RevitVersion 2026 -Configuration Release
# Build all supported versions
.\scripts\package.ps1 -RevitVersion All
CI builds the Python server and the add-in targets for Revit 2024 through 2027. See CONTRIBUTING.md before opening a pull request.
AEC Model Bridge stands on open-source work. It is independent and is not affiliated with or endorsed by any project named here.
Licence texts and the full list of packages are in THIRD_PARTY_NOTICES.md. Licences were read from package metadata; rows that could not be verified are marked as such.
Maintained by A. Sam Mohammad. LinkedIn | Issues
GPL-3.0-or-later with the Revit Linking Exception, or a commercial license.