盆栽-MCP - 通过IfcOpenShell和Blender实现IFC(工业基础类)的模型上下文协议集成
Bonsai-mcp 是一个分支(或衍生版本) BlenderMCP(注:此名称可能是一个特定软件或项目的名称,直接翻译为中文可能无具体含义,但按照翻译原则,可保留原名或根据上下文具体含义进行翻译。若“BlenderMCP”是特定于某个领域或项目的术语,建议查阅相关资料以获取准确的中文译名。) 该系统通过Bonsai为IFC(工业基础类)模型提供了专门支持,从而扩展了原始功能。这种集成是一个平台,使大型语言模型(LLMs)能够读取和修改IFC文件。
特点
- IFC(国际金融公司)特定功能查询IFC模型,分析空间结构,检查建筑构件并提取工程量
- 包含十一种国际金融公司(IFC)工具检查项目信息,列出实体,查看属性,探索空间结构,分析关系等
- 顺序思维包括来自(某处/某系统)的顺序思维工具 模型上下文协议/服务器 用于结构化问题解决
- 从原始的BlenderMCP实现中执行代码工具在Blender中创建和修改对象,应用材质,并执行Python代码
组件
该系统由两个主要组件构成:
- Blender 插件(
addon.py)一个Blender插件,它在Blender内部创建一个套接字服务器,用于接收和执行命令,包括IFC(工业基础类)特定的操作
- MCP 服务器(
tools.py)一个实现了模型上下文协议并能连接到Blender插件的Python服务器
安装 - 通过MCP客户端设置
先决条件
- Blender 4.0或更高版本
- Python 3.12 或更高版本
- UV包管理器
- Blender的Bonsai BIM插件(用于IFC功能)
安装uv(此处“uv”可能指特定软件、插件或工具,具体含义需根据上下文确定):
Mac:
brew install uv
Windows:
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
set Path=C:\Users\[username]\.local\bin;%Path%
对于其他平台,请参阅 UV安装指南.
克隆仓库
git clone https://github.com/JotaDeRodriguez/Bonsai_mcp
桌面集成版的Claude
编辑你的 claude_desktop_config.json 文件(Claude > 设置 > 开发者 > 编辑配置)以包含:
{
"mcpServers": {
"Bonsai-mcp": {
"command": "uv",
"args": [
"--directory",
"\\your\\path\\to\\Bonsai_mcp",
"run",
"tools.py"
]
}
}
}
通过 Docker 进行安装
该存储库附带了一个Dockerfile,使得部署过程简单且在不同环境中保持一致。
快速入门
# Clone the repository
git clone https://github.com/JotaDeRodriguez/Bonsai_mcp
cd Bonsai_mcp
# Build the Docker image
docker build -t bonsai_mcp .
# Run the container
docker run -p 8000:8000 --name bonsai_mcp bonsai_mcp一旦运行,该容器将把MCP工具作为REST/OpenAPI API暴露出来,位于 http://localhost:8000。
- 为了验证您的安装,请打开浏览器并导航至
http://localhost:8000/docs- 你将看到带有所有可用端点的Swagger UI
- 点击某个端点进行测试,然后点击“尝试运行”和“执行”
连接到Open WebUI或其他API客户端
要将此API连接到Open WebUI:
- 在Open WebUI中,前往设置 > 管理工具服务器
- 添加一个新的连接,使用:
- 网址:
http://localhost:8000 - OpenAPI 规范的路径:
/openapi.json - 认证:无(除非另有配置)
环境变量
Docker 容器接受多个环境变量以自定义其行为:
# Example with custom settings
docker run -p 8000:8000 \
-e BLENDER_HOST=host.docker.internal \
-e BLENDER_PORT=9876 \
-e MCP_HOST=0.0.0.0 \
-e MCP_PORT=8000 \
--name bonsai_mcp bonsai_mcp安装Blender插件
- 下载该
addon.py来自这个仓库的文件
- 打开Blender
- 转到“编辑”>“首选项”>“附加组件”
- 点击“安装...”并选择
addon.py文件
- 通过勾选“界面:Blender MCP - IFC”旁边的复选框来启用该插件
使用方法
开始连接
- 在Blender中,转到3D视图侧边栏(如果不可见,请按N键)
- 找到“Blender MCP - IFC”选项卡
- 点击“连接到Claude”
- 确保MCP服务器正在运行
与Claude一起使用
一旦连接成功,您将在Claude的界面中看到一个锤子图标,该图标提供了用于Blender MCP IFC集成的工具。
IFC 工具
此仓库包含多个专为IFC(工业基础类)设计的工具,这些工具能够实现对IFC模型的全面查询和操作:
获取IFC项目信息获取IFC项目的基本信息,包括名称、描述以及不同实体类型的数量。示例:“这个IFC项目的基本信息是什么?”
列出IFC实体列出特定类型的IFC实体(如墙、门、空间等),并提供选项来限制结果和按选择进行过滤。例如:“列出此IFC模型中的所有墙”或“显示此建筑中的窗户”
获取IFC属性通过GlobalId或从当前选定的对象中检索特定IFC实体的所有属性。示例:“ID为1Dvrgv7Tf5IfTEapMkwDQY的这堵墙有哪些属性?”
获取IFC空间结构获取IFC模型的空间层次结构(场地、建筑、楼层、空间)。示例:“给我展示这座建筑的空间结构”
获取IFC关系检索特定IFC实体的所有关系。示例:“入口门有哪些关系?”
获取选中的IFC实体获取与Blender用户界面中当前选中对象相对应的IFC实体信息。示例:“告诉我我在Blender中选中的元素”
获取用户视图捕获当前Blender视口的图像,以便从用户的角度可视化模型。示例:“让我看看用户当前在Blender中看到的是什么”
导出IFC数据将IFC数据导出为结构化的JSON或CSV文件,提供按实体类型或建筑层级过滤的选项。示例:“将所有墙数据导出到CSV文件”
IFC对象位置在模型中创建并定位一个IFC元素,位于指定坐标,并可选择旋转。示例:“在坐标X:10, Y:5, Z:0处放置一个门,并旋转90度”
获取IFC(工业基础类)工程量计算并获取IFC元素的数量(平方米、立方米等),并提供按实体类型或选定实体过滤的选项。示例:“使用get_ifc_quantities工具,给我计算出建筑中所有墙壁的面积。”
获取IFC总结构检索IFC模型的完整层次结构,包括空间元素(项目、场地、建筑、楼层)以及每个空间容器内的所有建筑元素。这种综合视图将空间层次与建筑元素相结合,对于生成完整的报告和预算至关重要。示例:“展示这个IFC模型的完整结构,包括按楼层组织的所有建筑元素。”
导出绘图为PNG格式导出2D和3D图纸为高分辨率PNG图像,支持自定义分辨率和视图参数。根据指定的高度偏移生成正视图的平面图。示例:“生成地面层的平面图PNG,分辨率为1920x1080”
获取IFC地理参考信息从IFC文件中检索全面的地理参考信息,包括坐标参考系统(CRS)、地图转换、世界坐标系、真北方向以及场地地理坐标。示例:“这个IFC模型中有哪些可用的地理参考信息?”
地理参考IFC模型在IFC模型中创建或更新地理参考信息,使您能够使用EPSG代码或自定义坐标参考系统(CRS)定义来设置坐标参考系统,通过东向/北向坐标建立地图转换,并配置场地地理定位。示例:“使用EPSG:4326坐标系统,纬度40.7589,经度-73.9851对这个IFC模型进行地理参考”
导出_bc3预算基于在Blender中加载的IFC模型,导出一个BC3预算文件(FIEBDC-3/2016格式)。该工具通过提取IFC空间结构,按类型和类别(结构、砌体、楼板、木工、安装、家具)对建筑元素进行分组,从综合数据库中分配单价,并生成详细测量数据,从而创建完整的施工预算。支持多语言输出(西班牙语/英语),并为国际字符使用正确的编码。BC3格式是西班牙的建筑预算和成本估算标准。示例:“为这个建筑模型生成一个西班牙语的BC3预算文件”
特点/功能
- 自动元素分类建筑元素会自动归类到相应的类别中:
- ESTR(可能指某种特定缩写或术语,具体含义需根据上下文确定)结构元素(梁、柱、基础、桩、坡道、楼梯) - ALB(根据上下文,ALB可能代表不同的含义,以下是几种可能的翻译):1. 抗体(Antibody) 2. 阿尔巴(Alb,人名或地名) 3. 阿尔巴尼亚(Albania,简称ALB) 4. 其他特定领域的缩写(需根据具体语境确定)砖石结构(墙体) - FORG(注:此词在常规语境下无直接对应中文翻译,若作为特定领域或品牌名等,需具体语境来确定翻译,此处仅作音译处理)板和屋顶 - CARP(中文可译为“渔夫”或根据具体语境译为其他相关词汇,但在此直接保留原英文形式以体现其专有名词性质)木工(门、窗) - INST(缩写,全称未给出,根据上下文可能指“机构”、“研究所”、“学院”等,具体含义需结合语境确定)安装设施(管道、配件、端子、栏杆) - MOB(Mobile On Board,移动在船上)家具
- 准确测量:
- 通过NetSideArea测量的墙壁(考虑了门和窗户等开口) - 按总体积测量的板和屋顶 - 梁、柱和桩按长度(米)计量 - 门窗和家具按件计数
- 多语言支持生成西班牙语或英语预算,并使用正确的字符编码(windows-1252)
- 层次结构预算章节遵循国际财务报告准则(IFC)的空间层次结构(项目→场地→建筑→楼层)
- 单价数据库包含常见建筑元素的全面单价,可通过JSON文件进行完全自定义
- 已排序的测量值每个类别内的元素按字母顺序排列,以便更轻松地查看
配置文件
BC3 导出使用位于(指定路径)的外部 JSON 配置文件 resources/bc3_helper_files/:
precios_unitarios.json/unit_prices.json按IFC元素类型划分的单价spatial_labels_es.json/spatial_labels_en.json空间元素的平移element_categories.jsonIFC类型到预算类别的映射
这些文件可以根据特定项目需求或地区定价标准进行定制,以适应预算生成的需要。
输出
BC3文件被导出到 exports/ 符合FIEBDC-3/2016格式的文件夹,包括:
- 完整的层级章节结构
- 对每个元素进行详细测量
- 单价和总额
- 完全符合西班牙建筑预算标准BC3
MCP资源公司
这种集成通过MCP资源提供了对结构化文档的访问:
file://table_of_contents.md 翻译为中文是:“文件://目录表.md” 或者更自然的表达可以是:“文件路径://目录内容.md”。不过,在中文语境中,我们通常不会直接翻译文件路径,而是直接使用原路径,因为文件路径在不同语言环境下是通用的。所以,更常见的表达方式就是保留原路径不变,即“file://table_of_contents.md”包含用于生成全面建筑报告的完整技术报告结构模板。此资源提供了一个标准化的目录,可在从IFC模型创建技术文档时作为参考使用。
MCP 提示
该服务器包含用于自动化报告生成的专用MCP提示符:
技术建筑报告基于加载到Blender中的IFC模型,生成全面的技术建筑报告。此提示提供了一个结构化的流程,用于以多种语言(英语、西班牙语、法语、德语、意大利语、葡萄牙语)创建专业的建筑文档。该提示引导用户通过系统地从IFC模型中提取数据进行分析,包括空间结构、数量、材料和建筑系统,最终生成包含图纸和3D可视化的完整技术报告。
执行Blender代码
这是原始MCP实现中的遗留功能。它允许Claude在Blender中执行任意Python代码。请谨慎使用。
顺序思维工具
这一整合包含了用于结构化问题解决和分析的顺序思维工具。它支持逐步进行的思考过程,该过程能够随着理解的深入而分支、修订和适应——非常适合复杂的IFC(工业基础类)模型分析或规划任务。
示例:“利用顺序思维,基于IFC模型分析这座建筑的能效”
示例命令
以下是一些你可以让Claude对IFC模型执行操作的示例:
- “分析这个IFC模型,然后告诉我它有多少面墙、门和窗户。”
- “给我展示这个建筑模型的空间结构”
- “列出此IFC模型中的所有空间及其属性”
- “识别这座建筑中的所有结构元素”
- “这堵墙与其他元素之间有什么关系?”
- “生成从Blender中打开的IFC模型测量报告”
- “基于IFC模型,运用顺序思维为该建筑制定维护计划”
- “为当前IFC模型生成一份西班牙语的BC3预算文件”
- “将施工成本估算导出为BC3格式,并附上英文描述”
故障排除
- 连接问题确保Blender插件服务器正在运行,并且MCP服务器已在Claude中配置
- IFC模型未加载确认您已安装Bonsai BIM插件,并且已加载IFC文件
- 超时错误尝试简化你的要求或将它们分解成更小的步骤
Docker:
- “Connection refused”错误确保Blender正在运行,并且插件已启用且服务器已启动
- CORS问题API默认对所有来源启用CORS。如果遇到问题,请检查客户端的CORS设置
- 性能问题对于大型IFC模型,API响应可能会较慢。请考虑在您的客户端调整超时设置
技术细节
IFC(工业基础类)集成利用Bonsai BIM模块来访问Blender中的ifcopenshell功能。通信过程遵循与原始BlenderMCP相同的基于JSON的协议,通过TCP套接字进行。
限制与安全考量
- 这个
execute_blender_code原始项目中的工具仍然可用,允许在Blender中运行任意Python代码。请谨慎使用,并始终保存您的工作。
- 复杂的IFC(集成设施工程)模型可能需要将操作分解为更小的步骤。
- IFC查询性能取决于模型的大小和复杂性。
- 获取用户视图工具返回的是经过Base64编码的图像。请确保客户端支持此功能。
贡献
这个采用MIT许可证的仓库欢迎被分叉、修改,并以任何方式使用。我欢迎各种想法和合作,所以请随时与我联系以贡献您的力量。
致谢/制作团队/演职人员名单
- 原始的Blender MCP由 西达尔特·阿胡贾
- 来自顺序思维工具的 模型上下文协议/服务器
- 基于Blender的Bonsai BIM插件的IFC集成
待办事项
与更多MCP客户端的集成与测试

