EraCore Revit MCP

EraCore Revit MCP

Connects LLM assistants to Autodesk Revit BIM models, enabling reading metadata, listing elements, creating geometry, batch parameter updates, and exporting schedules. Supports fake mode for testing without Revit and pyRevit mode for live integration.

Category
Visit Server

README

EraCore Revit MCP

Python 3.12+ License: MIT Architecture MCP

EraCore Revit MCP is a Model Context Protocol (MCP) server that connects LLM assistants (Cursor, Claude Desktop, and others) to Autodesk Revit BIM models. It exposes typed tools for reading model metadata, listing elements, creating geometry, batch-updating parameters, and exporting schedules.

Built with Hexagonal Architecture, Domain-Driven Design, and a Walking Skeleton delivery approach.

Version 1.0.0
Revit 2024–2027 (pyRevit bridge tested on 2027)
Python 3.12+
Platform Windows (Revit integration); fake mode runs anywhere

Features

Capability Fake mode pyRevit mode
MCP tools (7) — ping, model info, list/get elements ✅ ✅
Create walls with Revit transactions ✅ ✅
Batch parameter updates (≤100 per batch) ✅ ✅
Export ViewSchedule to CSV ✅ ✅
Real Revit document read/write via HTTP bridge — ✅
Unit tests without Revit installed ✅ —

Quick Start

Prerequisites

  • Python 3.12+
  • Windows 10/11 (required for live Revit integration)
  • Autodesk Revit 2024+ and pyRevit (optional; fake mode needs neither)

Install

git clone <repository-url> eracore
cd eracore

python -m venv .venv
.\.venv\Scripts\Activate.ps1
pip install -e ".[dev]"

Copy-Item .env.example .env

Run the Walking Skeleton (fake mode — no Revit)

# Default: REVIT_MCP_REVIT_ADAPTER_MODE=fake in .env
python -m revit_mcp demo

Expected output ends with:

WALKING SKELETON OK — walls: 2 → 3
Report generated: reports/demo_walls.csv

Run with real Revit (pyRevit)

# 1. Install pyRevit extension and dependencies
.\scripts\install_revit_deps.ps1

# 2. Start Revit with the bridge
.\scripts\start_revit_with_bridge.ps1

# 3. Open any .rvt model, then set adapter mode
#    REVIT_MCP_REVIT_ADAPTER_MODE=pyrevit  in .env

python -m revit_mcp demo
python -m revit_mcp mcp

See Revit & pyRevit setup for full instructions.


MCP Tools

Tool Description
ping() Health check — server version and Revit connectivity
get_model_info(include_stats?) Project metadata, levels, optional category statistics
list_elements(...) Filtered, paginated element list
get_element(element_id) Single element with parameters
create_wall(...) Create a wall between two XYZ points (mm)
batch_update_parameters(...) Bulk parameter updates with per-item error reporting
export_schedule(...) Export a ViewSchedule to CSV

Full contracts: Software Design Document · MCP server source


CLI Commands

python -m revit_mcp mcp      # Start MCP server (stdio transport)
python -m revit_mcp demo     # Run end-to-end Walking Skeleton
python -m revit_mcp config   # Print active configuration
python -m revit_mcp help     # Show help

Project Structure

eracore/
├── src/revit_mcp/              # Python MCP server (hexagonal layers)
│   ├── domain/                 # Entities, value objects, ports
│   ├── application/            # Use cases and DTOs
│   ├── adapters/
│   │   ├── primary/mcp/        # MCP inbound adapter
│   │   └── secondary/pyrevit_adapter/  # Revit bridge outbound adapters
│   └── config/                 # Settings and DI container
├── pyrevit_extension/          # EraCoreMCP pyRevit extension (HTTP bridge)
├── scripts/                    # Install and Revit launch scripts
├── tests/unit/                 # Use-case tests (fake adapter)
└── docs/                       # Architecture (C4) and guides

Configuration

Environment variables use the REVIT_MCP_ prefix. Copy .env.example to .env.

Variable Default Description
REVIT_MCP_REVIT_ADAPTER_MODE fake fake or pyrevit
REVIT_MCP_REVIT_BRIDGE_HOST 127.0.0.1 HTTP bridge host
REVIT_MCP_REVIT_BRIDGE_PORT 47200 HTTP bridge port
REVIT_MCP_REVIT_API_TIMEOUT_SEC 30 Bridge RPC timeout (increase for slow models)
REVIT_MCP_LOG_LEVEL INFO Logging level

Development

# Unit tests (≥70% coverage enforced)
pytest tests/unit -q

# Linting and types
ruff check src tests
ruff format src tests
mypy -p src.revit_mcp

# Architecture boundary checks
lint-imports

Docker (fake mode only — Revit cannot run inside Linux containers):

docker compose --profile ci run --rm tests
docker compose --profile demo run --rm demo

MCP Client Integration

Cursor

Add to MCP settings:

{
  "mcpServers": {
    "eracore-revit": {
      "command": "python",
      "args": ["-m", "revit_mcp", "mcp"],
      "cwd": "F:\\Teach\\eracore",
      "env": {
        "REVIT_MCP_REVIT_ADAPTER_MODE": "pyrevit"
      }
    }
  }
}

More clients: MCP client configuration guide.


Documentation

Document Description
Documentation index Entry point for all docs
C4 Architecture Context → Container → Component → Code
Getting started Detailed setup walkthrough
Revit integration pyRevit bridge and extension
SDD v1 Use cases, MCP contracts, acceptance criteria
PRINCIPLES.md Engineering and architecture rules

Architecture at a Glance

 LLM Client (Cursor / Claude)
        │  MCP stdio JSON-RPC
        ▼
 EraCore MCP Server (Python)
        │  Use Cases → Ports
        ▼
 Fake adapter (in-memory)  OR  pyRevit HTTP Bridge (:47200)
                                      │
                                      ▼
                              Autodesk Revit 2027 + .rvt model

Full C4 diagrams: System Context · Containers · Components


License

MIT — see LICENSE.


EraCore Team · BIM × AI · 2026

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured