An MCP (Model Context Protocol) server that enables LLMs to create and manipulate 3D models using OpenSCAD.
OpenSCAD's code-based CSG (Constructive Solid Geometry) approach is ideal for LLM integration:
- Text-based: Models are defined in code, not GUI interactions
- Deterministic: Same code always produces same geometry
- Composable: CSG operations (union, difference, hull) map naturally to how LLMs describe shapes
- Parametric: Easy to create adjustable designs
| Tool | Description |
|---|---|
openscad_create_model |
Create a new .scad model file |
openscad_update_model |
Update existing model code |
openscad_get_model |
Retrieve model source code |
openscad_list_models |
List all models in workspace |
openscad_delete_model |
Delete a model |
openscad_render_preview |
Generate PNG preview image |
openscad_render_code |
Render code directly without saving |
openscad_export |
Export to STL, 3MF, AMF, etc. |
openscad_get_info |
Get OpenSCAD version and config |
-
OpenSCAD must be installed. Default path:
C:\Program Files\OpenSCAD\openscad.exe- Download from: https://openscad.org/downloads.html
-
Python 3.10+ with pip
cd openscad-mcp
pip install -e .Add to your Claude Desktop config (%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"openscad": {
"command": "openscad-mcp"
}
}
}Or if you installed in development mode and want to specify the path:
{
"mcpServers": {
"openscad": {
"command": "python",
"args": ["-m", "openscad_mcp.server"]
}
}
}cube([20, 20, 20], center=true);$fn = 32;
minkowski() {
cube([20, 20, 10], center=true);
sphere(r=2);
}$fn = 64;
difference() {
cylinder(h=30, r=15);
translate([0, 0, -1])
cylinder(h=32, r=12);
}// Parameters
wall_thickness = 2;
inner_diameter = 30;
height = 50;
$fn = 64;
difference() {
cylinder(h=height, d=inner_diameter + wall_thickness*2);
translate([0, 0, wall_thickness])
cylinder(h=height, d=inner_diameter);
}Models are stored in ./workspace/ relative to the server. The workspace is created automatically on first run.
- STL: Standard format for 3D printing
- 3MF: Modern 3D printing format with materials support
- AMF: Additive Manufacturing File Format
- OFF: Object File Format
- DXF/SVG: 2D exports for laser cutting, etc.
- PNG: Rendered images
Preview renders support camera positioning:
-
Rotation mode:
translate_x,translate_y,translate_z,rot_x,rot_y,rot_z,distance- Example:
"0,0,0,45,0,30,200"- view from 45° elevation, 30° rotation
- Example:
-
Eye/center mode:
eye_x,eye_y,eye_z,center_x,center_y,center_z- Example:
"100,100,100,0,0,0"- camera at (100,100,100) looking at origin
- Example:
# Install dev dependencies
pip install -e ".[dev]"
# Run directly
python -m openscad_mcp.serverMIT