Fast native IFC parsing for AI agents, RPA, and analytics pipelines. 20–30× faster than ifcopenshell.open. Spatial-relationship graph built in. Self-describing. MCP-compatible.
Rust core + memchr-accelerated tokenizer. 905 ms cold on an 834 MB / 14.3M-record MEP IFC. Byte-level parity vs ifcopenshell on 234K products from 5 authoring tools.
m.contained_in / .aggregates / .storey_building DataFrames + seven traversal helpers. m.ancestors(wall_guid) walks storey → building → site → project in a single call.
m.diff(other) returns added / removed / changed products, type cardinality deltas, storey elevation changes — JSON-friendly. "What changed since v3?" is a one-liner.
m.type_summary() emits one record per IFC entity with counts, storeys, predefined types, and sample GUIDs. Matches the abstraction your TypeBank already speaks.
Parquet cache keyed on file hash. Second open of a 200 MB IFC returns in 30 ms. Edit the file, cache invalidates. No bookkeeping.
ifcfast-mcp speaks the Model Context Protocol. Claude Desktop, Cursor, ChatGPT-via-MCP — point at the server, get 18 tools and a guide resource. Zero glue code.
A public-license IFC opened with ifcfast.open(path) — rendered geometry from ifcfast-mesh, a QTO rollup from m.type_summary(), and the spatial hierarchy from m.aggregates + m.contained_in. All from a single 1.5 MB Python wheel.
Source IFC: buildingSMART community sample — Duplex Apartment (CC BY 4.0).
Warm-cache reads finish in tens of milliseconds. Cold parse on an 834 MB MEP IFC is 905 ms. The same file OOMs ifcopenshell.open on an 8 GB box.
ifcfast-mcp exposes the full parse + spatial-graph + diff surface as Model Context Protocol tools. Add one line to your MCP client config and your agent can drive IFCs directly — without you writing any glue code.
ifcfast.system_prompt() into the system prompt for instant ramp-up.pip install 'ifcfast[mcp]'
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) %APPDATA%/Claude/claude_desktop_config.json (Windows)
{ "mcpServers": { "ifcfast": { "command": "ifcfast-mcp" } } }
ifcfast appears as 18 tools + ifcfast://agents-guide resource. Your agent can now open IFCs, walk the spatial graph, run drift, and extract type catalogues — without any glue code.
Everything is a long-format DataFrame or a JSON-friendly dict. Filter, join, dump to Excel. No ifcopenshell.open() on the hot path; ifcopenshell is an optional dev dep used only for cross-checking parity in tests.
import ifcfast m = ifcfast.open("model.ifc") # Long-format pandas tables, lazy. m.psets # property sets m.quantities # base quantities m.materials # IfcMaterial / IfcMaterialLayerSet m.classifications # NS 3451 / Uniformat / OmniClass
# Spatial-relationship graph m.contained_in # product → storey edges m.aggregates # child → parent edges m.storey_building # storey → building edges # Traversal helpers m.parent(g); m.children(g) m.ancestors(g); m.descendants(g) m.storey_of(g); m.building_of(g) m.products_in(parent_g)
# What changed between v1 and v2? delta = m1.diff("model_v2.ifc") delta["products"] # {'added_count': 47, 'removed_count': 12, # 'changed_count': 8, 'added': [...], ...} delta["type_deltas"]["IfcWall"] # {'left': 142, 'right': 148, 'delta': 6}