devmaker.net
start/ 3d-druck/ freecad-per-ki-steuern-robust-mcp-bridge-claude
3D Druck

FreeCAD per KI steuern: Robust MCP Bridge mit Claude

CAD per Sprache statt Maus? Mit dem Robust MCP Bridge Server hängt FreeCAD direkt an Claude Code – die KI legt Bodies an, baut Sketches und schneidet Gewinde. Ich habe das Ding unter Linux installiert, an meinen Claude-Code-Workflow geklemmt und drei Teile modellieren lassen, darunter eine druckbare Schraube mit Mutter. Hier zeige ich Setup, die XML-RPC-Bridge und wo es wirklich rund läuft – und wo nicht.

Harry_im_Homelab31 (Portrait)
Harald
2026-06-24 · ~8 Min. Lesezeit
FreeCAD per KI steuern: Robust MCP Bridge mit Claude

Warum CAD per KI?

Ich bin bei „KI macht jetzt CAD" erstmal skeptisch – CAD lebt von präzisen Maßen, nicht von Wortwolken. Aber das Robust MCP Bridge-Setup verbindet FreeCAD über das Model Context Protocol direkt mit Claude Code. Damit kann die KI nicht nur über Geometrie reden, sondern sie tatsächlich bauen: Bodies anlegen, Sketches zeichnen, Booleans schneiden, exportieren. Ich habe es installiert und an einem konkreten Auftrag getestet – inklusive einer druckbaren Schraube mit passender Mutter.

Die Architektur: zwei Komponenten

Das Setup besteht aus zwei Teilen, die man nicht verwechseln darf:

  • MCP-Server (freecad-robust-mcp von PyPI) – die Brücke zwischen Claude und FreeCAD. Läuft als eigener Prozess.
  • Workbench/Addon („Robust MCP Bridge") – läuft innerhalb von FreeCAD und stellt die Verbindung per XML-RPC auf Port 9875 bereit.

Claude redet also mit dem MCP-Server, der MCP-Server redet per XML-RPC mit der Workbench, die Workbench fasst FreeCAD an. Klingt nach viel Kette – ist aber genau die Trennung, die das Ding stabil macht.

Installation unter Linux

Den MCP-Server habe ich per pipx unter Python 3.11 installiert. Die Version ist nicht optional: FreeCADs ABI verlangt sie, mit 3.12+ knallt es. Danach beim Claude-CLI registrieren – User-Scope, XML-RPC-Modus:

bash
# MCP-Server via pipx unter Python 3.11 (ABI-Kompatibilität mit FreeCAD)
pipx install --python python3.11 freecad-robust-mcp

# Beim Claude-CLI registrieren (User-Scope, XML-RPC-Modus)
claude mcp add freecad --scope user --env FREECAD_MODE=xmlrpc

Wichtig: MCP-Server werden nur beim Start von Claude Code geladen. Nach der Registrierung war ein Neustart nötig, sonst taucht das freecad-Tool nicht auf.

Drei Stolpersteine – und die Fixes

Bis die Verbindung stand, lagen drei typische Fallen im Weg – allesamt nicht der KI-Teil, sondern FreeCAD-Eigenheiten:

  • „Failed to connect": Server 0.6.1 baut beim Start sofort eine Verbindung zu FreeCAD auf – die lief aber noch nicht. Lösung: Reihenfolge umdrehen, erst die Bridge in FreeCAD starten, dann Claude/den Server.
  • Addon nicht im Addon-Manager: Im offiziellen Katalog (noch) nicht gelistet. Lösung: Repo manuell per git clone in den Mod-Ordner.
  • Workbench taucht trotzdem nicht auf: FreeCAD 1.1 nutzt ein versioniertes Datenverzeichnis – …/data/FreeCAD/v1-1/Mod/ statt des alten …/data/FreeCAD/Mod/. Lösung: Addon in den korrekten, versionierten Ordner verschieben.

Die Fehlersuche lief komplett headless: FreeCAD per QT_QPA_PLATFORM=offscreen gestartet und über ein Diagnose-Skript FreeCADGui.listWorkbenches() abgefragt, bis die FreecadRobustMCPBridgeWorkbench in der Liste erschien.

bash
# Diagnose: FreeCAD headless starten und Workbenches auflisten
QT_QPA_PLATFORM=offscreen freecadcmd -c \
  "import FreeCADGui; print(list(FreeCADGui.listWorkbenches()))"

# Addon manuell holen und ins VERSIONIERTE Mod-Verzeichnis von FreeCAD 1.1 legen
git clone https://github.com/spkane/freecad-addon-robust-mcp-server
# -> nach …/data/FreeCAD/v1-1/Mod/ verschieben (nicht …/data/FreeCAD/Mod/)

Verbindung steht: 150+ Tools

Danach meldete der Server connected: true, Modus xmlrpc, FreeCAD 1.1.1 – und Claude hatte Zugriff auf über 150 Tools: Primitive, PartDesign, Boolean-Operationen, Sketcher, Export und sogar direkte Python-Ausführung in FreeCAD. Ab hier wird es interessant.

Was Claude tatsächlich gebaut hat

Kein Spielzeug-Würfel – drei echte Teile, jedes mit anderem Anspruch:

1. Parametrische Click-Box

Ein kleiner Behälter mit Schnappdeckel. Der Clou: Alle Maße hängen an einer Spreadsheet-Tabelle Param – also echte FreeCAD-Parametrik. Die Snap-Mechanik ist eine umlaufende Rastnut in der Innenwand plus Rastwulst an einer federnden Deckelschürze (0,2 mm Spiel, 0,7 mm Eingriff), aufgebaut aus Primitiven und Boolean-Operationen (Box / Cut / Fuse).

Wie gut die Parametrik wirklich trägt, habe ich direkt ausprobiert: ursprünglich als 20×20×40 mm gebaut, dann in der Param-Tabelle auf 40×40×40 mm geändert – ein Wert angepasst, Recompute, und Box samt Deckel ziehen sauber mit. Genau dafür baut man parametrisch.

param_box
Die parametrische Click-Box in FreeCAD: Wandstärken und Snap-Geometrie hängen an einer Spreadsheet-Tabelle – Maß ändern, Recompute, fertig.

2. Schraube + Mutter mit echtem Gewinde

Hier wird es ernst: ein echtes Gewinde über Part.makeHelix plus Profil-Sweep (makePipeShell entlang der Helix) – der einzig saubere Weg für Gewindeflanken, mit reinen Primitiven nicht machbar. Trapezgewinde, Ø20 mm, Steigung 5 mm, 6 Gänge; Sechskantkopf und -mutter per Boolean-Cut. Und das Wichtigste für den 3D-Druck: schraubbar dank Spiel – das Mutterngewinde wurde gegenüber dem Schraubengewinde um 0,4 mm radial vergrößert, damit es FDM-tauglich bleibt.

3. Verfeinerungen auf Zuruf

Nachschärfen ging im Dialog: 45°-Anlauffase am Schraubenende plus beidseitige Senkung, dazu 0,5 mm Fase an allen Sechskant-Kanten (oben, unten, Ecken). Genau das Klein-Klein, das ein gedrucktes Teil erst benutzbar macht.

Methodik: zwei CAD-Paradigmen

Spannend war, dass Claude bewusst zwei Modellier-Wege gemischt hat: Primitive + Boolean (robust für rechtwinklige Teile wie die Box) und Helix + Sweep/Extrusion (nötig für Gewinde). Der dritte klassische Weg – Skizze + Extrusion über PartDesign – stand als Option im Raum, wurde hier aber nicht gebraucht. Die KI wählt also das Paradigma passend zur Geometrie, statt alles in ein Schema zu pressen.

Bei mir läuft der ganze Stack übrigens headless auf einem kleinen, sparsamen Linux-Mini-PC im Homelab – FreeCAD im Offscreen-Modus, Claude Code daneben. Für genau solche Dauerläufer nutze ich einen Beelink:

Workflow & Verifikation

Jeder Schritt lief verifiziert statt blind: nach dem Bauen Shape.isValid() und ein Solid-Check, dann ein Screenshot per saveImage() zur visuellen Kontrolle. Das eingebaute Screenshot-Tool des Addons hatte einen Bug – umgangen über den direkten FreeCAD-Aufruf. Am Ende als druckfertige .stl exportiert und in ~/3D_Printing/ abgelegt:

text
ClickBox.FCStd
ClickBox_Body.stl
ClickBox_Lid.stl
ScrewNut.FCStd
Screw_M20coarse.stl
Nut_M20coarse.stl

Die FreeCAD-Quelldateien zum Reinschauen, Anpassen und Selberdrucken – die Param-Tabelle der Box lässt sich direkt verändern:

ClickBox.FCStd

FreeCAD-Quelldatei der parametrischen Click-Box (inkl. Param-Tabelle).

FCStd herunterladen (36,6 KB) FCSTD
Dateinanme: ClickBox.FCStd

ScrewNut.FCStd

FreeCAD-Quelldatei von Schraube + Mutter (Trapezgewinde via Helix-Sweep).

FCStd herunterladen (277,0 KB) FCSTD
Dateinanme: ScrewNut.FCStd

Drucktest: Passt die Mutter?

Screw & Nut
Frisch vom Druckbett (PETG, blau): Schraube mit Sechskantkopf und die separate Mutter – direkt nach dem FDM-Druck.

Und der Moment der Wahrheit: Die Mutter lässt sich sehr gut auf die Schraube aufschrauben – super Sitz, nicht zu fest und nicht zu locker. Die 0,4 mm radiales Spiel am Gewinde waren für FDM goldrichtig.

Screw & Nut mounted
Mutter aufgeschraubt: Das Trapezgewinde greift sauber – gut zu sehen ist aber, dass der Sechskant der Mutter etwas breiter ist als der der Schraube.

Ein ehrlicher Schönheitsfehler: Der Sechskant der Mutter (Schlüsselweite 32 mm) ist etwas breiter als der der Schraube (30 mm). Der Grund ist lehrreich – ich hatte für die Schlüsselweiten keine Maße vorgegeben, also hat die KI zwei leicht unterschiedliche gewählt. Genau das ist die Lektion: Die KI baut präzise, aber nur das, was man spezifiziert. Wäre mir das vor dem Druck aufgefallen, hätte ein einziger weiterer Prompt die beiden Schlüsselweiten im Handumdrehen angeglichen.

Lessons Learned & Fazit

Ehrlich überrascht: Es hat erstaunlich gut geklappt. Bemerkenswert ist, wo die Reibung lag – nämlich nicht beim KI-Teil, sondern bei FreeCAD-Eigenheiten (Verbindungsreihenfolge, versioniertes Mod-Verzeichnis, Screenshot-Bug). Hat man die einmal verstanden, modelliert die KI erstaunlich zielsicher, inklusive sauberer Gewinde und druckgerechter Toleranzen.

Ein paar Caveats bleiben: Der embedded-Modus crasht auf macOS/Windows (Library-Linking), XML-RPC ist der stabile Weg; Screenshots gibt es nur im GUI-Modus. Für Linux-Nutzer ist das aber kein Beinbruch.

Unterm Strich: ein erstaunlich brauchbarer Workflow. Die KI übernimmt das stumpfe Geometrie-Klicken, der Mensch gibt Maße, Toleranzen und das letzte Wort – so wie beim Sechskant oben. Für schnelle, parametrische Teile direkt aus dem Dialog heraus ist das ab sofort fester Teil meiner Werkstatt.

// verwandte beiträge

> echo "your thoughts" >> freecad-per-ki-steuern-robust-mcp-bridge-claude.responses

Schreibe einen Kommentar

Wird für die Bestätigung benötigt