Skip to main content
Glama
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)

## GitHub Copilot Compatibility

This MCP server has been updated to be fully compatible with GitHub Copilot. The tool schemas now properly include the required `items` property for array parameters, resolving validation errors that previously occurred when using array-type parameters with GitHub Copilot's MCP client.

- 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.

**GitHub Copilot**

GitHub Copilot supports MCP servers natively. Configure the server in your VS Code settings or workspace configuration:

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

Restart VS Code or reload the window to apply the configuration.

![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.5/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between ai_element_filter, get_current_view_elements, and get_selected_elements in retrieving elements, which could cause confusion. However, their specific focuses (intelligent querying, current view, selected elements) help differentiate them. Other tools like create_line_based_element and create_surface_based_element are clearly distinct based on element type.

Naming Consistency4/5

The naming follows a consistent verb_noun pattern (e.g., create_line_based_element, delete_element, get_available_family_types) with minor deviations. One tool, operate_element, uses a vague verb 'operate' instead of something more specific like 'modify', and send_code_to_revit is slightly less structured, but overall the pattern is clear and readable.

Tool Count5/5

With 13 tools, this is well-scoped for a Revit MCP server covering element creation, querying, modification, and execution. Each tool serves a specific function in the domain, such as creating different element types or retrieving element information, without being overly bloated or sparse.

Completeness4/5

The tool set provides good coverage for core Revit operations, including creation (point, line, surface-based), deletion, querying, and modification. Minor gaps exist, such as no explicit tool for updating element parameters beyond color or transparency, and the domain could benefit from more specialized tools for tasks like scheduling or exporting, but agents can work around these with existing tools like operate_element or send_code_to_revit.

Maintenance

ActivityInactive
ResponsivenessNo issues