Skip to main content
Glama
HoareLea

revit-mcp

by HoareLea
README.md
[![MseeP.ai Security Assessment Badge](https://mseep.net/pr/revit-mcp-revit-mcp-badge.png)](https://mseep.ai/app/revit-mcp-revit-mcp)

# revit-mcp

English | [简体中文](README_zh.md)

## Description

revit-mcp allows you to interact with Revit using the MCP protocol through MCP-supported clients (such as Claude, Cline, etc.).

This project is the server side (providing Tools to AI), and you need to use [revit-mcp-plugin](https://github.com/revit-mcp/revit-mcp-plugin) (driving Revit) in conjunction.

Join [Discord](https://discord.gg/cGzUGurq) | [QQ Group](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=kLnQiFVtYBytHm7R58KFoocd3mzU_9DR&authKey=fyXDOBmXP7FMkXAWjddWZumblxKJH7ZycYyLp40At3t9%2FOfSZyVO7zyYgIROgSHF&noverify=0&group_code=792379482)

## Features

- Allow AI to get data from the Revit project
- Allow AI to drive Revit to create, modify, and delete elements
- Send AI-generated code to Revit to execute (may not be successful, successful rate is higher in some simple scenarios with clear requirements)

## Requirements

- nodejs 18+

> Complete installation environment still needs to consider the needs of revit-mcp-plugin, please refer to [revit-mcp-plugin](https://github.com/revit-mcp/revit-mcp-plugin)

## Installation

### 1. Build local MCP service

Install dependencies

```bash
npm install
```

Build

```bash
npm run build
```

### 2. Client configuration

**Claude client**

Claude client -> Settings > Developer > Edit Config > claude_desktop_config.json

```json
{
    "mcpServers": {
        "revit-mcp": {
            "command": "node",
            "args": ["<path to the built file>\\build\\index.js"]
        }
    }
}
```

Restart the Claude client. When you see the hammer icon, it means the connection to the MCP service is normal.

![claude](./assets/claude.png)

## Framework

```mermaid
flowchart LR
	CladueDesktop --> revit-mcp --> SocketService--commandName-->CommandlSet--command-->CommandExecute
	CommandManager --> CommandlSet
	CommandExecute --executeResult--> SocketService
	CommandProject1 --> CommandManager
	CommandProject2 --> CommandManager
	CommandProject... --> CommandManager
	subgraph ide1 [MCPClient]
	CladueDesktop
	end
	subgraph ide2 [MCPServer]
	revit-mcp
	end
	subgraph ide3 [Revit]
			subgraph ide3.1 [revit-mcp-plugin]
				SocketService
				CommandlSet
				CommandManager
				CommandExecute
			end
	end
```

## Supported Tools

| Name                      | Description                               |
| ------------------------- | ----------------------------------------- |
| get_current_view_info     | Get current view info                     |
| get_current_view_elements | Get current view elements                 |
| get_available_family_types | Get available family types in current project |
| get_selected_elements      | Get selected elements                      |
| create_point_based_element  | Create point based element (door, window, furniture) |
| create_line_based_element   | Create line based element (wall, beam, pipe) |
| create_surface_based_element   | Create surface based element (floor, ceiling) |
| delete_elements             | Delete elements                            |
| reset_model                | Reset model (delete process model when executing continuous dialog) |
| modify_element             | Modify element's properties (instance parameters) |
| search_modules             | Search for available modules              |
| use_module                 | Use module                                |
| send_code_to_revit         | Send code to Revit to execute             |
| color_splash		     | Color elements based on a parameter value	|
| tag_walls		     | Tag all walls in view            |

TDQS

A3.6/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have clear distinct purposes (create vs delete vs query), but there is some overlap between operate_element (which can delete/hide) and delete_element, and between the three query tools (ai_element_filter, get_current_view_elements, get_selected_elements) which all retrieve elements but with different scopes. Descriptions are detailed enough to disambiguate in most cases.

Naming Consistency4/5

The majority of tools follow a verb_noun pattern (delete_element, create_line_based_element, get_available_family_types, etc.). One outlier is ai_element_filter, which uses an 'ai_' prefix and a noun-like structure instead of a clear verb, but it remains readable and the overall pattern is mostly consistent.

Tool Count5/5

With 13 tools, the server is well-scoped for a Revit MCP. Each tool covers a distinct aspect of model interaction—querying, creating (line/point/surface), modifying, deleting, and executing custom code—without feeling bloated or insufficient.

Completeness3/5

The tool set covers core read, create, delete, and some modify operations. However, direct parameter editing or element transformation (move/rotate) is missing; operate_element only supports visual actions like color, transparency, and hide. send_code_to_revit fills gaps but is a workaround, so the surface is not fully complete for typical Revit workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues