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.
README
EraCore Revit 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
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.