openscad-mcp
OpenSCAD MCP Server
An MCP (Model Context Protocol) server that enables LLMs to create and manipulate 3D models using OpenSCAD.
Why 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
Features
Tool | Description |
| Create a new .scad model file |
| Update existing model code |
| Retrieve model source code |
| List all models in workspace |
| Delete a model |
| Generate PNG preview image |
| Render code directly without saving |
| Export to STL, 3MF, AMF, etc. |
| Get OpenSCAD version and config |
Installation
Prerequisites
OpenSCAD must be installed. Default path:
C:\Program Files\OpenSCAD\openscad.exeDownload from: https://openscad.org/downloads.html
Python 3.10+ with pip
Install the MCP Server
cd openscad-mcp
pip install -e .Configure Claude Desktop
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"]
}
}
}Usage Examples
Simple Cube
cube([20, 20, 20], center=true);Rounded Box
$fn = 32;
minkowski() {
cube([20, 20, 10], center=true);
sphere(r=2);
}Hollow Cylinder
$fn = 64;
difference() {
cylinder(h=30, r=15);
translate([0, 0, -1])
cylinder(h=32, r=12);
}Parametric Design
// 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);
}Workspace
Models are stored in ./workspace/ relative to the server. The workspace is created automatically on first run.
Export Formats
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
Camera Control
Preview renders support camera positioning:
Rotation mode:
translate_x,translate_y,translate_z,rot_x,rot_y,rot_z,distanceExample:
"0,0,0,45,0,30,200"- view from 45° elevation, 30° rotation
Eye/center mode:
eye_x,eye_y,eye_z,center_x,center_y,center_zExample:
"100,100,100,0,0,0"- camera at (100,100,100) looking at origin
Development
# Install dev dependencies
pip install -e ".[dev]"
# Run directly
python -m openscad_mcp.serverLicense
MIT