12 KiB
MCP Tools Reference
Overview
The Expolinc Booth Designer extends the sergiudanstan/freecad-mcp server with 12 custom MCP tools for designing trade fair booths using Expolinc modular systems. These tools work alongside the server's 165 built-in CAD tools.
Quick Reference
| Tool | Purpose |
|---|---|
expolinc_info |
List available systems, sizes, and components |
expolinc_create_wall |
Create a single Classic Frame or Light Frame wall |
expolinc_create_corner |
Create a corner connector |
expolinc_create_storage |
Create a storage room enclosure |
expolinc_create_door |
Add a door to an existing wall |
expolinc_build_booth |
Build a complete booth from a layout spec |
expolinc_arrange_layout |
Adjust positions of existing wall components |
expolinc_add_light_frame |
Convert a wall section to backlit |
expolinc_export_bom |
Export bill of materials (CSV/JSON/Spreadsheet) |
expolinc_export_step |
Export complete booth as STEP file |
expolinc_export_drawing |
Generate dimensioned technical drawing |
expolinc_get_component_info |
Get detailed specs for a placed component |
Tool Reference
expolinc_info
Returns available Expolinc systems, component types, and valid size options.
Parameters: None
Example:
User: "What Expolinc components are available?"
Assistant: → calls expolinc_info
Response:
{
"systems": {
"classic_frame": {
"description": "Modular aluminum frame with SEG fabric graphics",
"available_widths_mm": [500, 950, 1950, 2950, 3950, 4950],
"available_heights_mm": [2500, 3000],
"features": ["tool_free_assembly", "magnetic_connectors", "double_sided"],
"weight_kg": {"1950x2500": 14.5, "4950x2500": 25.0, ...}
},
"light_frame": {
"description": "Backlit LED frame system, integrates with Classic Frame",
"available_widths_mm": [500, 950, 1950, 2950, 3950, 4950],
"available_heights_mm": [2500, 3000],
"led_options": {"temperature_K": [2700, 3000, 4000, 5000, 6500], "brightness_lm": "500-3000"}
}
},
"accessories": ["storage_room", "door", "shelf", "bridge_connector"],
"connectors": ["90_degree", "180_inline", "T_connector"],
"transport_cases": ["basic_box", "travel_set", "standard_case_xl"]
}
expolinc_create_wall
Creates a single Expolinc wall (Classic Frame or Light Frame) at a specified position.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
width |
number | yes | — | Wall width in mm (500/950/1950/2950/3950/4950) |
height |
number | yes | — | Wall height in mm (2500/3000) |
system |
string | no | "classic_frame" |
"classic_frame" or "light_frame" |
position |
object | no | {"x":0,"y":0,"z":0} |
Wall position (mm) |
rotation |
number | no | 0 |
Rotation about Z axis in degrees |
double_sided |
boolean | no | false |
Graphic on both sides |
finish |
string | no | "silver" |
Profile finish: "silver", "white", "black" |
led_temperature |
number | no | 4000 |
LED temp in Kelvin (Light Frame only) |
led_brightness |
number | no | 1000 |
LED brightness in lumens (Light Frame only) |
Example:
User: "Create a 3950×2500mm Classic Frame wall at position x=0, y=0"
Response:
{
"success": true,
"component_id": "wall_01",
"type": "classic_frame",
"system": "classic_frame",
"width_mm": 3950,
"height_mm": 2500,
"weight_kg": 20.4,
"position": {"x": 0, "y": 0, "z": 0},
"document": "Booth_001"
}
expolinc_create_corner
Creates a corner connector.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
angle |
number | no | 90 |
Connector angle in degrees (45/90/180) |
connector_type |
string | no | "90_degree" |
"90_degree", "180_inline", "T_connector" |
position |
object | no | {"x":0,"y":0,"z":0} |
Position (mm) |
expolinc_create_storage
Creates a storage room enclosure.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
width |
number | yes | — | Room width in mm |
depth |
number | yes | — | Room depth in mm |
height |
number | no | 2500 |
Room height in mm |
has_door |
boolean | no | true |
Include door |
door_type |
string | no | "hinged" |
"hinged", "sliding" |
has_shelving |
boolean | no | false |
Include shelves |
wall_position |
string | no | "back" |
Which wall to attach to |
expolinc_create_door
Adds a door to an existing wall.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
wall_id |
string | yes | — | Component ID of the target wall |
width |
number | no | 900 |
Door width in mm |
height |
number | no | 2200 |
Door height in mm |
type |
string | no | "hinged" |
"hinged", "sliding", "pocket" |
position |
number | no | "center" |
Horizontal position along wall |
expolinc_build_booth (Main Tool)
Builds a complete trade fair booth from a layout specification. This is the primary tool for booth design.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
layout |
string | yes | — | Layout type: "inline", "corner", "peninsula", "island", "custom" |
width |
number | yes | — | Booth width in mm (inline/peninsula/island) |
depth |
number | yes | — | Booth depth in mm (inline/peninsula/island) |
height |
number | no | 2500 |
Wall height in mm |
system |
string | no | "classic_frame" |
Default wall system |
backlit_walls |
number[] | no | [] |
Wall indices to make backlit (0-indexed) |
storage_rooms |
object[] | no | [] |
Storage room configuration |
double_sided |
number[] | no | [] |
Wall indices to make double-sided |
finish |
string | no | "silver" |
Profile finish |
custom_walls |
object[] | no | — | Custom wall definitions (for custom layout) |
add_connectors |
boolean | no | true |
Auto-add connectors |
name |
string | no | "Booth" |
Document name |
Layout-specific wall generation:
| Layout | Walls Generated | Open Sides |
|---|---|---|
inline |
1 back wall + 2 partial side walls | 1 (front) |
corner |
2 walls at 90° | 2 |
peninsula |
3 walls (U-shape) | 1 (front) |
island |
4 walls (rectangle) | 0 (all sides open) |
storage_rooms format:
[
{
"wall_index": 0,
"width": 1950,
"depth": 1000,
"has_door": true,
"door_type": "hinged",
"has_shelving": true
}
]
custom_walls format (for layout="custom"):
[
{
"width": 3950,
"height": 2500,
"system": "classic_frame",
"position": {"x": 0, "y": 0, "z": 0},
"rotation": 0,
"backlit": false,
"double_sided": false
}
]
Example:
User: "Build a 6x4 meter island booth with 2.5m walls, backlit sections on the front and back, and a storage room on the right wall"
Assistant: → calls expolinc_build_booth with:
layout="island", width=6000, depth=4000, height=2500,
backlit_walls=[0, 2],
storage_rooms=[{"wall_index":1, "width":1950, "depth":1000, "has_door":true}]
Response:
{
"success": true,
"document": "Booth_Island_6x4",
"layout": "island",
"dimensions": {"width_mm": 6000, "depth_mm": 4000, "height_mm": 2500},
"walls": [
{"id": "wall_00", "width": 6000, "height": 2500, "system": "classic_frame", "backlit": true},
{"id": "wall_01", "width": 4000, "height": 2500, "system": "classic_frame", "has_storage": true},
{"id": "wall_02", "width": 6000, "height": 2500, "system": "classic_frame", "backlit": true},
{"id": "wall_03", "width": 4000, "height": 2500, "system": "classic_frame"}
],
"connectors": 4,
"components": [
{"id": "conn_00", "type": "90_degree", "between": ["wall_00", "wall_01"]},
{"id": "conn_01", "type": "90_degree", "between": ["wall_01", "wall_02"]},
{"id": "conn_02", "type": "90_degree", "between": ["wall_02", "wall_03"]},
{"id": "conn_03", "type": "90_degree", "between": ["wall_03", "wall_00"]},
{"id": "storage_00", "type": "storage_room", "attached_to": "wall_01"}
],
"bom_preview": {
"component_count": 12,
"total_weight_kg": 110.2,
"seg_area_m2": 48.5
}
}
expolinc_arrange_layout
Adjust the positions and orientations of existing components in the booth.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
positions |
object[] | yes | Array of {component_id, position: {x,y,z}, rotation} |
expolinc_add_light_frame
Converts an existing Classic Frame wall to a Light Frame (backlit) wall, replacing the graphic panel with an LED panel assembly.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
wall_id |
string | yes | — | ID of the wall to convert |
led_temperature |
number | no | 4000 |
LED temperature in Kelvin |
led_brightness |
number | no | 1000 |
Brightness in lumens |
expolinc_export_bom
Exports the bill of materials for the current booth design.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
format |
string | no | "json" |
Output format: "json", "csv", "spreadsheet" |
filepath |
string | no | — | Optional file path for CSV/JSON output |
Response (JSON format):
{
"project": "Booth_Island_6x4",
"layout": "island",
"dimensions": {"width_mm": 6000, "depth_mm": 4000, "height_mm": 2500},
"components": [
{"component": "Classic Frame Wall 6000×2500mm", "system": "classic_frame", "qty": 2, "weight_kg": 30.0, "total_kg": 60.0},
{"component": "Classic Frame Wall 4000×2500mm", "system": "classic_frame", "qty": 2, "weight_kg": 22.0, "total_kg": 44.0},
{"component": "Light Frame Conversion 6000×2500mm", "system": "light_frame", "qty": 2, "weight_kg": 5.0, "total_kg": 10.0},
{"component": "90° Corner Connector", "system": "connector", "qty": 4, "weight_kg": 1.5, "total_kg": 6.0},
{"component": "Support Feet (pair)", "system": "accessory", "qty": 8, "weight_kg": 0.8, "total_kg": 6.4},
{"component": "Storage Room 1950×1000×2500mm", "system": "accessory", "qty": 1, "weight_kg": 35.0, "total_kg": 35.0}
],
"totals": {
"component_count": 19,
"total_weight_kg": 161.4,
"seg_area_m2": 48.0,
"walls_light_frame": 2,
"transport_cases": [
{"type": "Standard Case XL", "quantity": 3}
],
"estimated_setup_time_minutes": 45
}
}
expolinc_export_step
Exports the complete booth assembly as a STEP file.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
filepath |
string | yes | Output file path (absolute or relative) |
expolinc_export_drawing
Generates a dimensioned technical drawing using FreeCAD's TechDraw workbench.
Parameters:
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
format |
string | no | "pdf" |
Output format: "pdf", "svg" |
filepath |
string | yes | — | Output file path |
views |
string[] | no | ["front","top","right","isometric"] |
Views to include |
include_dimensions |
boolean | no | true |
Include dimension annotations |
expolinc_get_component_info
Returns detailed specifications and metadata for a placed component.
Parameters:
| Parameter | Type | Required | Description |
|---|---|---|---|
component_id |
string | yes | ID of the component to inspect |
Built-in Tools (from freecad-mcp)
The following built-in tools are especially useful when working with Expolinc booths:
| Module | Key Tools |
|---|---|
| Document | New, open, save, close, list objects |
| Import/Export | STEP, STL, OBJ, DXF, IFC import/export |
| BIM | Walls, slabs (for flooring), spaces (for volume calculation) |
| TechDraw | Drawing pages, views, dimensions, SVG/PDF export |
| Spreadsheet | Create, set cells, formulas (for BOM data) |
| Part | Move, rotate, copy, mirror (for manual adjustment) |
Error Handling
All Expolinc tools return structured error responses:
{
"success": false,
"error": "VALIDATION_ERROR",
"message": "Invalid wall width: 5000mm. Valid widths: 500, 950, 1950, 2950, 3950, 4950mm",
"details": {
"field": "width",
"value": 5000,
"allowed_values": [500, 950, 1950, 2950, 3950, 4950]
}
}