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 — 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
| Herramienta | Entrada | Qué hace |
|---|---|---|
check_mesh | path, 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_mesh | path, 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_stl | path, 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):
| Archivo | Qué encontró check_mesh | Veredicto | Despué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 duplicada | reparable (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ángulos | 2 capas al revés, 12 conflictos de orientación | reparable | Cerrado y hacia afuera |
La tetera de Utah (teapot.stl), 894 triángulos | 6 límites abiertos (64 bordes abiertos), 1 vértice no múltiple | necesita revisión manual | Sin 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ángulos | 16 costuras abiertas (576 bordes abiertos) | necesita revisión manual | Sin 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ángulos | necesita revisión manual | Sin 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 volteadas | 3 límites abiertos (13 bordes abiertos), 744 conflictos de orientación | parcialmente reparable | Orientació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 demax_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.