Autodesk Revit MCP Server

Autodesk Revit MCP Server

Revit

Autodesk Revit MCP Server

Model Context Protocol server for Autodesk Revit

License: MIT Python .NET Revit

Quick Start | Documentation | API Reference


Overview

Production-ready MCP server enabling AI agents to control Autodesk Revit through natural language. Integrates with Claude Desktop, Microsoft Copilot, and custom MCP clients.

Key Features:

  • 100+ Revit API tools (geometry, views, sheets, families, MEP, structures)
  • Localhost HTTP bridge with sub-second response time
  • Thread-safe ExternalEvent architecture
  • Advanced reflection API for unlimited Revit access
  • Production-ready with comprehensive tool coverage

Quick Start

Prerequisites

  • Windows 10/11
  • Autodesk Revit 2024-2026
  • Python 3.11+
  • .NET Framework 4.8

Installation

# Clone repository
git clone https://github.com/Sam-AEC/Autodesk-Revit-MCP-Server.git
cd Autodesk-Revit-MCP-Server

# Build Revit add-in
.\scripts\build-addin.ps1 -RevitVersion 2024

# Install Python package
pip install -e packages/mcp-server-revit

Configure Claude Desktop

Edit %APPDATA%\Claude\claude_desktop_config.json:

{
  "mcpServers": {
    "revit": {
      "command": "python",
      "args": ["-m", "revit_mcp_server.mcp_server"],
      "env": {
        "MCP_REVIT_BRIDGE_URL": "http://127.0.0.1:3000",
        "MCP_REVIT_MODE": "bridge"
      }
    }
  }
}

Configure VS Code / GitHub Copilot

This repository includes a workspace MCP config at .vscode/mcp.json. After installing the Python package and starting Revit with the bridge add-in loaded, open this repository in VS Code and run MCP: List Servers or use the MCP Servers view.

For marketplace and registry publication details, see MCP Marketplaces and Client Distribution.

Verify Installation

Start Revit, then:

curl http://localhost:3000/health

Expected response:

{
  "status": "healthy",
  "revit_version": "2024"
}

Architecture

┌─────────────────────────────────┐
│ AI Client (Claude/Copilot)     │
└───────────────┬─────────────────┘
                │ MCP Protocol
┌───────────────▼─────────────────┐
│ MCP Server (Python)             │
│ - Tool Registry                 │
│ - Security/Audit                │
└───────────────┬─────────────────┘
                │ HTTP :3000
┌───────────────▼─────────────────┐
│ Revit Bridge Add-in (C#)        │
│ - HTTP Server                   │
│ - ExternalEvent Handler         │
└───────────────┬─────────────────┘
                │ Revit API
┌───────────────▼─────────────────┐
│ Autodesk Revit 2024-2026        │
└─────────────────────────────────┘

Threading Model: HTTP requests are queued and executed on Revit's main thread via ExternalEvent for thread safety.

Bridge Status: The bridge runs as a localhost HTTP server on port 3000, providing health checks and tool execution endpoints.


Available Tools

Document Management

  • revit.create_new_document - Create blank project
  • revit.open_document - Open RVT/RFA file
  • revit.save_document - Save active document
  • revit.close_document - Close document
  • revit.get_document_info - Get project metadata

Levels & Grids

  • revit.create_level - Create level at elevation
  • revit.list_levels - List all levels
  • revit.create_grid - Create grid line

Model Elements

  • revit.create_wall - Create wall from curve
  • revit.create_floor - Create floor from profile
  • revit.create_roof - Create roof from profile
  • revit.create_column - Create structural column
  • revit.create_beam - Create structural beam
  • revit.create_foundation - Create foundation element
  • revit.create_room - Create room boundary

MEP Systems

  • revit.create_duct - Create HVAC duct
  • revit.create_pipe - Create plumbing pipe
  • revit.create_cable_tray - Create cable tray
  • revit.create_conduit - Create electrical conduit
  • revit.get_mep_systems - List MEP systems

Families & Components

  • revit.place_family_instance - Place family instance
  • revit.place_door - Place door in wall
  • revit.place_window - Place window in wall
  • revit.list_families - List loaded families
  • revit.edit_family - Edit family document

Element Operations

  • revit.delete_element - Delete element
  • revit.copy_element - Copy element with translation
  • revit.move_element - Move element by vector
  • revit.rotate_element - Rotate element around axis
  • revit.mirror_element - Mirror element across plane
  • revit.pin_element - Pin element in place
  • revit.unpin_element - Unpin element

Parameters

  • revit.get_element_parameters - Read element parameters
  • revit.set_parameter_value - Write parameter value
  • revit.get_parameter_value - Read single parameter
  • revit.batch_set_parameters - Batch update parameters
  • revit.get_type_parameters - Get type parameters
  • revit.set_type_parameter - Set type parameter

Views

  • revit.create_3d_view - Create isometric 3D view
  • revit.create_section_view - Create section view
  • revit.create_floor_plan_view - Create floor plan
  • revit.duplicate_view - Duplicate view
  • revit.apply_view_template - Apply view template
  • revit.get_view_templates - List view templates
  • revit.list_views - List all views

Sheets & Documentation

  • revit.create_sheet - Create sheet with titleblock
  • revit.place_viewport_on_sheet - Place viewport on sheet
  • revit.list_sheets - List all sheets
  • revit.delete_sheet - Delete sheet
  • revit.duplicate_sheet - Duplicate sheet
  • revit.get_sheet_info - Get sheet information
  • revit.list_titleblocks - List titleblock types
  • revit.populate_titleblock - Fill titleblock parameters
  • revit.renumber_sheets - Renumber sheets
  • revit.batch_create_sheets_from_csv - Create sheets from CSV

Annotation

  • revit.create_tag - Create element tag
  • revit.create_dimension - Create dimension
  • revit.create_text_note - Create text annotation
  • revit.create_text_type - Create text type
  • revit.tag_all_in_view - Tag all elements in view
  • revit.create_revision_cloud - Create revision cloud

Selection & Query

  • revit.get_selection - Get current selection
  • revit.set_selection - Set element selection
  • revit.list_elements_by_category - Query by category
  • revit.get_element_type - Get element type
  • revit.get_element_bounding_box - Get element bounds
  • revit.get_categories - List all categories

Groups & Links

  • revit.create_group - Create model group
  • revit.ungroup - Ungroup elements
  • revit.convert_to_group - Convert to group
  • revit.get_group_members - Get group members
  • revit.get_link_instances - List link instances
  • revit.get_rvt_links - List Revit links

Schedules & Data

  • revit.create_schedule - Create schedule view
  • revit.get_schedule_data - Extract schedule data
  • revit.export_schedules - Export schedules to CSV
  • revit.calculate_material_quantities - Calculate quantities

Export Operations

  • revit.export_pdf_by_sheet_set - Export to PDF
  • revit.export_dwg_by_view - Export to DWG
  • revit.export_ifc_with_settings - Export to IFC
  • revit.export_navisworks - Export to Navisworks
  • revit.export_image - Export view as image
  • revit.render_3d_view - Render 3D view

Project Information

  • revit.get_phases - List project phases
  • revit.get_phase_filters - List phase filters
  • revit.get_design_options - List design options
  • revit.get_worksets - List worksets
  • revit.get_warnings - Get model warnings
  • revit.get_project_location - Get project location

Worksharing

  • revit.sync_to_central - Synchronize with central
  • revit.relinquish_all - Relinquish all elements

Materials & Rendering

  • revit.create_material - Create material
  • revit.set_element_material - Assign material
  • revit.get_render_settings - Get render settings

Analysis & Validation

  • revit.check_clashes - Run clash detection
  • revit.get_room_boundary - Get room boundary

Advanced Features

  • revit.invoke_method - Universal Revit API method invocation
  • revit.reflect_get - Get property via reflection
  • revit.reflect_set - Set property via reflection

Project Parameters

  • revit.list_shared_parameters - List shared parameters
  • revit.create_shared_parameter - Create shared parameter
  • revit.list_project_parameters - List project parameters
  • revit.create_project_parameter - Create project parameter

Revisions

  • revit.get_revision_sequences - Get revision sequences

Total: 100+ toolsFull API Reference: docs/tools.md

Development Status

This server is actively maintained and continuously improved. For the latest updates and known limitations, see:


Security

Default: Localhost-only (127.0.0.1:3000), no authentication required.

Enterprise: Optional HTTPS, OAuth2 (Entra ID), audit logging, and rate limiting.

See docs/security.md for details.


Project Structure

Autodesk-Revit-MCP-Server/
├── packages/
│   ├── revit-bridge-addin/       # C# Revit Add-in
│   │   └── src/Bridge/
│   │       ├── App.cs            # IExternalApplication
│   │       ├── BridgeServer.cs   # HTTP server
│   │       └── BridgeCommandFactory.cs
│   └── mcp-server-revit/         # Python MCP Server
│       ├── src/revit_mcp_server/
│       │   ├── mcp_server.py     # MCP protocol
│       │   ├── bridge/client.py  # HTTP client
│       │   └── tools/            # Tool handlers
│       └── tests/
├── scripts/
│   ├── build-addin.ps1           # Build C# DLL
│   └── install.ps1               # Deploy to Revit
├── docs/
│   ├── tools.md                  # API reference
│   ├── architecture.md           # System design
│   └── security.md               # Security model
└── README.md

Documentation


License

MIT License - Copyright (c) 2025


Links


Serveurs connexes

NotebookLM Web Importer

Importez des pages web et des vidéos YouTube dans NotebookLM en un clic. Utilisé par plus de 200 000 utilisateurs.

Installer l'extension Chrome