English | 繁體中文
Revit MCP lets AI clients call Autodesk Revit tools through the Model Context Protocol (MCP). The MCP server forwards tool calls to a local Revit add-in, and the add-in executes the corresponding Revit API workflow.
- Demo video: Revit MCP - AI-Powered BIM Workflow Demonstration
- Knowledge site: https://shuotao.github.io/REVIT_MCP_study/
- Default WebSocket port:
8964
Talk to Revit in plain language. Ask your AI client to "dimension every wall on this view" or "check the curtain-wall elevations", and Revit does it — through 166 MCP tools backed by 74 professional BIM SOPs (building code, quantity take-off, compliance checks).
Who it's for: BIM engineers and architects who use Revit and want AI-assisted, standards-based workflows. You'll need Revit (2022–2026) on Windows and to be comfortable installing an add-in.
- Install the Revit add-in. Build and deploy the C# add-in — see Manual Setup. This is the half that actually talks to Revit.
- Point your AI client at the MCP server. No cloning needed — it runs straight from npm:
{ "mcpServers": { "revit-mcp": { "command": "npx", "args": ["-y", "@shuotao/revit-mcp-server"] } } } - Open Revit, enable the MCP service in the ribbon, and start asking. Full setup: AI Client Configuration.
Questions or want to show what you built? → Discussions
| Item | Count | Source |
|---|---|---|
| Runtime MCP tools | 167 | registerRevitTools() in MCP-Server/src/tools/index.ts |
| Domain SOP files | 74 | domain/*.md except README.md, plus domain/references/*.md |
| Claude skills | 50 | .claude/skills/*/SKILL.md |
When these numbers change, update CLAUDE.md, README.zh-TW.md, this file, docs/DOCUMENT_AUDIENCE_INVENTORY.md, and run:
.\scripts\verify-qaqc.ps1 -SkipBuild -SkipDeployAI Client
Claude Desktop / Claude Code / Gemini CLI / VS Code Copilot / Antigravity
|
| stdio
v
MCP Server
Node.js / TypeScript
MCP-Server/build/index.js
|
| WebSocket ws://localhost:8964
v
Revit Add-in
C# / Revit API
MCP/Application.cs
MCP/Core/SocketService.cs
MCP/Core/ExternalEventManager.cs
|
v
Autodesk Revit
External AI clients do not need an API key inside this repository. Their account and authorization are managed by the AI client itself. Only an embedded Revit chat feature that directly calls an AI API would need an API key.
| Item | Requirement |
|---|---|
| OS | Windows 10 or later |
| Revit | Autodesk Revit 2022, 2023, 2024, 2025, 2026 |
| .NET | .NET Framework 4.8 for Revit 2022-2024; .NET 8 for Revit 2025-2026 |
| Node.js | LTS, preferably 20.x or later |
Recommended for new users:
.\scripts\setup.ps1For AI agents or non-interactive setup:
powershell -ExecutionPolicy Bypass -File scripts/setup.ps1 -NonInteractive -RevitVersions "2024,2025"The setup script checks prerequisites, installs dependencies, builds the MCP server, builds and deploys the Revit add-in, and helps configure common AI clients.
The MCP server is published on the MCP Registry as io.github.shuotao/revit-mcp-server (npm package @shuotao/revit-mcp-server). Run it directly with:
npx -y @shuotao/revit-mcp-serverNote: this npm package is only the Node stdio bridge. The C# Revit add-in (MCP/) must still be installed separately — follow Manual Setup below for your Revit version.
cd MCP-Server
npm install
npm run buildAI clients launch:
node MCP-Server/build/index.js
Choose the configuration that matches your Revit version:
cd MCP
dotnet build -c Release.R22 RevitMCP.csproj # Revit 2022
dotnet build -c Release.R23 RevitMCP.csproj # Revit 2023
dotnet build -c Release.R24 RevitMCP.csproj # Revit 2024
dotnet build -c Release.R25 RevitMCP.csproj # Revit 2025
dotnet build -c Release.R26 RevitMCP.csproj # Revit 2026Expected output:
MCP/bin/Release.R{YY}/RevitMCP.dll
Example for Revit 2024:
MCP/bin/Release.R24/RevitMCP.dll
Recommended:
.\scripts\install-addon.ps1For manual deployment, place the .addin file and DLL under the matching Revit Addins directory, and keep the relative assembly path in RevitMCP.addin:
<Assembly>RevitMCP\RevitMCP.dll</Assembly>Do not create version-specific .addin files, and do not hardcode absolute DLL paths.
Project-level .mcp.json:
{
"mcpServers": {
"revit-mcp": {
"type": "stdio",
"command": "node",
"args": ["./MCP-Server/build/index.js"],
"env": {}
}
}
}VS Code config in .vscode/mcp.json:
{
"servers": {
"revit-mcp": {
"type": "stdio",
"command": "node",
"args": ["${workspaceFolder}/MCP-Server/build/index.js"],
"env": {}
}
}
}Other AI clients use the same concept: launch MCP-Server/build/index.js with node.
Config template per client:
| AI Client | Config location | Template |
|---|---|---|
| Claude Code | project root .mcp.json |
built in, works out of the box |
| Claude Desktop | %APPDATA%\Claude\claude_desktop_config.json |
MCP-Server/claude_desktop_config.json |
| Gemini CLI | ~/.gemini/settings.json |
MCP-Server/gemini_mcp_config.json |
| VS Code Copilot | .vscode/mcp.json |
built in |
| Antigravity | UI settings | Antigravity_MCP_Complete_Guide.md |
Replace <YOUR_PROJECT_PATH> in the templates with the actual project path on your machine.
The Revit-side WebSocket service accepts only one MCP connection at a time: a newly connected MCP server replaces the previous connection. Multiple AI clients are therefore used by switching, not concurrently:
- Close the current AI client (or disable its MCP server).
- Start the other AI client; once its MCP server connects to
localhost:8964, it takes over. - If the connection misbehaves, restart the MCP service from the Revit ribbon to reset it.
- Start Revit.
- Open or create a Revit project.
- Enable the MCP service from the Revit ribbon.
- Confirm the Revit add-in is listening on
localhost:8964. - Start or restart the AI client so it loads the MCP server.
- Call Revit MCP tools from the AI client.
If localhost:8964 is unreachable, Revit may not be running, the MCP service may be off, the port may be occupied, or the AI client and Revit add-in may be using different port settings.
REVIT_MCP/
MCP/ Revit Add-in (C#)
Application.cs Revit add-in entry point
RevitMCP.csproj Single multi-version project
RevitMCP.addin Single add-in manifest
Core/
SocketService.cs Revit-side WebSocket server
ExternalEventManager.cs UI-thread execution bridge
RevitCompatibility.cs Revit 2022-2026 compatibility helpers
CommandExecutor.cs Main command dispatcher
Commands/*.cs Command modules
MCP-Server/ MCP Server (Node.js / TypeScript)
src/index.ts stdio MCP server entry
src/socket.ts WebSocket client to Revit
src/tools/*.ts MCP tool definitions
domain/ Shared BIM SOPs; do not convert to English-only
.claude/ AI commands and skills
docs/ Human-facing docs and public knowledge site
scripts/ Setup, deployment, QA/QC scripts
log/ Append-only session and commit logs
| Type | Location | Rule |
|---|---|---|
| AI-only | CLAUDE.md, .claude/commands/, .claude/skills/ |
English-first to avoid mojibake |
| Human-facing | README.md, README.zh-TW.md, docs/, scripts/README.md |
Match the reader's language |
| Shared | domain/*.md, log/README.md |
Domain files must remain Chinese-readable and must not become English-only |
| Historical | docs/_archive/**, old logs |
Preserve by default |
See docs/DOCUMENT_AUDIENCE_INVENTORY.md.
domain/*.md: BIM SOPs, regulatory logic, and calculation methods. Shared by humans and AI..claude/skills/*/SKILL.md: AI workflow orchestration.MCP-Server/src/tools/*.ts: MCP tool definitions and input schemas.MCP/Core/Commands/*.cs: Revit API implementation.
If a Domain file and a Skill disagree on method, the Domain file wins.
After documentation, tool, Domain, Skill, build, or deployment changes, run:
.\scripts\verify-qaqc.ps1 -SkipBuild -SkipDeployBefore deployment, run a full check:
.\scripts\verify-qaqc.ps1 -Version 2024QA/QC checks:
- forbidden legacy files and paths
- required file structure
- README / CLAUDE / docs count alignment
- Domain table forward and reverse coverage
- local Markdown link rot
- Domain frontmatter
- document audience classification
- mojibake risk in canonical docs
Check:
npm run buildhas been run inMCP-Server.- The AI client's MCP config points to the correct
MCP-Server/build/index.js. - The AI client has been restarted or has reloaded MCP servers.
Check:
- Revit is running.
- The MCP service is enabled in the Revit ribbon.
localhost:8964is not occupied.- If HTTP.sys / PID 4 is holding the port, try:
powershell -ExecutionPolicy Bypass -File scripts\release-port.ps1Confirm the .addin file and DLL were deployed under the matching %APPDATA%\Autodesk\Revit\Addins\{version} directory, then restart Revit.
- Keep one
MCP/RevitMCP.csproj. - Keep one
MCP/RevitMCP.addin. - Do not create version-specific
.csprojor.addinfiles. - Do not create nested
MCP/MCP/directories. - Do not change
.addin<Assembly>to an absolute path. - Do not convert Domain files to English-only.
- Do not bypass the MCP server with hand-written WebSocket JSON.
- For live Revit view, level, selection, or document state, AI must query live state in the current turn.
| Document | Purpose |
|---|---|
| CLAUDE.md | Main AI agent constitution and project map |
| AGENTS.md | Redirect to CLAUDE.md |
| GEMINI.md | Redirect to CLAUDE.md |
| README.zh-TW.md | Traditional Chinese README |
| CONTRIBUTING.md | Contribution guide |
| CHANGELOG.md | Release history |
| domain/README.md | Domain SOP catalog |
| domain/lessons.md | Project lessons |
| .claude/skills/ | AI skills |
| .claude/commands/ | AI slash commands |
| scripts/README.md | Script documentation |
| docs/DOCUMENT_AUDIENCE_INVENTORY.md | Document audience inventory |
| docs/DOCS_STRUCTURE.md | Docs directory guide |
| log/README.md | Log append rules |
MIT License
