Skip to main content

IFC CONSOLE

A terminal interface to connect IFC files to LLMs. ifc-console loads your model with IfcOpenShell and serves it over MCP, so any LLM client (Claude Code, Claude Desktop, Cursor, VS Code, Codex) can query and edit it, while you stay in control from your terminal. No Blender, no host app.

Terminal console AI assistant 3D viewer
The ifc-console terminal with a model loaded and the command menu open Claude Desktop summarising the loaded IFC model The ifc-console 3D web viewer with model tree, 3D view and properties panel
The console to open an IFC file and decide what the AI is allowed to do. An AI assistant connected to ifc-console, answering questions about the open model. The optional viewer in the browser, showing the model tree, the 3D view, and element properties.

Install and run

Install from PyPI with uv or pip:

uv tool install ifc-console    # puts the ifc-console command on your PATH, viewer included
# or: pip install ifc-console

Or try it without installing: uvx ifc-console. To update later: uv tool upgrade ifc-console.

Start it in the folder with your models:

cd path/to/your/models
ifc-console

The MCP server comes up right away. Then, in the console:

> /file        pick a model from this folder
> /connect all one-time HTTP setup for every supported LLM client
> /copy codex  copy one complete client config to the clipboard
> /mode edit   let the AI change the model (ask = query-only, the default)
> /viewer      3D view in your browser
> /help        everything else

Wire up each client once. The token is stable per machine and no IFC path is stored in the client config, so your daily loop is just ifc-console, /file, and chat.

The mode switch

One switch, owned by you; the LLM cannot change it. Anything finer-grained (per-tool prompts, allowlists) belongs to your AI client.

mode what the LLM can do
ask (default) query and generate code; anything that would change the model errors and tells it to ask you
edit change and save the model; saves still make backups

Switch with /mode. Every mutation path is gated, saves are atomic with timestamped backups, and each session writes an audit log.

Honest caveat: the guards stop accidents, not a determined adversary. Treat edit mode plus untrusted prompts like running a stranger's script.

What the LLM gets

11 core tools: project info, spatial tree, selector queries, element details, property sets, schema docs, file list/open/save, and a gated Python execute_ifc_code power tool.

3 more while the viewer runs: read your click-selection, highlight elements, and screenshot the canvas so it can check its own work.

Every response is one JSON envelope with an actionable hint on failure. Full reference: MCP tools.

The 3D viewer

Type /viewer. It runs entirely on localhost behind your session token: click an element and the LLM knows what "this wall" means; it highlights elements back and takes screenshots. Edits refresh the view live.

Install from source (for development)

If you would like to work on the code itself, clone the repo and install from your checkout (needs git and uv):

git clone https://github.com/nbharathik/ifc-console
cd ifc-console
uv tool install .

To update later: git pull, then uv tool install . --force. For working on the code itself, see Development.

Docs

License

Apache-2.0. Bundles three.js (MIT) and web-ifc (MPL-2.0, unmodified); uses IfcOpenShell (LGPL-3.0-or-later) as a library.

Acknowledgments

Inspired by Bonsai MCP. If you would like to work with the Bonsai viewer in Blender instead of a standalone terminal, check that project out.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ifc_console-0.1.2.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ifc_console-0.1.2-py3-none-any.whl (1.3 MB view details)

Uploaded Python 3

File details

Details for the file ifc_console-0.1.2.tar.gz.

File metadata

  • Download URL: ifc_console-0.1.2.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ifc_console-0.1.2.tar.gz
Algorithm Hash digest
SHA256 dde025eb82877f612ca54c8f1d19a1f12117bf575e4897e4e4fd2a4e0a1bfbf5
MD5 ea35feea4236aa00fa640a40c423aaa6
BLAKE2b-256 1c6b40bc06d5b7d97f9d408c79f211e17b70db05945e78b1c4043b176a13e36a

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifc_console-0.1.2.tar.gz:

Publisher: release.yml on nbharathik/ifc-console

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file ifc_console-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: ifc_console-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 1.3 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for ifc_console-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 efd34fb1f73447998ff7d7c6590b5ecfee2dc441c7d5a3e8bc390a839635bbb1
MD5 83b8cf8947a80564d22803c62c839b10
BLAKE2b-256 0f886baa6f5344c6d8579021114b42e4117efd494b65073e9f0559c8ff509be0

See more details on using hashes here.

Provenance

The following attestation bundles were made for ifc_console-0.1.2-py3-none-any.whl:

Publisher: release.yml on nbharathik/ifc-console

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

0.1.4

2 files

This release

0.1.2 This release

2 files

0.1.1

2 files

0.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page