revit-mcp
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-mcplist all the doors in the current view"
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
English | 简体中文
Description
revit-mcp allows you to interact with Revit using the MCP protocol through MCP-supported clients (such as Claude, Cline, etc.).
This project is the server side (providing Tools to AI), and you need to use revit-mcp-plugin (driving Revit) in conjunction.
Related MCP server: Revit MCP Server
GitHub Copilot Compatibility
This MCP server has been updated to be fully compatible with GitHub Copilot. The tool schemas now properly include the required items property for array parameters, resolving validation errors that previously occurred when using array-type parameters with GitHub Copilot's MCP client.
Allow AI to get data from the Revit project
Allow AI to drive Revit to create, modify, and delete elements
Send AI-generated code to Revit to execute (may not be successful, successful rate is higher in some simple scenarios with clear requirements)
Requirements
nodejs 18+
Complete installation environment still needs to consider the needs of revit-mcp-plugin, please refer to revit-mcp-plugin
Installation
1. Build local MCP service
Install dependencies
npm installBuild
npm run build2. Client configuration
Claude client
Claude client -> Settings > Developer > Edit Config > claude_desktop_config.json
{
"mcpServers": {
"revit-mcp": {
"command": "node",
"args": ["<path to the built file>\\build\\index.js"]
}
}
}Restart the Claude client. When you see the hammer icon, it means the connection to the MCP service is normal.
GitHub Copilot
GitHub Copilot supports MCP servers natively. Configure the server in your VS Code settings or workspace configuration:
{
"mcp": {
"servers": {
"revit-mcp": {
"command": "node",
"args": ["<path to the built file>\\build\\index.js"]
}
}
}
}Restart VS Code or reload the window to apply the configuration.

Framework
flowchart LR
CladueDesktop --> revit-mcp --> SocketService--commandName-->CommandlSet--command-->CommandExecute
CommandManager --> CommandlSet
CommandExecute --executeResult--> SocketService
CommandProject1 --> CommandManager
CommandProject2 --> CommandManager
CommandProject... --> CommandManager
subgraph ide1 [MCPClient]
CladueDesktop
end
subgraph ide2 [MCPServer]
revit-mcp
end
subgraph ide3 [Revit]
subgraph ide3.1 [revit-mcp-plugin]
SocketService
CommandlSet
CommandManager
CommandExecute
end
endSupported Tools
Name | Description |
get_current_view_info | Get current view info |
get_current_view_elements | Get current view elements |
get_available_family_types | Get available family types in current project |
get_selected_elements | Get selected elements |
create_point_based_element | Create point based element (door, window, furniture) |
create_line_based_element | Create line based element (wall, beam, pipe) |
create_surface_based_element | Create surface based element (floor, ceiling) |
delete_elements | Delete elements |
reset_model | Reset model (delete process model when executing continuous dialog) |
modify_element | Modify element's properties (instance parameters) |
search_modules | Search for available modules |
use_module | Use module |
send_code_to_revit | Send code to Revit to execute |
color_splash | Color elements based on a parameter value |
tag_walls | Tag all walls in view |
Available Tools
13 toolsai_element_filterA
An intelligent Revit element querying tool designed specifically for AI assistants to retrieve detailed element information from Revit projects. This tool allows the AI to request elements matching specific criteria (such as category, type, visibility, or spatial location) and then perform further analysis on the returned data to answer complex user queries about Revit model elements. Example: When a user asks 'Find all walls taller than 5m in the project', the AI would: 1) Call this tool with parameters: {"filterCategory": "OST_Walls", "includeInstances": true}, 2) Receive detailed information about all wall instances in the project, 3) Process the returned data to filter walls with height > 5000mm, 4) Present the filtered results to the user with relevant details.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Configuration parameters for the Revit element filter tool. These settings determine which elements will be selected from the Revit project based on various filtering criteria. Multiple filters can be combined to achieve precise element selection. All spatial coordinates should be provided in millimeters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains that this is a read-only querying tool (implied by 'retrieve' and 'querying'), but lacks details on performance constraints (beyond the example's mention of post-processing), error conditions, or authentication requirements. The example adds practical context about how returned data should be processed, which is helpful but not comprehensive.
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 well-structured with a clear purpose statement followed by a detailed example. While slightly verbose, every sentence adds value: the first establishes the tool's role, the second explains the workflow, and the example concretely demonstrates usage. It could be more concise by tightening the example explanation, but overall it's efficiently front-loaded with key information.
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 (multiple filtering parameters, no output schema, no annotations), the description does a good job explaining the tool's role and workflow. The detailed example compensates for the lack of output schema by showing how returned data should be processed. However, it doesn't fully address all behavioral aspects like performance limits or error handling that would be needed for complete understanding.
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%, so the schema already documents all parameters thoroughly. The description adds minimal parameter-specific semantics beyond the example showing filterCategory and includeInstances usage. It doesn't explain parameter interactions or provide additional syntax guidance beyond what's in the schema descriptions, meeting 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 tool's purpose with specific verbs ('retrieve detailed element information', 'querying tool') and resources ('Revit elements', 'Revit projects'). It distinguishes from siblings by emphasizing its role as an intelligent filtering tool for AI assistants, unlike tools like delete_element or create_line_based_element which perform different operations.
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 explicit guidance on when to use this tool through a detailed example scenario ('When a user asks...'), showing how the AI should invoke it for complex queries. It implicitly distinguishes from siblings like get_selected_elements (which retrieves pre-selected elements) or get_current_view_elements (which focuses on current view visibility) by emphasizing flexible filtering across the entire project.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
color_elementsC
Color elements in the current view based on a category and parameter value. Each unique parameter value gets assigned a distinct color.
| Name | Required | Description | Default |
|---|---|---|---|
| categoryName | Yes | The name of the Revit category to color (e.g., 'Walls', 'Doors', 'Rooms') | |
| parameterName | Yes | The name of the parameter to use for grouping and coloring elements | |
| useGradient | No | Whether to use a gradient color scheme instead of random colors | |
| customColors | No | Optional array of custom RGB colors to use for specific parameter values |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but lacks critical behavioral details. It doesn't disclose whether this is a temporary visualization or permanent change, if it requires specific permissions, what happens on view changes, or any performance/rate limitations for large element sets.
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?
Two concise sentences that efficiently convey the core functionality. The first sentence states the action and key parameters, while the second explains the coloring logic. No wasted words or redundant information.
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?
For a 4-parameter visualization tool with no annotations and no output schema, the description is insufficient. It doesn't explain what 'coloring elements' means in practice (overrides? filters?), what the user sees as a result, or important constraints like which views support this 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?
Schema description coverage is 100%, providing complete parameter documentation. The description adds minimal value beyond the schema, only implying that 'parameter value' drives color assignment without explaining how values map to colors or what happens with null/missing values.
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 ('color elements') and specifies the mechanism ('based on a category and parameter value'), distinguishing it from sibling tools like 'get_current_view_elements' or 'delete_element'. However, it doesn't explicitly differentiate from tools like 'operate_element' that might also affect element appearance.
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 active view), exclusions, or comparisons to sibling tools like 'tag_all_walls' for visualization purposes.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_line_based_elementC
Create one or more line-based elements in Revit such as walls, beams, or pipes. Supports batch creation with detailed parameters including family type ID, start and end points, thickness, height, and level information. All units are in millimeters (mm).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Array of line-based elements to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but offers minimal behavioral context. It states units are in millimeters and supports batch creation, but doesn't cover permissions needed, whether creation is reversible, error handling, or what happens on partial failure in batch operations. For a creation tool with zero annotation coverage, this is insufficient.
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 efficiently structured in two sentences: first stating purpose and examples, second detailing parameters and units. It's front-loaded with the core functionality and avoids unnecessary repetition, though it could be slightly more polished.
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?
For a creation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (e.g., success/failure, element IDs), doesn't mention error conditions, and provides minimal behavioral context. Given the complexity of creating multiple Revit elements, more guidance 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?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds marginal value by listing parameters (family type ID, start/end points, thickness, height, level information) and confirming units are in mm, but doesn't provide additional syntax, constraints, or examples beyond what the schema already specifies.
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 creates line-based elements in Revit with specific examples (walls, beams, pipes) and mentions batch creation. It distinguishes from siblings like create_point_based_element and create_surface_based_element by specifying 'line-based' elements, though it doesn't explicitly contrast them.
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 like create_point_based_element or create_surface_based_element. It mentions batch creation but doesn't specify prerequisites, limitations, or typical use cases beyond the basic functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_point_based_elementC
Create one or more point-based elements in Revit such as doors, windows, or furniture. Supports batch creation with detailed parameters including family type ID, position, dimensions, and level information. All units are in millimeters (mm).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Array of point-based elements to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but provides minimal behavioral context. It mentions batch creation and units (mm), but doesn't disclose critical behaviors: whether this is a write operation (implied but not stated), what happens on failure, whether elements are immediately visible, if it requires specific Revit document states, or any permissions/rate limits. The description adds some value but leaves significant gaps for a mutation tool.
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?
Two sentences with zero waste. First sentence states purpose and scope, second adds unit information. Appropriately front-loaded with the core functionality. Could be slightly more structured with bullet points for key features but remains efficient.
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?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what happens after creation (e.g., returns element IDs? success status?), doesn't mention error conditions, and provides minimal behavioral context. Given the complexity of creating Revit elements with multiple parameters, more guidance on usage and outcomes 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?
Schema description coverage is 100%, so the schema fully documents all parameters. The description adds marginal value by mentioning 'detailed parameters including family type ID, position, dimensions, and level information' and 'units are in millimeters (mm)', which reinforces schema details but doesn't provide new semantic context beyond what's already in parameter descriptions.
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 creates point-based elements in Revit with specific examples (doors, windows, furniture) and mentions batch creation capability. It distinguishes from siblings like 'create_line_based_element' and 'create_surface_based_element' by specifying 'point-based', but doesn't explicitly contrast with other creation tools.
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 on when to use this tool versus alternatives like 'create_line_based_element' or 'create_surface_based_element'. The description mentions 'point-based elements' but doesn't explain what qualifies as point-based versus line-based or surface-based, nor does it mention prerequisites like needing valid family type IDs from 'get_available_family_types'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_surface_based_elementB
Create one or more surface-based elements in Revit such as floors, ceilings, or roofs. Supports batch creation with detailed parameters including family type ID, boundary lines, thickness, and level information. All units are in millimeters (mm).
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Array of surface-based elements to create |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states the tool creates elements and mentions units (mm), but lacks critical details such as permission requirements, whether changes are reversible, error handling, or response format. This is inadequate for a mutation 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 efficiently structured in two sentences, front-loading the purpose and key features (batch creation, parameters, units). There is no wasted text, though it could be slightly more detailed in behavioral aspects without losing conciseness.
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?
For a complex mutation tool with no annotations and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., permissions, side effects), output format, error conditions, and usage guidelines. The high schema coverage does not compensate for these gaps in context.
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%, so the schema already documents all parameters thoroughly. The description adds minimal value by mentioning 'family type ID, boundary lines, thickness, and level information', which are already covered in the schema. It does not provide additional syntax, constraints, or examples beyond the schema.
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 ('Create') and resource ('surface-based elements in Revit such as floors, ceilings, or roofs'), making the purpose specific. It distinguishes from siblings like 'create_line_based_element' and 'create_point_based_element' by specifying surface-based elements, which helps the agent select the correct tool.
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 like 'create_line_based_element' or 'create_point_based_element'. It mentions batch creation and parameters but does not specify prerequisites, exclusions, or comparative contexts, leaving the agent without usage direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_elementC
Delete one or more elements from the Revit model by their element IDs.
| Name | Required | Description | Default |
|---|---|---|---|
| elementIds | Yes | The IDs of the elements to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden but only states the basic action. It lacks critical behavioral details: whether deletion is permanent/reversible, permission requirements, rate limits, error handling for invalid IDs, or effects on the model. This is a significant gap for a destructive operation.
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 with zero waste. It front-loads the key action ('Delete') and resource ('elements'), making it easy to scan and understand quickly.
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 destructive nature, no annotations, and no output schema, the description is incomplete. It fails to address safety, permissions, or result expectations, leaving the agent under-informed about critical behavioral aspects.
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 the parameter 'elementIds' fully documented in the schema. The description adds no additional meaning beyond implying the IDs are for deletion, matching the baseline score when schema does the heavy lifting.
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 ('Delete') and target ('elements from the Revit model'), specifying the mechanism ('by their element IDs'). It distinguishes from siblings like 'operate_element' or 'get_selected_elements' by focusing on deletion, but doesn't explicitly contrast with other destructive tools if they exist.
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. It doesn't mention prerequisites (e.g., needing valid element IDs), exclusions (e.g., not for bulk deletion), or suggest related tools like 'get_selected_elements' for obtaining IDs, leaving usage context implied at best.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_available_family_typesB
Get available family types in the current Revit project. You can filter by category and family name, and limit the number of returned types.
| Name | Required | Description | Default |
|---|---|---|---|
| categoryList | No | List of Revit category names to filter by (e.g., 'OST_Walls', 'OST_Doors', 'OST_Furniture') | |
| familyNameFilter | No | Filter family types by family name (partial match) | |
| limit | No | Maximum number of family types to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions filtering and limiting returns, but fails to cover critical aspects like whether this is a read-only operation (implied by 'Get' but not stated), potential performance impacts, error handling, or output format. For a tool with 3 parameters and no annotations, this leaves significant gaps in understanding its behavior.
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, well-structured sentence that efficiently communicates the tool's purpose and key features without any wasted words. It is front-loaded with the main action and includes essential details, making it easy to grasp quickly.
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 a tool with 3 parameters, no annotations, and no output schema, the description is incomplete. It lacks information on behavioral traits (e.g., read-only nature, error conditions), output format, and how it integrates with sibling tools. This makes it inadequate for an agent to fully understand and invoke the tool correctly in context.
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 description adds value by summarizing the filtering and limiting capabilities ('filter by category and family name, and limit the number of returned types'), which aligns with the parameters in the schema. Since schema description coverage is 100%, the baseline is 3, and the description provides a high-level overview without adding detailed semantics beyond what the schema already documents.
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 ('available family types in the current Revit project'), making the purpose understandable. It distinguishes itself from siblings like 'get_current_view_elements' or 'get_selected_elements' by focusing on family types rather than elements or views, though it doesn't explicitly name alternatives for similar queries.
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 implies usage by mentioning filtering capabilities ('You can filter by category and family name'), which suggests when to use it for targeted queries. However, it lacks explicit guidance on when not to use it or alternatives among siblings, such as comparing to 'ai_element_filter' or other element-related tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_view_elementsA
Get elements from the current active view in Revit. You can filter by model categories (like Walls, Floors) or annotation categories (like Dimensions, Text). Use includeHidden to show/hide invisible elements and limit to control the number of returned elements.
| Name | Required | Description | Default |
|---|---|---|---|
| modelCategoryList | No | List of Revit model category names (e.g., 'OST_Walls', 'OST_Doors', 'OST_Floors') | |
| annotationCategoryList | No | List of Revit annotation category names (e.g., 'OST_Dimensions', 'OST_WallTags', 'OST_TextNotes') | |
| includeHidden | No | Whether to include hidden elements in the results | |
| limit | No | Maximum number of elements to return |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses some behavioral traits: it's a read operation ('Get'), mentions filtering by categories, and describes what 'includeHidden' and 'limit' do. However, it lacks details on permissions, rate limits, error conditions, or what happens if no view is active, leaving gaps for a mutation-free tool.
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 front-loaded with the core purpose, followed by concise explanations of key parameters. Every sentence adds value without redundancy, making it efficient and well-structured for quick understanding.
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 no annotations and no output schema, the description is moderately complete. It covers the tool's purpose and parameters but lacks details on return values, error handling, or dependencies. For a read tool with 4 parameters, it's adequate but has clear gaps in behavioral context.
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%, so the schema already documents all parameters thoroughly. The description adds minimal value by briefly mentioning 'model categories' and 'annotation categories' and explaining 'includeHidden' and 'limit' in simple terms, but it doesn't provide additional syntax or format details beyond the schema. Baseline 3 is appropriate here.
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: 'Get elements from the current active view in Revit.' It specifies the verb ('Get') and resource ('elements'), and mentions filtering capabilities. However, it doesn't explicitly differentiate from sibling tools like 'get_selected_elements' or 'get_current_view_info', which would require a 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 implies usage context by mentioning filtering options and parameters like 'includeHidden' and 'limit', but it doesn't provide explicit guidance on when to use this tool versus alternatives. For example, it doesn't compare to 'get_selected_elements' or specify prerequisites like needing an active view.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_current_view_infoB
获取 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 information ('获取...详细信息'), implying a read-only operation, but doesn't clarify if it requires specific permissions, has side effects, or handles errors. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior and safety profile.
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 front-loads the core purpose ('获取 Revit 当前活动视图的详细信息') and adds clarifying examples ('包括视图类型、名称、比例等属性'). There is no wasted text, and it directly addresses what the tool does 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's simplicity (0 parameters, no annotations, no output schema), the description is minimally adequate. It explains the purpose and examples of returned attributes, but lacks details on behavioral traits, usage context, or output format. Without annotations or an output schema, more completeness would be beneficial, but it meets a basic threshold for this low-complexity tool.
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 the schema fully documents the lack of inputs. The description adds no parameter information, which is appropriate here. Since there are no parameters to explain, a baseline score of 4 is applied, as the description doesn't need to compensate for any schema 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 tool's purpose: '获取 Revit 当前活动视图的详细信息' (Get detailed information about Revit's current active view). It specifies the verb ('获取' - get) and resource ('当前活动视图' - current active view), and lists example attributes ('视图类型、名称、比例等属性' - view type, name, scale, etc.). However, it doesn't explicitly differentiate from sibling tools like 'get_current_view_elements', which might retrieve elements within the view rather than view properties.
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 active Revit session), exclusions, or comparisons to siblings like 'get_current_view_elements' (which might focus on elements in the view). Usage is implied only by the tool's name and purpose, with no explicit context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_selected_elementsC
Get elements currently selected in Revit. You can limit the number of returned elements.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of elements to return |
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 mentions the ability to limit returned elements but doesn't explain what happens if no elements are selected (e.g., returns empty list or error), how selection state is determined, or any performance implications. This leaves significant gaps for a tool that interacts with a complex system like Revit.
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 brief and front-loaded, with the core purpose stated first and an additional feature mentioned second. Both sentences earn their place by clarifying functionality, though it could be slightly more structured (e.g., explicitly stating it's for retrieving user-selected elements).
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 Revit and the lack of annotations and output schema, the description is insufficient. It doesn't explain what 'elements' refer to in Revit context (e.g., walls, doors), the format of returned data, error conditions, or dependencies on user interaction. For a tool in a specialized domain with no structured output, more detail 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 the single parameter 'limit' clearly documented in the schema as 'Maximum number of elements to return'. The description adds minimal value beyond this, only mentioning 'You can limit the number of returned elements' without providing additional context like default behavior if limit is omitted or practical usage tips.
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 ('Get elements currently selected') and resource ('in Revit'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'get_current_view_elements' or 'ai_element_filter', which might also retrieve elements in different contexts.
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 sibling tools like 'get_current_view_elements' (which retrieves elements from the current view) or 'ai_element_filter' (which might filter elements differently), leaving the agent without context for choosing between them.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
operate_elementB
Operate on Revit elements by performing actions such as select, selectionBox, setColor, setTransparency, delete, hide, etc.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | Parameters for operating on Revit elements with specific actions |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It implies mutation through actions like 'delete' and 'setColor', but lacks details on permissions, reversibility, or side effects. The action list hints at behavior, but critical aspects like 'Delete permanently removes elements' are buried in the schema, not the description.
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 sentence that efficiently lists actions, but it's front-loaded without prioritization. It could be more structured by grouping actions or highlighting common uses, though it avoids redundancy.
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?
For a tool with no annotations and no output schema, the description is moderately complete. It covers the tool's purpose and action types, but lacks usage guidelines, error handling, or output details, leaving gaps for the agent to navigate.
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%, so the baseline is 3. The description adds value by listing action examples (e.g., 'select, selectionBox, setColor'), which clarifies the tool's scope beyond the schema's generic 'action' parameter, though it doesn't detail all parameters or their interactions.
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 performs operations on Revit elements and lists specific actions like select, delete, hide, etc. It distinguishes itself from siblings like 'delete_element' by being a multi-action tool, though it doesn't explicitly contrast with other siblings like 'color_elements'.
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 compare with sibling tools like 'delete_element' or 'color_elements', leaving the agent to infer usage from action names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_code_to_revitB
Send C# code to Revit for execution. The code will be inserted into a template with access to the Revit Document and parameters. Your code should be written to work within the Execute method of the template.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | The C# code to execute in Revit. This code will be inserted into the Execute method of a template with access to Document and parameters. | |
| parameters | No | Optional execution parameters that will be passed to your code |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions code execution within a template and access to Document/parameters, it doesn't disclose critical behavioral aspects like authentication requirements, execution environment constraints, error handling, or whether this operation is reversible/destructive. For a code execution tool with zero annotation coverage, this represents significant gaps.
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 appropriately concise with two sentences that each serve a purpose: the first states the core functionality, the second provides important implementation context about the template structure. There's no wasted verbiage, though it could be slightly more front-loaded with critical behavioral information.
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?
For a code execution tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what happens after execution (success/failure responses, return values, error formats), doesn't mention security implications of executing arbitrary code, and provides minimal guidance about the execution environment. Given the complexity and potential risks of code execution, more comprehensive description 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?
Schema description coverage is 100%, so the schema already fully documents both parameters. The description mentions that code will be inserted into a template with access to Document and parameters, which adds some context about how the 'code' parameter will be used, but doesn't provide additional semantic meaning beyond what's in the schema descriptions. 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 specific action ('Send C# code to Revit for execution'), identifies the resource (Revit), and distinguishes this from sibling tools that manipulate elements or retrieve data rather than executing custom code. The phrase 'for execution' provides clear functional 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?
No guidance is provided about when to use this tool versus alternatives. While the description implies this is for executing custom C# code in Revit, it doesn't specify prerequisites, appropriate use cases, or when other tools like 'operate_element' might be more suitable. The description lacks explicit when/when-not instructions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tag_all_wallsB
Create tags for all walls in the current active view. Tags will be placed at the middle point of each wall.
| Name | Required | Description | Default |
|---|---|---|---|
| useLeader | No | Whether to use a leader line when creating the tags | |
| tagTypeId | No | The ID of the specific wall tag family type to use. If not provided, the default wall tag type will be used |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It states the tool creates tags but doesn't mention whether this is a destructive operation (modifying the model), what permissions are required, whether it's reversible, or what happens on failure. The description adds basic context about tag placement but lacks critical behavioral details for a mutation tool.
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 perfectly concise with two sentences that each earn their place. The first sentence states the core purpose and scope, while the second adds important placement details. There's zero wasted language or redundancy.
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?
For a mutation tool with no annotations and no output schema, the description is incomplete. It doesn't explain what the tool returns (success/failure indicators, created tag IDs, etc.), error conditions, or important behavioral constraints. While concise, it lacks the completeness needed for an agent to use this tool confidently in a complex environment like Revit.
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%, so the schema already documents both parameters thoroughly. The description adds no parameter-specific information beyond what's in the schema. The baseline of 3 is appropriate when the schema does all the parameter documentation work.
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 specific action ('Create tags'), target resource ('all walls in the current active view'), and placement details ('at the middle point of each wall'). It distinguishes itself from sibling tools like 'get_current_view_elements' or 'create_point_based_element' by focusing specifically on wall tagging operations.
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 (like needing an active view with walls), exclusions, or comparisons to sibling tools like 'operate_element' or 'create_point_based_element' that might handle similar operations. The context is implied 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.
TDQS
Most tools have distinct purposes, but there is some overlap between ai_element_filter, get_current_view_elements, and get_selected_elements in retrieving elements, which could cause confusion. However, their specific focuses (intelligent querying, current view, selected elements) help differentiate them. Other tools like create_line_based_element and create_surface_based_element are clearly distinct based on element type.
The naming follows a consistent verb_noun pattern (e.g., create_line_based_element, delete_element, get_available_family_types) with minor deviations. One tool, operate_element, uses a vague verb 'operate' instead of something more specific like 'modify', and send_code_to_revit is slightly less structured, but overall the pattern is clear and readable.
With 13 tools, this is well-scoped for a Revit MCP server covering element creation, querying, modification, and execution. Each tool serves a specific function in the domain, such as creating different element types or retrieving element information, without being overly bloated or sparse.
The tool set provides good coverage for core Revit operations, including creation (point, line, surface-based), deletion, querying, and modification. Minor gaps exist, such as no explicit tool for updating element parameters beyond color or transparency, and the domain could benefit from more specialized tools for tasks like scheduling or exporting, but agents can work around these with existing tools like operate_element or send_code_to_revit.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceEnables seamless communication between Claude AI and Autodesk Revit, allowing users to access and interact with Revit model information through natural language.618
- AlicenseBqualityNot gradedmaintenanceAllows AI assistants to interact with Autodesk Revit through the MCP protocol, enabling the AI to create, modify, and delete elements in Revit projects.15911
- AlicenseAqualityDmaintenanceEnables Large Language Models to access and manipulate Autodesk Revit models through a pyRevit-based bridge and the Model Context Protocol.20173MIT
- FlicenseNot gradedqualityAmaintenanceAI-powered control of Autodesk Revit through the Model Context Protocol, enabling natural language BIM workflows.101
Appeared in Searches
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Mohamed-Elnahla/revit-mcp-github-copilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server