aec-model-bridge

mcp
Guvenlik Denetimi
Gecti
Health Gecti
  • License — License: GPL-3.0
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 68 GitHub stars
Code Gecti
  • Code scan — Scanned 12 files during light audit, no dangerous patterns found
Permissions Gecti
  • Permissions — No dangerous permissions requested

Bu listing icin henuz AI raporu yok.

SUMMARY

Open-source Revit MCP server: let Claude and other AI assistants read and edit BIM models, with human approval on every change.

README.md
AEC Model Bridge logo: an isometric model cube with a bridge arch

AEC Model Bridge: Revit MCP server

An open-source Revit MCP server and AI assistant for Revit. It lets Claude, Codex and other Model Context Protocol clients read and edit BIM models, with you approving every change.

MCP Registry
License
Python
Revit

Install | Connect a client | Tools | Documentation | Latest release

AEC Model Bridge is a Python MCP server plus a native Revit add-in. An AI
assistant such as Claude or Codex connects to the server, and the server runs
BIM automation tasks in the Revit model you have open. The same server also
reads IFC files, and it has providers for Rhino and Grasshopper, Speckle and
Navisworks.

It does not edit your model on its own. Any tool that changes the model goes
through a plan that you review and approve first. See
How approval works.

What can the AI do in Revit?

The server exposes more than 200 tools across all providers. The full list is
in the tool reference. In Revit, the tools cover:

  • Reading the model: list elements, categories, levels, views, sheets and
    families. Read element and type parameters, geometry, worksets, links,
    phases and warnings.
  • Editing parameters: set one value, set values in batches, or set values
    for every element matching a filter. Create shared and project parameters.
  • Creating elements: walls, floors, roofs, levels, grids, columns, beams,
    doors, windows, rooms, family instances, and some MEP elements such as ducts,
    pipes and conduit.
  • Documentation: create views and sections, apply view templates, create
    and renumber sheets, place viewports, tag elements, add text notes and
    dimensions, and build schedules.
  • Exports: IFC, DWG, images and Navisworks.
  • Checks and reports: model snapshots and change diffs, a QA/QC checker,
    and report generation.

For anything the tool catalog does not cover, invoke_method, reflect_get
and reflect_set work with public Revit API members, and 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.

How it works

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.

---
config:
  look: neo
  theme: base
  themeVariables:
    primaryColor: "#334155"
    primaryTextColor: "#FFFFFF"
    primaryBorderColor: "#1E293B"
    secondaryColor: "#334155"
    tertiaryColor: "#334155"
    lineColor: "#6E7781"
    textColor: "#6E7781"
    titleColor: "#6E7781"
    nodeTextColor: "#FFFFFF"
    clusterBkg: "rgba(110,119,129,0.10)"
    clusterBorder: "#6E7781"
    edgeLabelBackground: "#334155"
    actorBkg: "#334155"
    actorTextColor: "#FFFFFF"
    actorBorder: "#1E293B"
    actorLineColor: "#6E7781"
    signalColor: "#6E7781"
    signalTextColor: "#6E7781"
    labelBoxBkgColor: "#334155"
    labelBoxBorderColor: "#6E7781"
    labelTextColor: "#FFFFFF"
    loopTextColor: "#6E7781"
    sequenceNumberColor: "#FFFFFF"
    noteBkgColor: "#F59E0B"
    noteTextColor: "#1F1300"
    noteBorderColor: "#92400E"
    transitionColor: "#6E7781"
    transitionLabelColor: "#FFFFFF"
    stateLabelColor: "#FFFFFF"
    stateBkg: "#334155"
    labelBackgroundColor: "#334155"
    compositeBackground: "#334155"
    specialStateColor: "#6E7781"
---
flowchart LR
  subgraph clients["AI clients"]
    client(["MCP client<br/>Claude, Codex, VS Code"])
  end

  subgraph hubzone["Python hub"]
    hub["MCP hub<br/>routes every tool call"]
    revitP["Revit provider"]
    rhinoP["Rhino provider"]
    navP["Navisworks provider"]
    ifcP["IFC provider"]
    speckleP["Speckle provider"]
  end

  subgraph apps["Desktop apps, add-ins on localhost"]
    revitA["Revit add-in"]
    rhinoA["Rhino add-in"]
    navA["Navisworks<br/>add-in<br/>in progress"]
  end

  ifcLib[("IFC files<br/>read with IfcOpenShell")]
  cloud(["Speckle server"])

  client -->|"sends tool calls"| hub
  hub -->|"routes Revit tools"| revitP
  hub -->|"routes Rhino tools"| rhinoP
  hub -.->|"routes Navisworks tools"| navP
  hub -->|"routes IFC tools"| ifcP
  hub -->|"routes Speckle tools"| speckleP
  revitP -->|"HTTP"| revitA
  rhinoP -->|"HTTP"| rhinoA
  navP -.->|"local bridge"| navA
  ifcP -->|"parses"| ifcLib
  speckleP -->|"syncs"| cloud

  classDef live fill:#0F766E,stroke:#0B4F4A,stroke-width:1.5px,color:#FFFFFF
  classDef wip fill:#F59E0B,stroke:#92400E,stroke-width:1.5px,stroke-dasharray:4 3,color:#1F1300
  classDef data fill:#4F46E5,stroke:#3730A3,stroke-width:1.5px,color:#FFFFFF
  class hub,revitP,rhinoP,ifcP,speckleP,revitA,rhinoA live
  class navP,navA wip
  class ifcLib,cloud data

Teal boxes work today. The amber dashed boxes are in progress. Indigo
shapes are data and external services.

How approval works

The hub stops any tool call that changes the model unless it carries an
approved plan. The default mode is required. The AI proposes a plan, you
review it in the Revit side panel, and the add-in runs it on Revit's main
thread in a named transaction.

---
config:
  look: neo
  theme: base
  themeVariables:
    primaryColor: "#334155"
    primaryTextColor: "#FFFFFF"
    primaryBorderColor: "#1E293B"
    secondaryColor: "#334155"
    tertiaryColor: "#334155"
    lineColor: "#6E7781"
    textColor: "#6E7781"
    titleColor: "#6E7781"
    nodeTextColor: "#FFFFFF"
    clusterBkg: "rgba(110,119,129,0.10)"
    clusterBorder: "#6E7781"
    edgeLabelBackground: "#334155"
    actorBkg: "#334155"
    actorTextColor: "#FFFFFF"
    actorBorder: "#1E293B"
    actorLineColor: "#6E7781"
    signalColor: "#6E7781"
    signalTextColor: "#6E7781"
    labelBoxBkgColor: "#334155"
    labelBoxBorderColor: "#6E7781"
    labelTextColor: "#FFFFFF"
    loopTextColor: "#6E7781"
    sequenceNumberColor: "#FFFFFF"
    noteBkgColor: "#F59E0B"
    noteTextColor: "#1F1300"
    noteBorderColor: "#92400E"
    transitionColor: "#6E7781"
    transitionLabelColor: "#FFFFFF"
    stateLabelColor: "#FFFFFF"
    stateBkg: "#334155"
    labelBackgroundColor: "#334155"
    compositeBackground: "#334155"
    specialStateColor: "#6E7781"
---
sequenceDiagram
  autonumber
  participant You
  participant AI as AI assistant
  participant Hub as MCP hub + ApprovalGate
  participant Panel as Side panel (WebView2)
  participant Addin as Revit add-in
  participant Model as Revit model

  AI->>Hub: plan_actions (proposed changes)
  Hub->>Panel: show the pending plan
  Panel->>You: review the plan
  alt You approve
    You->>Panel: Approve
    Panel->>Hub: approved
    AI->>Hub: execute_plan
    Hub->>Addin: forward the commands
    Addin->>Model: run in one named transaction
    Model-->>Addin: done
    Addin-->>AI: result (rollback_plan can reverse it)
  else You reject, or never approve
    You->>Panel: Reject
    Panel->>Hub: rejected
    AI->>Hub: execute_plan
    Hub--xAI: blocked, the model is untouched
  end

If a plan is approved and later turns out wrong, rollback_plan reverses it.
Rollback uses Revit Undo in the same session or inverse parameter values.
Operations that cannot be reversed, such as file output, ask for a second
confirmation. 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.

Supported Revit versions

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

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.

Other integrations

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.

Install the Revit add-in

You install two parts: the Python MCP server and the Revit add-in. Live Revit
automation needs both.

1. Install the MCP server

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

2. Install the Revit add-in

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

Prebuilt packages are attached to GitHub releases when available. The source
installation above works for all supported Revit versions. 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.

Connect Claude Desktop to Revit

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

Check the connection

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.

Security

  • The Revit bridge listens on localhost only.
  • The server reads and writes only inside the folders in
    MCP_REVIT_ALLOWED_DIRECTORIES.
  • Mutating tools need an approved plan unless you turn approval off.
  • Tool calls are written to an audit log, and secrets are redacted.

Details are in docs/security.md. To report a
vulnerability, follow SECURITY.md.

FAQ

What is an MCP server for Revit?

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.

Which AI assistants work with it?

Any MCP client that can start a local stdio server. We document Claude
Desktop, VS Code with GitHub Copilot, and clients that read a standard
mcpServers configuration. 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.

Can the AI change my model without asking?

Not in the default mode. Tools that change the model are blocked until a plan
is approved in the Revit panel. Read-only tools run without approval. If you
set MCP_REVIT_APPROVAL_MODE=auto, approval is skipped.

Does it send my model to the cloud?

The server and the add-in run on your machine, and the bridge listens on
localhost. What the AI assistant sees depends on the client you use: the tool
results go to that client's model provider. Cloud-facing providers, such as
Speckle, only run when you configure them and call their tools.

Does it work with IFC files without Revit?

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.

Can I use it without Revit installed?

You can run the server in mock mode for development and tests. Live model work
needs Revit 2024 to 2027 and the add-in.

Releases and versions

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.

Development

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

Documentation

Project and license

Maintained by A. Sam Mohammad.
LinkedIn |
Issues

Version 1.1.0 and later is available under your choice of
GPL-3.0-or-later with the Revit Linking Exception, or a separate commercial
license
. The GPL option permits community use while allowing the
add-in to operate through Autodesk Revit APIs. Commercial terms are available
for proprietary distribution and negotiated requirements. Version 1.0.2 and
earlier remains available under the MIT License.

AEC Model Bridge is an independent project and is not sponsored, endorsed, or
provided by Autodesk. Autodesk and Revit are trademarks of the Autodesk group
of companies. See TRADEMARKS.md.

Yorumlar (0)

Sonuc bulunamadi