mcpField
I
ifc-ruhsat

ifc-ruhsat

本地服务
github.com/BerkantACUN法律与政务35 周前更新

关于 ifc-ruhsat

ifc-ruhsat 按土耳其建筑许可 BIM 法规检查 IFC 模型,并生成 EK-9 质量控制表。它面向建筑项目团队,提供带条款依据和 GlobalId 的自动预检;无法机器判定的项目会标为人工检查。

主要功能

  1. 01按法规检查 IFC 模型
  2. 02生成 EK-9 检查表
  3. 03结果附条款与 GlobalId
  4. 04提供 IFC 摘要及 IDS 文件
  5. 05CLI 与 MCP 服务接口

适用场景

  1. 01提交建筑许可模型前进行预检
  2. 02定位不合规构件及其法规依据
  3. 03生成交付所需的 EK-9 表
  4. 04导出 EK-6 和 EK-7 的 IDS 规则

MCP 相关

作为 MCP 服务向客户端提供法规检查、EK-9 表生成、模型摘要、IFC 类别与属性要求及法规信息查询工具。模型通过文件路径或 IFC 文本输入;远程模式仅接受 IFC 文本。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"berkantacun-ifc-ruhsat": {
"command": "uvx",
"args": [
"ifc-ruhsat"
]
}
}
}
启动命令uvx ifc-ruhsat

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiifc-ruhsat0.2.0

工具

6

收录的工具列表 · 更新于 2 周前

参数类型必填说明
dosyastring是

详细介绍

ifc-ruhsat

根据法规检查建筑许可 IFC 模型。 在土耳其,2027 年 9 月 1 日生效的《建筑与工程项目数字化编制条例》(《官方公报》2026 年 8 月 5 日,第 33331 期)要求每个许可项目的 IFC 模型符合 241 页的附件要求,并在每次提交时填写 EK-9 模型质量控制表。此工具将这些附件转化为机器规则:读取模型,按条款编号指出缺项,并填写 EK-9 表。可通过命令行或 Claude / Cursor 等客户端(MCP)使用;与软件无关——Revit、Archicad、Allplan、Bonsai 均可提供 IFC。

这是自动化预检。条例中的某些项目(LOD、空间几何、PDF–IFC 一致性)无法通过机器检查;工具会明确标记为“手动”,不会将其视为合规。最终评估由项目设计者和相关主管部门负责;此工具不构成法律意见。

uvx ifc-ruhsat kontrol 123456_00_MM_GNEL_MD_BIM_000_01_000.ifc
ornekler\hatali_ornek.ifc — IFC4X3
10 hata, 3 uyarı, 8 elle kontrol, 7 bilgi

X [m.11, EK-5 5.5 ve Tablo 5.3 · EK-9 m.5] 1 varlığın adı şablona uymuyor. Beklenen: iki harf disiplin,
  üç harf kategori kodu ve açıklama, orta tire ile (örn. MM-DVR-dis_20cm) …
    3U9N2MO4vDDA4Hfy2J54b4
X [EK-7 Tablo 7.6 · EK-9 m.6] IfcProjectedCRS.Name 'EPSG:3857'; TUREF 3° dilimlerinden biri olmalı:
  EPSG:5253 … EPSG:5259.
X [EK-6 Tablo 6.66 · EK-9 m.9] IfcWall: Pset_WallCommon.FireRating (Yangın Dayanım Sınıfı) 1 varlıkta yok ya da boş.
    3U9N2MO4vDDA4Hfy2J54b4
X [EK-6 6.1.3 · EK-9 m.17] 1 varlık IfcProxy/IfcBuildingElementProxy ile modellenmiş; yönetmelik vekil sınıfa izin vermez …
? [EK-9 madde 7] Gelişim seviyesi (LOD 300) geometrinin ayrıntısına bakılarak elle değerlendirilir.

完整示例:ornekler/hatali_ornek.EK-9.md — 包含 21 行的 EK-9 表,每行均标注“是 / 否 / 部分 / 手动”及其依据。

安装

只需 Python 3.10+。如果已安装 uv,则无需安装,运行 uvx ifc-ruhsat … 即可。永久安装:

pip install ifc-ruhsat

命令

命令功能
ifc-ruhsat kontrol model.ifc运行所有规则;若有错误则退出代码为 1(可用于 CI)。--json 输出机器可读结果,--ek9 form.md 将 EK-9 表写入文件,--disiplin ST 指定 EK-2 专业代码
ifc-ruhsat ek9 model.ifc生成 EK-9 模型质量控制表(表 9.1),格式为 Markdown
ifc-ruhsat ozet model.ifc输出架构、生成软件、项目/场地/建筑/楼层信息及类数量
ifc-ruhsat ids将 EK-6 和 EK-7 写入 buildingSMART IDS 文件(ids/)——Solibri、BIMcollab Zoom、usBIM.IDS、ifctester 均可读取
ifc-ruhsat mcp [--http] [--host H] [--port P]MCP 服务(stdio;使用 --http 启用 streamable HTTP)

通过 MCP 使用

Claude Desktop、Claude Code、Cursor 以及所有支持 MCP 的客户端:

{
  "mcpServers": {
    "ifc-ruhsat": { "command": "uvx", "args": ["ifc-ruhsat", "mcp"] }
  }
}

然后向助手提问:“C:\proje\A_blok.ifc 是否符合条例要求?请生成 EK-9 表”、“IfcSlab 必须具备哪些属性?”、“柱为什么报错?依据哪条规定?”

工具功能
yonetmelik_kontrolu检查模型;每项发现均附有级别、条款、EK-9 行号和 GlobalId 列表
ek9_formu生成 Markdown 格式的 EK-9 表
model_ozeti输出架构、软件、骨架和类数量
ek5_siniflar必需/可选 IFC 类、土耳其语名称及类别代码
ek6_gerekenler某个类所需的属性和特性集(EK-6 / EK-7)
yonetmelik_bilgisi依据、分阶段时间表、数据来源

模型工具(model_ozeti、yonetmelik_kontrolu、ek9_formu)通过 dosya(路径)或 ifc_metni(IFC 文本,及 dosya_adi)接收文件。所有工具均为只读,并带有 MCP 注解(readOnlyHint、destructiveHint: false、idempotentHint、`openWorldHint: false);每个工具的说明中均写明适用场景、输入示例和返回格式。

服务只读取提供的文件;不会向网络发送任何内容,也不会写入任何持久数据。Cline 等 Agent 可以根据 llms-install.md 自行完成安装。

远程服务(Docker)

ifc-ruhsat mcp --http 会通过可流式 HTTP 在 http://<host>:8080/mcp 地址启动服务(无状态;多个副本可在负载均衡器后运行)。每个 v* 版本都会发布就绪镜像:

docker run --rm -p 8080:8080 -e IFC_RUHSAT_API_KEY=gizli ghcr.io/berkantacun/ifc-ruhsat
环境变量默认值含义
IFC_RUHSAT_HOST0.0.0.0监听地址(Azure Container Apps 不支持 IPv6,因此使用 IPv4)
IFC_RUHSAT_PORT8080端口
IFC_RUHSAT_API_KEY—若已设置,每个请求的 X-API-Key 标头必须与此值相同,否则返回 401

客户端侧:

{
  "mcpServers": {
    "ifc-ruhsat": {
      "type": "http",
      "url": "https://sunucu.example.com/mcp",
      "headers": { "X-API-Key": "gizli" }
    }
  }
}

远程模式下,出于安全考虑,dosya 参数已禁用:服务不会读取自身磁盘上的任何路径;如果提供该参数,工具会返回 uzak-dosya-kapali 错误。请通过 ifc_metni 发送模型(服务会在临时文件夹中打开该模型,并在完成后将其删除)。镜像基于 Python 3.12 slim,使用非 root 用户(uid 10001)运行。密钥只是简单的共享密钥;将服务暴露到互联网时,请将其部署在终止 TLS 的反向代理(例如 Container Apps ingress)后面。

检查内容

EK-9 条目检查项状态
2 项目信息IfcProject、IfcPerson、IfcOrganization、IfcPersonAndOrganization 属性(EK-7 表 7.1–7.5)自动
3 文件/项目名称EK-2 表 2.1 中的九个字段;IfcProject.Name自动(不会将子专业/文件类型代码与列表进行比对)
4 空间编号/名称IfcSpace.Name Kat_Bölüm_SıraNo(EK-3 表 3.1,楼层代码见 EK-2 表 2.14),LongName 不为空自动
5 实体名称Disiplin-Kategori-Açıklama;专业见 EK-2,类别代码见 EK-5,并检查其与类的兼容性自动
6 坐标IfcProjectedCRS(EPSG:5253–5259、基准、分区、单位)+ IfcMapConversion(EK-7 表 7.6–7.7)自动
7 LOD 300—手动
8 / 17 类EK-5 必填 + 可选列表;禁止使用 IfcProxy / IfcBuildingElementProxy;使用子类而非父类自动 + 手动(语义)
9 / 20 属性和特性EK-6 的全部 68 个必填类表格:Name、Tag、材料(Ad_Dayanım)、IfcSystem 关联、楼层、Pset_/Qto_/TREpys_ 特性、数据类型、允许值;还会检查出现在错误集合中的特性自动
10 容积率根据 EmsalDurumu(DAHIL/HARIC/DIGER)汇总 IfcSpatialZone 字段,并与 KAKS × 地块面积进行比较部分自动(与图纸表格的比较需手动)
11 结构项目、场地、建筑、≥1 个楼层;单个 IfcProject自动
12 是否存在空间建筑专业中存在 IfcSpace自动
13–14 空间几何每个空间都有带体积的 3D 实体;同一楼层的空间边界框重叠不超过 10%自动(基于边界框,较粗略)
15 楼层关联和标高每个元素都关联到一个楼层;其实体位于该楼层标高与上一楼层标高之间(±1.5 m)自动
16 重复项重复的 GlobalId;相同类+名称+位置自动
18 IFC 版本IFC4X3、.ifc 扩展名自动
19 预定义类型为空 / NOTDEFINED;若为 USERDEFINED,则需填写 ObjectType自动
1、21未公布文件大小上限;PDF–IFC 一致性手动

EK-6 的全部 68 个必填类表格均已逐页从最终版《官方公报》附件中读取并编码;每个属性都会依据 IFC 4.3 架构进行测试验证,每个特性都会依据 buildingSMART 的官方 Pset 模板进行测试验证。各表格对应的页码见:KAYNAKLAR.md。几何检查(空间实体、重叠、标高)基于边界框——快速但较粗略;对于 L 形空间可能会误报,发现说明中也会指出这一点。

实际模型中的表现

在 3 个公开模型上未作任何修改的检测结果(这些模型制作时相关法规尚未出台;结果回答了“准备情况如何”):

模型架构耗时错误 / 警告主要问题
buildingSMART 官方 IFC 4.3 示例,Building-Architecture.ifc(SketchUp,21 个实体)IFC4X3< 1 s32 / 5坐标系为 EPSG:32760(不是土耳其分区);2 个代理类;没有房间编号和 TREpys_ 集;Pset_BuildingCommon 为空
Revit 2021 住宅项目,Ifc4_Revit_ARC.ifc(13 MB,522 个实体)IFC41,7 s47 / 12不是 IFC 4.3;66 个 IfcBuildingElementProxy;511 个实体名称不符合模板;47 面墙缺少 FireRating;IfcPlate(44 块幕墙板)不在法规清单中;没有 IfcSpace;没有坐标系
IfcOpenShell 示例住宅,Ifc4_SampleHouse.ifc(2 MB)IFC4< 1 s40 / 9IFC4;使用了 IfcWallStandardCase(已在 4.3 中移除);材料名称不符合 Ad_Dayanım 格式;28 个构件没有预定义类型

结论:如今典型的 Revit 输出与法规要求的文件之间差距很大,但可以量化——升级到 IFC 4.3、对代理类进行分类、采用命名模板、补充防火/用途属性,以及添加土耳其专用的地块/容积率集。工具会附上相应 GlobalId,列出这些问题。此外,也显现出法规本身的遗漏:Revit 输出的幕墙板使用 IfcPlate,但它不在 EK-5 的两个清单中(KAYNAKLAR.md)。

法规简述

  • 许可申请附带的项目须基于 BIM 编制,交付 IFC 4.3(TS EN ISO 16739-1);由模型生成 2D 图纸并以 PDF/A 格式提交(第 4、9 条)。
  • 构件须采用 EK-5 中的类别,并按 Disiplin-KategoriKodu-Açıklama 格式命名(第 11 条、EK-5);禁止使用代理类(EK-6 6.1.3)。
  • 每个类别须填写 EK-6 中的属性和属性集;项目还须填写 EK-7(包括土耳其专用的 TREpys_ 集)(第 12–13 条)。
  • 模型的 LOD 为 300(EK-8);每次交付都须填写 EK-9 表格(第 15 条)。
  • 时间表(临时第 1 条):2027 年 9 月 1 日生效;从 2029 年 9 月 1 日起,大城市中面积 >10.000 m² 的项目开始交付 IFC;2032 年 9 月 1 日起适用于所有建筑,2033 年 9 月 1 日起适用于非住宅建筑。

法规原文:Resmî Gazete 20260805-2 · 附件(241 页):20260805-2-1.pdf

自定义规则

法规数据位于 src/ifc_ruhsat/ekler/*.json 中;每个文件都会在自身的 kaynak 字段中注明来源。添加 EK-6 表格:查阅相应的 Resmî Gazete 页面,将行和页码写入 ek6_ozellikler.json,然后运行测试。添加规则:在 src/ifc_ruhsat/kurallar/ 下创建签名为 kontrol(baglam) -> list[Bulgu] 的模块,并在 kontrol.py 的 MODULLER 中添加一行。每条发现都必须关联一条法规条款和一行 EK-9;没有依据的规则不会添加。

uv sync && uv run pytest && uv run ruff check .

English

ifc-ruhsat checks an IFC model against Türkiye's building-permit BIM regulation (Official Gazette 5 Aug 2026, no. 33331; in force 1 Sep 2027; IFC delivery phased in from Sep 2029). It encodes the regulation's annexes — mandatory IFC 4.3 classes and 3-letter category codes (Annex 5), per-class attribute and property-set requirements including the Turkish TREpys_ sets (Annex 6), project/person/organisation and TUREF coordinate requirements (Annex 7) — and fills in the 21-row model quality-control form (Annex 9). Findings cite the article and annex table and list GlobalIds. Vendor-neutral (IfcOpenShell), usable as a CLI, as an MCP server for Claude/Cursor, and as buildingSMART IDS files for Solibri/BIMcollab/usBIM. It is an automated pre-check, not legal advice; rows that cannot be verified by machine are reported as manual, never as passed.

许可证

MIT。法规文本及其附件属于公共文件;此处的 JSON 文件是这些附件的机器可读格式,每个文件中都注明了来源页面。

mcp-name: io.github.BerkantACUN/ifc-ruhsat

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。