mcp-servers-for-revit

Read, build and edit Autodesk Revit models from an MCP client through a Revit add-in

By MCP servers for Revit TypeScript Local · stdio DesignDeveloper tools

67 popularity score ★ 430 ↓ 2.1k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

Claude CodeTerminal
claude mcp add servers-for-revit -- cmd /c npx -y mcp-server-for-revit
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "servers-for-revit": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "mcp-server-for-revit"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "servers-for-revit": {
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "mcp-server-for-revit"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "servers-for-revit": {
      "type": "stdio",
      "command": "cmd",
      "args": [
        "/c",
        "npx",
        "-y",
        "mcp-server-for-revit"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.servers-for-revit]
command = "cmd"
args = ["/c", "npx", "-y", "mcp-server-for-revit"]
Gemini CLITerminal
gemini mcp add --scope user servers-for-revit cmd -- /c npx -y mcp-server-for-revit

What it does

mcp-servers-for-revit links an MCP client to a running copy of Autodesk Revit. It comes in three parts: the npm package mcp-server-for-revit, which is the MCP server the client starts over stdio; a C# add-in loaded by Revit; and a command set of C# DLLs that the add-in calls to do the actual work through the Revit API. The server passes each tool call to the add-in over a WebSocket and returns what Revit sends back.

The tools cover reading the open project (active view, its elements, the current selection, family types, material takeoffs, model statistics, filtered element queries), creating elements (doors and windows, walls and beams, floors and roofs, grids, levels, rooms, dimensions, beam framing systems), changing or deleting elements, colouring them by a parameter value, tagging walls and rooms, and exporting room data. send_code_to_revit runs C# written by the client inside a template with access to the open Revit document. A few tools keep project and room records in a local SQLite file for later queries.

The project is a fork, kept by the same GitHub organisation, of its earlier revit-mcp server, with extra tools added. At v1.0.0 the server loads every file in its tools folder; three of them (modify_element.ts, search_modules.ts and use_module.ts) are empty, so the package exposes the 26 tools the README lists and no more.

What it needs

RuntimeNode.js 18+

Windows with Autodesk Revit 2020 to 2026 installed and licensed, and Node.js 18 or newer for the npm server. The add-in and command set must be copied into %AppData%\Autodesk\Revit\Addins\<version>\ from the release ZIP for your Revit year. Revit must be open, and the commands you want must be switched on and saved under Settings on the add-in's ribbon tab.

Limits

It works only while Revit is open with the add-in loaded; the server reaches the add-in at localhost port 8080, a fixed address in its code, and gives up on a call if the connection is not made within 5 seconds (ConnectionManager.ts). Commands not enabled in the add-in's Settings are unavailable. The SQLite store (revit-data.db) is written inside the installed package's own folder, so with npx it sits in the npx cache rather than with your project, and can be lost when that cache is cleared (db.ts). Revit itself runs only on Windows.

Who it suits

Suits Revit users and BIM developers on Windows who want an assistant to query a live model, place standard elements, tag and colour views, or run one-off C# against the Revit API without writing an add-in. It changes the open model and can run arbitrary code with no review step in the server, so it fits people who keep backups and check what is sent. The same organisation's mcp-server-for-revit-python, which we also list, runs through pyRevit instead and, by its README, shows model-changing requests and Python code in Revit for review before they run. Anyone without a Revit licence has no use for either.

Tools 26

get_current_view_info
Returns details of the active view.
get_current_view_elements
Lists elements visible in the active view.
get_available_family_types
Lists family types loaded in the project.
get_selected_elements
Returns the elements the user has selected.
get_material_quantities
Works out material quantities for takeoffs.
ai_element_filter
Queries elements by category, type and other criteria.
analyze_model_statistics
Counts elements to gauge model complexity.
create_point_based_element
Places point-based elements such as doors, windows or furniture.
create_line_based_element
Places line-based elements such as walls, beams or pipes.
create_surface_based_element
Creates floors, ceilings or roofs from outlines.
create_grid
Creates a set of grid lines with spacing.
create_level
Adds levels at given elevations.
create_room
Places rooms at given points.
create_dimensions
Adds dimension annotations to the active view.
create_structural_framing_system
Lays out a beam framing system.
delete_element
Deletes elements by their IDs.
operate_element
Selects, hides, isolates or recolours elements.
color_elements
Colours elements according to a parameter's values.
tag_all_walls
Tags every wall in the active view.
tag_all_rooms
Tags every room in the active view.
export_room_data
Exports data for all rooms in the project.
store_project_data
Saves project metadata to the local SQLite store.
store_room_data
Saves room metadata to the local SQLite store.
query_stored_data
Reads saved project and room records.
send_code_to_revit
Runs supplied C# code inside Revit against the open document.
say_hello
Shows a greeting dialog in Revit to test the link.

Similar servers