Skip to main content
Glama
README.md
# πŸ—οΈ Revit MCP Server

A Model Context Protocol server for Revit integration, enabling seamless communication between Claude AI and Autodesk Revit.

[English](./README.md) | [δΈ­ζ–‡](./README.zh-CN.md)

## 🎯 Overview

This TypeScript-based MCP server provides a bridge between Claude AI and Revit, allowing direct interaction with Revit models through a WebSocket connection. It implements the Model Context Protocol to enable:

- ⚑ Real-time access to Revit model information
- πŸ” Element querying and filtering
- πŸ‘€ View and level management
- πŸ›‘οΈ Robust error handling with fallback mock data

## ✨ Features

### πŸ”Œ Revit Integration
- πŸ“‘ WebSocket-based communication with Revit plugin
- πŸ”„ Real-time model data access
- πŸ” Graceful fallback to mock data when connection fails
- βš™οΈ Configurable connection settings via environment variables

### πŸš€ Core Functionalities
- **πŸ“Š Model Information**
  - Access basic model metadata (name, path, version)
  - Get element counts and last modification date
  - Real-time model state synchronization

- **πŸ—οΈ Element Management**
  - Query elements with flexible filtering
  - Access element properties and geometry
  - Batch element operations

- **πŸŽͺ View & Level Control**
  - List all available views
  - Access level information
  - Navigate through model hierarchy

## πŸ’» Development

### πŸ“‹ Prerequisites
- Node.js (v14 or higher)
- npm
- Autodesk Revit (2023 or later)
- Revit WebSocket Plugin (companion plugin)

### πŸ”§ Installation

Install dependencies:
```bash
npm install
```
Build the server:

```bash
npm run build
 ```

For development with auto-rebuild:

```bash
npm run watch
 ```

### βš™οΈ Configuration
The server can be configured using environment variables:

```plaintext
REVIT_HOST=127.0.0.1    # Revit plugin WebSocket host
REVIT_PORT=8080         # Revit plugin WebSocket port
 ```

## πŸ”— Integration with Claude Desktop
Add the server configuration to Claude Desktop:

Windows:

```bash
%APPDATA%/Claude/claude_desktop_config.json
 ```

Configuration format:

```json
{
  "mcpServers": {
    "revit-mcp-server": {
      "command": "D:/path/to/revit-mcp-server/build/index.js"
    }
  }
}
 ```

### πŸ› Debugging


For debugging the MCP communication:

1. Use the built-in MCP Inspector:
```bash
npm run inspector
 ```

2. Monitor WebSocket communication with Revit plugin
3. Check server logs for connection and operation status
## ⚠️ Error Handling
The server implements robust error handling:

- Automatic fallback to mock data when Revit connection fails
- Detailed error logging
- Graceful connection recovery
## πŸ“„ License
MIT License

## 🀝 Contributing
Contributions are welcome! Please feel free to submit pull requests.

## πŸ“¬ Contact

If you have any questions or suggestions, feel free to reach out:

- πŸ“§ Email: 353554036@qq.com
- πŸ’¬ WeChat  Account: modian4500

TDQS

B3.2/5.0

Scored across 6 tools

Disambiguation5/5

Every tool has a clearly distinct purpose targeting different Revit model components: categories, element info, elements, families, levels, and views. There is no overlap in functionality, and an agent can easily distinguish between them based on the specific resource each retrieves.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern with 'get_' as the prefix and a plural or singular noun describing the resource. This uniformity makes the tool set predictable and easy to navigate, with no deviations in naming style.

Tool Count4/5

With 6 tools, the count is reasonable for a Revit model server, covering key retrieval operations. However, it might be slightly under-scoped as it lacks tools for creating, updating, or deleting elements, which could be expected in a full Revit integration.

Completeness2/5

The tool set is severely incomplete for a Revit domain, as it only provides read-only retrieval operations. There are significant gaps in CRUD coverageβ€”no tools for creating, updating, or deleting elements, categories, families, etc., which will likely cause agent failures when trying to modify models.