FreeCAD

Integra con FreeCAD, un modelador 3D paramétrico gratuito y de código abierto, a través de un puente Python.

Documentación

FreeCAD MCP (Model Control Protocol)

Resumen

El FreeCAD MCP (Model Control Protocol) proporciona una interfaz simplificada para interactuar con FreeCAD a través de una arquitectura cliente-servidor. Esto permite a los usuarios ejecutar comandos y obtener información sobre el documento y la escena actuales de FreeCAD.

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

Configuración

Para configurar el servidor MCP, puede utilizar un formato JSON para especificar los ajustes del servidor. A continuación se muestra un ejemplo de configuración:

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

Detalles de configuración

  • command: La ruta al ejecutable de Python que ejecutará el servidor MCP de FreeCAD. Esto puede variar según su sistema operativo:

    • Windows: Normalmente, podría verse como C:\\ProgramData\\anaconda3\\python.exe o C:\\Python39\\python.exe.
    • Linux: Podría ser /usr/bin/python3 o la ruta a su instalación de Python.
    • macOS: Generalmente, sería /usr/local/bin/python3 o la ruta a su instalación de Python.
  • args: Una matriz de argumentos para pasar al comando de Python. El primer argumento debe ser la ruta al script freecad_bridge.py, que es responsable de manejar la lógica del servidor MCP. Asegúrese de ajustar la ruta según su instalación.

Ejemplo para diferentes sistemas operativos

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"
            ]
        }
    }
}

Características

El FreeCAD MCP actualmente admite las siguientes funcionalidades:

1. get_scene_info

  • Descripción: Recupera información completa sobre el documento actual de FreeCAD, incluyendo:
    • Propiedades del documento (nombre, etiqueta, nombre de archivo, número de objetos)
    • Información detallada de objetos (tipo, posición, rotación, propiedades de forma)
    • Datos de bocetos (geometría, restricciones)
    • Información de vista (posición de cámara, dirección, etc.)

2. run_script

  • Descripción: Ejecuta código Python arbitrario dentro del contexto de FreeCAD. Esto permite a los usuarios realizar operaciones complejas, crear nuevos objetos, modificar los existentes y automatizar tareas utilizando la API de Python de FreeCAD.

Ejemplo de uso

Para usar el FreeCAD MCP, puede conectarse al servidor y enviar comandos de la siguiente manera:

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()

Instalación

  1. Clone el repositorio o descargue los archivos.
  2. Coloque el directorio freecad_mcp en su directorio de módulos de FreeCAD:
    • Windows: %APPDATA%/FreeCAD/Mod/
    • Linux: ~/.FreeCAD/Mod/
    • macOS: ~/Library/Preferences/FreeCAD/Mod/
  3. Reinicie FreeCAD y seleccione el banco de trabajo "FreeCAD MCP" desde el selector de bancos de trabajo.

Contribuciones

Siéntase libre de contribuir enviando problemas o solicitudes de extracción. ¡Sus comentarios y contribuciones son bienvenidos!

Licencia

Este proyecto está licenciado bajo la Licencia MIT. Consulte el archivo LICENSE para más detalles.