Skip to main content
Glama

OpenSCAD MCP 服务器

模型上下文协议 (MCP) 服务器,使用户能够从文本描述或图像生成 3D 模型,重点是使用多视图重建和 OpenSCAD 创建参数化 3D 模型。

特征

  • AI 图像生成:使用 Google Gemini 或 Venice.ai API 根据文本描述生成图像

  • 多视图图像生成:创建同一 3D 对象的多个视图以进行重建

  • 图像审批工作流程:重建前审查并批准/拒绝生成的图像

  • 3D 重建:使用 CUDA 多视图立体技术将批准的多视图图像转换为 3D 模型

  • 远程处理:在局域网内的远程服务器上处理计算密集型任务

  • OpenSCAD 集成:使用 OpenSCAD 生成参数化 3D 模型

  • 参数导出:以保留参数属性的格式导出模型(CSG、AMF、3MF、SCAD)

  • 3D 打印机发现:可选的网络打印机发现和直接打印

Related MCP server: Tripo3D MCP

建筑学

该服务器使用 Python MCP SDK 构建,并遵循模块化架构:

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

安装

  1. 克隆存储库:

    git clone https://github.com/jhacksman/OpenSCAD-MCP-Server.git
    cd OpenSCAD-MCP-Server
  2. 创建虚拟环境:

    python -m venv venv
    source venv/bin/activate  # On Windows: venv\Scripts\activate
  3. 安装依赖项:

    pip install -r requirements.txt
  4. 安装OpenSCAD:

    • Ubuntu/Debian: sudo apt-get install openscad

    • macOS: brew install openscad

    • Windows:从openscad.org下载

  5. 安装 CUDA 多视图立体:

    git clone https://github.com/fixstars/cuda-multi-view-stereo.git
    cd cuda-multi-view-stereo
    mkdir build && cd build
    cmake ..
    make
  6. 设置 API 密钥:

    • 在根目录中创建一个.env文件

    • 添加您的 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

远程处理设置

该服务器支持远程处理计算密集型任务,尤其是 CUDA 多视图立体重建。这允许您将处理任务转移到局域网内更强大的机器上。

服务器设置(在装有 CUDA GPU 的机器上)

  1. 在服务器机器上安装 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
  2. 启动远程 CUDA MVS 服务器:

    python src/main_remote.py
  3. 服务器将使用 Zeroconf 在本地网络上自动宣传自己。

客户端配置

  1. .env文件中配置远程处理:

    REMOTE_CUDA_MVS_ENABLED=True
    REMOTE_CUDA_MVS_USE_LAN_DISCOVERY=True
    REMOTE_CUDA_MVS_API_KEY=your-shared-secret-key
  2. 或者,您可以直接指定服务器 URL:

    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

远程处理功能

  • 自动服务器发现:在本地网络上查找 CUDA MVS 服务器

  • 作业管理:上传图像、跟踪作业状态和下载结果

  • 容错:自动重试、断路器模式和错误跟踪

  • 身份验证:所有远程操作的安全 API 密钥身份验证

  • 健康监控:持续的服务器健康检查和状态报告

用法

  1. 启动服务器:

    python src/main.py
  2. 服务器将在http://localhost:8000上启动

  3. 使用 MCP 工具与服务器交互:

    • generate_image_gemini :使用 Google Gemini API 生成图像

      {
        "prompt": "A low-poly rabbit with black background",
        "model": "gemini-2.0-flash-exp-image-generation"
      }
    • generate_multi_view_images :生成同一 3D 对象的多个视图

      {
        "prompt": "A low-poly rabbit",
        "num_views": 4
      }
    • create_3d_model_from_images :根据批准的多视图图像创建 3D 模型

      {
        "image_ids": ["view_1", "view_2", "view_3", "view_4"],
        "output_name": "rabbit_model"
      }
    • create_3d_model_from_text :从文本到 3D 模型的完整流程

      {
        "prompt": "A low-poly rabbit",
        "num_views": 4
      }
    • export_model :将模型导出为特定格式

      {
        "model_id": "your-model-id",
        "format": "obj"  // or "stl", "ply", "scad", etc.
      }
    • discover_remote_cuda_mvs_servers :在您的网络上查找 CUDA MVS 服务器

      {
        "timeout": 5
      }
    • get_remote_job_status :检查远程处理作业的状态

      {
        "server_id": "server-id",
        "job_id": "job-id"
      }
    • download_remote_model_result :从远程服务器下载完成的模型

      {
        "server_id": "server-id",
        "job_id": "job-id",
        "output_name": "model-name"
      }
    • discover_printers :在网络上发现 3D 打印机

      {}
    • print_model :在连接的打印机上打印模型

      {
        "model_id": "your-model-id",
        "printer_id": "your-printer-id"
      }

图像生成选项

服务器支持多种图像生成选项:

  1. Google Gemini API (默认):使用 Gemini 2.0 Flash Experimental 模型生成高质量图像

    • 支持多视图生成,风格一致

    • 需要 Google Gemini API 密钥

  2. Venice.ai API (可选):替代图像生成服务

    • 支持多种模型,包括 flux-dev 和 fluently-xl

    • 需要 Venice.ai API 密钥

  3. 用户提供的图像:跳过图像生成并使用您自己的图像

    • 直接将图像上传到服务器

    • 适用于处理现有照片或渲染图

多视图工作流程

服务器实现了3D重建的多视图工作流程:

  1. 图像生成:生成同一 3D 对象的多个视图

  2. 图像批准:审查并批准/拒绝每个生成的图像

  3. 3D 重建:使用 CUDA MVS 将批准的图像转换为 3D 模型

    • 可以在本地或 LAN 内的远程服务器上处理

  4. 模型细化:可选择使用 OpenSCAD 细化模型

远程处理工作流程

远程处理工作流程允许您将计算密集型任务卸载到更强大的机器上:

  1. 服务器发现:自动发现网络上的 CUDA MVS 服务器

  2. 图像上传:将批准的多视图图像上传到远程服务器

  3. 作业处理:使用 CUDA MVS 处理远程服务器上的图像

  4. 状态跟踪:监控工作状态和进度

  5. 结果下载:处理完成后下载完成的3D模型

支持的导出格式

服务器支持导出多种格式的模型:

  • OBJ :Wavefront OBJ格式(标准3D模型格式)

  • STL :标准三角语言(用于3D打印)

  • PLY :多边形文件格式(用于点云和网格)

  • SCAD :OpenSCAD 源代码(用于参数模型)

  • CSG :OpenSCAD CSG 格式(保留所有参数属性)

  • AMF :增材制造文件格式(保留一些元数据)

  • 3MF :3D 制造格式(带有元数据的 STL 的现代替代品)

Web 界面

该服务器提供了一个 Web 界面用于:

  • 生成和批准多视图图像

  • 从不同角度预览 3D 模型

  • 下载各种格式的模型

访问界面http://localhost:8000/ui/

执照

麻省理工学院

贡献

欢迎贡献代码!欢迎提交 Pull 请求。

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jhacksman/OpenSCAD-MCP-Server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server