← Discover MCPs and Agents
r
MCPAI & MLGitHub

revit-mcp-server

mcp-servers-for-revit — 80+ AI automation tools for Autodesk Revit via Model Context Protocol (Revit 2023-2026)

Links

README

From the repo.

Cover Image

mcp-servers-for-revit

Connect AI assistants to Autodesk Revit via the Model Context Protocol.


mcp-servers-for-revit enables AI clients like Claude, Cline, and other MCP-compatible tools to read, create, modify, and delete elements in Revit projects in real time. It exposes 138 tools covering project info, model analysis, element creation, batch operations, data export, and more.

[!NOTE] This is a fork of the original revit-mcp project with additional tools and functionality improvements.

Key Features

  • 124 MCP tools — project info, model health, clash detection, element CRUD, batch operations, data export (PDF/DWG/IFC/CSV)
  • Revit 2023, 2024, 2025, 2026, 2027 — fully tested on all five versions
  • Language-independent — works with any Revit UI language (English, Italian, French, German, etc.) using BuiltInCategory resolution
  • Built-in Claude chat panel — dockable panel inside Revit with direct AI access (Anthropic API, extended thinking enabled)
  • Real-time execution — AI requests are executed immediately on the active model via TCP/JSON-RPC 2.0
  • Extensible command set — add new commands without modifying the plugin core

Architecture

flowchart LR
    Client["MCP Client<br/>(Claude, Cline, etc.)"]
    Server["MCP Server<br/><code>server/</code>"]
    Plugin["Revit Plugin<br/><code>plugin/</code>"]
    CommandSet["Command Set<br/><code>commandset/</code>"]
    Revit["Revit API"]

    Client <-->|stdio| Server
    Server <-->|TCP :8080| Plugin
    Plugin -->|loads| CommandSet
    CommandSet -->|executes| Revit
ComponentLanguageRole
MCP Server (server/)TypeScriptTranslates AI tool calls into JSON-RPC messages over TCP
Revit Plugin (plugin/)C#Runs inside Revit, listens on localhost:8080, dispatches commands
Command Set (commandset/)C#Implements Revit API operations, returns structured results

Requirements

To use

RequirementDetails
Node.js18+ (for the MCP server)
Autodesk Revit2023, 2024, 2025, 2026, or 2027
OSWindows 10/11 (Revit is Windows-only)
Anthropic API key (optional)Required only for the built-in chat panel. Set via %USERPROFILE%\.claude\api_key.txt or env ANTHROPIC_API_KEY

To build from source

RequirementDetails
Visual Studio 2022With .NET desktop development workload
.NET Framework 4.8 SDKFor Revit 2023-2024 builds
.NET 8 SDKFor Revit 2025-2026 builds
.NET 10 SDK (preview)For Revit 2027 builds
Node.js 18+For the MCP server
Revit API assembliesInstalled with Revit (referenced automatically via NuGet)

Quick Start

1. Install the Revit plugin

Option A: Automatic install (recommended)

Open PowerShell and paste this command:

powershell -ExecutionPolicy Bypass -Command "irm https://raw.githubusercontent.com/LuDattilo/revit-mcp-server/main/scripts/install.ps1 | iex"

The script:

  • Detects installed Revit versions automatically
  • Downloads the correct pre-built Release from GitHub
  • Extracts to the right folder and unblocks all DLLs
  • Verifies all dependencies are present
  • Checks for Node.js (required for MCP server) and offers to install it
  • Configures Claude Desktop if installed
# Install for a specific Revit version
.\install.ps1 -RevitVersion 2025

# Install a specific release
.\install.ps1 -Tag v1.2.0

# Uninstall
.\install.ps1 -Uninstall

Option B: Manual install

[!IMPORTANT] Download the pre-built ZIP from the Releases page. Do NOT clone the repository or copy the source code — the source contains .cs files, not compiled .dll files. The plugin will not work without compiled binaries.

Extract the ZIP to:

%AppData%\Autodesk\Revit\Addins\<your Revit version>\

To open this folder quickly, press Win+R and type:

%AppData%\Autodesk\Revit\Addins

After extraction your folder must look like this:

Addins/2025/
├── mcp-servers-for-revit.addin          <-- manifest file (required)
└── revit_mcp_plugin/                    <-- subfolder (required)
    ├── RevitMCPPlugin.dll               <-- main plugin (required)
    ├── RevitMCPSDK.dll                  <-- SDK dependency (required)
    ├── Newtonsoft.Json.dll              <-- JSON dependency (required)
    ├── tool_schemas.json
    └── Commands/
        ├── commandRegistry.json
        └── RevitMCPCommandSet/
            ├── command.json
            └── 2025/
                ├── RevitMCPCommandSet.dll
                └── ...

[!WARNING] If RevitMCPPlugin.dll is missing or the revit_mcp_plugin/ subfolder is not present, the plugin will not load. Check that you extracted the contents of the ZIP, not the ZIP file itself.

2. Configure the MCP server

Claude Code

claude mcp add mcp-server-for-revit -- npx -y mcp-server-for-revit

Claude Desktop

Claude Desktop → Settings → Developer → Edit Config → claude_desktop_config.json:

{
    "mcpServers": {
        "mcp-server-for-revit": {
            "command": "npx",
            "args": ["-y", "mcp-server-for-revit"]
        }
    }
}

3. Start Revit

The plugin loads automatically. In the Add-Ins ribbon tab you should see three buttons in the "Revit MCP Plugin" panel:

ButtonFunction
Revit MCP SwitchStart/stop the TCP server
MCP PanelShow/hide the built-in chat panel
SettingsPlugin settings

Click "Revit MCP Switch" to start the TCP server. When the status indicator turns green, the connection is active.

[!TIP] If you only see the Switch button but not MCP Panel or Settings, the plugin did not load correctly. See Troubleshooting below.

Architecture

Supported Revit Versions

Version.NET TargetStatusNotes
Revit 2023.NET Framework 4.8Fully testedItalian localization verified
Revit 2024.NET Framework 4.8Built & compatibleSame codebase as R23
Revit 2025.NET 8Fully testedStructural model (Snowdon Towers)
Revit 2026.NET 8Fully testedPrimary development target
Revit 2027.NET 10Fully tested.NET 10 SDK (preview) required

All tools work across all versions. The command set uses compile-time constants (REVIT2023, REVIT2024, etc.) to handle API differences between versions (e.g., ElementId is long in R24+, int in R23).

Supported Tools (124)

Project & Model Info

ToolDescription
get_project_infoProject metadata, levels, phases, links, worksets
get_current_view_infoActive view type, name, scale, detail level
get_current_view_elementsElements from the active view filtered by category
get_selected_elementsCurrently selected elements
get_available_family_typesFamily types filtered by category
get_element_parametersAll instance and type parameters for elements
get_warningsModel warnings and errors
get_phasesPhases and phase filters
get_worksetsWorkset info and status
get_shared_parametersProject parameters bound to categories
manage_linksList, reload, or unload linked Revit models

Model Analysis & Auditing

ToolDescription
ai_element_filterIntelligent element query by category, type, visibility, bounding box
analyze_model_statisticsElement counts by category, type, family, and level
check_model_healthHealth score (0-100), grade (A-F), actionable recommendations
clash_detectionGeometric intersection detection between element sets
measure_between_elementsDistance measurement (center-to-center, closest points, bounding box)
get_elements_in_spatial_volumeFind elements within a 3D bounding region

Materials & Quantities

ToolDescription
get_materialsList materials filtered by class or name
get_material_propertiesPhysical, structural, and thermal properties
get_material_quantitiesMaterial takeoffs: area, volume, element counts

Element Creation

ToolDescription
create_line_based_elementWalls, beams, pipes (start/end points)
create_point_based_elementDoors, windows, furniture (insertion point)
create_surface_based_elementFloors, ceilings, roofs (boundary)
create_floorFloors from boundary points or room boundaries
create_roomRooms at specified locations
create_gridGrid systems with automatic spacing
create_levelLevels at specified elevations
create_structural_framing_systemBeam framing systems within a boundary
create_arrayLinear or radial arrays of elements

Element Modification

ToolDescription
modify_elementMove, rotate, mirror, or copy elements
operate_elementSelect, hide, isolate, highlight, delete
change_element_typeBatch swap family types
set_element_parametersWrite parameter values on elements
set_element_phaseChange element phase assignment
set_element_worksetChange element workset assignment
match_element_propertiesCopy parameters from source to target elements
copy_elementsCopy elements between views
delete_elementDelete elements by ID
load_familyLoad a family file (.rfa) into the project

Views & Sheets

ToolDescription
create_viewCreate floor plans, sections, elevations, 3D views
duplicate_viewDuplicate views (independent, dependent, with detailing)
create_view_filterCreate, apply, or list view filters
apply_view_templateList, apply, or remove view templates
override_graphicsPer-element graphic overrides (color, transparency, lineweight)
color_elementsColor elements by parameter value
create_sheetCreate sheets with title blocks
batch_create_sheetsCreate multiple sheets at once
place_viewportPlace views onto sheets
create_scheduleCreate schedule views with fields, filters, sorting
create_revisionList, create, or add revisions to sheets

Annotation

ToolDescription
create_dimensionsDimension annotations between elements or points
create_text_noteText note annotations in views
create_filled_regionHatched/filled regions in views
tag_all_wallsAuto-tag all walls in the active view
tag_all_roomsAuto-tag all rooms in the active view

Data Export

ToolDescription
export_room_dataAll room data (area, volume, department, finishes)
export_elements_dataBulk element data export with filtering (JSON/CSV)
export_scheduleExport schedules to CSV/TXT files
get_schedule_dataRead schedule contents or list all schedules
batch_exportExport sheets/views to PDF, DWG, or IFC

Batch Operations & Cleanup

ToolDescription
batch_renameBatch rename views, sheets, levels, grids, rooms
renumber_elementsSequential renumbering of rooms, doors, windows
sync_csv_parametersWrite parameter values back from CSV/AI data
purge_unusedIdentify and remove unused families, types, materials
cad_link_cleanupAudit and clean up CAD imports and links
add_shared_parameterAdd shared parameters to categories

Advanced

ToolDescription
send_code_to_revitExecute C# code inside Revit. Variables: document (Document), parameters (object[]). Auto-imports: System, System.Linq, Autodesk.Revit.DB/UI, System.Collections.Generic. Use return to send results. Mode auto wraps in Transaction, none for manual
store_project_dataStore project metadata in local database
store_room_dataStore room metadata in local database
query_stored_dataQuery stored project and room data
say_helloDisplay a greeting dialog (connection test)

Built-in Chat Panel

The Revit plugin includes a dockable chat panel that connects directly to the Anthropic API. It provides a Claude chat interface inside Revit where the AI can autonomously execute tools on the active model.

  • Model: Claude Sonnet 4.6 with extended thinking (10K token budget)
  • System prompt: Autonomous mode — Claude executes actions directly without unnecessary confirmations
  • Features: Tool execution feedback, thinking summary, round progress, stop/cancel, chat export (TXT/MD/JSON)

Known Limitations

LimitationDetails
Windows onlyRevit runs only on Windows; macOS/Linux are not supported
Single modelThe plugin operates on the active document only; background documents are not accessible
TCP port 8080The plugin listens on localhost:8080; if the port is occupied, the server won't start
No undo integrationOperations executed by AI tools create standard Revit transactions but are not grouped into a single undo step
send_code_to_revitMay fail if third-party addins cause assembly conflicts (e.g., duplicate DLL references)
Parameter names are localizedRevit parameter names depend on UI language. Use BuiltInCategory names (e.g., OST_Walls) for categories. The command set resolves categories automatically, but parameter names must match the Revit language
No streamingTool results are returned as a single response; large results (e.g., exporting thousands of elements) may take time
Anthropic API keyThe built-in chat panel requires an Anthropic API key. External MCP clients (Claude Code, Claude Desktop) use their own authentication

Troubleshooting

Only the Switch button appears (no MCP Panel or Settings)

Cause: The plugin was not installed correctly — usually because source code was copied instead of the pre-built Release, or files are missing.

Fix:

  1. Close Revit
  2. Delete the old installation from %AppData%\Autodesk\Revit\Addins\<version>\
  3. Download the correct ZIP from the Releases page
  4. Extract and verify the folder structure matches the one shown in Step 1
  5. Restart Revit

Plugin does not appear in Add-Ins tab

  • Verify that mcp-servers-for-revit.addin exists directly inside %AppData%\Autodesk\Revit\Addins\<version>\ (not in a subfolder)
  • Verify the ZIP version matches your Revit version (e.g., Revit2025 ZIP for Revit 2025)
  • Check that Revit did not block the DLLs: right-click each .dll → Properties → if you see "Unblock" at the bottom, check it and click OK

"Connection refused" when using Claude Desktop or Claude Code

  • Ensure Revit is open and the MCP Switch is ON (green indicator)
  • Check that port 8080 is not used by another application: netstat -an | findstr 8080

Other common issues

IssueSolution
"Element not found"Verify element ID with get_current_view_elements
"Parameter not found"Check exact name with get_element_parameters — names are localized
"Family type not found"Use get_available_family_types for exact names
"Tool not available" in Claude DesktopRestart Claude Desktop to refresh the MCP tool list
Timeout on large operationsTry with fewer elements or a simpler filter

Development

MCP Server

cd server
npm install
npm run build

The server compiles TypeScript to server/build/. During development you can run it directly with npx tsx server/src/index.ts.

Revit Plugin + Command Set

Open mcp-servers-for-revit.sln in Visual Studio. The solution contains both the plugin and command set projects. Build configurations target Revit 2023-2027:

ConfigurationTarget.NET
Debug R23 / Release R23Revit 2023.NET Framework 4.8
Debug R24 / Release R24Revit 2024.NET Framework 4.8
Debug R25 / Release R25Revit 2025.NET 8
Debug R26 / Release R26Revit 2026.NET 8
Debug R27 / Release R27Revit 2027.NET 10

Building the solution automatically assembles the complete deployable layout in plugin/bin/AddIn <year> <config>/ — the command set is copied into the plugin's Commands/ folder as part of the build.

Testing

The test project uses Nice3point.TUnit.Revit to run integration tests against a live Revit instance.

# Revit 2026
dotnet test -c Debug.R26 -r win-x64 tests/commandset

# Revit 2025
dotnet test -c Debug.R25 -r win-x64 tests/commandset

Note: The -r win-x64 flag is required on ARM64 machines because the Revit API assemblies are x64-only.

Project Structure

mcp-servers-for-revit/
├── mcp-servers-for-revit.sln    # Combined solution (plugin + commandset + tests)
├── command.json                 # Command set manifest
├── server/                      # MCP server (TypeScript) - tools exposed to AI clients
│   └── src/tools/               # One .ts file per tool (138 tools)
├── plugin/                      # Revit add-in (C#) - TCP bridge + chat panel
│   └── UI/                      # Dockable chat panel (XAML + code-behind)
├── commandset/                  # Command implementations (C#) - Revit API operations
│   ├── Commands/                # Command registration
│   ├── Services/                # Event handlers (one per tool)
│   └── Utils/                   # CategoryResolver, ProjectUtils, etc.
├── tests/                       # Integration tests (TUnit + live Revit)
├── assets/                      # Images for documentation
├── .github/                     # CI/CD workflows
├── LICENSE
└── README.md

Releasing

A single v* tag drives the entire release. The release workflow automatically:

  • Builds the Revit plugin + command set for Revit 2023-2027
  • Creates a GitHub release with mcp-servers-for-revit-vX.Y.Z-Revit<year>.zip assets
  • Publishes the MCP server to npm as mcp-server-for-revit
# Bump version, commit, and tag
./scripts/release.ps1 -Version X.Y.Z

# Push to trigger CI
git push origin main --tags

Acknowledgements

CreditLink
Original conceptRoman Zarkhin — created the first MCP server for Revit (15 tools)romanzarkhin/revit-mcp
Expansion to 80+ toolsmcp-servers-for-revit community — lisiting01, jmcouffin, huyan1458, bobbyg603, chuongmep and others expanded the project across three reposrevit-mcp, revit-mcp-plugin, revit-mcp-commandset
Consolidated reposparx-fire (Bobby Galli) — merged the three repos into a single solutionmcp-servers-for-revit/mcp-servers-for-revit
Current maintainerLuDattilo — language-independent operation, embedded Claude chat panel, PowerShell installerLuDattilo/revit-mcp-server

License

This project is released under the MIT License — see LICENSE for the full text.

What MIT allows

AllowedCondition
Commercial useYesInclude copyright notice
ModificationYesInclude copyright notice
DistributionYesInclude copyright notice
Private useYes
SublicensingYesInclude copyright notice

Disclaimer of Liability

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND. The authors and contributors are not liable for any damages, data loss, model corruption, or unintended modifications to Revit projects arising from the use of this software. Use at your own risk.

Important:

  • This software executes commands on live Revit models. Always work on copies or ensure you have backups before using AI-driven automation.
  • The AI (Claude or other MCP clients) may misinterpret instructions and execute unintended operations. Review AI-generated actions before confirming batch operations on production models.
  • This project is not affiliated with, endorsed by, or supported by Autodesk, Inc. "Autodesk" and "Revit" are registered trademarks of Autodesk, Inc.

Collected info

  • 63 stars
  • 22 forks
  • Language: C#
  • Source updated: 9/22/2026

Config for your environment

Replace {MCP_ENDPOINT_URL} with this MCP’s endpoint URL (from its repo or docs above). No API key — you connect directly.

Tool

OS

Config file: ~/.cursor/mcp.json

{
  "mcpServers": {
    "mcp-server": {
      "url": "{MCP_ENDPOINT_URL}"
    }
  }
}

Paste into mcpServers in the config file. Restart Cursor after saving.

If this MCP is also published on mcpchannel.ai, you can subscribe from Browse and use the gateway config there instead.