ifc-ruhsat について
ifc-ruhsatは、トルコの建築許可BIM規則に照らしてIFCモデルを検査し、EK-9品質管理フォームを作成します。建築プロジェクトチーム向けに、条項とGlobalIdを含む結果を示し、機械判定できない項目は手動確認として扱います。
主な機能
- 01規則に基づくIFCモデル検査
- 02EK-9検査フォームの作成
- 03条項とGlobalId付きの指摘
- 04モデル概要とIDSファイルの生成
- 05CLIとMCPサーバーのインターフェース
活用シーン
- 01提出前の許可モデルの事前検査
- 02不適合要素と根拠条項の特定
- 03必要なEK-9フォームの作成
- 04附属書6・7のIDSルールの出力
MCP 対応
MCPサーバーとして、規則検査、EK-9フォーム作成、モデル概要、IFCクラスとプロパティ要件、規則情報の照会ツールを提供します。モデルはファイルパスまたはIFCテキストで渡せますが、リモートモードではIFCテキストのみを受け付けます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
6掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| dosya | string | はい |
詳細
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 でストリーミング可能な 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 | EK-9 フォームを Markdown で生成します |
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 などのエージェントは、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_HOST | 0.0.0.0 | リッスンするアドレス(Azure Container Apps は IPv6 をサポートしていないため IPv4) |
IFC_RUHSAT_PORT | 8080 | ポート |
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 の 9 項目、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 建ぺい率 | IfcSpatialZone の面積を EmsalDurumu(DAHIL/HARIC/DIGER)に応じて集計し、KAKS × 敷地面積と比較 | 一部自動(図面上の表との比較は手動) |
| 11 骨組み | プロジェクト、敷地、建物、1 つ以上の階。IfcProject は 1 つのみ | 自動 |
| 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 s | 32 / 5 | 座標系EPSG:32760(トルコのゾーンではありません);代理クラス2件;部屋番号とTREpys_セットなし;Pset_BuildingCommonは空 |
| Revit 2021の住宅、Ifc4_Revit_ARC.ifc(13 MB、522要素) | IFC4 | 1,7 s | 47 / 12 | IFC 4.3ではありません;IfcBuildingElementProxyが66件;要素名511件がテンプレートに準拠していません;47件の壁にFireRatingなし;IfcPlate(カーテンウォールパネル44枚)は規則のリストにありません;IfcSpaceなし;座標系なし |
| IfcOpenShellのサンプル住宅、Ifc4_SampleHouse.ifc(2 MB) | IFC4 | < 1 s | 40 / 9 | IFC4;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条):施行日は1.9.2027です。IFC提出は1.9.2029から大都市の>10.000 m²のプロジェクトを対象に開始し、1.9.2032にすべての建物、1.9.2033に住宅以外の建物が対象となります。
本文:官報20260805-2 · 添付文書(241ページ):20260805-2-1.pdf
独自のルール
規則データはsrc/ifc_ruhsat/ekler/*.jsonにあり、各ファイルはそれぞれのkaynakフィールドに出典を記載しています。EK-6の表を追加するには、該当する官報のページを確認し、ek6_ozellikler.jsonに行とページ番号を記入して、テストを実行します。ルールを追加するには、src/ifc_ruhsat/kurallar/の下にkontrol(baglam) -> list[Bulgu]シグネチャを持つモジュールを作成し、kontrol.pyのMODULLERに1行追加します。各指摘は条項とEK-9の行に紐づける必要があります。根拠のないルールは追加しません。
uv sync && uv run pytest && uv run ruff check .
English
ifc-ruhsatは、IFCモデルをトルコの建築許可BIM規則(2026年8月5日付官報、第33331号;2027年9月1日施行;IFC提出は2029年9月から段階的に開始)に照らしてチェックします。規則の付属書を実装しており、必須のIFC 4.3クラスと3文字のカテゴリコード(付属書5)、クラスごとの属性およびプロパティセット要件(トルコ固有のTREpys_セットを含む、付属書6)、プロジェクト・担当者・組織とTUREF座標の要件(付属書7)を定め、21行のモデル品質管理フォーム(付属書9)を作成します。指摘には条項と付属書の表を示し、GlobalIdを記載します。ベンダーに依存せず(IfcOpenShell)、CLI、Claude/Cursor向けのMCPサーバー、Solibri/BIMcollab/usBIM向けのbuildingSMART IDSファイルとして利用できます。これは自動化された事前チェックであり、法的助言ではありません。機械で検証できない行は、合格ではなく手動確認として報告します。
ライセンス
MIT。規則本文とその付属書は公開文書です。ここにある JSON ファイルはそれらの付属書を機械可読形式にしたもので、取得元のページは各ファイルに記載されています。
mcp-name: io.github.BerkantACUN/ifc-ruhsat
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。