Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MCP_HOST | No | The host address for the MCP server | 0.0.0.0 |
| MCP_PORT | No | The port for the MCP server | 8000 |
| BLENDER_HOST | No | The host address for connecting to Blender | host.docker.internal |
| BLENDER_PORT | No | The port for connecting to Blender | 9876 |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| execute_blender_code | Execute arbitrary Python code in Blender.
Parameters:
- code: The Python code to execute |
| get_ifc_project_info | Get basic information about the IFC project, including name, description,
and counts of different entity types.
Returns:
A JSON-formatted string with project information |
| get_selected_ifc_entities | Get IFC entities corresponding to the currently selected objects in Blender.
This allows working specifically with objects the user has manually selected in the Blender UI.
Returns:
A JSON-formatted string with information about the selected IFC entities |
| list_ifc_entities | List IFC entities of a specific type. Can be filtered to only include objects
currently selected in the Blender UI.
Args:
entity_type: Type of IFC entity to list (e.g., "IfcWall")
limit: Maximum number of entities to return
selected_only: If True, only return information about selected objects
Returns:
A JSON-formatted string listing the specified entities |
| get_ifc_properties | Get properties of IFC entities. Can be used to get properties of a specific entity by GlobalId,
or to get properties of all currently selected objects in Blender.
Args:
global_id: GlobalId of a specific IFC entity (optional if selected_only is True)
selected_only: If True, return properties for all selected objects instead of a specific entity
Returns:
A JSON-formatted string with entity information and properties |
| get_ifc_spatial_structure | Get the spatial structure of the IFC model (site, building, storey, space hierarchy).
Returns:
A JSON-formatted string representing the hierarchical structure of the IFC model |
| get_ifc_total_structure | Get the complete IFC structure including spatial hierarchy and all building elements.
This function extends the basic spatial structure to include building elements like walls,
doors, windows, columns, beams, etc. that are contained within each spatial element.
It provides a comprehensive view of how the building is organized both spatially and
in terms of its physical components.
Returns:
A JSON-formatted string representing the complete hierarchical structure of the IFC model
including spatial elements and their contained building elements, plus summary statistics |
| get_ifc_relationships | Get all relationships for a specific IFC entity.
Args:
global_id: GlobalId of the IFC entity
Returns:
A JSON-formatted string with all relationships the entity participates in |
| export_ifc_data | Export IFC data to a file in JSON or CSV format.
This tool extracts IFC data and creates a structured export file. You can filter
by entity type and/or building level, and choose the output format.
Args:
entity_type: Type of IFC entity to export (e.g., "IfcWall") - leave empty for all entities
level_name: Name of the building level to filter by (e.g., "Level 1") - leave empty for all levels
output_format: "json" or "csv" format for the output file
Returns:
Confirmation message with the export file path or an error message |
| place_ifc_object | Place an IFC object at a specified location with optional rotation.
This tool allows you to create and position IFC elements in the model.
The object is placed using the specified IFC type and positioned
at the given coordinates with optional rotation around the Z axis.
Args:
type_name: Name of the IFC element type to place (must exist in the model)
x: X-coordinate in model space
y: Y-coordinate in model space
z: Z-coordinate in model space
rotation: Rotation angle in degrees around the Z axis (default: 0)
Returns:
A message with the result of the placement operation |
| get_user_view | Capture and return the current Blender viewport as an image.
Shows what the user is currently seeing in Blender.
Focus mostly on the 3D viewport. Use the UI to assist in your understanding of the scene but only refer to it if specifically prompted.
Args:
max_dimension: Maximum dimension (width or height) in pixels for the returned image
compression_quality: Image compression quality (1-100, higher is better quality but larger)
Returns:
An image of the current Blender viewport |
| get_ifc_quantities | Extract and get basic qtos about the IFC project.
Returns:
A JSON-formatted string with project quantities information |
| export_bc3_budget | Export a BC3 budget file (FIEBDC-3/2016) based on the IFC model loaded in Blender.
This tool creates a complete construction budget in BC3 format by:
1. Extracting the complete IFC spatial structure (Project → Site → Building → Storey)
2. Extracting IFC quantities and measurements for all building elements
3. Converting to BC3 hierarchical format with IFC2BC3Converter:
- Generates budget chapters from IFC spatial hierarchy
- Groups building elements by type and categories defined in external JSON
- Assigns unit prices from language-specific JSON database
- Creates detailed measurements sorted alphabetically
4. Exports to BC3 file with windows-1252 encoding
Features:
- Multi-language support (Spanish/English) for descriptions and labels
- Automatic element categorization using external JSON configuration
- Optimized conversion with O(1) lookups and batch operations
- Detailed measurements with dimensions (units, length, width, height)
- Full FIEBDC-3/2016 format compliance
Configuration files (in resources/bc3_helper_files/):
- precios_unitarios.json / unit_prices.json: Unit prices per IFC type
- spatial_labels_es.json / spatial_labels_en.json: Spatial element translations
- element_categories.json: IFC type to category mappings
Args:
language: Language for the budget file ('es' for Spanish, 'en' for English). Default is 'es'.
Returns:
A confirmation message with the path to the generated BC3 file in the exports/ folder. |
| export_drawing_png | Export drawings as PNG images with custom resolution. Creates a drawing, with the view type specified, of the IFC building at the specified
height above the floor level. Supports custom resolution for high-quality architectural drawings.
Args:
height_offset: Height in meters above the storey level for the camera position (default 0.5m)
view_type: Type of view - "top" for plan view, "front", "right" and "left" for elevation views, and "isometric" for 3D view
resolution_x: Horizontal resolution in pixels (default 1920, max recommended 4096)
resolution_y: Vertical resolution in pixels (default 1080, max recommended 4096)
storey_name: Specific storey name to add to the file name (if None, prints default in the file name)
output_path: Optional file path to save the PNG (if None, returns as base64 image)
Returns:
metadata and the path of the file image of the drawing at the specified resolution |
| get_ifc_georeferencing_info | Checks whether the IFC currently opened in Bonsai/BlenderBIM is georeferenced
and returns the key georeferencing information.
Parameters
----------
include_contexts : bool
If True, adds a breakdown of the RepresentationContexts and operations.
Returns
--------
str (JSON pretty-printed)
{
"georeferenced": true|false,
"crs": {
"name": str|null,
"geodetic_datum": str|null,
"vertical_datum": str|null,
"map_unit": str|null
},
"map_conversion": {
"eastings": float|null,
"northings": float|null,
"orthogonal_height": float|null,
"scale": float|null,
"x_axis_abscissa": float|null,
"x_axis_ordinate": float|null
},
"world_coordinate_system": {
"origin": [x, y, z]|null
},
"true_north": {
"direction_ratios": [x, y]|null
},
"site": {
"local_placement_origin": [x, y, z]|null,
"ref_latitude": [deg, min, sec, millionth]|null,
"ref_longitude": [deg, min, sec, millionth]|null,
"ref_elevation": float|null
},
"contexts": [...], # only if include_contexts = true
"warnings": [ ... ] # Informational message
}
Notes
-----
- This tool acts as a wrapper: it sends the "get_ifc_georeferencing_info"
command to the Blender add-on. The add-on must implement that logic
(reading IfcProject/IfcGeometricRepresentationContext, IfcMapConversion,
TargetCRS, IfcSite.RefLatitude/RefLongitude/RefElevation, etc.).
- It always returns a JSON string with indentation for easier reading. |
| georeference_ifc_model | Georeferences the IFC currently opened in Bonsai/BlenderBIM by creating or updating IfcProjectedCRS and IfcMapConversion. Optionally updates IfcSite and writes the file to disk. |
| generate_ids | Creates an .ids file in Blender/Bonsai by calling the add-on handler 'generate_ids'.
Parameters:
- title (str): Title of the IDS.
- specs (list | JSON str): List of 'specs' containing 'applicability' and 'requirements'.
Each facet is a dict with at least a 'type' field ("Entity", "Attribute", "Property",
"Material", "Classification", "PartOf") and its corresponding attributes.
- description, author, ids_version, date_iso, purpose, milestone: IDS metadata fields.
- output_path (str): Full path to the .ids file to be created. If omitted, the add-on will generate a default name.
Returns:
- JSON (str) with the handler result: {"ok": bool, "output_path": "...", "message": "..."}
or {"ok": False, "error": "..."} |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| Technical_building_report | Generate a comprehensive technical building report based on an IFC model loaded in Blender. Args: project_name: Name of the project/building project_location: Building location (city, address) language: Report language - "english", "spanish", "french", "german", "italian", "portuguese" Returns: Structured technical report following basic project standards in the selected language. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| file://table_of_contents.json/ |