77eb5379d2
MCP server that lets Claude generate and render OpenSCAD models to STL files. Includes setup documentation and installation guide. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
67 lines
1.7 KiB
Markdown
67 lines
1.7 KiB
Markdown
# OpenSCAD MCP Server
|
|
|
|
LLM-gestützte 3D-Modell-Erstellung für den 3D-Drucker via Claude Code.
|
|
|
|
## Setup
|
|
|
|
### 1. OpenSCAD installieren
|
|
https://openscad.org/downloads.html → Windows-Installer
|
|
|
|
### 2. Python-Abhängigkeiten
|
|
```bash
|
|
pip install mcp
|
|
```
|
|
|
|
### 3. MCP-Server in Claude Code registrieren
|
|
|
|
In Claude Code: **Settings → MCP Servers → Add** (oder direkt in `~/.claude/claude_desktop_config.json`):
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"openscad": {
|
|
"command": "python",
|
|
"args": ["C:/Users/thors/Documents/Claude/openscad-mcp/server.py"]
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
### Umgebungsvariablen (optional)
|
|
| Variable | Standard | Beschreibung |
|
|
|----------|----------|--------------|
|
|
| `OPENSCAD_PATH` | `C:\Program Files\OpenSCAD\openscad.exe` | Pfad zur OpenSCAD-Executable |
|
|
| `OPENSCAD_OUTPUT_DIR` | `~/3d-models` | Ausgabeverzeichnis für STL-Dateien |
|
|
|
|
## Verfügbare Tools
|
|
|
|
| Tool | Beschreibung |
|
|
|------|--------------|
|
|
| `render_stl(code, filename)` | OpenSCAD-Code → STL-Datei |
|
|
| `preview_png(code, filename)` | OpenSCAD-Code → PNG-Vorschau |
|
|
| `list_models()` | Alle STL-Dateien auflisten |
|
|
|
|
## Beispiel-Prompt für Claude
|
|
|
|
```
|
|
Erstelle einen Wandhalter für einen 32mm Rohrdurchmesser,
|
|
Wandstärke 3mm, mit 2 Schraubenlöchern (M4), Gesamtbreite 60mm.
|
|
Rendere es als "rohrhalter.stl".
|
|
```
|
|
|
|
## OpenSCAD Tipps für LLMs
|
|
|
|
Claude generiert typisch solchen Code:
|
|
```openscad
|
|
difference() {
|
|
union() {
|
|
cylinder(h=20, d=40);
|
|
translate([0,0,10]) cube([60,10,20], center=true);
|
|
}
|
|
cylinder(h=22, d=32, center=true); // Loch für Rohr
|
|
// Schraubenlöcher
|
|
translate([20,0,0]) cylinder(h=22, d=4.5, center=true);
|
|
translate([-20,0,0]) cylinder(h=22, d=4.5, center=true);
|
|
}
|
|
```
|