Skip to main content
Glama
flinker-app

ifc-mcp

by flinker-app

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
run-pythonA

Execute LLM-created Python in the SDK Node/Pyodide IFC runtime. Use this tool for IFC inspection, validation, reports, exports, and creating new IFC files.

Runtime context: Pyodide uses the bundled Pyodide 0.28.2 runtime. The package set includes micropip, ifcopenshell, numpy, pandas, matplotlib, shapely, and typing-extensions. The Python code is passed directly to the SDK.

File inputs: pass IFC/IFCXML/IFCZIP file paths in the files array. In the desktop Node server these are local filesystem paths; in a browser host they are browser-defined paths resolved by that host. Generated Python can open those files by name, e.g. ifcopenshell.open("model.ifc") or open("model.ifc", "rb").

Return contract: this tool exposes stdout, stderr, saved_files, uploaded_files, and any result returned by the raw SDK. Generated files are returned as temporary localhost download URLs in saved_files. Do not assume files were written to the user's working directory.

open-ifc-viewerA

Open or show the local IFC viewer and return its stable viewer URL. This tool does not load IFC files and does not change selection/isolation state. After this tool returns, use the returned URL as the viewer address. If the client can open links, open that local URL; otherwise tell the user to open the URL in a browser or webview. Use show-ifc-file to show IFC files. Use set-bcf-view to apply a BCF viewpoint file. Do not use browser automation to click or select elements in the viewer.

show-ifc-fileA

Show one IFC file in the already-open local IFC viewer. Pass either a local IFC/IFCXML/IFCZIP file path or a generated IFC download URL from run Python saved_files. Use this for IFC model display only. Repeated calls add multiple IFC files to the same viewer. Returns the same stable viewer URL; after this tool returns, use that URL as the viewer address. Use open-ifc-viewer to open the viewer and set-bcf-view to apply a BCF viewpoint file.

clear-ifc-viewerA

Clear the already-open local IFC viewer by removing all loaded IFC files and BCF viewpoint state. This keeps the same stable viewer URL and does not close the browser tab. Use show-ifc-file after this to load a fresh IFC model.

set-bcf-viewA

Set the view state in the already-open local IFC viewer by applying a BCF/BCFZIP viewpoint file. Pass either a local BCF/BCFZIP file path or a generated BCF download URL from run Python saved_files. This tool does not show/load IFC files; use show-ifc-file for that. It should not open a new browser tab and should not use browser automation. To generate a BCFZIP with run-python, write a .bcfzip file, then call set-bcf-view with saved_files[0].url:

from uuid import uuid4
import ifcopenshell
from bcf.v3 import model as mdl
from bcf.v3.bcfxml import BcfXml
from bcf.v3.visinfo import VisualizationInfoHandler

model = ifcopenshell.open("sample.ifc")
gid = model.by_type("IfcWall")[0].GlobalId
component = mdl.Component(ifc_guid=gid)
visinfo = mdl.VisualizationInfo(
    guid=str(uuid4()),
    components=mdl.Components(
        selection=mdl.ComponentSelection(component=[component]),
        visibility=mdl.ComponentVisibility(
            default_visibility=False,
            exceptions=mdl.ComponentVisibilityExceptions(component=[component]),
        ),
    ),
)
bcf = BcfXml.create_new(project_name="IFC MCP")
topic = bcf.add_topic("Review wall", "Review wall", "ifc-mcp", topic_type="Issue", topic_status="Open")
topic.add_visinfo_handler(VisualizationInfoHandler(visinfo))
bcf_path = "view.bcfzip"
bcf.save(bcf_path)
print(str(bcf_path))

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/flinker-app/ifc-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server