Revit AI扩展工具

RevitMCP是一个pyRevit扩展和Python服务器,允许AI客户端与实时Revit会话交互,支持通过Web UI或本地MCP客户端进行操作。

  • by oakplank
  • Python
  • 本地部署
  • 64 星标
  • 更新于
在 GitHub 查看 oakplank/RevitMCP

使用说明

RevitMCP

RevitMCP是一个pyRevit扩展和一个Python服务器,允许AI客户端在实时Revit会话中工作。

它支持两种使用方式:

  • Web用户界面位于 http://127.0.0.1:8000
  • 用于Claude Desktop、Claude Code和Codex等客户端的stdio上的本地MCP

存储库布局说明:此存储库根是pyRevit扩展根。如果手动从源代码安装,则应命名签出目录本身 RevitMCP.extension.

工具

RevitMCP公开了46个工具:

工具 说明
get_revit_project_info 获取活动项目元数据、文档路径和Revit版本详细信息
get_active_view_info 读取当前视图的名称、类型、比例和相关元数据
get_active_view_elements 捕获活动视图中可见元素的有界快照
export_active_view_image 将活动的Revit视图导出到本地图像工件,以进行模型视觉检查
export_element_snapshot 通过激活目标视图、临时隔离元素、在导出三维视图时收紧剖面框、导出和恢复视图,从显式ID或活动选择导出聚焦快照
isolate_elements_in_view 暂时隔离视图中的显式元素或活动选择,并可选择聚焦相机进行检查
clear_temporary_isolate 清除活动视图或目标视图中的临时隐藏/隔离
activate_view 按视图ID或视图名称切换活动的Revit视图
duplicate_view 复制视图(可选),包括细节/依赖、模板分配和激活
get_active_selection 将当前Revit选择作为可重复使用的结果集读取
get_revit_diagnostics 返回实时pyRevit路线、文档、活动视图、选择和写入上下文诊断
list_family_types 列出加载的族类型,包括类别、族、类型和符号ID
get_revit_schema_context 加载规范Revit模式上下文,包括标高、类别、族、类型和常用参数
resolve_revit_targets 将用户术语解析为精确的Revit类别、标高、族、类型和参数名称
get_revit_memory_context 加载持久的本地用户/项目注释,以重复使用Revit惯例和工作流提示
save_revit_memory_note 为未来的聊天和工具运行保存持久的本地用户/项目注释
analyze_model_statistics 总结模型组成,包括类别、族/类型、视图、图纸、标高和房间数
get_elements_by_category 检索类别的所有元素并存储结果以供后续操作
select_elements_by_id 通过显式ID或存储的结果句柄选择元素
select_stored_elements 在Revit中选择以前存储的搜索或筛选结果
list_stored_elements 列出服务器上当前可用的存储元素结果集及其计数
filter_elements 按类别、级别和基于参数的条件查找元素
filter_stored_elements_by_parameter 使用一个或多个目标值通过批量服务器端参数过滤来优化存储的结果集
get_element_properties 读取特定元素或现有结果句柄的参数值
get_element_relationships 读取模型元素的宿主、父、子、依赖和自适应点关系
get_element_locations 使用位置点、曲线中点、边界框中心和主体回退读取模型空间图元位置
get_related_element_properties 从元素及其主/超级组件链中读取选定参数
update_element_parameters 使用类型化值处理更新一个或多个元素参数
sync_element_parameter_values 将第一个填充的源参数值复制到仅缺少或覆盖所有策略和模拟运行预览的目标参数中
override_element_graphics 为显式ID或存储的结果集应用或重置活动视图图形覆盖
delete_elements 删除具有模拟运行、确认、最大计数、取消钉和批量/单独保护措施的元素
place_view_on_sheet 创建新图纸,自动编号,并在其上放置匹配的视图
list_views 列出可以放置在图纸上的视图,包括类型和放置状态
analyze_view_naming_patterns 按类型和标志命名的集群视图名称可能命名异常值
suggest_view_name_corrections 根据先前的视图命名分析生成重命名建议
list_schedules 列出带有ID、类别、字段计数、过滤器、排序和图纸放置状态的Revit明细表
get_schedule_info 阅读计划定义,包括字段、隐藏状态、筛选器、排序/分组和设置
list_schedule_available_fields 列出可以添加到计划中的字段/参数,包括稳定的可用字段索引
get_schedule_rows 读取可见的明细表行和列元数据
compare_schedules 按关键字段和数量字段比较总体/发布计划中的计划行
duplicate_schedule 复制计划并可选择重命名
delete_schedule 删除带有模拟运行和确认保护措施的计划
create_schedule 使用字段、计算百分比字段、过滤器、排序和设置创建明细表或物料清单
update_schedule 更新计划字段、计算百分比字段、筛选器、排序/分组、设置或名称
audit_schedule_capabilities 对计划创建、字段、筛选器、排序、设置和行读取运行仅回滚探测
plan_and_execute_workflow 从结构化工具计划执行多步骤Revit工作流

计划计算的现场支持当前映射到公共Revit 2024 API。百分比字段可以通过以下方式添加并连接到计划字段 calculated_fields / add_calculated_fields.Revit公开 ScheduleFieldType.Formula,但在此API版本中不公开公共公式化设置程序,因此公式文本被拒绝,并出现不受支持的显式错误,而不是静默地创建一个断开的字段。

需求

  • Autodesk Revit
  • pyRevit
  • Python 3.7+可用作 python 如果您想直接或通过本地MCP客户端运行外部服务器。建议使用Python 3.13或更早版本,因为一些当前的AI提供程序依赖项在Python 3.14+下会发出警告。
  • 使用RevitMCP时打开的Revit项目

表面模式

RevitMCP有两个服务器表面:

  • web:浏览器UI位于 http://127.0.0.1:8000
  • mcp:用于本地MCP客户端(如Claude Desktop、Claude Code和Codex)的stdio服务器

一 server.py 该过程一次运行一个曲面。

手动切换:

python lib\RevitMCP_ExternalServer\server.py --surface web
python lib\RevitMCP_ExternalServer\server.py --surface mcp

如果使用pyRevit启动器,它将从以下位置读取首选曲面:

%USERPROFILE%\Documents\RevitMCP\user_data\revitmcp_settings.json

{
  "preferences": {
    "server_surface": "web"
  }
}

如果你想同时使用Web UI和MCP客户端,它们需要作为单独的进程运行。

安装RevitMCP

  1. 安装pyRevit: pyRevit安装程序
  2. 选择以下pyRevit扩展根之一:
    • %APPDATA%\pyRevit\Extensions
    • %PROGRAMDATA%\pyRevit\Extensions
  3. 将此存储库直接克隆到名为的文件夹中 RevitMCP.extension 根下:
git clone https://github.com/oakplank/RevitMCP.git "%APPDATA%\pyRevit\Extensions\RevitMCP.extension"
  1. 如果下载ZIP,请将存储库内容解压缩到名为的文件夹中 RevitMCP.extension 在同一个扩展根下。
  2. 重新加载pyRevit或重新启动Revit。

文件夹名称很重要:pyRevit通过以结尾的文件夹发现扩展名 .extension.

跟踪确切情况 RevitMCP.extension 您在此处安装的文件夹。本地MCP客户端必须指向 server.py 同一文件夹中的文件。不要将客户端指向pyRevit安装文件夹,除非该文件夹实际上是安装此扩展的位置。

启用Revit路线

  1. 打开Revit。
  2. 首选 pyRevit -> Settings.
  3. 启用路由服务器。
  4. 重新启动Revit。
  5. 如果Windows要求,允许防火墙访问。

默认的Revit Routes端口通常为 48884.

快速入门:Web UI

  1. 打开Revit项目。
  2. 在Revit中,单击 RevitMCP -> Server -> Launch RevitMCP.
  3. 打开 http://127.0.0.1:8000.
  4. 在web UI中添加任何所需的模型或API设置。
  5. 尝试: Get Revit project info

在局域网上共享Web UI

默认情况下,Web UI会监听 127.0.0.1。这只适用于同一台计算机,因此另一台计算机上的同事无法连接到 http://127.0.0.1:8000.

要允许同一受信任网络上的另一台计算机:

  1. 在Revit计算机上,编辑:
%USERPROFILE%\Documents\RevitMCP\user_data\revitmcp_settings.json
  1. 下 servers,设置:
{
  "servers": {
    "external_server_host": "0.0.0.0",
    "external_server_port": 8000
  }
}

保持设置文件的其余部分不变。

  1. 重新启动RevitMCP服务器。
  2. 查找Revit计算机的局域网IP:
ipconfig

使用 IPv4 Address 用于活动Wi-Fi或以太网适配器。

  1. 从同事的电脑中打开:
http://<REVIT_COMPUTER_IPV4>:8000

如果页面仍然无法加载,请允许 python.exe 通过专用网络上的Windows Defender防火墙,或为端口添加入站TCP规则 8000.

不要在公共网络或开放的互联网上暴露此服务器。Web UI旨在用于受信任的本地使用。

快速入门:克劳德桌面

Claude Desktop本地MCP位于一台机器的本地。在打开Revit、安装pyRevit的同一台计算机上使用此功能 RevitMCP.extension 文件可用。如果另一台计算机上的同事需要访问您的实时Revit会话,请使用 Share the Web UI on Your LAN 相反。

  1. 安装克劳德桌面: https://claude.ai/download
  2. 在Claude Desktop中,转到 Settings -> Developer -> Local MCP Servers -> Edit Config.
  3. 找出确切答案 server.py 同一内部的路径 RevitMCP.extension pyRevit加载的文件夹。

如果您在用户扩展根目录下安装:

$server = "$env:APPDATA\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py"
Test-Path $server
$server

如果安装在计算机范围的扩展根目录下:

$server = "$env:PROGRAMDATA\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py"
Test-Path $server
$server

Test-Path 必须返回 True.使用Claude配置中打印的绝对路径。不要粘贴 %APPDATA% 或 %PROGRAMDATA% 直接转换为JSON;使用扩展路径,例如 C:\Users\YourName\AppData\Roaming\....

  1. 加 revitmcp 到您的Claude配置。

如果您的Claude配置已存在,请保持当前配置 preferences 以及其他MCP服务器。仅添加 revitmcp 在...之下 mcpServers.

如果复制下面的完整示例,请更新 preferences 值以匹配您自己的Claude Desktop设置。

{
  "mcpServers": {
    "revitmcp": {
      "command": "python",
      "args": [
        "C:\\Users\\YourName\\AppData\\Roaming\\pyRevit\\Extensions\\RevitMCP.extension\\lib\\RevitMCP_ExternalServer\\server.py",
        "--surface",
        "mcp"
      ]
    }
  },
  "preferences": {
    "chromeExtensionEnabled": true,
    "coworkScheduledTasksEnabled": true,
    "ccdScheduledTasksEnabled": true,
    "sidebarMode": "chat",
    "coworkWebSearchEnabled": true
  }
}
  1. 替换示例 server.py 路径与步骤3中的实际路径一致。
  2. 如果 python 不起作用,请用完整路径替换它 python.exe.
  3. 保存文件并完全重新启动Claude Desktop。
  4. 重新开放 Settings -> Developer -> Local MCP Servers 并确认 revitmcp 显示 running.
  5. 尝试: Get Revit project info

预计克劳德桌面屏幕之后 revitmcp 已配置:

快速入门:Codex

Codex本地MCP位于一台机器的本地。在打开Revit、安装pyRevit的同一台计算机上使用此功能 RevitMCP.extension 文件可用。现有的Codex会话可能无法热加载新的MCP服务器,因此请在添加服务器后重新启动Codex。

  1. 安装或更新Codex。
  2. 找出确切答案 server.py 同一内部的路径 RevitMCP.extension pyRevit加载的文件夹。

如果您在用户扩展根目录下安装:

$server = "$env:APPDATA\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py"
Test-Path $server
$server

如果安装在计算机范围的扩展根目录下:

$server = "$env:PROGRAMDATA\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py"
Test-Path $server
$server

Test-Path 必须返回 True.

  1. 加 revitmcp 食品法典委员会:
codex mcp add revitmcp -- python $server --surface mcp

如果 python 不起作用,请用完整路径替换它 python.exe.

该命令写入一个Codex MCP条目,相当于:

[mcp_servers.revitmcp]
command = "python"
args = ['C:\Users\YourName\AppData\Roaming\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py', "--surface", "mcp"]
  1. 重新启动Codex。
  2. 开始新的Codex会议并尝试: Get Revit project info

故障排除

revitmcp 未显示在Claude Desktop中

  • 检查您的Claude配置是否是有效的JSON。
  • 确保 server.py 路径是绝对存在的。
  • 如果 python 未找到,请使用完整路径 python.exe.
  • 从系统托盘中完全退出Claude Desktop并重新打开。
  • 检查 %APPDATA%\Claude\logs.

如果日志显示 can't open file ... RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py克劳德指着一条不存在的路。在与Claude Desktop相同的计算机上,运行:

Test-Path "$env:APPDATA\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py"
Test-Path "$env:PROGRAMDATA\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py"
Get-ChildItem "$env:APPDATA\pyRevit\Extensions" -Directory
Get-ChildItem "$env:PROGRAMDATA\pyRevit\Extensions" -Directory

如果两者都有 Test-Path 命令返回 False,将扩展安装/复制到其中一个 RevitMCP.extension 文件夹或将Claude配置更新为的实际绝对路径 server.py 在扩展文件夹中,pyRevit实际上正在加载。

revitmcp 未在Codex中显示

  • 跑 codex mcp list 并确认 revitmcp 已列出。
  • 确保 server.py 路径是绝对存在的。
  • 如果 python 未找到,请使用完整路径 python.exe.
  • 更改MCP配置后重新启动Codex。

如果服务器添加的路径错误,请删除并重新添加:

codex mcp remove revitmcp
codex mcp add revitmcp -- python C:\Users\YourName\AppData\Roaming\pyRevit\Extensions\RevitMCP.extension\lib\RevitMCP_ExternalServer\server.py --surface mcp

克劳德桌面或Codex可以看到 revitmcp 但工具不起作用

  • 确保Revit已打开并加载了项目。
  • 确保pyRevit路由已启用。
  • 启用Routes后重新启动Revit。
  • 打开 View Logs 为了 revitmcp 在Claude Desktop中,或检查Codex MCP启动输出。
  • 确保MCP客户端与Revit在同一台计算机上运行。此MCP模式连接到本地Revit Routes服务器。

Web UI或服务器启动问题

  • 检查 %USERPROFILE%\Documents\RevitMCP\server_logs
  • 启动日志: server_startup_error.log
  • 应用程序日志: server_app.log

同事无法打开Web UI

  • 如果服务器打印 Running on http://127.0.0.1:8000,它只在本地听。跟随 Share the Web UI on Your LAN 上面。
  • 同事应该使用 http://<Revit computer IPv4>:8000,不 http://127.0.0.1:8000.
  • 如果服务器启动时Windows提示防火墙访问,请允许专用网络。
  • 如果终端只显示Python 3.14 Pydantic警告并且从不打印 Running on ...,安装Python 3.13或更早版本,并配置RevitMCP以使用该解释器。

许可证

RevitMCP根据MIT许可证获得许可。看 许可证.md.

看 贡献.md 在提交补丁或pull之前 请求: