Revit MCP
by 3d-mcp
README.md
# Revit MCP by ArchBench
Connect an MCP-compatible assistant to Revit using this independent, open-source connector. Basic connectivity is free and needs no ArchBench account.
**Status: experimental alpha.** Read the [validation record](docs/VALIDATION.md) before using it with real project files. Transport fixture tests are not native-application qualification.
Implementation target: **Revit 2024+ on Windows, with a compatible pyRevit installation**. Node.js 22+ runs the MCP server. Build native packages from the checkout with `npm ci --ignore-scripts` and `npm run package:hosts` (Python 3 required).
## Get the source
```sh
git clone https://github.com/3d-mcp/revit-mcp.git
cd revit-mcp
npm ci --ignore-scripts
```
The [alpha release](https://github.com/3d-mcp/revit-mcp/releases/tag/v0.1.0-alpha.3) contains the native adapter archive and checksums. No npm registry release is included.
## Install the native connection
Extract `dist/revit-mcp-pyrevit.zip`. Place the resulting `ArchBenchMCP.extension` folder in a pyRevit extension search directory such as `%APPDATA%/pyRevit/Extensions`. Reload pyRevit. In ArchBench MCP → Connect, click Toggle bridge and choose read-only or native scripting. Click again to stop. Uses a persistent IronPython engine and a throttled native ExternalEvent pump.
## Connect your assistant
Configure the assistant to launch:
```sh
node /absolute/path/to/revit-mcp/bin/revit-mcp.mjs
```
[Codex, Claude Code and desktop JSON setup](docs/CLIENTS.md). The assistant must run on the same machine and as the same user as the native application.
## First request
“Check my Revit connection, then describe the current selection.”
This calls `revit_get_status` and `revit_get_context`. Native context is limited to basic document and selection information; it does not use an ArchBench workflow engine.
## Optional native access
Enable native scripting explicitly in the host and set `ARCHBENCH_MCP_ALLOW_SCRIPTS=1` in the MCP server environment. This exposes `revit_execute_code` with `code` and `confirm: true`.
The IronPython script sets `result` to a JSON-compatible return value:
```python
result = {"title": doc.Title}
```
Scripts execute unsandboxed with the native application’s authority. They may modify models and local files or use the network. Keep returned data small; return values, rather than console prints, go to the assistant. See [security and Undo limitations](SECURITY.md).
Stop the native bridge to revoke access. Restarting generates a fresh token; the client reads it from the local connection descriptor.
## ArchBench
Maintained by [ArchBench](https://archbench.com/?utm_source=revit-mcp&utm_medium=readme&utm_campaign=open-source). Explore the separate product for integrated design work, project history, collaboration and workflows as those features become available. This connector remains usable independently.
This is an independent integration, not an official Revit vendor project.
## Development and ownership
Run `npm run check` from this repository. It needs no sibling checkout or parent
workspace package. Python 3 is required for packaging and fixture checks.
This is an independently implemented public connector for external MCP clients
such as Codex and Claude Code. For ArchBench its purpose is marketing and
distribution through useful connectivity and voluntary product discovery.
Neither this connector nor the proprietary product depends on the other.
ArchBench chat, mission graphs, IFC models/mappings, planners, reviewed execution,
history, collaboration and workflow engines remain in the separate product.
Do not share private source, contracts, protocols, credentials or runtime services.
[Architecture](docs/ARCHITECTURE.md) · [Release process](docs/RELEASING.md) · [Licensing](LICENSING.md)
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues