使用说明
Revit MCP
通过模型上下文协议将Claude连接到Autodesk Revit。
支持的版本
| Revit | 。NET目标 | ElementId | 状态 |
|---|---|---|---|
| 2022 | 净值4.8 | int 构造器+ IntegerValue |
支持 |
| 2023年 | 净值4.8 | int 构造器+ IntegerValue |
支持 |
| 2024 | 净值4.8 | long 构造器+ Value (int已弃用) |
支持 |
| 2025 | 网络8.0 windows | long 构造器+ Value (int已弃用) |
支持 |
| 2026 | 网络8.0窗口 | long 构造器+ Value 仅(int 移除) |
支持 |
| 2027 | net8.0-windows(预期) | 与2026年相同(预期) |
建筑
Claude (Claude Desktop / Claude Code)
| MCP (stdio)
v
mcp-server/ <- TypeScript MCP server (Node.js)
| HTTP localhost:8765
v
RevitMcpBridge.dll <- C# Revit add-in (runs inside Revit.exe)
| Revit API
v
Revit (open model)
可用工具
| 工具 | 说明 |
|---|---|
revit_ping |
检查桥是否还活着 |
get_model_info |
项目信息、文件路径、Revit版本、图元计数 |
get_categories |
模型中的所有元素类别 |
get_levels |
所有标高 |
query_elements |
按类别、族、类型、级别、参数过滤元素 |
get_element_by_id |
一个元素的完整参数列表 |
run_dynamo_script |
执行a .dyn Dynamo图 |
run_pyrevit_script |
执行a .py pyRevit脚本 |
suggest_save_as_name |
预览命名规则中的输出文件名 |
save_as_with_rule |
使用基于规则的名称将模型保存到新文件夹 |
open_and_upgrade |
打开并升级旧版 .rvt 文件 |
命名规则令牌
在中使用这些令牌 namingTemplate:
| 令牌 | 已替换为 |
|---|---|
{originalName} |
不带扩展名的文件名 |
{date} |
YYYYMMDD |
{time} |
HHmmss |
{year} / {month} / {day} |
日期部件 |
{revitVersion} |
例如。 2024 |
{projectNumber} |
来自Revit项目信息 |
{projectName} |
来自Revit项目信息 |
{buildingName} |
来自Revit项目信息 |
{suffix} |
用户提供的字符串 |
{counter:N} |
零填充计数器,N位数字宽 |
例子: {projectNumber}_{buildingName}_RVT{revitVersion}_{date}
先决条件
- 修订版2022-2027
- Node.js 18+
- .NET SDK 8.0+(用于构建C#插件)
- Dynamo for Revit(可选,用于Dynamo脚本)
- pyRevit(可选,用于pyRevit脚本)
设置
1.构建C#Revit加载项
cd revit-addin
# Build for Revit 2024 (default)
dotnet build RevitMcpBridge/RevitMcpBridge.csproj
# Build for a specific version
dotnet build RevitMcpBridge/RevitMcpBridge.csproj -p:RevitVersion=2025
dotnet build RevitMcpBridge/RevitMcpBridge.csproj -p:RevitVersion=2026
dotnet build RevitMcpBridge/RevitMcpBridge.csproj -p:RevitVersion=2027
# Custom Revit install location
dotnet build RevitMcpBridge/RevitMcpBridge.csproj -p:RevitVersion=2026 -p:RevitInstallDir="D:\Autodesk\Revit 2026"
将输出文件复制到部署文件夹(例如。 C:\RevitMcpBridge\):
RevitMcpBridge.dllNewtonsoft.Json.dll
2.注册Revit加载项
编辑 revit-addin/RevitMcpBridge.addin:
- 集
<Assembly>到部署的完整路径RevitMcpBridge.dll
复制 RevitMcpBridge.addin 致:
%APPDATA%\Autodesk\Revit\Addins\2026\
替换 2026 您的Revit版本年份。
重新启动Revit。查看日志 %LOCALAPPDATA%\RevitMcpBridge\bridge.log.
3.构建MCP服务器
cd mcp-server
npm install
npm run build
4.向Claude注册
添加到您的Claude桌面配置(%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"revit": {
"command": "node",
"args": ["C:/path/to/RevitMCP/mcp-server/dist/index.js"],
"env": {
"REVIT_BRIDGE_PORT": "8765"
}
}
}
}
重新启动克劳德桌面。Revit工具将出现在Claude的工具列表中。
自定义端口
集 REVIT_MCP_PORT 启动Revit之前:
$env:REVIT_MCP_PORT = "9000"
& "C:\Program Files\Autodesk\Revit 2026\Revit.exe"
在MCP服务器配置中匹配它: "REVIT_BRIDGE_PORT": "9000".
多版本构建说明
C#项目使用条件编译来处理API的差异:
ElementIdHelper.cs包裹ElementId构造和值提取,以便对所有Revit版本(2022-2027)编译相同的代码。- 编译符号(
REVIT2026,REVIT_V_GTE_2024,REVIT_V_GTE_2026等)基于-p:RevitVersion=构建参数。 - 2022-2024年修订目标
net4.8;Revit 2025+目标net8.0-windows.
Revit 2026已处理重大更改
ElementId(int)构造函数 移除 ->使用ElementId(long)通过ElementIdHelper.Create()ElementId.IntegerValue移除 ->使用ElementId.Value通过ElementIdHelper.GetValue()- CefSharp已从Revit安装中删除(不影响此附加模块)
- 插件依赖隔离现在可用(
UseRevitContext清单选项)
Revit 2027准备
Revit 2027尚未发布,但该项目已预先布线:
REVIT2027和REVIT_V_GTE_2027编译符号就绪- 预计将继续。净值8/
net8.0-windows ElementIdHelper已经使用64位API,因此不需要进一步迁移- 注意:弃用的API将被删除(电气类、Curve.Intersect重载、Zone API、钢筋挂钩到终止重命名),以及潜在的新的所需清单设置
故障排除
| 问题 | 修复 |
|---|---|
| 无法访问桥 | 检查Revit是否加载了附加模块(“附加模块”选项卡) |
| 端口权限被拒绝 | 注册HTTP前缀(见下文) |
| Dynamo脚本失败 | 确保DynamoRevit已安装且路径正确 |
| 未找到pyRevit | 将pyRevit添加到PATH |
| 文件保存失败 | 确保目标文件夹存在并且Revit具有写入权限 |
| 程序集版本冲突(2026+) | 已设置 UseRevitContext 到 false in.addin清单 |
注册HTTP前缀(一次性,以管理员身份运行)
netsh http add urlacl url=http://localhost:8765/ user=Everyone
