FreeCAD MCP

Um servidor para interagir com modelos FreeCAD usando o Model Context Protocol (MCP).

Documentação

MseeP.ai Security Assessment Badge

FreeCAD MCP

Este repositório é um FreeCAD MCP que permite controlar o FreeCAD a partir do Claude Desktop.

Demonstração

Projetar um flange

demo

Projetar um carrinho de brinquedo

demo

Projetar uma peça a partir de desenho 2D

Entrada do desenho 2D

input

Demonstração

demo

Este é o histórico da conversa. https://claude.ai/share/7b48fd60-68ba-46fb-bb21-2fbb17399b48

Instalar complemento

O diretório de complementos do FreeCAD é

  • Windows: %APPDATA%\FreeCAD\Mod\
  • Mac:
    • FreeCAD 1.1: ~/Library/Application\ Support/FreeCAD/v1-1/Mod/
    • FreeCAD 1.0: ~/Library/Application\ Support/FreeCAD/v1-0/Mod/
  • Linux:
    • Ubuntu: ~/.FreeCAD/Mod/ ou ~/snap/freecad/common/Mod/ (se você instalar o FreeCAD via snap)
    • Debian: ~/.local/share/FreeCAD/Mod
    • Arch / CachyOS (FreeCAD 1.1 do extra/freecad): ~/.local/share/FreeCAD/v1-1/Mod/

Por favor, coloque o diretório addon/FreeCADMCP no diretório de complementos.

git clone https://github.com/neka-nat/freecad-mcp.git
cd freecad-mcp

# For Linux (Ubuntu/Debian)
mkdir -p ~/.FreeCAD/Mod/
cp -r addon/FreeCADMCP ~/.FreeCAD/Mod/

# For Linux (Arch/CachyOS, FreeCAD 1.1 from extra/freecad)
mkdir -p ~/.local/share/FreeCAD/v1-1/Mod/
cp -r addon/FreeCADMCP ~/.local/share/FreeCAD/v1-1/Mod/

# For macOS (FreeCAD 1.1)
mkdir -p ~/Library/Application\ Support/FreeCAD/v1-1/Mod/
cp -r addon/FreeCADMCP ~/Library/Application\ Support/FreeCAD/v1-1/Mod/

Ao instalar o complemento, você precisa reiniciar o FreeCAD. Você pode selecionar "MCP Addon" na lista de Workbenches e usá-lo.

workbench_list

E você pode iniciar o servidor RPC pelo comando "Start RPC Server" na barra de ferramentas "FreeCAD MCP".

start_rpc_server

Iniciar servidor RPC automaticamente

Por padrão, o servidor RPC deve ser iniciado manualmente toda vez que o FreeCAD abre. Para iniciá-lo automaticamente:

  1. Abra o menu FreeCAD MCP (alterne para o workbench MCP Addon primeiro)
  2. Marque Auto-Start Server

A configuração é salva em freecad_mcp_settings.json e persiste entre as sessões. No próximo início do FreeCAD, o servidor RPC iniciará automaticamente assim que o aplicativo terminar de carregar.

Você pode desativá-lo a qualquer momento desmarcando Auto-Start Server no mesmo menu.

Configurando o Claude Desktop

A pré-instalação do uvx é necessária.

E você precisa editar o arquivo de configuração do Claude Desktop, claude_desktop_config.json.

Para o usuário.

{
  "mcpServers": {
    "freecad": {
      "command": "uvx",
      "args": [
        "freecad-mcp"
      ]
    }
  }
}

Se você quiser economizar tokens, pode definir only_text_feedback como true e usar apenas feedback de texto.

{
  "mcpServers": {
    "freecad": {
      "command": "uvx",
      "args": [
        "freecad-mcp",
        "--only-text-feedback"
      ]
    }
  }
}

As capturas de tela também podem ser controladas por chamada de ferramenta em vez de globalmente: toda ferramenta que retorna uma captura de tela aceita um parâmetro opcional include_screenshot (passe false para obter feedback somente de texto, por exemplo, para scripts analíticos ou etapas intermediárias) e um parâmetro opcional view_name para orientar a captura de tela ("Isometric" por padrão, ou "Front", "Top", "Right", etc.). A flag --only-text-feedback sempre vence: quando definida, nenhuma captura de tela é retornada, independentemente de include_screenshot.

Para o desenvolvedor. Primeiro, você precisa clonar este repositório.

git clone https://github.com/neka-nat/freecad-mcp.git
{
  "mcpServers": {
    "freecad": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/freecad-mcp/",
        "run",
        "freecad-mcp"
      ]
    }
  }
}

Conexões remotas

Por padrão, o servidor RPC não aceita conexões remotas e escuta em localhost. Para controlar o FreeCAD de outra máquina na sua rede:

1. Habilitar conexões remotas no FreeCAD

Na barra de ferramentas FreeCAD MCP:

  1. Marque Remote Connections — o servidor RPC será vinculado a 0.0.0.0 (todas as interfaces) no próximo reinício. Por razões de segurança, ele só aceita conexões dos endereços IP ou sub-redes CIDR especificados no campo Allowed IPs. Por padrão, isso é 127.0.0.1.

  2. Clique em Configure Allowed IPs e insira uma lista separada por vírgulas de endereços IP ou sub-redes CIDR que podem se conectar, por exemplo:

    192.168.1.100, 10.0.0.0/24
    

    127.0.0.1 é sempre o padrão. Entradas inválidas são rejeitadas com uma caixa de diálogo de erro. Reinicie o servidor RPC após alterar essas configurações.

2. Aponte o servidor MCP para o host remoto

Passe a flag --host com o endereço IP ou nome do host da máquina que executa o FreeCAD:

{
  "mcpServers": {
    "freecad": {
      "command": "uvx",
      "args": [
        "freecad-mcp",
        "--host", "192.168.1.100"
      ]
    }
  }
}

O valor --host é validado na inicialização — deve ser um endereço IPv4/IPv6 válido ou nome de host.

Ferramentas

  • create_document: Criar um novo documento no FreeCAD.
  • create_object: Criar um novo objeto no FreeCAD.
  • edit_object: Editar um objeto no FreeCAD.
  • delete_object: Excluir um objeto no FreeCAD.
  • execute_code: Executar código Python arbitrário no FreeCAD.
  • insert_part_from_library: Inserir uma peça da biblioteca de peças.
  • get_view: Obter uma captura de tela da vista ativa.
  • get_objects: Obter todos os objetos em um documento.
  • get_object: Obter um objeto em um documento.
  • get_parts_list: Obter a lista de peças na biblioteca de peças.
  • run_fem_analysis: Executar o solver CalculiX em um Fem::FemAnalysis existente e retornar resultados resumidos (tensão máxima de von Mises, deslocamento máximo, contagem de nós, diretório de trabalho). Cria automaticamente um SolverCcxTools se a análise não tiver nenhum. Veja examples/cantilever_fem.py para um exemplo de uso completo.

Ferramentas que retornam uma captura de tela (create_object, edit_object, delete_object, execute_code, insert_part_from_library, get_objects, get_object, run_fem_analysis) aceitam parâmetros opcionais include_screenshot (padrão true) e view_name (padrão "Isometric") para suprimir ou reorientar a imagem retornada por chamada.

Contribuidores

Feito com contrib.rocks.