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.exeouC:\\Python39\\python.exe. - Linux: Pode ser
/usr/bin/python3ou o caminho para a sua instalação do Python. - macOS: Geralmente, seria
/usr/local/bin/python3ou o caminho para a sua instalação do Python.
- Windows: Normalmente, pode ser algo como
-
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
- Clone o repositório ou baixe os arquivos.
- Coloque o diretório
freecad_mcpno diretório de módulos do FreeCAD:- Windows:
%APPDATA%/FreeCAD/Mod/ - Linux:
~/.FreeCAD/Mod/ - macOS:
~/Library/Preferences/FreeCAD/Mod/
- Windows:
- 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.