FreeCAD

Integre com o FreeCAD, um modelador 3D paramétrico gratuito e de código aberto, por meio de uma ponte Python.

Documentação

FreeCAD MCP (Model Control Protocol)

Visão Geral

O FreeCAD MCP (Model Control Protocol) fornece uma interface simplificada para interagir com o FreeCAD por meio de uma arquitetura cliente-servidor. Isso permite que os usuários executem comandos e recuperem informações sobre o documento e a cena atual do FreeCAD.

https://github.com/user-attachments/assets/5acafa17-4b5b-4fef-9f6c-617e85357d44

Configuração

Para configurar o servidor MCP, você pode usar um formato JSON para especificar as configurações do servidor. Abaixo está um exemplo de configuração:

{
    "mcpServers": {
        "freecad": {
            "command": "C:\\ProgramData\\anaconda3\\python.exe",
            "args": [
                "C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
            ]
        }
    }
}

Detalhes da Configuração

  • command: O caminho para o executável Python que executará o servidor FreeCAD MCP. Isso pode variar de acordo com o seu sistema operacional:

    • Windows: Normalmente, pode ser algo como C:\\ProgramData\\anaconda3\\python.exe ou C:\\Python39\\python.exe.
    • Linux: Pode ser /usr/bin/python3 ou o caminho para a sua instalação do Python.
    • macOS: Geralmente, seria /usr/local/bin/python3 ou o caminho para a sua instalação do Python.
  • args: Uma matriz de argumentos para passar ao comando Python. O primeiro argumento deve ser o caminho para o script freecad_bridge.py, que é responsável por lidar com a lógica do servidor MCP. Certifique-se de ajustar o caminho de acordo com a sua instalação.

Exemplo para Diferentes Sistemas Operacionais

Windows

{
    "mcpServers": {
        "freecad": {
            "command": "C:\\ProgramData\\anaconda3\\python.exe",
            "args": [
                "C:\\Users\\USER\\AppData\\Roaming\\FreeCAD\\Mod\\freecad_mcp\\src\\freecad_bridge.py"
            ]
        }
    }
}

Linux

{
    "mcpServers": {
        "freecad": {
            "command": "/usr/bin/python3",
            "args": [
                "/home/USER/.FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
            ]
        }
    }
}

macOS

{
    "mcpServers": {
        "freecad": {
            "command": "/usr/local/bin/python3",
            "args": [
                "/Users/USER/Library/Preferences/FreeCAD/Mod/freecad_mcp/src/freecad_bridge.py"
            ]
        }
    }
}

Recursos

O FreeCAD MCP atualmente suporta as seguintes funcionalidades:

1. get_scene_info

  • Descrição: Recupera informações abrangentes sobre o documento atual do FreeCAD, incluindo:
    • Propriedades do documento (nome, rótulo, nome do arquivo, contagem de objetos)
    • Informações detalhadas do objeto (tipo, posição, rotação, propriedades da forma)
    • Dados do esboço (geometria, restrições)
    • Informações da visualização (posição da câmera, direção, etc.)

2. run_script

  • Descrição: Executa código Python arbitrário no contexto do FreeCAD. Isso permite que os usuários realizem operações complexas, criem novos objetos, modifiquem os existentes e automatizem tarefas usando a API Python do FreeCAD.

Exemplo de Uso

Para usar o FreeCAD MCP, você pode conectar-se ao servidor e enviar comandos da seguinte forma:

import socket
import json

# Connect to the FreeCAD MCP server
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(('localhost', 9876))

# Example: Get scene information
command = {
    "type": "get_scene_info"
}
client.sendall(json.dumps(command).encode('utf-8'))

# Receive the response
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))

# Example: Run a script
script = """
import FreeCAD
doc = FreeCAD.ActiveDocument
box = doc.addObject("Part::Box", "MyBox")
box.Length = 20
box.Width = 20
box.Height = 20
doc.recompute()
"""
command = {
    "type": "run_script",
    "params": {
        "script": script
    }
}
client.sendall(json.dumps(command).encode('utf-8'))

# Receive the response
response = client.recv(4096)
print(json.loads(response.decode('utf-8')))

# Close the connection
client.close()

Instalação

  1. Clone o repositório ou baixe os arquivos.
  2. Coloque o diretório freecad_mcp no diretório de módulos do FreeCAD:
    • Windows: %APPDATA%/FreeCAD/Mod/
    • Linux: ~/.FreeCAD/Mod/
    • macOS: ~/Library/Preferences/FreeCAD/Mod/
  3. Reinicie o FreeCAD e selecione a bancada "FreeCAD MCP" no seletor de bancadas.

Contribuindo

Sinta-se à vontade para contribuir enviando problemas (issues) ou solicitações de pull (pull requests). Seus comentários e contribuições são bem-vindos!

Licença

Este projeto é licenciado sob a Licença MIT. Consulte o arquivo LICENSE para obter detalhes.