-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathindex.html
More file actions
247 lines (219 loc) · 15.2 KB
/
index.html
File metadata and controls
247 lines (219 loc) · 15.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" href="image/icon.png" type="image/icon">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css">
<title>MCP4IFC: IFC-BASED BUILDING DESIGN USING LARGE LANGUAGE MODELS</title>
<link rel="stylesheet" href="style.css">
<style>
/* --- Style for new sections --- */
.gallery {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 15px;
padding: 20px 0;
}
.gallery img {
width: 31%;
min-width: 250px;
object-fit: cover;
border-radius: 8px;
box-shadow: 0 4px 10px rgba(0,0,0,0.1);
transition: transform 0.2s ease-in-out;
}
.gallery img:hover {
transform: scale(1.03);
}
.img-caption {
font-size: 0.9em;
color: #555;
text-align: center;
margin-top: -10px;
padding-bottom: 20px;
}
.contrib-list li {
margin-bottom: 20px; /* Adds more spacing between contribution points */
line-height: 1.5;
}
#method h4, #demo-results h4 {
text-align: left;
padding-left: 40px;
padding-top: 15px;
margin-bottom: -10px;
color: #333;
}
#method p, #method ul {
padding-left: 40px;
padding-right: 40px;
}
/* --- End new styles --- */
</style>
</head>
<body>
<script src="script.js"></script>
<div style="max-width: 1000px; flex-direction: column; align-items: center; justify-content: center; display: flex;">
<header>
<h1><img src="image/icon.png" style="width: 40px; height: 40px; margin-right: -3px;margin-bottom: -3px;">
<b>MCP4IFC: </b>IFC-BASED BUILDING DESIGN USING LARGE LANGUAGE MODELS</h1>
<p id="accept">Preprint, 2025</p>
<p class="tagline">An open-source MCP framework for generative BIM design, editing, and querying directly on IFC models.</p>
<section id="authors">
<a class="name" href="https://github.com/bharathikannann", target="_blank">Bharathi Kannan Nithyanantham</a><sup>1</sup>,
<a class="name" href="https://github.com/Tsesterh", target="_blank">Tobias Sesterhenn</a><sup>2</sup>,
<a class="name" href="https://github.com/ashwin-ned", target="_blank">Ashwin Nedungadi</a><sup>1</sup>,
<a class="name" href="https://github.com/Sloppy1999", target="_blank">Sergio Peral Garijo</a><sup>2</sup>,
<a class="name" href="https://github.com/jzenkner", target="_blank">Janis Zenkner</a><sup>2</sup>,
<a class="name" href="https://bartelt-lab.github.io/index.html#member/bartelt/", target="_blank">Christian Bartelt</a><sup>2</sup>,
<a class="name" href="https://www.mds-lab.de/stefan-ludtke", target="_blank">Stefan Lüdtke</a><sup>1</sup>,
</section>
<br>
<h2><sup>1</sup>University of Rostock <sup>2</sup>Technical University of Clausthal</h2>
<br>
<div>
<a class="button" href="https://arxiv.org/abs/2511.05533" target="_blank">
<i class="fas fa-file-pdf"></i> Paper (Preprint)
</a>
<a class="button" href="https://github.com/Show2Instruct/ifc-bonsai-mcp" target="_blank">
<i class="fab fa-github"></i> Code
</a>
<a class="button" href="#demo">
<i class="fas fa-video"></i> Video Demo
</a>
<!-- <a class="button" href="https://drive.google.com/drive/folders/1aeheOPQG9IUZf0TVAyczumG9J_ZUr5Ad?usp=drive_link" target="_blank">
<i class="fab fa-github"></i> Experiments
</a> -->
</div>
<br>
</header>
</div>
<div id="interactive-session" style="width: 100%;">
<div style="max-width: 800px; margin: auto; ">
<!-- <h3>Interactive Session</h3> -->
<div class="interactive-carousel" role="region" aria-label="Interactive design walkthrough">
<button class="carousel-control carousel-prev" type="button" aria-label="Previous image">
<i class="fas fa-chevron-left"></i>
</button>
<div class="carousel-frame">
<img src="image/7_1.png" alt="Interactive session step 1" class="carousel-image active" data-index="0">
<img src="image/7_2.png" alt="Interactive session step 2" class="carousel-image" data-index="1">
<img src="image/7_3.png" alt="Interactive session step 3" class="carousel-image" data-index="2">
<img src="image/7_4.png" alt="Interactive session step 4" class="carousel-image" data-index="3">
<img src="image/7_5.png" alt="Interactive session step 5" class="carousel-image" data-index="4">
<img src="image/7_6.png" alt="Interactive session step 6" class="carousel-image" data-index="5">
</div>
<button class="carousel-control carousel-next" type="button" aria-label="Next image">
<i class="fas fa-chevron-right"></i>
</button>
</div>
<p class="img-caption">Interactive walkthrough: step-by-step creation of an L-shaped house through sequential prompts using MCP4IFC framework.</p>
</div>
</div>
<div id="abstract" style="width: 100%;">
<div style="max-width: 800px; margin: auto; ">
<h3>Abstract</h3>
<p style="padding: 40px; padding-top: 0; padding-bottom: 20px;">Bringing generative AI into the architecture, engineering and construction (AEC) field requires systems that can translate natural language instructions into actions on standardized data models. We present MCP4IFC, a comprehensive open-source framework that enables large language models (LLMs) to directly manipulate Industry Foundation Classes (IFC) data through the Model Context Protocol (MCP). The framework provides a set of BIM tools, including scene querying tools for information retrieval, predefined functions for creating and modifying common building elements, and a dynamic code-generation system that combines in-context learning with retrieval-augmented generation (RAG) to handle tasks beyond the predefined toolset. Experiments demonstrate that an LLM using our framework can successfully perform complex tasks, from building a simple house to querying and editing existing IFC data. Our framework is re-leased as open-source to encourage research in LLM-driven BIM design and provide a foundation for AI-assisted modeling workflows. </p>
</div>
</div>
<div id="contributions" style="width: 100%; background-color: white;">
<div style="max-width: 800px; margin: auto; ">
<h3>Contributions</h3>
<ul class="contrib-list" style="padding-left: 60px; padding-right: 40px; padding-bottom: 20px;">
<li><b>An Open MCP Framework for IFC</b><br>
We introduce a comprehensive framework that enables LLMs to create, edit, and query IFC models through standardized Model Context Protocol (MCP) tool calls. This open, protocol-based approach ensures interoperability, allowing any MCP-compatible AI client to connect to our BIM tools.
</li>
<li><b>Dynamic Tool Expansion via RAG</b><br>
The framework moves beyond a fixed toolset by combining in-context learning with a Retrieval-Augmented Generation (RAG) system. This allows the LLM to dynamically generate new Python code for IFC-specific tasks, giving it the flexibility to handle novel operations and custom logic at inference time.
</li>
<li><b>End-to-end BIM manipulation</b><br>
We show that existing multimodal LLMs can successfully perform IFC querying, editing, and generation tasks using only natural language and tool calls, without direct user interaction with BIM software.</li>
</ul>
</div>
</div>
<div id="method" style="width: 100%; ">
<div style="max-width: 800px; margin: auto; ">
<h3>Method</h3>
<p style="padding: 40px; padding-top: 0;">The MCP4IFC system architecture (Fig. 1) is built on two core components: a Python-based <b>MCP server</b> that manages communication, and a <b>Blender add-on</b> that executes tasks. The server exposes the tool catalog to the LLM, while the add-on uses <b>IfcOpenShell</b> for all low-level IFC data operations and <b>Bonsai</b> to synchronize geometry with the Blender scene. This separation of concerns allows the LLM to operate on complex BIM data through a clean, standardized interface.</p>
<img src="image/overview3.png" style="width: 100%; padding-bottom: 10px;" alt="Method diagram">
<p class="img-caption">The MCP4IFC system architecture, showing the data flow from a user's prompt to the LLM Client, through the MCP Server, and into the Blender Environment for execution on the IFC Model.</p>
<h4>A Comprehensive Toolset</h4>
<p>The framework provides the LLM with a rich set of tools, divided into key categories:</p>
<ul style="padding-left: 80px; padding-right: 40px; padding-bottom: 10px;">
<li><b>Scene Query & Context Tools:</b> To understand the model's current state, the LLM can use tools that return a concise, structured JSON summary of the scene, including element GUIDs, IFC types, properties, and bounding boxes. It can also capture screenshots for visual feedback.</li>
<li><b>Predefined Creation Tools:</b> For common tasks, the agent can use high-level, parametric tools to create standard building elements like walls, slabs, roofs, doors, and windows, which are then correctly inserted into the IFC model.</li>
</ul>
<h4>Dynamic Code Generation</h4>
<p>For any task not covered by the predefined tools, the agent can fall back on dynamic code generation:</p>
<ul style="padding-left: 80px; padding-right: 40px; padding-bottom: 20px;">
<li><b>IFC Code Generation:</b> The LLM can write Python scripts using the IfcOpenShell API. A RAG system provides up-to-date documentation and code examples to ensure the generated code is valid. This code is then executed in a secure sandbox.</li>
<li><b>Custom Mesh Generation:</b> For complex geometry, the agent can generate Python code using libraries like `trimesh` to create procedural meshes, which are then converted into IFC elements (e.g., `IfcBuildingElementProxy`).</li>
</ul>
</div>
</div>
<div id="demo-results" style="width: 100%; background-color: white;">
<div style="max-width: 800px; margin: auto; " id="demo">
<h3>Demo & Results</h3>
<p style="padding: 40px; padding-top: 0;">A short demonstration video will be available soon. In the meantime, see some generative results from our experiments below.</p>
<h4 style="text-align: center;">IFC Generation from Single Text Prompts</h4>
<p style="padding: 20px 40px 0 40px; text-align: center;">The LLM agent can generate complex IFC geometry from a single text prompt by invoking the framework's tools. (See Figure 4 in the paper).</p>
<div class="gallery">
<img src="image/1.png" alt="Two-storey structure">
<img src="image/2.png" alt="Curved wall">
<img src="image/3.png" alt="3-storey apartment block">
<img src="image/4.png" alt="University campus">
<img src="image/5.png" alt="Landmark bridge">
<img src="image/6.png" alt="10-room single-floor house">
</div>
<p style="padding: 10px 40px 20px 40px; text-align: center;">For the full set of experiments and reproducible IFC files from the paper, check out our <a href="https://drive.google.com/drive/folders/1aeheOPQG9IUZf0TVAyczumG9J_ZUr5Ad?usp=drive_link" target="_blank" rel="noopener">Google Drive archive</a>.</p>
<!-- <h4 style="text-align: center; padding-top: 20px;">Iterative, Multi-Turn Design</h4>
<p style="padding: 20px 40px 0 40px; text-align: center;">The agent can also build a model step-by-step, preserving context across multiple user instructions to iteratively refine a design. (See Figure 5 in the paper).</p>
<div class="gallery">
<img src="image/7_1.png" alt="L-shaped slab foot">
<img src="image/7_2.png" alt="Perimeter walls added">
<img src="image/7_3.png" alt="Door insertion">
<img src="image/7_4.png" alt="Second-floor slab">
<img src="image/7_5.png" alt="Hip roof generation">
<img src="image/7_6.png" alt="Styled final building">
</div> -->
</div>
</div>
<div id="bibtex" style="width: 100%; background-color: white;">
<div style="max-width: 800px; margin: auto; ">
<h3>BibTeX</h3>
<div class="citation-card">
<button class="copy-button" type="button" data-copy-target="bibtex-entry" aria-label="Copy BibTeX citation">
<i class="fas fa-copy" aria-hidden="true"></i>
</button>
<pre id="bibtex-entry" class="citation-text">@misc{nithyanantham2025mcp4ifcifcbasedbuildingdesign,
title={MCP4IFC: IFC-Based Building Design Using Large Language Models},
author={Bharathi Kannan Nithyanantham and Tobias Sesterhenn and Ashwin Nedungadi and Sergio Peral Garijo and Janis Zenkner and Christian Bartelt and Stefan Lüdtke},
year={2025},
eprint={2511.05533},
archivePrefix={arXiv},
primaryClass={cs.CL},
url={https://arxiv.org/abs/2511.05533},
}</pre>
</div>
</div>
</div>
<div id="contact" style="width: 100%;">
<div style="max-width: 800px; margin: auto; ">
<h3>Contact</h3>
<p style="padding: 40px; padding-top: 0;">
For questions about our project, please contact
<a href="mailto:bharathikannan.nithyanantham@uni-rostock.de" style="color: blueviolet;">Bharathi Kannan Nithyanantham</a> or
<a href="mailto:tobias.sesterhenn@tu-clausthal.de" style="color: blueviolet;">Tobias Sesterhenn</a>.
<h3>Acknowledgement</h3>
<p style="padding: 40px; padding-top: 0;">
This research was supported by the Federal Ministry of Research, Technology and Space via the Show2Instruct project (Grant No. 01MK25008D).
</p>
</div>
</div>
<p style="margin-bottom:50px;">
This website is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.<br>
Webpage adapted from Nerfies and MARS.
</p>
</body>
</html>