MeshMend

Verifica y repara mallas STL y convierte 3MF a STL, localmente a través de stdio: caras duplicadas y de área cero, orientación inconsistente, pequeños agujeros planos. Los archivos nunca salen de tu máquina.

Documentación

MeshMend

MeshMend — servidor MCP

English · 中文

Revisa y repara mallas para impresión 3D (STL y 3MF) desde un asistente de IA que puede ejecutar herramientas en tu computadora: Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Codex CLI, Gemini CLI o cualquier otro cliente MCP que inicie servidores locales.

Pregunta “¿es ~/prints/bracket.stl hermético?”, “¿por qué mi laminador dice que este modelo tiene agujeros?” o “把这个 3MF 转成 STL”: el asistente lee el archivo en tu máquina, te dice exactamente qué está mal (agujeros, caras invertidas, capas al revés, bordes no múltiples, triángulos duplicados), dice honestamente si una reparación automática lo arreglará y escribe una copia reparada junto al original.

Tus archivos nunca salen de tu computadora. El servidor se ejecuta localmente, lee y escribe solo los archivos que nombres, no hace solicitudes de red y no tiene telemetría. El archivo original nunca se sobrescribe. Es el mismo código de malla que la herramienta gratuita en el navegador en mesh-mend.pages.dev.

npx -y github:Keith-CY/meshmend-mcp

Estado: versión 0.1.0. La publicación en npm está pendiente; hasta entonces npx -y github:Keith-CY/meshmend-mcp (requiere Node.js 18+ y git) ejecuta la misma compilación, y los usuarios de Claude Desktop pueden instalar el paquete de un clic desde Releases.

Herramientas

HerramientaEntradaQué hace
check_meshpath, unit? (mm/cm/in, solo STL), item? (elemento de compilación 3MF)Informa el tamaño en mm, triángulos, capas y cada problema con su recuento, además de un veredicto de una reparación de prueba en memoria: ok, repairable, partly_repairable o needs_manual_review. Solo lectura.
repair_meshpath, fill_holes? (predeterminado false), max_hole_span_mm? (predeterminado 20), output_path?, unit?, item?, overwrite?Elimina caras duplicadas y de área cero, hace consistente la orientación de las caras, voltea capas al revés hacia afuera y, si se solicita, tapa agujeros planos. Escribe un STL binario en milímetros e informa el antes y el después.
convert_3mf_to_stlpath, item?, output_path?, overwrite?3MF a STL binario en milímetros, con transformaciones de compilación y unidades aplicadas y la geometría sin cambios.

Cada resultado viene como texto legible y como JSON estructurado (structuredContent, con un outputSchema). check_mesh está marcado como solo lectura; las otras dos solo crean archivos nuevos (destructiveHint: false).

Dónde van los resultados: junto a la entrada, como <name>.repaired.stl (o <name>.stl para una conversión), luego -2, -3, … en lugar de reemplazar nada. Con output_path, un archivo existente se reemplaza solo con overwrite: true, y el archivo de entrada nunca puede ser la salida.

Conéctalo

Claude Desktop

Un clic: descarga meshmend-mcp-0.1.0.mcpb desde Releases y ábrelo (o Settings → Extensions → Advanced settings → Install extension…). Claude Desktop lo ejecuta con su Node.js integrado.

O manualmente: Settings → Developer → Edit config y agrega a claude_desktop_config.json:

{
  "mcpServers": {
    "meshmend": {
      "command": "npx",
      "args": ["-y", "github:Keith-CY/meshmend-mcp"]
    }
  }
}

Claude Code

claude mcp add meshmend -- npx -y github:Keith-CY/meshmend-mcp

Cursor

~/.cursor/mcp.json (o .cursor/mcp.json en un proyecto):

{
  "mcpServers": {
    "meshmend": { "command": "npx", "args": ["-y", "github:Keith-CY/meshmend-mcp"] }
  }
}

VS Code (GitHub Copilot)

.vscode/mcp.json:

{
  "servers": {
    "meshmend": { "type": "stdio", "command": "npx", "args": ["-y", "github:Keith-CY/meshmend-mcp"] }
  }
}

Windsurf

~/.codeium/windsurf/mcp_config.json: el mismo bloque mcpServers que Cursor.

Codex CLI

~/.codex/config.toml:

[mcp_servers.meshmend]
command = "npx"
args = ["-y", "github:Keith-CY/meshmend-mcp"]

Gemini CLI

~/.gemini/settings.json:

{ "mcpServers": { "meshmend": { "command": "npx", "args": ["-y", "github:Keith-CY/meshmend-mcp"] } } }

Cualquier otro cliente

Cualquier cliente MCP que inicie servidores locales (stdio) puede ejecutar npx -y github:Keith-CY/meshmend-mcp, o node /path/to/meshmend-mcp/dist/meshmend-mcp.js desde un checkout (el archivo no tiene dependencias). Los archivos listos están en examples/clients/.

Dale al asistente rutas absolutas (~ se expande). Las rutas relativas se resuelven desde el directorio de trabajo del servidor, que en aplicaciones de escritorio a menudo no es tu carpeta de proyecto.

Archivos reales, antes y después

De las pruebas de este repositorio y una ejecución local (npm test repite todo excepto el conejito y la esfera):

ArchivoQué encontró check_meshVeredictoDespués de repair_mesh
Bloque de muestra de MeshMend, 30 × 24 × 24 mm, 19 triángulos (missing-patch.stl)1 agujero (4 bordes abiertos), 3 conflictos de orientación, 1 cara duplicadareparable (con fill_holes)Cerrado: duplicado eliminado, orientación corregida, el agujero de 10 × 8 mm tapado con 2 triángulos; 20 triángulos
multibody.stl de trimesh, 32 triángulos2 capas al revés, 12 conflictos de orientaciónreparableCerrado y hacia afuera
La tetera de Utah (teapot.stl), 894 triángulos6 límites abiertos (64 bordes abiertos), 1 vértice no múltiplenecesita revisión manualSin cambios, y dice por qué: los agujeros son curvos y el vértice no múltiple necesita una decisión
Una exportación CAD (featuretype.STL), 3,476 triángulos16 costuras abiertas (576 bordes abiertos)necesita revisión manualSin cambios: superficies cuyos vértices no coinciden exactamente, y MeshMend nunca suelda vértices cercanos
El conejito de Stanford (bun_zipper.ply como STL, escalado a 156 mm; no incluido)5 límites abiertos (223 bordes abiertos) en su base, 69,451 triángulosnecesita revisión manualSin cambios incluso con un tramo de 200 mm: los agujeros del escaneo no son planos
Una esfera generada de 100 mm, 247,499 triángulos, 3 agujeros y 249 caras volteadas3 límites abiertos (13 bordes abiertos), 744 conflictos de orientaciónparcialmente reparableOrientación corregida y 1 agujero plano tapado; 2 agujeros curvos dejados para revisión. Aproximadamente 10 s

Qué arregla, y qué no

Arregla:

  • caras duplicadas y caras de área cero (degeneradas);
  • orientación inconsistente de caras (normales volteadas) en bordes compartidos ordinarios;
  • capas cerradas que están al revés, cuando no se superponen con otras capas;
  • con fill_holes: true: agujeros planos simples (3–128 vértices de límite) cuya diagonal del cuadro delimitador está dentro de max_hole_span_mm.

No:

  • suelda vértices cercanos (solo se unen coordenadas exactamente iguales), por lo que no puede cerrar costuras entre superficies;
  • divide bordes o vértices no múltiples, remalla o reconstruye un sólido;
  • repara auto-intersecciones, une partes superpuestas, ni verifica grosor de pared, voladizos o soportes;
  • tapa agujeros curvos, aberturas anidadas o agujeros más anchos que el tramo;
  • garantiza que un modelo imprima. Abre el resultado en tu laminador.

Debido a que algunas aberturas son intencionales, el relleno de agujeros está desactivado a menos que se solicite. check_mesh ejecuta la reparación en memoria primero, por lo que su veredicto dice si repair_mesh realmente ayudará antes de escribir nada.

Límites: 30 MiB por archivo y 250,000 triángulos (igual que el sitio web). 3MF: la compilación principal, componentes, transformaciones, referencias de partes de extensión de producción y unidades; ZIP64, extensiones requeridas no compatibles, unidades mixtas entre partes y paquetes solo G-code se rechazan con una explicación. Colores, materiales y configuraciones de impresión no se transfieren al STL.

Privacidad

El servidor MCP de MeshMend funciona solo en tu computadora. Lee los archivos que tú o tu asistente nombren y escribe nuevos archivos STL; no envía nada a ningún lugar, no tiene análisis ni telemetría, y no guarda registros. Tu asistente de IA ve los resultados de las herramientas (recuentos, tamaños, rutas de archivos y mensajes) como cualquier otra salida de herramienta, bajo los términos de privacidad propios de ese asistente.

Desarrollo

npm install
npm test            # builds dist/ and runs the core, file and end-to-end tests (needs Bun)
npm run pack:mcpb   # builds the Claude Desktop bundle into build/
node scripts/call.mjs check_mesh '{"path":"tests/fixtures/missing-patch.stl"}'

src/core/ es el código de malla de MeshMend, copiado sin cambios del sitio web para que ambos den las mismas respuestas. dist/meshmend-mcp.js es un solo archivo empaquetado (confirmado, por lo que npx github: no necesita paso de compilación); NOTICE enumera los paquetes empaquetados y sus licencias.

Licencia

MIT. Los tres archivos de prueba de trimesh tienen licencia MIT por sus autores (detalles).

La versión en el navegador, con vista previa 3D y comparación antes/después: mesh-mend.pages.dev.