The io.github.bimwright/rvt-mcp server is an MCP gateway for Autodesk Revit 2022โ2027. It provides a toolset with tool gating and supports transaction-safe batch execution. The project is described as offering local tools for agents and an optional personal bake loop.
๐ ๏ธ Key Features
MCP gateway for Autodesk Revit 2022โ2027
Toolset gating
Transaction-safe batch execution
Local tools for agents
Optional personal bake loop
๐ Use Cases
Integrate Revit 2022โ2027 automation into an MCP-based agent workflow
Perform grouped operations using transaction-safe batch execution
Restrict or control tool availability via tool gating
โก Developer Benefits
Clear scope across Revit versions (2022โ2027)
Safer automation via transaction-aware batch execution
Developer-focused MCP integration using stdio (as indicated by topics)
โ ๏ธ Limitations
Focused specifically on Autodesk Revit 2022โ2027 (not other versions/products)
Client machines should use the setup ZIP from GitHub Releases. It bundles a self-contained MCP server and Revit 2022โ2027 plugins โ no .NET SDK, NuGet global tool, or source clone.
AI agents: download RvtMcp.Setup-*-win-x64.zip from the latest release and run the installer. Do not clone, build, or dotnet tool install unless the user asked for a developer setup. Protocol: AGENTS.md.
The installer detects Revit 2022โ2027, installs matching plugins, copies the server under %LOCALAPPDATA%\RvtMcp\rvt\server\<version>\, and wires detected MCP clients. Override with -Client codex|opencode|claude|kilo|none.
Do not install v0.5.0 or earlier ZIPs. Do notdotnet tool install -g Bimwright.Rvt.Server (legacy 0.1โ0.3). Do not use NuGet instead of this ZIP on a Revit client machine โ the tool package has no add-in.
For AutoCAD, use dwg-mcp separately โ different product, different install.
Check that it works
Open Revit with a model.
Start the MCP connection from the ribbon (BIMwright / RvtMcp panel).
From the MCP client, list tools, then call revit_get_current_view_info.
Close every Revit first โ the build deploys plugin DLLs into %APPDATA%\Autodesk\Revit\Addins\<year>\RvtMcp\. install.ps1 finds Revit 2022โ2027, copies the server under %LOCALAPPDATA%\RvtMcp\rvt\server\<version>\, and wires detected MCP clients (-Client codex|opencode|claude|kilo|none, -Years 2024 for one year).
Optional โ NuGet server only (does not install Revit plugins). Use this if the add-in is already on the machine (ZIP or a local build) and you want the MCP server on PATH:
powershell
dotnet tool uninstall -g Bimwright.Rvt.Server # skip if you never installed the 0.1โ0.3 tool
dotnet tool install -g RvtMcp.Server --version 0.6.1
Command name: rvt-mcp. Keep using the GitHub Release ZIP for plugins. Bimwright.Rvt.Server is obsolete.
Migrating from Bimwright.Rvt.* (v0.3 and earlier)
v0.4+ renamed packages and folders to RvtMcp.* (repo name and brand stay bimwright).
Close every Revit.
pwsh scripts/uninstall-old.ps1 โ drops old %APPDATA%\โฆ\Bimwright\ plugins and old server root; keeps user bake/journal data and migrates it to %LOCALAPPDATA%\RvtMcp\ on first new launch.
Install the current GitHub Release ZIP (Client install above). Do not install v0.5.0 or earlier packages. Uninstall the old global tool if present: dotnet tool uninstall -g Bimwright.Rvt.Server.
Point MCP clients at entry name rvt-mcp (old per-year bimwright-rvt-r22โฆ entries are removed by the installer).
What this is
rvt-mcp is a local bridge between an MCP client (Claude, Cursor, Codex, OpenCode, โฆ) and a running Revit session.
Two processes:
Piece
Role
RvtMcp.Server
.NET 8 MCP server on stdio. No Revit reference โ builds anywhere.
RvtMcp.Plugin
One thin add-in per Revit year (2022โ2027). Runs inside Revit, executes on the UI thread.
Agent โ MCP โ server โ localhost TCP (โค2024) or Named Pipe (โฅ2025) โ plugin โ Revit API.
Everything stays on the machine. No cloud relay is required for the gateway itself.
There is no Node/TypeScript sidecar. Server, plugins, handlers, and ToolBaker are C# end to end. Shared command code lives in src/shared/; each year is a small shell project with #if where the API drifted. Details: ARCHITECTURE.md.
Why it exists
People who live in Revit already know what they want automated. The friction was always shipping that idea as software: learn enough C#/Dynamo, fight the API, package an add-in, survive version upgrades โ or pay someone else, or buy a fixed tool that only half-matches the office.
Agents change the first half of that loop (describe the task, try it live). They do not remove transactions, units, selection, worksharing, or โdid this just trash the model?โ That is what this gateway is for: a typed tool surface for common work, plus an escape hatch when you need ad-hoc C# inside Revit, plus an optional path to turn repeated local patterns into personal tools (ToolBaker).
It is not a universal add-in for every firm. Offices differ. The bet is: start from a shared runtime, grow your tools on top.
Scope posture (honest): we do not mint a new MCP tool for every edge case. Prefer typed tools when they exist; for everything else use revit_send_code_to_revit (C# only). Family project management is covered; full Family Editor authoring suites and Revit Viewer hosts are out of scope for now โ see docs/roadmap.md.
How a normal session looks
Revit open with a model; plugin connected (ribbon).
MCP client starts rvt-mcp / the installed server.
Agent uses tools: query view/selection, create grids/rooms, sheets, MEP, export, โฆ Lengths in mm at the tool boundary.
Several writes in one undo step: revit_batch_execute.
Multiple Revits running: revit_list_available_targets then revit_switch_target with a four-digit year (2024, not R24).
When no typed tool fits:
text
revit_send_code_to_revit # C# body, compiled and run inside the plugin
That tool is on by default (toolset meta). Strip it with --read-only or --disable-toolbaker if you do not want agents compiling code in the model.
ToolBaker (optional)
Default surface includes revit_send_code_to_revit. revit_list_baked_tools / revit_run_baked_tool need --toolsets toolbaker (or --toolsets all).
Adaptive bake (suggest new tools from usage) is off unless you enable it. When on, repeated patterns can show up under revit_list_bake_suggestions; you accept or dismiss explicitly. Nothing ships itself into your ribbon without that step.
Useful flags (also JSON / env โ see Configuration):
Goal
What to turn on
Learn tools from repeated typed calls
--enable-adaptive-bake
Also cluster send_code bodies for suggestions
plus --cache-send-code-bodies (redacted; still local)
Short-lived disk journal of send_code bodies
persistSendCodeBodies + TTL (default privacy keeps this off)
Bake compile runs inside Revit via Roslyn โ end users do not need Visual Studio. Details and privacy notes: docs/bake.md.
Toast (optional)
Completion toast in Revit is on by default. Turn off with the ribbon Toast button, enableToast: false in config, or BIMWRIGHT_ENABLE_TOAST=0. Only finished calls are shown (no โin progressโ toast). Capture success can show a thumbnail when the file sits under the path allowlist. Ribbon Status also prints toast + bake/privacy flags so you can see what is enabled without guessing.
Architecture (short)
text
MCP client (stdio)
โ RvtMcp.Server (.NET 8)
โ TCP (Revit 2022โ2024) or Named Pipe (2025โ2027)
โ Plugin shell (per year)
โ ExternalEvent โ Revit API / transactions / undo
Handlers return plain DTOs โ never live Revit objects on the wire.
Tools
Counts (without counting personal baked tools):
Mode
Tools
Notes
Default
40
query + create + view + meta
--toolsets all
229
Full catalog
all + adaptive bake
232
Adds 3 suggestion-lifecycle tools
Tool names are MCP-facing as revit_*. Wire names between server and plugin stay unprefixed snake_case.
Default-on toolsets:query, create, view, meta
Off unless you ask: everything else (export, geometry, mep, structural, toolbaker, modify, delete, โฆ).
Example: --toolsets query,view,meta or --toolsets all. --read-only drops every write-capable toolset (including create).
Close Revit before building plugins (DLL lock). Plugin projects deploy into %APPDATA%\Autodesk\Revit\Addins\<year>\RvtMcp\ on a normal Debug/Release build.
Usable, not sacred. CI builds the six plugin shells and server tests. Runtime coverage is strongest on mid-range years; treat production models carefully and verify on your Revit build. Fresh-machine checklist: docs/testing/fresh-install-checklist.md.