IFCX MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@IFCX MCPCreate an IFCX model called Campus"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
IFCX MCP
A Model Context Protocol server for creating IFC5 / IFCX building information models through AI assistants.
You don't interact with this server directly. You connect it to an MCP client such as Claude Code, Claude Desktop, or any other MCP-compatible client, and then use natural language to author BIM models.
The project targets the IFCX examples and tooling style used in the IFC5 development work: alpha JSON .ifcx, post-alpha tiered index.ifcx with NDJSON tables, and zipped post-alpha .ifcx packages.
What It Can Do
The server keeps IFCX drafts in memory while it is running. A client can then drive the model through a normal authoring flow:
Create a model with standard IFCX imports and provenance.
Add
Project > Site > Building > Storey > Space.Create reusable type nodes, such as wall, window, and pipe segment types.
Create element occurrences and attach them to the spatial tree.
Instantiate occurrences from types.
Attach mesh, BRep, curve, and procedural geometry hints.
Use richer authoring factories for walls from axes, windows with voids, pipe networks with ports, and storey grids.
Add material, PBR material data, current IFC5 standard properties, classifications, bSDD references, and georeferencing.
Create patch layers and explain their effect.
Validate references, cycles, mesh indices, IFClite IFCX parsing, and IDS rules.
Preview a viewer-shaped tree and export glTF / Three.js preview artifacts.
Write alpha JSON, tiered IFCX, or zipped post-alpha IFCX.
Dry-run or perform a layer-version publish to an IFCX layer API.
Related MCP server: OpenStudio MCP Server
Install
git clone https://github.com/louistrue/ifcx-mcp.git
cd ifcx-mcp
npm install
npm run buildMCP Client Configuration
Add the server to your MCP client using stdio transport. Change the path to wherever you cloned the repository.
Claude Code (~/.claude/settings.json or project .mcp.json):
{
"mcpServers": {
"ifcx": {
"command": "node",
"args": ["/path/to/ifcx-mcp/dist/server.js"]
}
}
}Claude Desktop (claude_desktop_config.json): same format.
The server starts automatically when the MCP client launches.
For local development without an MCP client:
npm run devUsage Guide
Once the server is connected to your MCP client, you author models through natural language. The AI assistant translates your requests into the appropriate tool calls.
Creating a Model
"Create an IFCX model called Campus"
Initializes an in-memory draft with standard IFC imports and provenance tracking.
Building Spatial Structure
"Add a project with a site, a building called HQ, and two storeys: Ground Floor at 0m and First Floor at 3.5m"
Creates the full IfcProject > IfcSite > IfcBuilding > IfcBuildingStorey hierarchy.
Adding Elements
"Create a concrete wall type with 200mm thickness, then place exterior walls around a 20x12m rectangle on the ground floor"
You can work at different levels of detail:
Low-level — create a type, then elements, then attach geometry separately.
Rich factories — create walls from axis lines, windows with automatic void cutting, pipe networks with distribution ports, or storey grids, all in one step.
Attaching Geometry
Four geometry representations are supported:
Mesh — vertices and face indices (triangulated surfaces).
Procedural — extrude, sweep, revolve, or boolean hints.
BRep — OCCT BREP or STEP AP242 payloads.
Curves — polylines, arcs, circles, B-splines, or composite curves.
Adding Metadata
"Classify all walls as Uniclass Ss_25_10_30 and resolve via bSDD"
Materials with optional PBR data (roughness, metalness, color).
Classifications (CCI, NL-SfB, Uniclass) with live bSDD resolution.
Georeferencing via EPSG codes or WKT.
Patch layers for delta/change tracking over a base model.
Validating
"Validate my model"
Runs a multi-stage pipeline: schema validation, composition checks, reference integrity, geometry sanity, and adapter-level IFClite/IFCX-core checks. You can also run IDS validation and convert issues into BCF topics.
For export checks, use ifcx_validate_ifc5_compliance. That tool validates the sanitized IFC5 alpha output shape against the current IFC5 development schema/import conventions. The older ifcx_validate_viewer_compatibility name is kept as an alias for existing clients, but the buildingSMART viewer is not treated as the target spec.
Previewing
"Show me a preview of the model"
Returns a viewer-shaped tree and scene summary. You can also export:
glTF —
scene.gltf+scene.binfor any 3D viewer.Three.js — self-contained
index.htmlyou can open in a browser.
Exporting
"Write the model in tiered format to ./output/"
Three output formats are available: alpha JSON (single .ifcx), tiered (index.ifcx + NDJSON tables), and zipped post-alpha (.ifcx ZIP package).
Planning
"Plan a model for a hospital wing with mechanical systems"
The planner analyzes your intent and returns a step-by-step authoring plan with IDs, layers, types, geometry tiers, and an ordered tool-call recipe — without modifying any draft.
Typical Conversation
You: Create an IFCX model for a small school campus
You: Add a site, one building with 2 storeys (ground at 0m, first at 4m)
You: Create a concrete wall type, then place exterior walls
around a 20x12m rectangle on the ground floor
You: Add 4 windows evenly spaced on the south wall
You: Add a DHW pipe network running east-west at ceiling level
You: Classify all walls as Uniclass Ss_25_10_30 and resolve via bSDD
You: Add georeferencing for Zurich (EPSG:2056)
You: Validate the model and show me any issues
You: Export a Three.js preview so I can check it in the browser
You: Write the final model in tiered format to ./output/Things to Know
Everything is in-memory. Export your model before stopping the server.
Session IDs identify drafts. You can have multiple models open at once.
bSDD lookups are cached locally in
.ifcx-mcp-cache/bsdd/.Publishing is safe by default — dry-run mode unless you explicitly pass
dryRun: false.Ask to "list my drafts" or "show the model tree" at any time to see current state.
Tools
Drafts
ifcx_capabilitiesReport the available IFCX and IFClite adapter capabilities.ifcx_plan_modelPlan an authoring run from natural-language or structured intent. It returns IDs, layers, imports, types, elements, geometry tiers, schemas, write targets, and an ordered tool-call recipe. It does not mutate a draft.ifcx_create_modelCreate an empty IFCX alpha draft with standard IFCX imports and provenance.ifcx_list_draftsList drafts currently held by the running server process.
IFC Structure
ifcx_create_spatial_structureCreate a project/site/building/storey tree, optionally with a space.ifcx_create_typeCreate a reusable type node, for exampleIfcWallType,IfcWindowType, orIfcPipeSegmentType.ifcx_create_elementCreate an element occurrence with class, name, recognized IFC5 properties, material, placement, and an optional parent attachment. Legacypropertiesandquantityinputs are normalized into directbsi::ifc::prop::*attributes when the current schema supports them.ifcx_instantiate_typeCreate an occurrence that inherits from an existing type node.
Geometry
ifcx_create_geometry_meshCreate a body node frompointsandfaceVertexIndices, then attach it to an owner element.ifcx_create_geometry_procCreate a procedural geometry hint, such asextrude,sweep,revolve, orboolean.ifcx_create_geometry_brepAttach an OCCT BREP or STEP AP242 BRep payload to a node.ifcx_create_geometry_curveAttach a polyline, arc, circle, B-spline, or composite curve payload to a node.
Rich Factories
ifcx_create_wall_from_axisCreate a wall occurrence from a start/end axis, including direct IFC5 length/height properties, mesh body, material, and optional type inheritance.ifcx_create_window_with_voidCreate a window occurrence and a procedural void hint tied to its host wall.ifcx_create_pipe_network_with_portsCreate a pipe sweep with start/endIfcDistributionPortnodes.ifcx_create_storey_gridCreate anIfcGridwith X/Y curve axes attached to a storey.
Metadata Layers
ifcx_create_materialAdd material and optional PBR material data to a node.ifcx_create_classification_layerAttach CCI, NL-SfB, bSDD, or other classification references.ifcx_resolve_bsdd_classificationResolve IFC/bSDD classification data from cache, from live bSDD whenallowLive: true, or as a deterministic offline URI.ifcx_create_georeference_layerAdd EPSG coordinate attributes and optional WKT CRS text.ifcx_create_patch_layerCreate a delta layer over an existing draft. The patch imports the base draft ID and contains only the requested changes.
Validation And Preview
ifcx_validate_created_modelCheck missing references, repeated path opinions, cycles, missing local schemas, and mesh index sanity. Passengine: "ifcx-core"orengine: "ifc-lite"to also run the IFClite IFCX parser/adapter.ifcx_validate_ifc5_complianceCheck the sanitized alpha export against the current IFC5 development imports and attribute shapes. Standard imported schemas stay imported; local schemas are only required for non-standard extension attributes.ifcx_validate_idsValidate a draft against IDS XML using@ifc-lite/ids. The server builds an IFCX-backed accessor for entity type, properties, classifications, materials, and parents.ifcx_create_bcf_from_validationConvert an IDS validation report into a serializable BCF topic summary using@ifc-lite/bcf.ifcx_preview_created_modelReturn a composed, viewer-shaped tree plus summary counts and geometry bounds.
Write And Publish
ifcx_write_alphaWrite a single alpha JSON.ifcx.ifcx_write_tieredWriteindex.ifcxplus NDJSON attribute tables.ifcx_write_zippedWrite a zipped post-alpha.ifcxpackage containingindex.jsonand NDJSON tables.ifcx_write_bcf_from_idsValidate a draft against IDS XML and write a.bcfzipissue package.ifcx_write_bcf_from_validationWrite a.bcfzipissue package from an existing IDS validation report.ifcx_export_preview_gltfExport a simple glTF preview folder withscene.gltf,scene.bin, andpreview-manifest.json.ifcx_export_preview_threejsExport a Three.js preview folder withindex.htmland the glTF scene.ifcx_publish_layer_versionPublish a zipped draft to an IFCX layer API. This defaults to dry-run unlessdryRun: falseis passed.
Layer History
ifcx_explain_layer_historyExplain which node opinions introduced or overrode children, inherits, and attributes.ifcx_explain_patch_effectCompare a base draft and patch draft, then report added, removed, and changed nodes/attributes.
Some older tool names are kept as aliases while the interface settles, such as ifcx_export_alpha, ifcx_export_tiered, ifcx_add_mesh_geometry, and ifcx_validate_draft.
Resources
The server also exposes MCP resources:
ifcx://draftsCurrent in-memory draft summaries.ifcx://draft/{sessionId}/treeViewer-shaped composed tree for one draft.ifcx://draft/{sessionId}/sceneScene summary with tree, mesh/procedural counts, and bounds.
Integration Test
The integration test test/mcp-elaborate.test.ts drives the complete authoring workflow through MCP calls. It creates a two-storey model with walls, windows, domestic hot water pipes, ports, mesh geometry, procedural geometry, BRep and curve payloads, a storey grid, material/PBR data, classifications, bSDD resolution, georeferencing, a patch layer, preview resources, glTF/Three.js preview artifacts, and all three IFCX write formats.
npm run test:mcpOutput Formats
Alpha JSON:
model.ifcxTiered:
index.ifcx
ifcx.geom.mesh.ndjson
ifcx.geom.brep.ndjson
ifcx.geom.curve.ndjson
ifcx.geom.proc.ndjson
ifcx.semantics.ndjsonZipped post-alpha:
model-post-alpha.ifcxPreview:
scene.gltf
scene.bin
preview-manifest.json
index.htmlThe zipped package contains:
index.json
ifcx.geom.mesh.ndjson
ifcx.geom.brep.ndjson
ifcx.geom.curve.ndjson
ifcx.geom.proc.ndjson
ifcx.semantics.ndjsonBCF:
ids-validation.bcfzipPublishing
ifcx_publish_layer_version is intentionally conservative.
By default:
{ "dryRun": true }In dry-run mode it validates the draft and returns the target URL, layer ID, generated version ID, and blob ID, but does not upload.
With dryRun: false, it calls:
PUT {baseUrl}/ifcx-api/upload/{blobId}
POST {baseUrl}/ifcx-api/layers/{layerId}/versionsOnly use live publishing against an API endpoint you control.
Development
npm run check
npm run test
npm run test:mcp
npm run buildnpm run test tests the authoring kernel directly.
npm run test:mcp builds the project, starts the MCP server over stdio with the SDK client transport, and drives the complete authoring workflow through MCP calls.
Project Layout
src/server.ts MCP server and tool/resource registration
src/ifcx-authoring/authoring-session.ts
src/ifcx-authoring/alpha-builder.ts
src/ifcx-authoring/tiered-builder.ts
src/ifcx-authoring/element-factories.ts
src/ifcx-authoring/geometry-factories.ts
src/ifcx-authoring/advanced-geometry.ts
src/ifcx-authoring/rich-factories.ts
src/ifcx-authoring/planner.ts
src/ifcx-authoring/preview-exporter.ts
src/ifcx-authoring/layer-history.ts
src/ifcx-authoring/validation-pipeline.ts
src/ifcx-authoring/patch-builder.ts
src/ifcx-authoring/writers.ts
src/adapters/bsdd-adapter.ts
src/adapters/ifc-lite-adapter.ts
src/adapters/ifcx-core-adapter.ts
test/authoring.test.ts
test/mcp-elaborate.test.tsThe src/ifcx/* files are compatibility re-exports for early imports. New code should import from src/ifcx-authoring.
Status
This is early implementation work. It already creates valid draft structures and writes the current target formats, but the authoring vocabulary will keep expanding as the IFCX examples and layer API mature.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/louistrue/ifcx-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server