RevitMCP
model context protocol for Autodesk Revit
claude mcp add --transport stdio oakplank-revitmcp python C:\Program Files\pyRevit-Master\extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py --surface mcp
How to use
RevitMCP exposes an HTTP API inside Revit via pyRevit Routes, allowing external applications (such as AI assistants) to call into a running Revit instance. An external intermediary server (server.py) sits outside Revit and forwards requests to the pyRevit Routes endpoints hosted inside Revit. The typical workflow is: your external client sends a request to the external server, the server translates and forwards it to Revit’s API (for example http://localhost:48884/revit-mcp-v1/...), the Revit API executes the requested operation (like selecting elements, retrieving project information, or placing views on sheets), and the response is sent back through the intermediary server to your client. The server.py component supports a web UI (default web surface) for interactive chat and a Claude Desktop MCP mode (mcp surface) for direct MCP tooling. The latest sheet placement feature allows you to issue natural language like “Place detail foundation onto a sheet” and the system will locate the relevant view, create or reuse a sheet with appropriate numbering, and center the viewport on the sheet.
How to install
Prerequisites:
- Autodesk Revit installed and a compatible version.
- pyRevit installed and configured in Revit.
- Python installed (for the external server script).
Installation steps:
-
Install pyRevit:
- Follow the official guide: https://pyrevitlabs.io/docs/pyrevit/installer
-
Install the RevitMCP.extension:
- Locate your pyRevit extensions folder (e.g., %APPDATA%/pyRevit/Extensions or %PROGRAMDATA%/pyRevit/Extensions).
- Copy the RevitMCP.extension folder (containing startup.py and lib/) into one of the extensions directories.
-
Run the external server (server.py):
-
Ensure Python is installed and available on PATH.
-
Start the external server in MCP mode or web mode as needed:
Example (MCP surface): python "C:\Program Files\pyRevit-Master\extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py" --surface mcp
-
The server will launch and listen on the configured port (default 8000 for the external server) and route requests to the Revit pyRevit Routes API (e.g., http://localhost:48884/revit-mcp-v1/...).
-
-
Optional: Configure Claude Desktop integration (if using Claude):
- Add an entry pointing to the same server script with --surface mcp in Claude Desktop config, as described in the README.
-
Verify:
- Open the external server UI (if using web surface) at http://127.0.0.1:8000 and test a few endpoints.
- Ensure Revit is running with the RevitMCP.extension loaded and the Routes server enabled in pyRevit settings.
Additional notes
Tips and common issues:
- Ensure Revit’s pyRevit Routes server port (default 48884) is accessible from the external server. Firewall rules may need adjustment.
- If you change the Revit port or instance, update the external server configuration accordingly.
- The web surface is the default for interactive use; switch to the mcp surface for Claude Desktop MCP workflows.
- When troubleshooting, check Revit pyRevit logs for startup.py endpoint messages to confirm the endpoints are registered.
- The sheet placement feature relies on fuzzy matching for view names and automatic sheet numbering (D001, S001, etc.). Ensure views exist or are named predictably.
Related MCP Servers
mcp-vegalite
MCP server from isaacwasserman/mcp-vegalite-server
github-chat
A Model Context Protocol (MCP) for analyzing and querying GitHub repositories using the GitHub Chat API.
nautex
MCP server for guiding Coding Agents via end-to-end requirements to implementation plan pipeline
pagerduty
PagerDuty's official local MCP (Model Context Protocol) server which provides tools to interact with your PagerDuty account directly from your MCP-enabled client.
futu-stock
mcp server for futuniuniu stock
mcp -boilerplate
Boilerplate using one of the 'better' ways to build MCP Servers. Written using FastMCP