返回市场
Revit MCP服务器

Revit MCP服务器

作者:oakplank21 星标更新:2025-09-18

项目介绍

RevitMCP: Revit模型内容协议扩展

简介

RevitMCP(Revit模型内容协议)是一个pyRevit扩展,允许外部应用程序(如AI助手或其他服务)与正在运行的Autodesk Revit实例进行交互。它通过使用pyRevit的“路由”功能在Revit内部暴露一个HTTP API来实现这一点。外部服务器组件(通常是在此项目中的server.py)充当中介,外部应用程序与其通信。该中介服务器随后调用由pyRevit在Revit内部托管的API。

主要特性

  • 元素选择和过滤: 根据类别、属性或自定义过滤器查找并选择元素
  • 项目信息访问: 获取项目元数据和文档属性
  • 元素参数管理: 读取和更新带有类型验证的元素参数
  • 图纸和视图管理: 自动将视图放置在新图纸上,并进行智能编号
  • 自然语言集成: 与AI助手兼容,实现直观的Revit自动化

新功能:图纸放置工具

最新功能允许您使用简单的命令将视图放置到图纸上,例如:

  • “将详图基础放置到一张图纸上”
  • “将A-A剖面放置到一张新图纸上”

该工具会自动:

  • 按名称查找视图(模糊匹配)
  • 创建带有适当编号的新图纸(如D001、S001等)
  • 将视图放置在图纸中心
  • 处理标题栏选择和视口创建

请参阅Sheet_Placement_Tool_Documentation.md以获取完整的使用说明。

本README提供了如何设置和使用RevitMCP.extension的说明。

预备条件

  1. Autodesk Revit: 必须安装兼容版本的Autodesk Revit。
  2. pyRevit: 必须为您的Revit版本安装pyRevit。如果没有,请从pyrevitlabs.io下载并安装。

安装

  1. 安装pyRevit:

  2. 安装RevitMCP.extension

    • 找到您的pyRevit扩展文件夹。通常可以通过以下方式找到:
      • 在Revit中打开pyRevit设置(pyRevit标签 -> 设置)。
      • 前往“扩展”部分。它可能会显示已注册的扩展路径。
      • 常见默认位置包括:
        • %APPDATA%/pyRevit/Extensions
        • %PROGRAMDATA%/pyRevit/Extensions
    • 将整个RevitMCP.extension文件夹(包含startup.pylib/等)复制到您的pyRevit扩展目录之一。
  3. 重新加载pyRevit / 重启Revit:

    • 复制扩展后,可以在Revit中的pyRevit标签下“重新加载”pyRevit,或者重启Revit以确保扩展被识别并且其startup.py脚本被执行。

配置

  1. 启用pyRevit路由服务器:

    • 打开Revit。
    • 转到pyRevit标签 -> 设置
    • 查找与**“路由”“Web服务器”“API”**相关的部分。
    • 启用路由服务器。
    • 注意默认端口号,通常是第一个Revit实例的48884。后续的Revit实例将使用递增的端口号(例如,4888548886)。您的外部服务器(server.py)必须配置为指向正确的端口。
    • 如果提示或为了确保设置生效,重启Revit。当pyRevit加载时,RevitMCP.extension中的startup.py脚本定义了API端点。
  2. 防火墙/网络访问:

    • 当pyRevit路由服务器首次启动时,您的操作系统防火墙可能会询问是否允许Revit(或Revit内的Python进程)打开网络端口并监听传入连接。您必须允许这种访问以便系统正常工作。
    • 确保没有其他防火墙或安全软件阻止连接到pyRevit路由服务器使用的端口(例如,48884)。

运行系统

系统由两个主要部分组成,需要同时运行:

  1. Revit侧API(由RevitMCP.extension和pyRevit管理):

    • 当Revit启动且pyRevit加载RevitMCP.extension时,扩展内的startup.py脚本会自动运行。
    • 该脚本定义必要的API端点(例如,/revit-mcp-v1/project_info),并将它们注册到运行在Revit内部的pyRevit路由服务器。
    • 您可以通过检查pyRevit日志中的startup.py消息(参见故障排除部分)来验证这一点。
  2. 外部中介服务器(例如,server.py):

    • 这是一个独立的Python应用程序(可能是Flask或FastAPI服务器),最终用户应用程序(例如,AI助手)与其通信。
    • 该服务器负责:
      • 接收来自最终用户应用程序的请求。
      • 向运行在Revit内部的pyRevit路由API发出HTTP调用(例如,向http://localhost:48884/revit-mcp-v1/...)。
      • 处理来自Revit的响应,并将其发送回最终用户应用程序。
    • 启动此服务器: RevitMCP.extension在Revit中包含一个UI面板(例如,“Server.panel”),其中有一个按钮,如“启动RevitMCP”。此按钮通常配置为启动这个外部server.py脚本。
      • 在Revit UI中点击此按钮以启动中介服务器。
      • 检查此服务器的控制台输出,确保它正确启动并监听其配置的端口(例如,您的日志显示它在端口8000上运行)。

    外部服务器的用户界面:

    • 一旦外部服务器(server.py)运行,您通常通过基于web的聊天界面与其交互(通常在http://localhost:PORT提供,其中PORTserver.py的端口,例如8000)。
    • 该界面通常提供:
      • 一个下拉菜单用于选择所需的AI模型(例如,Anthropic,OpenAI,Google生成式AI)。
      • 一个设置区域或弹出窗口,您可以在其中输入所选AI模型提供商的API密钥。这些密钥对于服务器向AI服务发出请求是必需的。

工作流程总结: AI助手/客户端应用 -> 外部服务器(例如,在端口8000运行的server.py) -> pyRevit路由API(在Revit上,例如在端口48884运行)

故障排除

  • 路由未找到错误(RouteHandlerNotDefinedException):

    • 确保RevitMCP.extension/startup.py存在并包含路由定义。
    • startup.py进行任何更改后重新加载pyRevit或重启Revit。
    • 检查pyRevit日志中的startup.py消息,确认它已运行并定义了路由。
    • 确保在pyRevit设置中启用了pyRevit路由服务器,并且已重启Revit。
    • 使用在Revit内具有pyRevit意识的Python控制台提供的诊断脚本来检查routes.get_routes("revit-mcp-v1")routes.get_active_server()
  • 连接被拒绝 / 无法连接到pyRevit路由API:

    • 确认在pyRevit设置中启用了pyRevit路由服务器。
    • 确认外部服务器用来调用pyRevit API的端口号与pyRevit路由服务器实际监听的端口相匹配(默认48884)。
    • 检查防火墙设置。
  • 检查日志:

    • pyRevit日志: (pyRevit标签 -> 设置 -> 日志记录)有关于RevitMCP.extension加载、startup.py执行或路由服务器的错误。
    • 外部服务器(server.py)日志: 检查您的server.py控制台输出,当它尝试与pyRevit路由API通信或处理来自客户端应用程序的请求时出现的错误。

本README应帮助用户设置并理解RevitMMCP系统。