Revit MCP Server
The Revit MCP Server serves as a bridge enabling Claude AI to interact with Autodesk Revit models in real-time via WebSocket connections.
Key capabilities:
π Real-time Communication: WebSocket-based connection for live model interactions
π Model Information: Access metadata, element counts, and model state
ποΈ Element Management: Query, filter, and manage elements with their properties and geometry
πͺ View & Level Control: Navigate through and list views and levels
π Schema Operations: Retrieve categories, families, elements, and detailed information
βοΈ Customizable: Configure connection settings via environment variables
π‘ Error Handling: Fall back to mock data when Revit connection is unavailable
Provides real-time access to Revit model information, element querying and filtering, view and level management, and model metadata access through a WebSocket connection with the Revit plugin.
Click on "Deploy 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 Servershow me all the doors in the current model"
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
A Model Context Protocol server for Revit integration, enabling seamless communication between Claude AI and Autodesk Revit.
π― 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
Related MCP server: QGISMCP
β¨ 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:
npm installBuild the server:
npm run buildFor development with auto-rebuild:
npm run watchβοΈ Configuration
The server can be configured using environment variables:
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:
%APPDATA%/Claude/claude_desktop_config.jsonConfiguration format:
{
"mcpServers": {
"revit-mcp-server": {
"command": "D:/path/to/revit-mcp-server/build/index.js"
}
}
}π Debugging
For debugging the MCP communication:
Use the built-in MCP Inspector:
npm run inspectorMonitor WebSocket communication with Revit plugin
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
Available Tools
6 toolsget_categoriesB
θ·ε Revit 樑εδΈηζζη±»ε«
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the action but does not reveal any behavioral traits, such as whether this is a read-only operation, if it requires specific permissions, or what the return format might be. This is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that directly states the tool's purpose without any waste. It is appropriately sized and front-loaded, making it easy to understand at a glance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity of interacting with a Revit model, the description is incomplete. It lacks details on behavioral traits, output format, and how the model context is provided, especially with no annotations and no output schema. This makes it inadequate for an agent to fully understand the tool's operation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description does not add parameter details, which is appropriate, but it implies the tool operates on a Revit model context without specifying how that context is established. Baseline is 4 for zero parameters, as the schema fully covers the absence of inputs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'θ·ε' (get) and resource 'Revit 樑εδΈηζζη±»ε«' (all categories in a Revit model), making the purpose specific and understandable. However, it does not explicitly distinguish this tool from sibling tools like 'get_families' or 'get_elements', which might also retrieve related model data, so it misses full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It does not mention context, prerequisites, or exclusions, such as whether it requires an open model or how it differs from sibling tools like 'get_families'. This leaves the agent with minimal usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_element_infoC
θ·ε Revit ε η΄ ηθ―¦η»δΏ‘ζ―
| Name | Required | Description | Default |
|---|---|---|---|
| elementId | Yes | ε η΄ η ID | |
| getItemPropertyInfo | No | ζ―ε¦θ·εε η΄ ε±ζ§δΏ‘ζ― | |
| getItemParameterInfo | No | ζ―ε¦θ·εε η΄ εζ°δΏ‘ζ― |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool 'gets' information, implying a read-only operation, but doesn't specify if it requires authentication, has rate limits, returns structured data, or handles errors. This leaves significant behavioral gaps for an agent to rely on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence in Chinese that directly states the tool's purpose without any unnecessary words or fluff. It's appropriately sized and front-loaded, making it efficient and easy to understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the lack of annotations and output schema, the description is incomplete. It doesn't explain what 'θ―¦η»δΏ‘ζ―' (detailed information) entails, such as the format or content of the returned data, nor does it cover behavioral aspects like error handling. For a tool with parameters and no structured output, more context is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description coverage is 100%, with all parameters clearly documented in the input schema. The description doesn't add any additional meaning or context beyond what the schema provides, such as explaining the relationship between the boolean parameters. This meets the baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('θ·ε' meaning 'get') and resource ('Revit ε η΄ ηθ―¦η»δΏ‘ζ―' meaning 'detailed information of Revit elements'), making the purpose understandable. However, it doesn't differentiate from sibling tools like 'get_elements' or 'get_families' which might also retrieve element-related information, so it doesn't reach the highest score.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. With siblings like 'get_elements' and 'get_families' available, there's no indication of what makes this tool distinct or when it should be preferred over others, leaving usage unclear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_elementsC
θ·ε Revit 樑εδΈηε η΄
| Name | Required | Description | Default |
|---|---|---|---|
| categoryIds | No | ιθ¦θ·εηε η΄ ζε±η±»ε«ηIdιε | |
| viewIds | No | ιθ¦θ·εηε η΄ ζε€ηθ§εΎηIdιε | |
| levelIds | No | ιθ¦θ·εηε η΄ ζε€ηζ ι«ηIdιε |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It only states the basic action ('θ·ε' - get) without detailing permissions, rate limits, pagination, or what 'elements' entail (e.g., geometric data, properties). For a tool with 3 parameters and no output schema, this is a significant gap in behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence: 'θ·ε Revit 樑εδΈηε η΄ ' (Get elements from Revit model). It's front-loaded with the core action and resource, with zero wasted words. This is appropriately concise for a tool with good schema coverage, though it could benefit from more detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (3 parameters, no annotations, no output schema), the description is incomplete. It doesn't explain what 'elements' are, how results are returned, or the tool's behavior (e.g., filtering logic). With no output schema and minimal description, the agent lacks sufficient context to use the tool effectively beyond basic parameter input.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with clear descriptions for each parameter (categoryIds, viewIds, levelIds). The description adds no additional meaning beyond the schema, such as explaining how parameters interact or providing examples. Baseline 3 is appropriate since the schema does the heavy lifting, but the description doesn't compensate or enhance understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states the purpose as 'θ·ε Revit 樑εδΈηε η΄ ' (Get elements from Revit model), which is clear but vague. It specifies the verb ('θ·ε' - get) and resource ('ε η΄ ' - elements) but lacks specificity about scope or type of elements, and doesn't differentiate from sibling tools like 'get_element_info' or 'get_families'. The description is functional but minimal.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. The description doesn't mention sibling tools like 'get_element_info' (which might provide detailed info) or 'get_families' (which might filter by family type), nor does it specify prerequisites or contexts for usage. This leaves the agent without direction on tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_familiesC
θ·ε Revit 樑εδΈηζζζ
| Name | Required | Description | Default |
|---|---|---|---|
| categoryId | No | ζη±»ε« IDοΌε―ιοΌ | |
| name | No | ζεη§°θΏζ»€οΌε―ιοΌ |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves families but doesn't describe any behavioral traits like whether it's read-only, if it requires specific permissions, how it handles large datasets (e.g., pagination), or what the return format looks like. For a retrieval tool with zero annotation coverage, this is inadequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese that directly states the tool's purpose without any unnecessary words. It's front-loaded and appropriately sized, making it easy for an agent to parse quickly. Every part of the sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (retrieving data with optional filters), lack of annotations, and no output schema, the description is incomplete. It doesn't address behavioral aspects like safety, performance, or return values, which are crucial for an agent to use the tool effectively. The description should provide more context to compensate for these gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, with both parameters ('categoryId' and 'name') documented as optional filters. The description doesn't add any meaning beyond what the schema providesβit doesn't explain how these filters work or their impact. Since the schema does the heavy lifting, the baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'θ·ε Revit 樑εδΈηζζζ' translates to 'Get all families in the Revit model.' It specifies the verb ('get') and resource ('families in Revit model'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_categories' or 'get_elements,' which is why it doesn't reach a score of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention any prerequisites, exclusions, or comparisons to sibling tools such as 'get_categories' or 'get_elements,' leaving the agent without context for tool selection. This lack of usage instructions is a significant gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_levelsB
θ·ε Revit 樑εδΈηζζζ₯Όε±
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states the tool retrieves data ('θ·ε'), implying a read-only operation, but doesn't specify permissions, rate limits, output format, or potential side effects. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, clear sentence: 'θ·ε Revit 樑εδΈηζζζ₯Όε±'. It's front-loaded with the core purpose, has zero waste, and is appropriately sized for a simple tool. Every word earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no output schema, no annotations), the description is minimally complete. It states what the tool does but lacks behavioral details like output format or usage context. For a basic retrieval tool, this is adequate but leaves clear gaps, especially with no annotations to compensate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100%, so there are no parameters to document. The description doesn't need to add parameter semantics, and it appropriately doesn't mention any. Baseline for 0 parameters is 4, as the description doesn't mislead or omit necessary param info.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'θ·ε Revit 樑εδΈηζζζ₯Όε±' (Get all floors in the Revit model). It specifies the verb 'θ·ε' (get) and resource 'ζ₯Όε±' (floors) with scope 'Revit 樑εδΈηζζ' (all in the Revit model). However, it doesn't explicitly differentiate from sibling tools like 'get_elements' or 'get_categories', which might also retrieve model data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, context, or exclusions, and doesn't reference sibling tools like 'get_elements' or 'get_categories' that might overlap in functionality. This leaves the agent with minimal usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_viewsB
θ·ε Revit 樑εδΈηζζθ§εΎ
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states what the tool does but doesn't describe behavioral traits such as whether it requires authentication, has rate limits, returns a list or structured data, or handles errors. For a tool with zero annotation coverage, this is a significant gap in transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence in Chinese that directly states the tool's purpose with zero waste. It's appropriately sized and front-loaded, making it easy to understand at a glance without unnecessary elaboration.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no annotations, and no output schema, the description is minimally complete for a simple retrieval operation. However, it lacks details on output format (e.g., list of view names, structured data) and behavioral context, which could be important for an AI agent to use it correctly. It's adequate but has clear gaps in completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 0 parameters with 100% coverage, so no parameter documentation is needed. The description doesn't add parameter details beyond the schema, but since there are no parameters, a baseline score of 4 is appropriate as it doesn't need to compensate for any gaps.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'θ·ε' (get/retrieve) and the resource 'Revit 樑εδΈηζζθ§εΎ' (all views in a Revit model), providing a specific purpose. However, it doesn't explicitly differentiate from sibling tools like 'get_elements' or 'get_levels', which might retrieve different types of Revit model components.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing an open Revit model), exclusions, or comparisons to sibling tools like 'get_elements' (which might include views as a subset). Usage is implied by the purpose but not explicitly stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
6 tool updates
- First observed
get_categories - First observed
get_element_info - First observed
get_elements - First observed
get_families - First observed
get_levels - First observed
get_views
TDQS
Scored across 6 tools
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.
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.
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.
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.
Related MCP Connectors
Convert Revit files to XKT, IFC, or DWG and query BIM data via natural language.
AI Hub for AEC β 50+ 3D formats, clash detection, ACC integration via Autodesk Platform Services.
Revit model integration via APS β elements, parameters, schedules, clashes, IFC export.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces β chat, links, and tasks. One-click OAuth.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceConnects Rhino3D to Claude AI via the Model Context Protocol, enabling AI-assisted 3D modeling and design workflows through direct control of Rhino's functionality.14-
- FlicenseNot gradedqualityDmaintenanceConnects QGIS to Claude AI through the Model Context Protocol, enabling AI-assisted project creation, layer manipulation, processing algorithm execution, and Python code running within QGIS.7-
- AlicenseBqualityDmaintenanceConnects Blender to Claude AI through the Model Context Protocol, enabling AI-assisted 3D modeling, scene creation, and manipulation through natural language commands.172MIT
- -licenseNot gradedqualityNot gradedmaintenanceEnables AI assistants like Claude to interact with Autodesk Construction Cloud Build platform for construction project management, including issues tracking, RFIs, submittals, and document management through natural language.-