¿Qué hace 3d-auto-fabrik?
Orquestador para mcp-cura (malla → laminado → G-code) y mcp-moonraker (estado de la impresora → impresión). Los dos servidores deliberadamente no se conocen entre sí: mcp-cura nunca contacta a la impresora, y mcp-moonraker nunca lamina. Esta habilidad es el pegamento. Los archivos se mueven entre ellos solo a través de una transferencia explícita y controlada por aprobación.
Reglas no negociables — leer antes de tocar el hardware
Estas reglas existen porque una impresora 3D es un calentador, un motor y una boquilla afilada. La fricción es el objetivo.
- Nunca confirmes una acción preparada de alto riesgo en nombre del usuario.
moonraker_print_start,moonraker_print_cancel,moonraker_run_macro,cura_artifact_export,moonraker_file_deletey similares devuelven una solicitud de aprobación primero. Tu trabajo es presentar esa solicitud, de forma clara y honesta, y esperar. Solo después de que el usuario apruebe explícitamente (en el chat, o ejecutandomcp-moonraker approve <id>/mcp-cura approve <id>fuera de banda) podrás llamar a la herramienta*_confirm_actioncorrespondiente. Nunca inventes, reutilices o parafrasees identificadores de aprobación o frases de confirmación. - Nunca omitas la verificación para ser útil.
cura_gcode_verifyantes de cualquier impresión,moonraker_verify_connectionantes de cualquier acción en la impresora,moonraker_files_list+moonraker_file_metadatadespués de cualquier transferencia. moonraker_emergency_stopes la única palanca sin compuerta. Úsala solo cuando algo esté físicamente mal ahora mismo (humo, rechinido, boquilla arrastrándose a través de la pieza, ejes chocando). Para "detener el calentamiento" fuera de una emergencia, usamoonraker_turn_off_heaters— reversible y sin compuerta.- Mantente dentro de la política de seguridad local. Los límites de
temperatura, el modo de solo lectura,
allow_raw_gcode,allow_host_adminson establecidos por el usuario a propósito. Si una herramienta se niega, transmite la negativa y su razón. No reformules la llamada, habilites la bandera, ni busques otra herramienta que haga lo mismo. - Ante la duda, detente y pregunta. Una impresora en pausa desperdicia un poco de electricidad; una impresión incorrecta desperdicia horas y filamento; una compuerta omitida puede quemar una casa. El usuario siempre está disponible — pregunta.
Verificación previa — cada sesión que toque el hardware
mcp-cura doctorymcp-moonraker doctor(diagnósticos locales, de solo lectura).moonraker_verify_connection— ¿conectado? ¿latencia? Klipper listo, ocupado o apagado.cura_policy_infoymoonraker_policy_info— conoce los límites activos (límites de temperatura, modo de aprobación, interruptores de solo lectura) antes de planificar una mutación.moonraker_server_info— confirma que Klipper estáready, noshutdownni ocupado con otro trabajo.- Acuerda el plan con el usuario: qué impresora, qué material, qué boquilla, qué calidad, qué archivo, cuántas copias, dónde en la cama. No adivines.
Si un servidor falta o no se conecta, dilo y dirige al usuario a
references/troubleshooting.md. No edites
configuraciones, instales paquetes, ni ejecutes algo con --force solo para
que una verificación pase.
El flujo de trabajo
Trabaja etapa por etapa. Informa brevemente después de cada etapa y pausa para el usuario cada vez que una compuerta lo requiera.
Etapa 0 — Plan. Resume el trabajo en un párrafo (archivo, impresora, material, boquilla, perfil, copias, colocación). Obtén la autorización.
Etapa 1 — Importar. cura_artifact_import con una ruta absoluta dentro de
las raíces de importación configuradas (~/Downloads, ~/Documents,
~/Desktop, ~/models por defecto) — o con el parámetro data en base64
para un archivo fuera de las raíces. Las raíces confinan las rutas del sistema
de archivos; la ruta data es el propio canal compatible del servidor para
bytes proporcionados por el cliente, no una omisión, y no necesita cambios de
política. Si una importación de ruta es rechazada, vuelve a importar los mismos
bytes a través de data (el direccionamiento de contenido devuelve el mismo
artifact_id) en lugar de reducir el trabajo a "no puedo ayudar". Registra el
artifact_id devuelto — cada paso posterior lo referencia.
Etapa 2 — Inspeccionar y reparar. cura_mesh_inspect (límites en mm,
conteo de triángulos, hermeticidad, volumen, triángulos degenerados). Luego,
según sea necesario:
- orientación / colocación / escalado →
cura_mesh_transform(escalar → rotar → trasladar, luegocenter_on_bed) - superficie no manifold o desordenada →
cura_mesh_remeshcon unvoxel_size, ocura_mesh_offsetpara expandir/contraer una malla cerrada - varias partes como una sola impresión →
cura_mesh_merge(sopa de triángulos) ocura_mesh_boolean(una unión/sustracción real — basada en vóxeles) - demasiados triángulos →
cura_mesh_decimatehaciatarget_triangles
Inspecciona de nuevo después de cada reparación y cita los números. Las operaciones de malla de riesgo medio están controladas por política pero no necesitan aprobación; aun así, muestra al usuario qué cambió.
Etapa 3 — Resolver y verificar el perfil. cura_profile_list para
encontrar definiciones y perfiles de calidad, luego cura_profile_resolve
(definición + calidad + material + variante + intención). Lee las advertencias:
expresiones de Cura que no puede evaluar, violaciones de temperatura graves.
Luego cura_profile_verify — los errores deben ser cero antes de laminar. Si
no lo son, arregla el perfil (o elige otro) y explica por qué. Nunca lamines
con una verificación fallida.
Etapa 4 — Laminar. cura_slice(model_artifact_ids=[…], definition, quality, material, variant, intent, overrides?, name, wait=true, wait_timeout_secs).
Respeta max_concurrent_jobs (por defecto 2). Consulta con cura_slice_status;
cura_slice_wait para trabajos cortos; cura_slice_cancel solo para trabajos
en cola/en ejecución. Si el laminado falla, cura_slice_status lleva la cola
del registro del motor — cita el error real.
Etapa 5 — Revisión del G-code. Sobre el artefacto G-code devuelto por el laminado:
cura_gcode_inspect— tiempo estimado, filamento, número de capas, rango Z, temperaturas máximas, comandos sospechosos.cura_gcode_verify— comandos peligrosos, temperaturas vs. política local, falta de apagado del calentador / desactivación del motor / metadatos.- Si falta algo,
cura_gcode_preparecrea un artefacto nuevo con una secuencia de apagado segura (o secuencia de finalización completa). Cuando lo uses, lleva adelante el identificador del artefacto nuevo — el original no se modifica.
Luego muestra al usuario el resumen — tiempo, filamento, temperatura más alta, resultado de la verificación — y obtén confirmación explícita antes de la Etapa 6. Esta es la última oportunidad barata para abortar.
Etapa 6 — Transferir a la impresora. El artefacto G-code debe existir en
la raíz gcodes de la impresora. Los servidores MCP no exponen una herramienta
de subida; las rutas compatibles son:
cura_artifact_exporta una raíz de exportación que la impresora pueda leer (un recurso compartido montado/USB que la impresora vigila), o- el usuario copia el archivo allí mismo (interfaz web, SCP, el recurso compartido), o
- si — y solo si — el usuario lo solicita explícitamente, el punto final de subida HTTP de Moonraker como una excepción claramente registrada.
Antes de tocar la impresora, confirma que el archivo llegó:
moonraker_files_list (raíz gcodes) y moonraker_file_metadata —
el tiempo y filamento estimados deben coincidir con la salida de Cura.
Etapa 7 — Imprimir. Antes de moonraker_print_start:
moonraker_printer_statusmuestra Klipper listo e inactivo, no apagado ni ocupado;moonraker_temperaturesmuestra lecturas ambientales normales.- La cama está despejada, la placa correcta, el material correcto cargado, la puerta cerrada — pregunta al usuario; no puedes verlo.
- El usuario confirma el nombre exacto del archivo.
moonraker_print_startprepara una acción de alto riesgo; transmite la solicitud de aprobación y espera la aprobación, luegomoonraker_confirm_actioncon la frase yacknowledge=true.
Durante la impresión: consulta moonraker_printer_status y
moonraker_temperatures; usa moonraker_camera_snapshot para una verificación
visual cuando algo parezca incorrecto; moonraker_gcode_history cuando los
comandos fallen. Para detener la impresión para inspección, usa
moonraker_print_pause → inspeccionar → moonraker_print_resume. Para
abortar, moonraker_print_cancel (alto riesgo, doble confirmación) — solo
cuando el usuario lo solicite. Después, moonraker_print_history registra
el resultado.
Post-impresión. Los calentadores deben estar apagados (la secuencia de
finalización lo hace — verifica con moonraker_temperatures). Recuerda al
usuario que limpie la placa. Si el usuario quiere limpiar los artefactos,
listarlos (cura_artifact_list) y solo eliminar con confirmación explícita
— cura_artifact_delete es de alto riesgo.
Aprobaciones en una frase
Los modos de aprobación (in_band, out_of_band, both) se configuran por
servidor en [approval]. En todos los modos, una acción preparada = un
approval_id = una frase de confirmación de un solo uso con un TTL corto
(por defecto 120 s). La herramienta y los argumentos almacenados de la llamada
de preparación son los que se ejecutan; los argumentos dados a
*_confirm_action son decorativos. *_pending_approvals vuelve a listar lo
que está esperando; moonraker_cancel_approval / mcp-cura deny <id> anula
una acción antes de que se ejecute. Protocolo completo:
references/safety-approvals.md.
Referencia rápida — dónde leer más
- references/pipeline.md — recorrido detallado de etapas con un diálogo de ejemplo
- references/mcp-cura-tools.md — las 32 herramientas de mcp-cura: riesgo, compuerta, argumentos
- references/mcp-moonraker-tools.md — las 49 herramientas de mcp-moonraker de manera similar
- references/safety-approvals.md — modos de aprobación, reglas de denegación, manejo de emergencias
- references/troubleshooting.md — salida de doctor, fallos comunes, soluciones
- scripts/check-setup.sh — verifica que ambos servidores estén instalados y accesibles
La instalación y el registro de MCP/habilidad por plataforma residen en los
documentos del repositorio (docs/platforms.md), no en esta habilidad —
cárguelos cuando el usuario pregunte sobre la configuración.
Cuándo no usar esta habilidad
Dibujar o reparar geometría CAD/STL a mano (usa una herramienta de modelado),
editar printer.cfg o includes de Klipper (la administración del host y la
escritura de configuración están desactivadas por defecto — y deben
permanecer así), o cualquier cosa que involucre reinicios del host,
reinicios de firmware o G-code sin formato que el usuario no haya habilitado
explícitamente. Dilo y detente.