3d-auto-fabrik

Orchestre les serveurs MCP mcp-cura et mcp-moonraker pour qu'un agent puisse superviser l'impression 3D d'un modèle CAO jusqu'à l'impression supervisée sur Klipper/Moonraker : inspection, réparation, tranchage, vérification G-code, transfert, démarrage et surveillance en direct.

Qu'est-ce que 3d-auto-fabrik ?

Ce skill (3d-auto-fabrik) agit comme un orchestrateur entre les deux serveurs MCP dédiés à l'impression 3D : **mcp-cura** (gère le maillage, le tranchage et la génération de G-code) et **mcp-moonraker** (contrôle l'imprimante Klipper/Moonraker). Il permet à un agent IA de réaliser un workflow complet : importation du fichier STL/3MF, inspection et réparation du maillage, résolution des profils CuraEngine, tranchage, vérification de sécurité du G-code, transfert vers l'imprimante, démarrage et supervision de l'impression, avec gestion des pauses/reprises et de la file d'attente. Le skill impose des règles de sécurité strictes : aucune action à haut risque (démarrage, annulation, transfert) sans approbation explicite de l'utilisateur, vérification obligatoire du G-code avant impression, et respect des limites de sécurité locales (température, mode lecture seule). Il est conçu pour les plateformes supportant les serveurs MCP (Claude Code, Cursor, Codex) et exploite les outils d'approbation intégrés (approval mode) pour chaque étape critique. L'objectif est d'automatiser la boucle 'maillage → G-code → impression' tout en laissant le contrôle final à l'utilisateur pour les décisions risquées.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/martinsgmx/agent-skill-3d-auto-fabrik/tree/HEAD/skills/3d-auto-fabrik

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait 3d-auto-fabrik ?

Orchestrateur pour mcp-cura (maillage → tranchage → G-code) et mcp-moonraker (état de l'imprimante → impression). Les deux serveurs ne se connaissent pas délibérément : mcp-cura ne contacte jamais l'imprimante, et mcp-moonraker ne tranche jamais. Ce skill est le lien. Les fichiers transitent entre eux uniquement via un transfert explicite, soumis à approbation.

Règles non-négociables — à lire avant de toucher au matériel

Ces règles existent car une imprimante 3D est un radiateur, un moteur et une buse tranchante. La friction est intentionnelle.

  1. Ne jamais confirmer une action préparée à haut risque pour le compte de l'utilisateur. moonraker_print_start, moonraker_print_cancel, moonraker_run_macro, cura_artifact_export, moonraker_file_delete et autres renvoient d'abord une invite d'approbation. Votre travail consiste à présenter cette invite, clairement et honnêtement, et à attendre. Ce n'est qu'après que l'utilisateur a explicitement approuvé (dans le chat, ou en exécutant mcp-moonraker approve <id> / mcp-cura approve <id> en dehors du canal) que vous pouvez appeler l'outil *_confirm_action correspondant. N'inventez, ne réutilisez et ne paraphrasez jamais d'ID d'approbation ou de phrases de confirmation.
  2. Ne jamais sauter la vérification par souci d'efficacité. cura_gcode_verify avant toute impression, moonraker_verify_connection avant toute action sur l'imprimante, moonraker_files_list + moonraker_file_metadata après tout transfert.
  3. moonraker_emergency_stop est le seul levier sans passerelle. Utilisez-le uniquement en cas de problème physique immédiat (fumée, grincement, buse traînant sur la pièce, collision d'axes). Pour « arrêter le chauffage » en dehors d'une urgence, utilisez moonraker_turn_off_heaters — réversible et sans passerelle.
  4. Respectez la politique de sécurité locale. Les limites de température, le mode lecture seule, allow_raw_gcode, allow_host_admin sont définis par l'utilisateur à dessein. Si un outil refuse, transmettez le refus et sa raison. Ne reformulez pas l'appel, n'activez pas le drapeau et ne cherchez pas un autre outil qui fait la même chose.
  5. En cas de doute, arrêtez-vous et demandez. Une imprimante en pause gaspille un peu d'électricité ; une impression erronée gaspille des heures et du filament ; une passerelle contournée peut brûler une maison. L'utilisateur est toujours joignable — demandez.

Pré-vol — chaque session qui touche au matériel

  1. mcp-cura doctor et mcp-moonraker doctor (diagnostics locaux, lecture seule).
  2. moonraker_verify_connection — connecté ? latence ? Klipper prêt, occupé ou arrêté ?
  3. cura_policy_info et moonraker_policy_info — apprenez les limites actives (limites de température, mode d'approbation, commutateurs lecture seule) avant de planifier une mutation.
  4. moonraker_server_info — confirmez que Klipper est ready, pas en shutdown ou occupé par un autre travail.
  5. Établissez le plan avec l'utilisateur : quelle imprimante, quel matériau, quelle buse, quelle qualité, quel fichier, combien d'exemplaires, où sur le plateau. Ne devinez pas.

Si un serveur est manquant ou ne se connecte pas, dites-le et dirigez l'utilisateur vers références/dépannage.md. Ne modifiez pas les configurations, n'installez pas de paquets et n'utilisez pas --force quoi que ce soit juste pour valider une vérification.

Le pipeline

Travaillez étape par étape. Faites un bref rapport après chaque étape et faites une pause pour l'utilisateur à chaque fois qu'une passerelle l'exige.

Étape 0 — Planification. Résumez le travail en un paragraphe (fichier, imprimante, matériau, buse, profil, exemplaires, placement). Obtenez le feu vert.

Étape 1 — Importation. cura_artifact_import avec un chemin absolu sous les racines d'import configurées (~/Downloads, ~/Documents, ~/Desktop, ~/models par défaut) — ou avec le paramètre data en base64 pour un fichier hors des racines. Les racines confinent les chemins de fichiers ; le chemin data est le canal propre au serveur pour les octets fournis par le client, pas un contournement, et ne nécessite aucun changement de politique. Si une importation par chemin est refusée, réimportez les mêmes octets via data (l'adressage par contenu renvoie le même artifact_id) au lieu de réduire le travail à « je ne peux pas vous aider ». Enregistrez l'artifact_id renvoyé — chaque étape ultérieure y fait référence.

Étape 2 — Inspection et réparation. cura_mesh_inspect (limites en mm, nombre de triangles, étanchéité, volume, triangles dégénérés). Ensuite, selon les besoins :

  • orientation / placement / mise à l'échelle → cura_mesh_transform (échelle → rotation → translation, puis center_on_bed)
  • surface non-manifold ou irrégulière → cura_mesh_remesh avec une voxel_size, ou cura_mesh_offset pour gonfler/rétracter un maillage fermé
  • plusieurs pièces en une seule impression → cura_mesh_merge (soupe de triangles) ou cura_mesh_boolean (une véritable union/soustraction — basée sur voxel)
  • trop de triangles → cura_mesh_decimate vers target_triangles

Inspectez à nouveau après chaque réparation et citez les chiffres. Les opérations de maillage à risque moyen sont soumises à la politique mais ne nécessitent pas d'approbation ; montrez néanmoins à l'utilisateur ce qui a changé.

Étape 3 — Résolution et vérification du profil. cura_profile_list pour trouver les définitions et les profils de qualité, puis cura_profile_resolve (définition + qualité + matériau + variante + intention). Lisez les avertissements : les expressions Cura qu'il ne peut pas évaluer, les violations dures de température. Ensuite cura_profile_verify — les erreurs doivent être nulles avant de trancher. Si ce n'est pas le cas, corrigez le profil (ou choisissez-en un autre) et expliquez pourquoi. Ne trancher jamais contre une vérification échouée.

Étape 4 — Tranchage. cura_slice(model_artifact_ids=[…], definition, quality, material, variant, intent, overrides?, name, wait=true, wait_timeout_secs). Respectez max_concurrent_jobs (par défaut 2). Interrogez avec cura_slice_status ; cura_slice_wait pour les travaux courts ; cura_slice_cancel uniquement pour les travaux en file d'attente/en cours. Si le tranchage échoue, cura_slice_status contient la fin du journal du moteur — citez l'erreur réelle.

Étape 5 — Révision du G-code. Sur l'artefact G-code renvoyé par le tranchage :

  • cura_gcode_inspect — temps estimé, filament, nombre de couches, plage Z, températures max, commandes suspectes.
  • cura_gcode_verify — commandes dangereuses, températures vs. politique locale, arrêt de chauffage manquant / désactivation des moteurs / métadonnées.
  • Si quelque chose manque, cura_gcode_prepare crée un nouvel artefact avec une séquence d'arrêt sûre (ou une séquence de fin complète). Lorsque vous l'utilisez, utilisez l'ID du nouvel artefact — l'original reste intact.

Ensuite montrez le résumé à l'utilisateur — temps, filament, température la plus élevée, résultat de la vérification — et obtenez une confirmation explicite avant l'étape 6. C'est la dernière occasion peu coûteuse d'abandonner.

Étape 6 — Transfert vers l'imprimante. L'artefact G-code doit exister dans la racine gcodes de l'imprimante. Les serveurs MCP n'exposent pas d'outil de téléchargement ; les chemins pris en charge sont :

  • cura_artifact_export vers une racine d'exportation que l'imprimante peut lire (un partage monté/une clé USB que l'imprimante surveille), ou
  • l'utilisateur copie lui-même le fichier (interface Web, SCP, le partage), ou
  • si — et seulement si — l'utilisateur le demande explicitement, le point de terminaison de téléchargement HTTP Moonraker comme un cas unique clairement journalisé.

Avant de toucher à l'imprimante, confirmez que le fichier est arrivé : moonraker_files_list (racine gcodes) et moonraker_file_metadata — le temps estimé et le filament doivent correspondre à la sortie Cura.

Étape 7 — Impression. Avant moonraker_print_start :

  • moonraker_printer_status montre Klipper prêt et inactif, pas arrêté ni occupé ; moonraker_temperatures montre des lectures ambiantes raisonnables.
  • Le plateau est propre, la bonne plaque, le bon matériau chargé, la porte fermée — demandez à l'utilisateur ; vous ne pouvez pas le voir.
  • L'utilisateur confirme le nom exact du fichier. moonraker_print_start prépare une action à haut risque ; relayez l'invite d'approbation et attendez l'approbation, puis moonraker_confirm_action avec la phrase et acknowledge=true.

Pendant l'impression : interrogez moonraker_printer_status et moonraker_temperatures ; utilisez moonraker_camera_snapshot pour un contrôle visuel quand quelque chose semble anormal ; moonraker_gcode_history quand des commandes échouent. Pour mettre l'impression en pause pour inspection, utilisez moonraker_print_pause → inspection → moonraker_print_resume. Pour abandonner, moonraker_print_cancel (haut risque, double confirmation) — uniquement lorsque l'utilisateur le demande. Ensuite, moonraker_print_history enregistre le résultat.

Post-impression. Les radiateurs doivent être éteints (la séquence de fin le fait — vérifiez avec moonraker_temperatures). Rappelez à l'utilisateur de nettoyer le plateau. Si l'utilisateur souhaite nettoyer les artefacts, listez-les (cura_artifact_list) et ne supprimez qu'avec confirmation explicite — cura_artifact_delete est à haut risque.

Approbations en un mot

Les modes d'approbation (in_band, out_of_band, both) sont configurés par serveur dans [approval]. Dans chaque mode, une action préparée = une approval_id = une phrase de confirmation à usage unique avec une courte TTL (120 s par défaut). L'outil et les arguments stockés de l'appel de préparation sont ce qui s'exécute ; les arguments donnés à *_confirm_action sont décoratifs. *_pending_approvals répertorie ce qui attend ; moonraker_cancel_approval / mcp-cura deny <id> annule une action avant qu'elle ne s'exécute. Protocole complet : références/approbations-sécurité.md.

Référence rapide — où en savoir plus

L'installation et l'enregistrement de la compétence MCP par plateforme se trouvent dans la documentation du dépôt (docs/plateformes.md), pas dans cette compétence — chargez-les lorsque l'utilisateur demande la configuration.

Quand ne pas utiliser cette compétence

Concevoir ou réparer manuellement la géométrie CAD/STL (utilisez un outil de modélisation), éditer printer.cfg ou les inclusions Klipper (l'administration hôte et l'écriture de configuration sont désactivées par défaut — et doivent le rester), ou tout ce qui implique des redémarrages de l'hôte, des redémarrages du micrologiciel ou du G-code brut que l'utilisateur n'a pas explicitement activé. Dites-le et arrêtez-vous.

Skills associés