Bonsai-mcp 是 BlenderMCP 的一个分支,它扩展了原始功能,通过 Bonsai 提供对 IFC(工业基础类)模型的专用支持。这种集成提供了一个平台,让大型语言模型(LLMs)能够读取和修改 IFC 文件。
系统由两个主要组件组成:
addon.py):一个 Blender 插件,在 Blender 内部创建一个套接字服务器以接收和执行命令,包括 IFC 特定的操作tools.py):一个 Python 服务器,实现模型上下文协议,并连接到 Blender 插件安装 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_desktop_config.json 文件(Claude > 设置 > 开发者 > 编辑配置),以包含以下内容:
{
"mcpServers": {
"Bonsai-mcp": {
"command": "uv",
"args": [
"--directory",
"\\your\\path\\to\\Bonsai_mcp",
"run",
"tools.py"
]
}
}
}
该仓库附带一个 Dockerfile,使得在不同环境中部署变得简单且一致。
# 克隆仓库
git clone https://github.com/JotaDeRodriguez/Bonsai_mcp
cd Bonsai_mcp
# 构建 Docker 镜像
docker build -t bonsai_mcp .
# 运行容器
docker run -p 8000:8000 --name bonsai_mcp bonsai_mcp
运行后,容器将在 http://localhost:8000 上公开 MCP 工具作为 REST/OpenAPI API。
http://localhost:8000/docs要将此 API 连接到 Open WebUI:
http://localhost:8000/openapi.jsonDocker 容器接受多个环境变量来自定义其行为:
# 示例带有自定义设置
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
addon.py 文件addon.py 文件一旦连接,你将在 Claude 的界面中看到一个锤子图标,其中包含 Blender MCP IFC 集成的工具。
此仓库包括多个 IFC 特定工具,使全面查询和操作 IFC 模型成为可能:
get_ifc_project_info:检索关于 IFC 项目的基本信息,包括名称、描述以及不同实体类型的计数。示例:“这个 IFC 项目的基本信息是什么?”
list_ifc_entities:列出特定类型的 IFC 实体(墙、门、空间等),并可选择限制结果和根据选择过滤。示例:“列出此 IFC 模型中的所有墙”或“显示这栋楼中的窗户”
get_ifc_properties:根据 GlobalId 或当前选定的对象检索特定 IFC 实体的所有属性。示例:“具有 ID 1Dvrgv7Tf5IfTEapMkwDQY 的这堵墙的属性是什么?”
get_ifc_spatial_structure:获取 IFC 模型的空间层次结构(场地、建筑物、楼层、空间)。示例:“显示这栋楼的空间结构”
get_ifc_relationships:检索特定 IFC 实体的所有关系。示例:“入口门的关系是什么?”
get_selected_ifc_entities:获取与当前在 Blender UI 中选定的对象对应的 IFC 实体的信息。示例:“告诉我我在 Blender 中选择了哪些元素”
get_user_view:捕获当前 Blender 视口的图像,允许从用户视角可视化模型。示例:“显示用户当前在 Blender 中看到的内容”
export_ifc_data:将 IFC 数据导出到结构化的 JSON 或 CSV 文件中,可以选择按实体类型或建筑级别过滤。示例:“将所有墙数据导出到 CSV 文件”
place_ifc_object:在指定坐标处创建并定位 IFC 元素,可选旋转。示例:“在坐标 X:10, Y:5, Z:0 处放置一扇门,旋转 90 度”
get_ifc_quantities:计算并获取 IFC 元素的数量(m2, m3 等),可以选择按实体类型或选定的元素过滤。示例:“使用 get_ifc_quantities 工具给我这栋楼中所有墙的面积”
get_ifc_total_structure:检索 IFC 模型的完整层次结构,包括空间元素(项目、场地、建筑物、楼层)以及每个空间容器内的所有建筑元素。这种综合视图结合了空间层次结构与建筑元素,对于生成完整的报告和预算至关重要。示例:“显示此 IFC 模型的完整结构,包括按楼层组织的所有建筑元素”
export_drawing_png:以高分辨率 PNG 图像导出 2D 和 3D 绘图,具有可定制的分辨率和视图参数。从上方指定高度偏移创建正交平面图。示例:“以 1920x1080 分辨率生成地面层的平面图 PNG”
get_ifc_georeferencing_info:从 IFC 文件中检索全面的地理参考信息,包括坐标参考系统(CRS)、地图转换、世界坐标系统、真北方向和场地地理坐标。示例:“此 IFC 模型中有何地理参考信息?”
georeference_ifc_model:在 IFC 模型中创建或更新地理参考信息,允许使用 EPSG 代码或自定义 CRS 定义设置坐标参考系统,建立地图转换使用东经/北纬坐标,并配置场地地理位置。示例:“使用 EPSG:4326 并在纬度 40.7589、经度 -73.9851 处的地理参考此 IFC 模型”
export_bc3_budget:基于加载在 Blender 中的 IFC 模型导出 BC3 预算文件(FIEBDC-3/2016 格式)。此工具通过提取 IFC 空间结构,按类型和类别(结构、砌体、楼板、木工、安装、家具)分组建筑元素,从综合数据库分配单位价格并生成详细测量来创建完整的施工预算。支持多语言输出(西班牙语/英语),并正确编码国际字符。BC3 格式是西班牙施工预算和成本估算的标准。示例:“为此建筑模型生成一份西班牙语的 BC3 预算文件”
自动元素分类:建筑元素被自动分类为类别:
准确测量:
多语言支持:生成预算时支持西班牙语或英语,并正确编码(windows-1252)
层次结构:预算章节遵循 IFC 空间层次结构(项目 → 场地 → 建筑 → 层)
单位价格数据库:包括常见建筑元素的综合单位价格,完全可通过 JSON 文件自定义
排序测量:每个类别内的元素按字母顺序排序,便于审查
BC3 导出使用位于 resources/bc3_helper_files/ 的外部 JSON 配置文件:
precios_unitarios.json / unit_prices.json:每种 IFC 元素类型的单位价格spatial_labels_es.json / spatial_labels_en.json:空间元素翻译element_categories.json:IFC 类型到预算类别的映射这些文件可以自定义以适应特定项目需求或区域定价标准。
BC3 文件导出到 exports/ 文件夹,符合 FIEBDC-3/2016 格式,包括:
此集成提供了通过 MCP 资源访问结构化文档的途径:
file://table_of_contents.md:包含生成全面建筑报告的技术报告结构模板。此资源提供了一个标准化的目录,可用于从 IFC 模型创建技术文档时的参考。
服务器包括专门的 MCP 提示,用于自动化报告生成:
Technical_building_report:基于加载在 Blender 中的 IFC 模型生成全面的技术建筑报告。此提示提供了一个结构化的流程,用于创建多种语言(英语、西班牙语、法语、德语、意大利语、葡萄牙语)的专业建筑文档。提示引导通过系统性地从 IFC 模型中提取数据(包括空间结构、数量、材料和建筑系统),最终生成包含图纸和 3D 可视化的完整技术报告。
来自原始 MCP 实现的遗留功能。允许 Claude 在 Blender 中执行任意 Python 代码。谨慎使用。
此集成包括顺序思维工具,用于结构化的问题解决和分析。它促进了一个逐步思考过程,可以分支、修订和适应理解的加深——非常适合复杂的 IFC 模型分析或规划任务。
示例:“使用顺序思维分析基于 IFC 模型的这栋楼的能源效率”
这里有一些你可以要求 Claude 对 IFC 模型执行的操作示例:
Docker:
IFC 集成使用 Bonsai BIM 模块访问 Blender 内部的 ifcopenshell 功能。通信遵循与原始 BlenderMCP 相同的基于 JSON 的协议,通过 TCP 套接字进行。
execute_blender_code 工具仍然可用,允许在 Blender 中运行任意 Python 代码。谨慎使用并始终保存工作。此 MIT 许可的仓库可以被 fork、修改和以任何方式使用。我欢迎想法和合作,所以不要犹豫联系我进行贡献。
与更多 MCP 客户端的集成和测试