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.
Docs: https://nbharathik.github.io/ifc-console/
Install and run
Install from source. Needs git and uv:
git clone https://github.com/nbharathik/ifc-console
cd ifc-console
uv tool install . # puts the ifc-console command on your PATH, viewer included
To update later: git pull, then uv tool install . --force. Working on
ifc-console itself? See
Development.
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.
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.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ifc_console-0.1.0.tar.gz.
File metadata
- Download URL: ifc_console-0.1.0.tar.gz
- Upload date:
- Size: 1.4 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
53186f19bafc2729f25f7df5151e73bcb5804b8892828b86f4c63b6bbb7c58b1
|
|
| MD5 |
3deec7d97cf5d2eb752427352ba468e0
|
|
| BLAKE2b-256 |
d14fe46d5ff123ed2988f5431cc6b3b40915a2040c1112af2c2e54697f27e55d
|
Provenance
The following attestation bundles were made for ifc_console-0.1.0.tar.gz:
Publisher:
release.yml on nbharathik/ifc-console
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ifc_console-0.1.0.tar.gz -
Subject digest:
53186f19bafc2729f25f7df5151e73bcb5804b8892828b86f4c63b6bbb7c58b1 - Sigstore transparency entry: 2280156606
- Sigstore integration time:
-
Permalink:
nbharathik/ifc-console@056f80bb52dc68389fed3b1462bb93a645016967 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/nbharathik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@056f80bb52dc68389fed3b1462bb93a645016967 -
Trigger Event:
push
-
Statement type:
File details
Details for the file ifc_console-0.1.0-py3-none-any.whl.
File metadata
- Download URL: ifc_console-0.1.0-py3-none-any.whl
- Upload date:
- Size: 1.3 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/6.1.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b691fe03f05417e3044148e36b2f4b5f4a87767ba4742e50731c05590005393d
|
|
| MD5 |
d35a6f56940b31aeeb9b6afd4a76ed28
|
|
| BLAKE2b-256 |
ae621b6bc1786c182e4f6ace9011674549e6704474df9d97fefd2e24b331e550
|
Provenance
The following attestation bundles were made for ifc_console-0.1.0-py3-none-any.whl:
Publisher:
release.yml on nbharathik/ifc-console
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ifc_console-0.1.0-py3-none-any.whl -
Subject digest:
b691fe03f05417e3044148e36b2f4b5f4a87767ba4742e50731c05590005393d - Sigstore transparency entry: 2280156657
- Sigstore integration time:
-
Permalink:
nbharathik/ifc-console@056f80bb52dc68389fed3b1462bb93a645016967 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/nbharathik
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@056f80bb52dc68389fed3b1462bb93a645016967 -
Trigger Event:
push
-
Statement type: