Revit MCP Server
The Revit MCP Server connects AI clients to Autodesk Revit (2024–2027) through 48 tools spanning model creation, querying, modification, analysis, documentation, MEP, interoperability, and advanced scripting.
Query & Inspection
Check connection/API status, get model info, list levels, families, categories, and views
Get active view details, visible/selected elements, element properties, and parameters
Export view images
Create Building Elements
Walls, floors, roofs, ceilings, levels, grids, structural beams/framing, columns
Rooms and room separation lines; place family instances
Views (floor plans, sections, elevations, 3D), sheets, schedules, and detail lines
Modify Elements
Delete elements, modify or set parameter values
Move, copy, rotate, or mirror elements; switch the active view
Visualization
Color-code elements by parameter values; clear color overrides
Tag walls or specific elements; create dimension annotations
Analysis
Filter elements by category, type, visibility, or spatial bounds
Export room data (areas, volumes, boundaries), get material quantities
Detect hard clashes between disciplines; analyze model statistics
MEP
Create ducts, pipes, and mechanical/piping systems
Interoperability & Persistence
Export to IFC (IFC2x3/IFC4), PDF, PNG, JPG, or DWG
Link or import external files (DWG, DXF, DGN, RVT); load
.rfafamily filesSave or Save-As the Revit document
Advanced
Execute arbitrary IronPython code directly inside the Revit context for fully custom operations beyond the built-in tools
Provides 45 tools for building design, editing, analysis, MEP, interop, and documentation via Autodesk Revit API, accessible through pyRevit.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Revit MCP Servercreate a new level at elevation 10 feet"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Revit MCP Server
MCP server for Autodesk Revit 2024/2025/2026/2027 via pyRevit — 48 tools for building design, editing, analysis, clash detection, MEP, interop, documentation, and model persistence.
Works with any MCP client: Claude Desktop, Claude Code, Cursor, Windsurf, Copilot, or any other MCP-compatible application.
How It Works
AI Client ──stdio/SSE/HTTP──> MCP Server (Python/FastMCP) ──HTTP :48884──> pyRevit Routes ──> Revit APIThe MCP server runs on your machine and communicates with Revit through pyRevit's Routes API. Any MCP-compatible AI client can connect to it.
Related MCP server: Revit MCP Server
Prerequisites
Requirement | Details |
Windows 10/11 | Revit is Windows-only |
Autodesk Revit | 2024, 2025, 2026, or 2027 |
pyRevit | Installed and loaded in Revit |
uv | Python package manager (install) |
A project open in Revit | Tools require an active document |
Install pyRevit (if not already installed)
pyRevit is a free add-in that lets scripts run inside Revit. This MCP server needs it to communicate with Revit.
Download the latest .exe installer (e.g.
pyRevit_CLI_x.x.x.x_admin_signed.exe)Run the installer — accept all defaults, click Next through each screen
Open (or restart) Revit — you should see a pyRevit tab in the ribbon at the top
In the pyRevit tab, click Settings (gear icon)
In the Settings window, go to the Routes section on the left
Check the box to Enable Routes Server
Click Save Settings and let pyRevit reload
To verify: open a browser and go to http://localhost:48884/ — you should see a response (not a "connection refused" error).
Quick Start
Step 1: Clone and install
git clone https://github.com/Demolinator/revit-mcp-server.git
cd revit-mcp-server
uv syncStep 2: Install the pyRevit extension
The revit_mcp/ folder and startup.py need to run inside Revit via pyRevit.
Option A — Install from pyRevit (recommended):
In Revit, go to pyRevit tab > Extensions
Find "MCP Server for Revit Python" > Install
Wait for pyRevit to reload
Option B — Manual install:
Copy the entire repo folder to
%APPDATA%\pyRevit\Extensions\Rename the folder to
mcp-server-for-revit-python.extensionIn Revit, go to pyRevit tab > Settings > Custom Extensions
Add the path to the
.extensionfolderReload pyRevit (or restart Revit)
Step 3: Activate pyRevit Routes
In Revit, go to pyRevit tab > Settings
Navigate to Routes > activate Routes Server
pyRevit will start listening on
http://localhost:48884/
Step 4: Verify connection
Open a browser and go to:
http://localhost:48884/revit_mcp/status/You should see:
{
"status": "active",
"health": "healthy",
"revit_available": true,
"document_title": "your_project_name",
"api_name": "revit_mcp"
}Step 5: Start the MCP server
uv run main.pyThat's it. Your AI client can now connect.
Connecting Your AI Client
Claude Desktop / Claude Code
Add to your MCP config:
{
"mcpServers": {
"revit": {
"command": "uv",
"args": ["run", "main.py"],
"cwd": "/path/to/revit-mcp-server"
}
}
}Cursor / Windsurf / Other MCP Clients
Use HTTP transport:
uv run main.py --streamable-httpThen configure your client to connect to http://localhost:8000/mcp.
Transport Modes
Flag | Transport | Endpoints | Use Case |
(none) | stdio | stdin/stdout | Claude Desktop / Claude Code |
| SSE |
| Legacy clients |
| HTTP |
| HTTP-based clients |
| Both | All above | Maximum compatibility |
Testing with MCP Inspector
mcp dev main.pyThen open http://127.0.0.1:6274 in your browser.
Supported Tools (48)
Create (15)
Tool | Description |
| Create new levels with elevations |
| Create walls, beams, and other line-based elements |
| Create floors, roofs, and surface elements |
| Place a family instance at specified location |
| Create column grid lines |
| Create structural beams and framing |
| Create new drawing sheets |
| Create schedules with custom fields |
| Create rooms at specified levels |
| Create room separation boundary lines |
| Create ducts between two points (MEP) |
| Create pipes between two points (MEP) |
| Create mechanical or piping systems |
| Create view-specific detail lines |
| Create floor plans, sections, elevations, 3D views |
Query (12)
Tool | Description |
| Check if the API is active and responding |
| Get model information |
| Get all levels with elevations |
| Get available family types |
| Get all family categories |
| Export a view as an image |
| List all exportable views |
| Get active view details |
| Get elements in current view |
| Get currently selected elements |
| List parameters for a category |
| Get all parameters and properties of an element |
Modify (8)
Tool | Description |
| Delete elements from the model |
| Modify element parameter values |
| Color elements by parameter values |
| Reset element colors |
| Tag all walls in current view |
| Set a single parameter value on an element |
| Tag specific elements with annotation symbols |
| Move, copy, rotate, or mirror elements |
| Switch the active view in Revit |
Analyze (5)
Tool | Description |
| Filter elements by category and parameters |
| Export room areas, volumes, boundaries |
| Material takeoff data |
| Detect hard clashes (interferences) between disciplines, e.g. structure vs MEP |
| Element counts and model stats |
Document (3)
Tool | Description |
| Create dimension annotations |
| Export views to PDF or image |
Interop & Persistence (4)
Tool | Description |
| Export model to IFC format (IFC2x3/IFC4) |
| Link or import DWG, DXF, DGN, SAT, SKP, 3DM, or RVT files |
| Load a Revit family ( |
| Save / Save-As the model to disk (persistence across sessions) |
Advanced (1)
Tool | Description |
| Execute IronPython code in Revit context |
Architecture
Two runtimes communicate over HTTP:
Component | Runtime | Location | Purpose |
| Python 3.11+ (CPython) | Your machine | MCP protocol, tool definitions |
| IronPython 2.7 (inside Revit) | Revit process | pyRevit route handlers, Revit API |
Multi-Version Revit Support
This server supports Revit 2024, 2025, 2026, and 2027 through centralized helper functions that handle the ElementId API differences across versions:
get_element_id_value()— Extracts integer IDs using.Value(2024+) with.IntegerValuefallbackmake_element_id()— Creates ElementIds usingSystem.Int64(2024+) withintfallback
No configuration needed — version detection is automatic via try/except at runtime.
Revit 2027 note: Revit 2027 runs on .NET 10 (vs .NET 8 in 2025/2026). This MCP server is pyRevit-based, so .NET compatibility is handled by pyRevit itself — ensure you run a pyRevit build with Revit 2027 support. None of the 48 tools use APIs removed in 2027 (AXM/FormIt import,
Mechanical.Zonemembers, legacy rebar creation, or the droppedEnergyDataSettingsproperties).
Unit Handling
All tools accept millimeters (mm). The server converts to Revit's internal feet.
From | To mm |
meters | x 1000 |
feet | x 304.8 |
inches | x 25.4 |
Creating Your Own Tools
Adding a new tool requires 2 files + 2 registration lines:
Route handler in
revit_mcp/new_module.py(IronPython 2.7)Tool definition in
tools/new_tools.py(Python 3.11+)Register routes in
startup.pyRegister tools in
tools/__init__.py
See LLM.txt for full context that helps AI assistants understand the codebase.
Contributing
Contributions are welcome! Feel free to submit pull requests or open issues.
Author
Talal Ahmed
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Demolinator/revit-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server