MeshMend

Verifique e repare malhas STL e converta 3MF para STL, localmente via stdio: faces duplicadas e com área zero, orientação inconsistente, pequenos furos planares. Os arquivos nunca saem da sua máquina.

Documentação

MeshMend

MeshMend — servidor MCP

English · 中文

Verifique e repare malhas para impressão 3D (STL e 3MF) a partir de um assistente de IA que pode executar ferramentas no seu computador: Claude Desktop, Claude Code, Cursor, VS Code, Windsurf, Codex CLI, Gemini CLI ou qualquer outro cliente MCP que inicie servidores locais.

Pergunte “o ~/prints/bracket.stl é à prova d’água?”, “por que meu fatiador diz que este modelo tem buracos?” ou “把这个 3MF 转成 STL”: o assistente lê o arquivo na sua máquina, informa exatamente o que está errado (buracos, faces invertidas, cascas do avesso, arestas não-manifold, triângulos duplicados), diz honestamente se uma reparação automática vai corrigir e grava uma cópia reparada ao lado do original.

Seus arquivos nunca saem do seu computador. O servidor roda localmente, lê e grava apenas os arquivos que você nomeia, não faz requisições de rede e não tem telemetria. O arquivo original nunca é sobrescrito. É o mesmo código de malha da ferramenta gratuita no navegador em mesh-mend.pages.dev.

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

Status: versão 0.1.0. A publicação no npm está pendente; até lá, npx -y github:Keith-CY/meshmend-mcp (precisa de Node.js 18+ e git) executa o mesmo build, e usuários do Claude Desktop podem instalar o pacote de um clique em Releases.

Ferramentas

FerramentaEntradaO que faz
check_meshpath, unit? (mm/cm/in, somente STL), item? (item do build 3MF)Relata tamanho em mm, triângulos, cascas e cada problema com sua contagem, além de um veredito de uma reparação de teste em memória: ok, repairable, partly_repairable ou needs_manual_review. Somente leitura.
repair_meshpath, fill_holes? (padrão falso), max_hole_span_mm? (padrão 20), output_path?, unit?, item?, overwrite?Remove faces duplicadas e de área zero, torna a orientação das faces consistente, vira cascas do avesso para fora e, se solicitado, tampa buracos planos. Grava um STL binário em milímetros e relata antes e depois.
convert_3mf_to_stlpath, item?, output_path?, overwrite?Converte 3MF para STL binário em milímetros, com transformações de build e unidades aplicadas e geometria inalterada.

Cada resultado vem como texto legível e como JSON estruturado (structuredContent, com um outputSchema). check_mesh é marcado como somente leitura; as outras duas apenas criam novos arquivos (destructiveHint: false).

Onde os resultados vão: ao lado da entrada, como <name>.repaired.stl (ou <name>.stl para uma conversão), depois -2, -3, … em vez de substituir qualquer coisa. Com output_path, um arquivo existente é substituído apenas com overwrite: true, e o arquivo de entrada nunca pode ser a saída.

Conecte

Claude Desktop

Um clique: baixe meshmend-mcp-0.1.0.mcpb de Releases e abra (ou Configurações → Extensões → Configurações avançadas → Instalar extensão…). O Claude Desktop o executa com seu Node.js embutido.

Ou manualmente: Configurações → Desenvolvedor → Editar configuração e adicione 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 (ou .cursor/mcp.json em um projeto):

{
  "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: o mesmo bloco mcpServers do 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"] } } }

Qualquer outro cliente

Qualquer cliente MCP que inicie servidores locais (stdio) pode executar npx -y github:Keith-CY/meshmend-mcp, ou node /path/to/meshmend-mcp/dist/meshmend-mcp.js de um checkout (o arquivo não tem dependências). Arquivos prontos estão em examples/clients/.

Dê ao assistente caminhos absolutos (~ é expandido). Caminhos relativos são resolvidos a partir do diretório de trabalho do servidor, que em aplicativos de desktop muitas vezes não é a pasta do seu projeto.

Arquivos reais, antes e depois

Dos testes deste repositório e de uma execução local (npm test repete tudo exceto o coelho e a esfera):

ArquivoO que check_mesh encontrouVereditoDepois de repair_mesh
Bloco de amostra do MeshMend, 30 × 24 × 24 mm, 19 triângulos (missing-patch.stl)1 buraco (4 arestas abertas), 3 conflitos de orientação, 1 face duplicadareparável (com fill_holes)Fechado: duplicado removido, orientação corrigida, o buraco de 10 × 8 mm tampado com 2 triângulos; 20 triângulos
multibody.stl do trimesh, 32 triângulos2 cascas do avesso, 12 conflitos de orientaçãoreparávelFechado e para fora
O bule Utah (teapot.stl), 894 triângulos6 limites abertos (64 arestas abertas), 1 vértice não-manifoldprecisa de revisão manualInalterado, e explica o porquê: os buracos são curvos e o vértice não-manifold precisa de uma decisão
Uma exportação CAD (featuretype.STL), 3.476 triângulos16 costuras abertas (576 arestas abertas)precisa de revisão manualInalterado: superfícies cujos vértices não coincidem exatamente, e o MeshMend nunca solda vértices próximos
O coelho de Stanford (bun_zipper.ply como STL, escalado para 156 mm; não incluído)5 limites abertos (223 arestas abertas) na base, 69.451 triângulosprecisa de revisão manualInalterado mesmo com um vão de 200 mm: os buracos do escaneamento não são planos
Uma esfera gerada de 100 mm, 247.499 triângulos, 3 buracos e 249 faces invertidas3 limites abertos (13 arestas abertas), 744 conflitos de orientaçãoparcialmente reparávelOrientação corrigida e 1 buraco plano tampado; 2 buracos curvos deixados para revisão. Cerca de 10 s

O que corrige, e o que não corrige

Corrige:

  • faces duplicadas e faces de área zero (degeneradas);
  • orientação inconsistente de faces (normais invertidas) em arestas compartilhadas comuns;
  • cascas fechadas que estão do avesso, quando não se sobrepõem a outras cascas;
  • com fill_holes: true: buracos planos simples (3–128 vértices de limite) cuja diagonal da caixa delimitadora está dentro de max_hole_span_mm.

Não corrige:

  • soldar vértices próximos (apenas coordenadas exatamente iguais são unidas), então não pode fechar costuras entre superfícies;
  • dividir arestas ou vértices não-manifold, remalhar ou reconstruir um sólido;
  • reparar auto-interseções, unir partes sobrepostas ou verificar espessura de parede, saliências ou suportes;
  • tampar buracos curvos, aberturas aninhadas ou buracos mais largos que o vão;
  • garantir que um modelo imprima. Abra o resultado no seu fatiador.

Como algumas aberturas são intencionais, o preenchimento de buracos fica desativado a menos que seja solicitado. check_mesh executa a reparação em memória primeiro, então seu veredito diz se repair_mesh realmente vai ajudar antes de qualquer coisa ser gravada.

Limites: 30 MiB por arquivo e 250.000 triângulos (o mesmo do site). 3MF: o build primário, componentes, transformações, referências de partes de extensão de produção e unidades; ZIP64, extensões obrigatórias não suportadas, unidades mistas entre partes e pacotes somente G-code são recusados com uma explicação. Cores, materiais e configurações de impressão não são transferidos para STL.

Privacidade

O servidor MCP do MeshMend funciona apenas no seu computador. Ele lê os arquivos que você ou seu assistente nomeiam e grava novos arquivos STL; não envia nada para lugar nenhum, não tem análises ou telemetria e não mantém registros. Seu assistente de IA vê os resultados das ferramentas (contagens, tamanhos, caminhos de arquivo e mensagens) como qualquer outra saída de ferramenta, sob os termos de privacidade do próprio assistente.

Desenvolvimento

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/ é o código de malha do MeshMend, copiado sem alterações do site para que ambos deem as mesmas respostas. dist/meshmend-mcp.js é um único arquivo empacotado (commitado, então npx github: não precisa de etapa de build); NOTICE lista os pacotes empacotados e suas licenças.

Licença

MIT. Os três arquivos de teste do trimesh são licenciados sob MIT por seus autores (detalhes).

A versão no navegador, com pré-visualização 3D e comparação antes/depois: mesh-mend.pages.dev.