Revit MCP桥
通过模型上下文协议将AI助手(Claude、Gemini CLI)连接到Autodesk Revit。允许您直接从聊天界面查询和验证Revit结构模型。
MCP Client (Claude / Gemini) server (Node.js) revit-plugin (C# inside Revit)特性
- 模型信息 --获取活动项目名称
- 参数验证 --结构元素中缺失或空参数的健康报告
- 基于规则的自动填充 --基于模型逻辑(材料汇总、墙功能标志、条件规则)导出和填充参数值
支架:结构框架、结构柱、结构基础、墙壁、地板。
需求
- Autodesk Revit 2025
- Node.js(在WSL或Windows中)
- .NET SDK(用于构建插件)
- 带镜像网络的WSL2(如果在WSL中运行MCP服务器)
设置
1.配置文件
复制示例配置并设置您的身份验证令牌:
cp config.example.json config.json{
"authToken": "your-secret-token",
"revitPluginUrl": "http://127.0.0.1:8080/revit/"
}config.json git被忽略,并且必须同时存在于MCP服务器计算机和已安装的Revit插件DLL中。
2.MCP服务器
cd server
npm install
npm run build3.Revit插件
从Windows构建:
dotnet.exe build "...\revit-plugin\RevitMcpPlugin.csproj" -c Release -r win-x64通过将这些文件复制到以下位置进行安装 %APPDATA%\Autodesk\Revit\Addins\2025\:
revit-plugin/bin/Release/win-x64/RevitMcpPlugin.dllrevit-plugin/RevitMcpPlugin.addin(更新 `` 里面的路)config.json
4.WSL网络(如果在WSL中运行MCP服务器)
添加 C:\Users\\.wslconfig:
[wsl2]
networkingMode=mirrored然后运行 wsl --shutdown 从PowerShell重新打开WSL。这允许WSL访问Revit 127.0.0.1:8080 听众。
5.MCP客户端配置
双子星命令行工具 (C:\Users\\Gemini\.gemini\settings.json):
{
"mcpServers": {
"revit-bridge": {
"command": "node",
"args": ["/path/to/revit-mcp-bridge/server/dist/index.js"]
}
}
}克劳德桌面 (claude_desktop_config.json):
{
"mcpServers": {
"revit-bridge": {
"command": "node",
"args": ["/path/to/revit-mcp-bridge/server/dist/index.js"]
}
}
}可用工具
get_revit_project_info
返回当前打开的Revit项目的名称。
validate_parameters
检查是否在结构图元上设置了所需的参数。
{
"category": "OST_StructuralFraming",
"additional_params": ["SBB_AssetID", "SBB_MaintenanceZone"]
}返回一个健康报告,其中包含缺失或空参数的总数、通过数、失败数和每个元素的详细信息。
apply_parameter_rules
根据模型条件推导和填充参数值。使用 "action": "suggest" 预览更改或 "action": "auto-fill" 写他们。
{
"category": "OST_Walls",
"action": "suggest",
"rules": [
{ "type": "material_summary", "target_param": "Material_Summary" },
{ "type": "wall_function_flag", "target_param": "IsExterior", "exterior_value": "True", "interior_value": "False" },
{ "type": "if_then", "if_param": "FUNCTION_PARAM", "if_value": "Exterior", "set_param": "SBB_IsExterior", "set_value": "True" }
]
}规则类型:
| 类型 | 描述 |
|---|---|
material_summary | 将元素中的材质名称聚合到目标参数中 |
wall_function_flag | 根据墙类型是“内部”还是“外部”设置参数 |
if_then | 当另一个参数与某个值匹配时,有条件地设置一个参数 |
