aec_map_workspace_pathLABSCO SUMMARY
The typed tools are the safe path; the reflection tools are the sharp one.
invoke_method, reflect_get, reflect_set and execute_python reach any public .NET member and run with the same permissions as the Revit process itself — powerful for work the catalog does not cover, and the reason the project tells you to keep the bridge on localhost and only connect clients and prompts you trust. Check the platform status before planning around a provider: Revit, Rhino, IfcOpenShell and Speckle are available, while Navisworks and Power BI are routed but not yet registered in the shipped hub.
What it is
A Python hub that speaks MCP to your client and routes each call to whichever application the task needs: a native C# add-in inside Revit, the Rhino bridge add-in over local HTTP, headless IfcOpenShell parsing, or Speckle for model hand-off.
What you get
- Typed tools for model authoring, documentation, parameters, views, sheets, exports and QA, in
revit_*,rhino_*,speckle_*andnavisworks_*families - Revit through a native add-in that executes on the main thread, with no Dynamo or pyRevit dependency
- Rhino and Grasshopper over the Rhino bridge add-in, IFC semantic extraction through IfcOpenShell, and model push to Speckle
- Escape hatches for work outside the tool catalog:
invoke_method,reflect_get,reflect_set, andexecute_pythonfor IronPython inside Revit - Async job orchestration and centralised PII redaction
- A mock mode that runs the server and its tests with no Revit installed
Requirements
Windows 10 or 11, Python 3.11 or later, and a licensed Revit — 2024 through 2027, each needing the matching .NET SDK to build the add-in. Install the Python server into a virtual environment, then package and install the add-in for your Revit year. The client config sets MCP_REVIT_MODE, MCP_REVIT_BRIDGE_URL, MCP_REVIT_WORKSPACE_DIR and MCP_REVIT_ALLOWED_DIRECTORIES. The bridge listens on localhost only by default.
Setup effort
Build from source — git clone https://github.com/Sam-AEC/aec-model-bridge.git
USE CASES
Answering a parameter question without opening the model
Query the Revit parameters through the typed tools while the model stays open on your machine.
Moving geometry between Rhino and Revit
Draw in Rhino and query or place in Revit from the same conversation, instead of exporting and re-importing by hand.
Reading an IFC file nobody has a licence for
Extract the semantic content headlessly, with no desktop application involved.
Doing something the tool catalog does not cover
Reach the .NET API member directly, or run IronPython inside Revit with the document and application objects already bound.
Building against it without Revit open
Run in mock mode so development and automated tests do not need a licensed install.
19 tools
Listed in project docs. Your client may show a different list.
aec_register_mappingaec_translate_idapprove_planexecute_planlist_pending_plansplan_actionsreject_planrollback_planautodesk_data_auth_statusautodesk_data_checkout_versionautodesk_data_create_issueautodesk_data_create_topicautodesk_data_get_version_metadataautodesk_data_healthinvoke_methodreflect_getreflect_setexecute_pythonBEFORE YOU INSTALL
What to know first
Tools you get
19 tools named in the project's documentation. The generated tool catalogue lists 227 across revit_*, rhino_*, speckle_*, navisworks_* and other families; the 15 navisworks_* tools are not reachable on a fresh install.
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
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-revit2. Install the Revit add-in
$RevitVersion = Read-Host "Revit year (2024, 2025, 2026, or 2027)"
.\scripts\package.ps1 -RevitVersion $RevitVersion
.\scripts\install.ps1 -RevitVersion $RevitVersionMCP Clients
GitHub Copilot in VS Code
code --add-mcp "{`"name`":`"revit`",`"type`":`"stdio`",`"command`":`"python`",`"args`":[`"-m`",`"revit_mcp_server.mcp_server`"],`"env`":{`"MCP_REVIT_MODE`":`"bridge`",`"MCP_REVIT_BRIDGE_URL`":`"http://127.0.0.1:3000`",`"MCP_REVIT_WORKSPACE_DIR`":`"C:\\RevitProjects`",`"MCP_REVIT_ALLOWED_DIRECTORIES`":`"C:\\RevitProjects`"}}"Claude Desktop, Cursor, Other MCP clients
{
"mcpServers": {
"revit": {
"command": "python",
"args": [
"-m",
"revit_mcp_server.mcp_server"
],
"env": {
"MCP_REVIT_MODE": "bridge",
"MCP_REVIT_BRIDGE_URL": "http://127.0.0.1:3000",
"MCP_REVIT_WORKSPACE_DIR": "C:\\RevitProjects",
"MCP_REVIT_ALLOWED_DIRECTORIES": "C:\\RevitProjects"
}
}
}
}Any MCP client — PyPI install
{
"mcpServers": {
"revit": {
"command": "aec-model-bridge",
"env": {
"MCP_REVIT_MODE": "bridge",
"MCP_REVIT_BRIDGE_URL": "http://127.0.0.1:3000",
"MCP_REVIT_WORKSPACE_DIR": "C:\\RevitProjects",
"MCP_REVIT_ALLOWED_DIRECTORIES": "C:\\RevitProjects"
}
}
}
}