{
"mcpServers": {
"revitmcp": {
"command": "<see-readme>",
"args": []
}
}
}No install config available. Check the server's README for setup instructions.
Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
model context protocol for Autodesk Revit
Is it safe?
No package registry to scan.
No authentication — any process on your machine can connect.
License not specified.
Is it maintained?
Last commit 6 days ago. 39 stars.
Will it work with my client?
Transport: stdio. Works with Claude Desktop, Cursor, Claude Code, and most MCP clients.
No automated test available for this server. Check the GitHub README for setup instructions.
No known vulnerabilities.
This server is missing a description. Tools and install config are also missing.If you've used it, help the community.
Add informationHave you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Dynamic problem-solving through sequential thought chains
A Model Context Protocol server for searching and analyzing arXiv papers
An open-source AI agent that brings the power of Gemini directly into your terminal.
The official Python SDK for Model Context Protocol servers and clients
MCP Security Weekly
Get CVE alerts and security updates for RevitMCP and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
RevitMCP is a pyRevit extension plus a Python server that lets AI clients work against a live Revit session.
It supports two ways to use it:
http://127.0.0.1:8000Repository layout note: this repository root is the pyRevit extension root. If you install from source manually, the checkout directory itself should be named RevitMCP.extension.
RevitMCP exposes 22 tools:
| Tool | Description |
| --- | --- |
| get_revit_project_info | Get active project metadata, document path, and Revit version details |
| get_active_view_info | Read the current view's name, type, scale, and related metadata |
| get_active_view_elements | Capture a bounded snapshot of elements visible in the active view |
| get_active_selection | Read the current Revit selection as a reusable result set |
| list_family_types | List loaded family types with category, family, type, and symbol IDs |
| get_revit_schema_context | Load canonical Revit schema context including levels, categories, families, types, and common parameters |
| resolve_revit_targets | Resolve user terms to exact Revit category, level, family, type, and parameter names |
| get_revit_memory_context | Load persistent local user/project notes for recurring Revit conventions and workflow hints |
| save_revit_memory_note | Save a persistent local user/project note for future chats and tool runs |
| get_elements_by_category | Retrieve all elements for a category and store the result for follow-on actions |
| select_elements_by_id | Select elements by explicit IDs or a stored result handle |
| select_stored_elements | Select a previously stored search or filter result inside Revit |
| list_stored_elements | List stored element result sets and their counts currently available on the server |
| filter_elements | Find elements by category, level, and parameter-based conditions |
| filter_stored_elements_by_parameter | Refine a stored result set with batched server-side parameter filtering using one or many target values |
| get_element_properties | Read parameter values for specific elements or an existing result handle |
| update_element_parameters | Update one or many element parameters with typed value handling |
| place_view_on_sheet | Create a new sheet, auto-number it, and place a matched view on it |
| list_views | List views that can be placed on sheets, including type and placement status |
| analyze_view_naming_patterns | Cluster view names by type and flag likely naming outliers |
| suggest_view_name_corrections | Generate rename suggestions from a prior view naming analysis |
| plan_and_execute_workflow | Execute a multi-step Revit workflow from a structured tool plan |
python if you want to run the external server directly or through Claude DesktopRevitMCP has two server surfaces:
web: browser UI at http://127.0.0.1:8000mcp: stdio server for Claude DesktopOne server.py process runs one surface at a time.
To switch manually:
python lib\RevitMCP_ExternalServer\server.py --surface web
python lib\RevitMCP_ExternalServer\server.py --surface mcp
If you use the pyRevit launcher, it reads the preferred surface from:
%USERPROFILE%\Documents\RevitMCP\user_data\revitmcp_settings.json
{
"preferences": {
"server_surface": "web"
}
}
If you want both the Web UI and Claude Desktop at the same time, they need to run as separate processes.
%APPDATA%\pyRevit\Extensions%PROGRAMDATA%\pyRevit\ExtensionsRevitMCP.extension under that root:
... [View full README on GitHub](https://github.com/oakplank/RevitMCP#readme)