revit-mcp
[](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.

## 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
Scored across 13 tools
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.
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.
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.
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.