mcp-freecad
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TMPDIR | No | Diretório temporário usado para os arquivos de job | |
| MCP_FREECAD_CMD | No | Comando do freecadcmd, separado como num shell (aceita aspas). Vence qualquer descoberta. Ex.: flatpak run --command=freecadcmd org.freecad.FreeCAD | |
| MCP_FREECAD_TIMEOUT_S | No | Timeout padrão por operação, em segundos. Padrão 120; sempre limitado a 5–900 | |
| MCP_FREECAD_ALLOWED_PATHS | No | Prefixos separados por : onde o servidor pode ler e escrever. Padrão: home, o diretório temporário do sistema, /tmp e /var/tmp. Symlinks são resolvidos nos dois lados e a comparação é por componente de caminho (/tmpfoo não casa com /tmp) |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| freecad_versionA | Versão do FreeCAD, do Python embutido e qual comando o servidor está usando. Primeira coisa a chamar quando algo não funciona: confirma que o freecadcmd foi encontrado e por qual regra (env, PATH, caminho conhecido, flatpak, snap). |
| doc_inspectA | Abre um modelo e devolve dimensões, volume, validade e se é estanque (watertight). Aceita .FCStd, .step/.stp, .iges/.igs, .brep e malhas .stl/.obj/.3mf/.ply. Unidades
sempre em mm. Para sólidos e documentos lista os objetos finais (até 100;
|
| doc_exportA | Converte um modelo para o formato da extensão de Saídas: .step/.stp, .iges/.igs, .brep, .FCStd e malhas .stl/.3mf/.obj/.ply. Ao gerar
malha a partir de sólido, |
| doc_export_2dA | Gera .svg ou .dxf em mm a partir de um sólido: perfil de corte a laser ou desenho.
|
| part_run_scriptA | Roda um script Python no FreeCAD headless: a válvula de escape da API completa. Serve para modelar o que as outras tools não cobrem (roscas, gabinetes
paramétricos, peças de jogo). O script já tem no namespace |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 5 tools
Each tool has a clearly distinct role: version diagnostics, inspection, 3D export, 2D export, and a scripting escape hatch. The only mild overlap is between doc_export and doc_export_2d, but the descriptions make the 3D-vs-2D boundary explicit (extension-based vs .svg/.dxf).
All names are snake_case and readable, but the prefixes are inconsistent: freecad_, doc_, part_, and doc_export_2d adds a numeric suffix. The doc_* family is coherent while freecad_version and part_run_script follow different conventions.
Five tools is well-scoped for a FreeCAD server, and each one earns its place: diagnostics, read, two write formats, and a general scripting fallback. No redundancy or filler.
The surface covers the core lifecycle (version check, inspect, 3D export, 2D export) plus an unbounded escape hatch via part_run_script that handles modeling the other tools omit. There is no dedicated create/modify tool, but scripting largely fills that gap so agent dead-ends are unlikely.