Revit AI连接服务

通过模型上下文协议连接AI助手与Autodesk Revit,实现项目元素的读取、创建、修改和删除。

  • by mcp-servers-for-revit
  • C#
  • 本地部署
  • 410 星标
  • 更新于
在 GitHub 查看 Sparx-Fire/mcp-servers-for-revit

使用说明

revit的mcp服务器

通过模型上下文协议将AI助手连接到Autodesk Revit。

revit的mcp服务器使Claude、Cline和其他mcp兼容工具等AI客户端能够读取、创建、修改和删除revit项目中的元素。它由三个组件组成:一个向AI公开工具的TypeScript MCP服务器,一个将命令桥接到Revit的C#Revit插件,以及一个实现实际Revit API操作的命令集。

[!注意] 这是原版的叉子 revit mcp 项目中添加了额外的工具和功能改进。

建筑

flowchart LR
    Client["MCP Client<br/>(Claude, Cline, etc.)"]
    Server["MCP Server<br/><code>server/</code>"]
    Plugin["Revit Plugin<br/><code>plugin/</code>"]
    CommandSet["Command Set<br/><code>commandset/</code>"]
    Revit["Revit API"]

    Client <-->|stdio| Server
    Server <-->|WebSocket| Plugin
    Plugin -->|loads| CommandSet
    CommandSet -->|executes| Revit

这 MCP服务器 (TypeScript)将来自AI客户端的工具调用转换为WebSocket消息。这 Revit插件 (C#)在Revit中运行,监听这些消息,并将其分派到 命令集 (C#),它执行实际的Revit API操作并返回链上的结果。

需求

  • Node.js 18+ (适用于MCP服务器)
  • Autodesk Revit 2020-2026 (任何支持的版本)

快速入门(使用版本)

  1. 从以下网址下载Revit版本的ZIP 发布 页面(例如。, mcp-servers-for-revit-v1.0.0-Revit2025.zip)

  2. 解压缩ZIP并将内容复制到Revit加载项文件夹中:

    %AppData%\Autodesk\Revit\Addins\<your Revit version>\
    

    复制后,您应该:

    Addins/2025/
    ├── mcp-servers-for-revit.addin
    └── revit_mcp_plugin/
        ├── RevitMCPPlugin.dll
        ├── ...
        └── Commands/
            └── RevitMCPCommandSet/
                ├── command.json
                └── 2025/
                    ├── RevitMCPCommandSet.dll
                    └── ...
    
  3. 在AI客户端中配置MCP服务器(请参阅 MCP服务器设置)

  4. 启动Revit——如果系统提示未知加载项,请单击 总是加载

  5. 在Revit中,单击 设置 在mcp服务器的revit功能区选项卡上单击按钮,启用要使用的命令,然后单击 保存

MCP服务器设置

MCP服务器以npm包的形式发布,可以直接使用 npx.

克劳德代码

用a运行这个 终端 (不在克劳德代码内):

claude mcp add mcp-server-for-revit -- cmd /c npx -y mcp-server-for-revit

克劳德桌面

克劳德桌面→ 设置→ 开发者→ 编辑配置→ claude_desktop_config.json:

{
    "mcpServers": {
        "mcp-server-for-revit": {
            "command": "cmd",
            "args": ["/c", "npx", "-y", "mcp-server-for-revit"]
        }
    }
}

重新启动克劳德桌面。当您看到锤子图标时,MCP服务器已连接。

Revit插件设置

如果使用ZIP版本,则该插件已包含在内。对于手动安装:

  1. 从以下位置构建插件 plugin/ (参见 发展)
  2. 复制 mcp-servers-for-revit.addin 到 %AppData%\Autodesk\Revit\Addins\<version>\
  3. 复制 revit_mcp_plugin/ 文件夹到同一加载项目录

命令集设置

如果使用ZIP版本,则命令集已预先安装在插件中。对于手动安装:

  1. 从以下位置构建命令集 commandset/ (参见 发展)
  2. 在插件的安装目录中,创建 Commands/RevitMCPCommandSet/<year>/
  3. 将内置的DLL复制到该文件夹中
  4. 复制 command.json (从repo根目录)到 Commands/RevitMCPCommandSet/

支持的工具

工具 说明
get_current_view_info 获取当前活动视图信息
get_current_view_elements 从当前活动视图中获取元素
get_available_family_types 获取当前项目中可用的族类型
get_selected_elements 获取当前选定的元素
get_material_quantities 计算材料数量和起飞量
ai_element_filter AI助手的智能元素查询工具
analyze_model_statistics 使用元素计数分析模型复杂性
create_point_based_element 创建基于点的图元(门、窗、家具)
create_line_based_element 创建基于线的图元(墙、梁、管道)
create_surface_based_element 创建基于曲面的图元(地板、天花板、屋顶)
create_grid 创建具有智能间距生成的电网系统
create_level 在指定标高处创建标高
create_room 在指定位置创建和放置房间
create_dimensions 在当前视图中创建标注注释
create_structural_framing_system 创建结构梁框架系统
delete_element 按ID删除元素
operate_element 对元素进行操作(选择、设置颜色、隐藏等)
color_elements 基于参数值的颜色元素
tag_all_walls 标记当前视图中的所有墙
tag_all_rooms 标记当前视图中的所有房间
export_room_data 从项目中导出所有房间数据
store_project_data 将项目元数据存储在本地数据库中
store_room_data 将房间元数据存储在本地数据库中
query_stored_data 查询存储的项目和房间数据
send_code_to_revit 将C#代码发送到Revit执行
say_hello 在Revit中显示问候语对话框(连接测试)

测试

测试项目使用 不错的3分。TUnit。Revit 对实时Revit实例运行集成测试。不需要单独安装插件——框架会自动注入正在运行的Revit进程。

先决条件

  • .NET 10 SDK --Nice3point要求。Revit。Sdk 6.1.0。通过安装 winget install Microsoft.DotNet.SDK.10
  • Autodesk Revit 2026 (或2025年)-必须在您的机器上安装并获得许可

运行测试

  1. 打开Revit 2026(或2025)并等待其完全加载
  2. 从命令行运行测试:
# For Revit 2026
dotnet test -c Debug.R26 -r win-x64 tests/commandset

# For Revit 2025
dotnet test -c Debug.R25 -r win-x64 tests/commandset

注: 这 -r win-x64 标志在ARM64计算机上是必需的,因为Revit API部件仅为x64。

或者,您可以使用 dotnet run:

cd tests/commandset
dotnet run -c Debug.R26

IDE支持

  • 捷豹骑士 --在“设置”>“构建、执行、部署”>“单元测试”>“测试平台”中启用“测试平台支持”
  • Visual Studio --测试应该可以通过标准的测试资源管理器发现

测试结构

目录 目的
tests/commandset/AssemblyInfo.cs 全球 [assembly: TestExecutor<RevitThreadExecutor>] 注册
tests/commandset/Architecture/ 标高和房间创建命令测试
tests/commandset/DataExtraction/ 模型统计、房间数据导出和材料数量测试
tests/commandset/ColorSplashTests.cs 颜色覆盖功能测试
tests/commandset/TagRoomsTests.cs 房间标签功能测试

编写新测试

测试类继承自 RevitApiTest 并使用TUnit的异步断言API:

public class MyTests : RevitApiTest
{
    private static Document _doc;

    [Before(HookType.Class)]
    [HookExecutor<RevitThreadExecutor>]
    public static void Setup()
    {
        _doc = Application.NewProjectDocument(UnitSystem.Imperial);
    }

    [After(HookType.Class)]
    [HookExecutor<RevitThreadExecutor>]
    public static void Cleanup()
    {
        _doc?.Close(false);
    }

    [Test]
    public async Task MyTest_Condition_ExpectedResult()
    {
        var elements = new FilteredElementCollector(_doc)
            .WhereElementIsNotElementType()
            .ToElements();

        await Assert.That(elements.Count).IsGreaterThan(0);
    }
}

发展

MCP服务器

cd server
npm install
npm run build

服务器将TypeScript编译为 server/build/。在开发过程中,您可以直接使用 npx tsx server/src/index.ts.

Revit插件+命令集

打开 mcp-servers-for-revit.sln 在Visual Studio中。该解决方案包含插件和命令集项目。构建配置目标Revit 2020-2026:

  • 2020-2024年修订版: .NET框架4.8(Release R20 通过 Release R24)
  • 修订版2025-2026: .净值8(Release R25, Release R26)

构建解决方案会自动组装完整的可部署布局 plugin/bin/AddIn <year> <config>/ -命令集被复制到插件的 Commands/ 文件夹作为构建的一部分。

项目结构

mcp-servers-for-revit/
├── mcp-servers-for-revit.sln    # Combined solution (plugin + commandset + tests)
├── command.json     # Command set manifest
├── server/          # MCP server (TypeScript) - tools exposed to AI clients
├── plugin/          # Revit add-in (C#) - WebSocket bridge inside Revit
├── commandset/      # Command implementations (C#) - Revit API operations
├── tests/           # Integration tests (C#) - TUnit tests against live Revit
├── assets/          # Images for documentation
├── .github/         # CI/CD workflows, contributing guide, code of conduct
├── LICENSE
└── README.md

释放

一个 v* 标签驱动整个版本。这 发布工作流程 自动:

  • 为Revit 2020-2026构建Revit插件+命令集
  • 创建GitHub版本 mcp-servers-for-revit-vX.Y.Z-Revit<year>.zip 资产
  • 将MCP服务器发布到npm mcp-server-for-revit

要创建版本,请执行以下操作:

  1. 运行凹凸脚本(更新 server/package.json, server/package-lock.json,以及 plugin/Properties/AssemblyInfo.cs,然后提交和标记):

    ./scripts/release.ps1 -Version X.Y.Z
    
  2. 按下以触发工作流:

    git push origin main --tags
    

[!注意] npm发布使用 可信发布 通过OIDC——不需要npm令牌。来源证明是自动生成的。

致谢

这个项目是 revit的mcp服务器 团队。原始存储库:

感谢原作者为这个项目奠定了基础。

许可证

麻省理工学院