
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
(Claude, Cline, etc.)"]
Server["MCP Server
server/"]
Plugin["Revit Plugin
plugin/"]
CommandSet["Command Set
commandset/"]
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 (任何支持的版本)
快速入门(使用版本)
- 从以下网址下载Revit版本的ZIP 发布 页面(例如。,
mcp-servers-for-revit-v1.0.0-Revit2025.zip)
- 解压缩ZIP并将内容复制到Revit加载项文件夹中:
%AppData%\Autodesk\Revit\Addins\\复制后,您应该:
Addins/2025/
├── mcp-servers-for-revit.addin
└── revit_mcp_plugin/
├── RevitMCPPlugin.dll
├── ...
└── Commands/
└── RevitMCPCommandSet/
├── command.json
└── 2025/
├── RevitMCPCommandSet.dll
└── ...- 在AI客户端中配置MCP服务器(请参阅 MCP服务器设置)
- 启动Revit——如果系统提示未知加载项,请单击 总是加载
- 在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版本,则该插件已包含在内。对于手动安装:
- 从以下位置构建插件
plugin/(参见 发展) - 复制
mcp-servers-for-revit.addin到%AppData%\Autodesk\Revit\Addins\\ - 复制
revit_mcp_plugin/文件夹到同一加载项目录
命令集设置
如果使用ZIP版本,则命令集已预先安装在插件中。对于手动安装:
- 从以下位置构建命令集
commandset/(参见 发展) - 在插件的安装目录中,创建
Commands/RevitMCPCommandSet// - 将内置的DLL复制到该文件夹中
- 复制
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年)-必须在您的机器上安装并获得许可
运行测试
- 打开Revit 2026(或2025)并等待其完全加载
- 从命令行运行测试:
# 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.R26IDE支持
- 捷豹骑士 --在“设置”>“构建、执行、部署”>“单元测试”>“测试平台”中启用“测试平台支持”
- Visual Studio --测试应该可以通过标准的测试资源管理器发现
测试结构
| 目录 | 目的 |
|---|---|
tests/commandset/AssemblyInfo.cs | 全球 [assembly: TestExecutor] 注册 |
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]
public static void Setup()
{
_doc = Application.NewProjectDocument(UnitSystem.Imperial);
}
[After(HookType.Class)]
[HookExecutor]
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 / -命令集被复制到插件的 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.zip资产 - 将MCP服务器发布到npm
mcp-server-for-revit
要创建版本,请执行以下操作:
- 运行凹凸脚本(更新
server/package.json,server/package-lock.json,以及plugin/Properties/AssemblyInfo.cs,然后提交和标记):
./scripts/release.ps1 -Version X.Y.Z- 按下以触发工作流:
git push origin main --tags\[!注意\] npm发布使用 可信发布 通过OIDC——不需要npm令牌。来源证明是自动生成的。
致谢
这个项目是 revit的mcp服务器 团队。原始存储库:
- revit mcp -MCP服务器
- revit mcp插件 -Revit插件
- revit mcp命令集 -命令集
感谢原作者为这个项目奠定了基础。
