MCP server for Autodesk Revit that enables AI-powered data extraction and querying of Revit documents through a named pipe architecture
Revit MCP has basic tool definitions with names and descriptions, but significant gaps in schema completeness, parameter documentation, and error handling. All 5 tools have descriptions (10-50 chars, below the 50-200 char optimum), but parameter descriptions are minimal or missing. Input schemas are present but lack detail (no enums, ranges, or format constraints). No output schemas documented. Error handling is absent, tools return raw strings with no recovery guidance. The architecture (STDIO pipe to Revit add-in) is sound, but the tool interface is underdeveloped for LLM reasoning.
Closes the currently open Revit document
Returns the floor area of a given level
Returns the length of a wall by its element ID
Lists all rooms on a given level with their areas
Opens a Revit file at the given path
No output schemas documented. Tools return raw strings; LLMs cannot infer response structure, field names, or downstream chaining. E.g., get_wall_length returns a string, is it '42.5 ft', JSON, or error text?
Parameter descriptions are minimal or absent. 'wall_id' and 'level_name' lack format guidance (e.g., 'Revit element ID as integer string' or 'exact level name from project'). LLMs cannot validate input without explicit constraints.
No error handling or recovery guidance. Tools return raw strings with no indication of success/failure, error type, or next steps. E.g., if open_revit_document fails, the LLM has no way to know whether to retry, ask the user, or try a different file path.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 37 | <=2025-11-25 | v2 |
Tool descriptions are too short (10-50 chars vs. 50-200 char baseline). 'Opens a Revit file at the given path' lacks context on when to use it, what happens on failure, or whether it closes the previous document. Descriptions should answer: What? When? Why? What does it return?
No input validation or constraint documentation. Parameters accept free-form strings with no enums, regex patterns, or ranges. LLMs will pass invalid wall IDs or level names, causing silent failures or cryptic errors from the Revit add-in.