Parse, view, query, edit, validate, and export IFC files, entirely client-side. A Rust core compiled to WASM does the parsing and geometry, a WebGPU renderer puts it on screen, and modular npm packages let you pick the pieces you need. Geometry runs on an exact-arithmetic CSG kernel, verified element-by-element against IfcOpenShell across the public benchmark corpus.
Works with IFC2X3, and . Live demo at and more info at .
Model Context Protocol server for ifc-lite — agent-native BIM via MCP (stdio + Streamable HTTP)
For data automation, start with the headless SDK or CLI:
npm install @ifc-lite/sdk
import { readFile } from 'node:fs/promises';
import { openModel } from '@ifc-lite/sdk/headless';
const model = await openModel(await readFile('model.ifc'));
try {
if (model.report.completeness !== 'complete') throw new Error('Incomplete or unknown record coverage');
console.log(model.bim.query().byType('IfcDoor').count());
} finally {
model.close();
}
Developer workflows provides a reference model, runnable data/IDS/edit/export/geometry/service recipes, and expected results. For the terminal, run npx @ifc-lite/cli info model.ifc --json.
To scaffold a rendering integration:
npx create-ifc-lite my-viewer --template react
cd my-viewer && npm install && npm run dev
That gets you a working WebGPU IFC viewer with drag-and-drop loading and orbit/pan/zoom. Other templates: basic, threejs, babylonjs, server, server-native.
import { MutablePropertyView } from '@ifc-lite/mutations';
import { PropertyValueType } from '@ifc-lite/data';
const view = new MutablePropertyView(store.properties, 'my-model');
view.setProperty(
wallExpressId,
'Pset_WallCommon',
'FireRating',
'REI 120',
PropertyValueType.Label,
);
console.log(view.getMutations()); // change history for undo / export
Export
import { exportToStep, ParquetExporter, Ifc5Exporter } from '@ifc-lite/export';
import { GeometryProcessor } from '@ifc-lite/geometry';
// Assumes the earlier parse/geometry steps: `store` (parsed IfcDataStore),
// `bytes` (raw IFC Uint8Array), `meshes` + `geometryResult` (from geometry).
// IFC STEP, applies any pending mutations
const stepText = exportToStep(store, { schema: 'IFC4', applyMutations: true });
// glTF / GLB, CSV and JSON-LD are assembled in Rust (ifc-lite-export)
// via the GeometryProcessor
const gp = new GeometryProcessor();
await gp.init();
const glb = gp.exportGlbFromMeshes(meshes); // Uint8Array (no re-mesh)
const csv = gp.exportCsv(bytes, 'entities', ',', /* includeProperties */ true);
const jsonld = gp.exportJsonld(bytes);
// Parquet: columnar, queryable from DuckDB / Polars
const parquet = await new ParquetExporter(store).exportTable('entities');
// IFC5 / IFCX: JSON + USD geometry
const ifcx = new Ifc5Exporter(store, geometryResult).export({ includeGeometry: true });
Work from the terminal
The ifc-lite CLI covers the full toolkit: inspect, query, schedule, validate, export, create, diff, clash-check, merge, convert, and script IFC models without writing a line of app code.
Building AI tooling? ifc-lite mcp model.ifc starts a Model Context Protocol server (stdio or HTTP) so agents can query and edit BIM data directly, and ifc-lite ask model.ifc "how many walls?" answers natural-language questions.
pip install ifclite-geom runs the geometry kernel in-process, meshes straight to numpy
Not sure? Start with the browser setup. You can add a server or switch engines later.
Pick your packages
I want to...
Packages
Parse an IFC file
@ifc-lite/parser
View a 3D model (WebGPU)
+ @ifc-lite/geometry + @ifc-lite/renderer
Use Three.js or Babylon.js
+ @ifc-lite/geometry (you handle the rendering)
Query properties and types
+ @ifc-lite/query
Edit properties (with undo)
+ @ifc-lite/mutations
Validate against IDS rules
+ @ifc-lite/ids
Generate 2D drawings
+ @ifc-lite/drawing-2d
Create IFC files from scratch
@ifc-lite/create
Export to glTF / IFC / Parquet
+ @ifc-lite/export
Detect clashes
+ @ifc-lite/clash
Diff two model versions
+ @ifc-lite/diff
BCF topic tracking
+ @ifc-lite/bcf
Filter and colorize in 3D by rules
+ @ifc-lite/lens
Build schedules and property tables
+ @ifc-lite/lists
Script models with the bim.* API
+ @ifc-lite/sdk
Real-time collaboration (CRDT on IFCX)
+ @ifc-lite/collab + @ifc-lite/collab-server
Embed the viewer in any page (iframe)
+ @ifc-lite/embed-sdk
Connect to a server backend
+ @ifc-lite/server-client
Give AI agents BIM access (MCP)
+ @ifc-lite/mcp
Full list: API Reference (npm packages, Rust crates, and the ifclite-geom Python wheel).
Performance
Streaming first render: geometry is processed in batches, so the first triangles are on screen while the rest of the file is still parsing.
Geometry correctness: exact-arithmetic boolean kernel — every opening is cut exactly, and the output is verified element-by-element against IfcOpenShell (99.9%+ agreement on the public benchmark corpus). Engines with approximate booleans are faster on boolean-heavy models; that trade is deliberate.
Geometry speed: native (server/CLI, multi-threaded) beats web-ifc on most of the benchmark corpus; in the browser the viewer streams geometry across workers so the first triangles render long before the file finishes processing.
Parse speed: STEP tokenization runs at roughly 1.2 GB/s; a full parse lands around 50 MB/s.
Schema coverage: 100% of IFC4 (776 entities) and IFC4X3 (876 entities).
Footprint: one lazily fetched WASM module (~2.6 MB gzipped) plus small per-package JS wrappers.
See benchmarks for full numbers across model sizes and hardware.
The WASM bundle is built from rust/ on every fresh build, so a Rust
toolchain is required. rust-toolchain.toml pins the nightly channel
and the wasm32-unknown-unknown target. rustup show (or the
contributing setup guide) installs everything needed.
# 1. Rust toolchain (one-time)
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
cargo install wasm-pack # or: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
# 2. Clone and build
git clone https://github.com/LTplus-AG/ifc-lite.git
cd ifc-lite
pnpm install && pnpm build && pnpm dev # opens viewer at localhost:3000
If you need IFC fixtures for tests, benchmarks, or stress tests, fetch them with:
pnpm fixtures # download every fixture (idempotent, hash-verified)
pnpm fixtures:check # CI-friendly: exit 1 if anything is missing or stale
Noch keine Tool-Liste. Remote-Server erhalten eine nach dem ersten Health-Check.
FAQ
Fragen
Wie installiere ich @ifc Lite/mcp?
Kopieren Sie auf dieser Seite die stdio-Konfiguration für Cursor, Claude Desktop, Claude Code oder VS Code. Sie nutzt die Installation des Herausgebers, keinen PlugMCP-Proxy.
Benötigt @ifc Lite/mcp einen API-Schlüssel?
In diesem Eintrag ist keine erforderliche Umgebungsvariable aufgeführt.
Welchen Transport verwendet @ifc Lite/mcp?
@ifc Lite/mcp läuft lokal über stdio.
Wann wurde @ifc Lite/mcp zuletzt geprüft?
Zuletzt geprüft: 2026-11-15. Model Context Protocol server for ifc-lite — agent-native BIM via MCP (stdio + Streamable HTTP)