OpenSCAD MCP Server

hybrid server

The server is able to function both locally and remotely, depending on the configuration or use case.

Integrations

  • Manages environment variables for API keys and configuration settings, including remote processing options

  • Build system used to compile the CUDA Multi-View Stereo dependency for 3D reconstruction

  • Used for cloning and managing external dependencies like the cuda-multi-view-stereo repository for 3D reconstruction

Servidor MCP de OpenSCAD

Un servidor de Protocolo de Contexto de Modelo (MCP) que permite a los usuarios generar modelos 3D a partir de descripciones de texto o imágenes, con un enfoque en la creación de modelos 3D paramétricos utilizando reconstrucción de múltiples vistas y OpenSCAD.

Características

  • Generación de imágenes con IA : genere imágenes a partir de descripciones de texto utilizando las API de Google Gemini o Venice.ai
  • Generación de imágenes de múltiples vistas : cree múltiples vistas del mismo objeto 3D para su reconstrucción
  • Flujo de trabajo de aprobación de imágenes : revise y apruebe/rechace las imágenes generadas antes de la reconstrucción
  • Reconstrucción 3D : Convierta imágenes multivista aprobadas en modelos 3D utilizando CUDA Multi-View Stereo
  • Procesamiento remoto : procese tareas computacionalmente intensivas en servidores remotos dentro de su LAN
  • Integración con OpenSCAD : genere modelos 3D paramétricos utilizando OpenSCAD
  • Exportación paramétrica : exporta modelos en formatos que conservan las propiedades paramétricas (CSG, AMF, 3MF, SCAD)
  • Descubrimiento de impresoras 3D : descubrimiento de impresoras de red opcional e impresión directa

Arquitectura

El servidor está construido utilizando el SDK de Python MCP y sigue una arquitectura modular:

openscad-mcp-server/ ├── src/ │ ├── main.py # Main application │ ├── main_remote.py # Remote CUDA MVS server │ ├── ai/ # AI integrations │ │ ├── gemini_api.py # Google Gemini API for image generation │ │ └── venice_api.py # Venice.ai API for image generation (optional) │ ├── models/ # 3D model generation │ │ ├── cuda_mvs.py # CUDA Multi-View Stereo integration │ │ └── code_generator.py # OpenSCAD code generation │ ├── workflow/ # Workflow components │ │ ├── image_approval.py # Image approval mechanism │ │ └── multi_view_to_model_pipeline.py # Complete pipeline │ ├── remote/ # Remote processing │ │ ├── cuda_mvs_client.py # Client for remote CUDA MVS processing │ │ ├── cuda_mvs_server.py # Server for remote CUDA MVS processing │ │ ├── connection_manager.py # Remote connection management │ │ └── error_handling.py # Error handling for remote processing │ ├── openscad_wrapper/ # OpenSCAD CLI wrapper │ ├── visualization/ # Preview generation and web interface │ ├── utils/ # Utility functions │ └── printer_discovery/ # 3D printer discovery ├── scad/ # Generated OpenSCAD files ├── output/ # Output files (models, previews) │ ├── images/ # Generated images │ ├── multi_view/ # Multi-view images │ ├── approved_images/ # Approved images for reconstruction │ └── models/ # Generated 3D models ├── templates/ # Web interface templates └── static/ # Static files for web interface

Instalación

  1. Clonar el repositorio:
    git clone https://github.com/jhacksman/OpenSCAD-MCP-Server.git cd OpenSCAD-MCP-Server
  2. Crear un entorno virtual:
    python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate
  3. Instalar dependencias:
    pip install -r requirements.txt
  4. Instalar OpenSCAD:
    • Ubuntu/Debian: sudo apt-get install openscad
    • macOS: brew install openscad
    • Windows: Descargar desde openscad.org
  5. Instalar CUDA Multi-View Stereo:
    git clone https://github.com/fixstars/cuda-multi-view-stereo.git cd cuda-multi-view-stereo mkdir build && cd build cmake .. make
  6. Configurar claves API:
    • Crea un archivo .env en el directorio raíz
    • Añade tus claves API:
      GEMINI_API_KEY=your-gemini-api-key VENICE_API_KEY=your-venice-api-key # Optional REMOTE_CUDA_MVS_API_KEY=your-remote-api-key # For remote processing

Configuración de procesamiento remoto

El servidor admite el procesamiento remoto de tareas de alto consumo computacional, en particular la reconstrucción estéreo multivista CUDA. Esto permite delegar el procesamiento a equipos más potentes dentro de la red local (LAN).

Configuración del servidor (en la máquina con GPU CUDA)

  1. Instalar CUDA Multi-View Stereo en la máquina servidor:
    git clone https://github.com/fixstars/cuda-multi-view-stereo.git cd cuda-multi-view-stereo mkdir build && cd build cmake .. make
  2. Inicie el servidor CUDA MVS remoto:
    python src/main_remote.py
  3. El servidor se anunciará automáticamente en la red local utilizando Zeroconf.

Configuración del cliente

  1. Configure el procesamiento remoto en su archivo .env :
    REMOTE_CUDA_MVS_ENABLED=True REMOTE_CUDA_MVS_USE_LAN_DISCOVERY=True REMOTE_CUDA_MVS_API_KEY=your-shared-secret-key
  2. Alternativamente, puede especificar una URL de servidor directamente:
    REMOTE_CUDA_MVS_ENABLED=True REMOTE_CUDA_MVS_USE_LAN_DISCOVERY=False REMOTE_CUDA_MVS_SERVER_URL=http://server-ip:8765 REMOTE_CUDA_MVS_API_KEY=your-shared-secret-key

Funciones de procesamiento remoto

  • Detección automática de servidores : encuentre servidores CUDA MVS en su red local
  • Gestión de trabajos : cargue imágenes, realice un seguimiento del estado del trabajo y descargue resultados
  • Tolerancia a fallos : reintentos automáticos, patrón de disyuntor y seguimiento de errores
  • Autenticación : autenticación de clave API segura para todas las operaciones remotas
  • Monitoreo de la salud : controles continuos del estado del servidor e informes de estado

Uso

  1. Iniciar el servidor:
    python src/main.py
  2. El servidor se iniciará en http://localhost:8000
  3. Utilice las herramientas MCP para interactuar con el servidor:
    • generate_image_gemini : Genera una imagen usando la API de Google Gemini
      { "prompt": "A low-poly rabbit with black background", "model": "gemini-2.0-flash-exp-image-generation" }
    • generate_multi_view_images : Genera múltiples vistas del mismo objeto 3D
      { "prompt": "A low-poly rabbit", "num_views": 4 }
    • create_3d_model_from_images : Crea un modelo 3D a partir de imágenes multivista aprobadas
      { "image_ids": ["view_1", "view_2", "view_3", "view_4"], "output_name": "rabbit_model" }
    • create_3d_model_from_text : Canalización completa desde el texto hasta el modelo 3D
      { "prompt": "A low-poly rabbit", "num_views": 4 }
    • export_model : Exportar un modelo a un formato específico
      { "model_id": "your-model-id", "format": "obj" // or "stl", "ply", "scad", etc. }
    • discover_remote_cuda_mvs_servers : Encuentra servidores CUDA MVS en tu red
      { "timeout": 5 }
    • get_remote_job_status : verifica el estado de un trabajo de procesamiento remoto
      { "server_id": "server-id", "job_id": "job-id" }
    • download_remote_model_result : Descargar un modelo completo desde un servidor remoto
      { "server_id": "server-id", "job_id": "job-id", "output_name": "model-name" }
    • discover_printers : Descubre impresoras 3D en la red
      {}
    • print_model : Imprimir un modelo en una impresora conectada
      { "model_id": "your-model-id", "printer_id": "your-printer-id" }

Opciones de generación de imágenes

El servidor admite múltiples opciones de generación de imágenes:

  1. API de Google Gemini (predeterminada): utiliza el modelo experimental Flash Gemini 2.0 para la generación de imágenes de alta calidad
    • Admite generación de múltiples vistas con un estilo consistente
    • Requiere una clave API de Google Gemini
  2. API de Venice.ai (opcional): servicio alternativo de generación de imágenes
    • Admite varios modelos, incluidos flux-dev y fluently-xl
    • Requiere una clave API de Venice.ai
  3. Imágenes proporcionadas por el usuario : omite la generación de imágenes y usa tus propias imágenes
    • Subir imágenes directamente al servidor
    • Útil para trabajar con fotografías o renders existentes.

Flujo de trabajo de múltiples vistas

El servidor implementa un flujo de trabajo de múltiples vistas para la reconstrucción 3D:

  1. Generación de imágenes : genere múltiples vistas del mismo objeto 3D
  2. Aprobación de imagen : revise y apruebe/rechace cada imagen generada
  3. Reconstrucción 3D : Convierta imágenes aprobadas en un modelo 3D utilizando CUDA MVS
    • Se puede procesar localmente o en un servidor remoto dentro de su LAN
  4. Refinamiento del modelo : opcionalmente refine el modelo usando OpenSCAD

Flujo de trabajo de procesamiento remoto

El flujo de trabajo de procesamiento remoto le permite descargar tareas computacionalmente intensivas a máquinas más potentes:

  1. Detección de servidores : descubre automáticamente servidores CUDA MVS en tu red
  2. Carga de imágenes : cargue imágenes multivista aprobadas al servidor remoto
  3. Procesamiento de trabajos : procese las imágenes en el servidor remoto utilizando CUDA MVS
  4. Seguimiento del estado : supervise el estado y el progreso del trabajo
  5. Descarga de resultados : descargue el modelo 3D completo cuando finalice el procesamiento

Formatos de exportación admitidos

El servidor admite la exportación de modelos en varios formatos:

  • OBJ : formato Wavefront OBJ (formato de modelo 3D estándar)
  • STL : Lenguaje de triángulos estándar (para impresión 3D)
  • PLY : Formato de archivo poligonal (para nubes de puntos y mallas)
  • SCAD : código fuente de OpenSCAD (para modelos paramétricos)
  • CSG : formato CSG de OpenSCAD (conserva todas las propiedades paramétricas)
  • AMF : Formato de archivo de fabricación aditiva (conserva algunos metadatos)
  • 3MF : Formato de fabricación 3D (reemplazo moderno de STL con metadatos)

Interfaz web

El servidor proporciona una interfaz web para:

  • Generación y aprobación de imágenes multivista
  • Vista previa de modelos 3D desde diferentes ángulos
  • Descarga de modelos en varios formatos

Acceda a la interfaz en http://localhost:8000/ui/

Licencia

Instituto Tecnológico de Massachusetts (MIT)

Contribuyendo

¡Agradecemos sus contribuciones! No dude en enviar una solicitud de incorporación de cambios.

-
security - not tested
F
license - not found
-
quality - not tested

Permite a los usuarios generar modelos 3D paramétricos a partir de descripciones de texto o imágenes utilizando reconstrucción de múltiples vistas y OpenSCAD, con soporte para generación de imágenes de IA y procesamiento remoto.

  1. Features
    1. Architecture
      1. Installation
        1. Remote Processing Setup
          1. Server Setup (on the machine with CUDA GPU)
          2. Client Configuration
          3. Remote Processing Features
        2. Usage
          1. Image Generation Options
            1. Multi-View Workflow
              1. Remote Processing Workflow
                1. Supported Export Formats
                  1. Web Interface
                    1. License
                      1. Contributing
                        ID: cnf17irjiq