返回市场
开源CAD-MCP服务器

开源CAD-MCP服务器

作者:jhacksman95 星标更新:2025-03-22

项目介绍

OpenSCAD MCP 服务器

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

功能

  • AI 图像生成:使用Google Gemini或Venice.ai API从文本描述生成图像
  • 多视角图像生成:生成同一三维对象的多个视角以进行重建
  • 图像审批工作流:在重建之前审查并批准/拒绝生成的图像
  • 3D 重建:使用CUDA多视角立体视图将批准的多视角图像转换为3D模型
  • 远程处理:在局域网内的远程服务器上处理计算密集型任务
  • OpenSCAD 集成:使用OpenSCAD生成参数化3D模型
  • 参数化导出:以保留参数属性的格式导出模型(CSG、AMF、3MF、SCAD)
  • 3D 打印机发现:可选的网络打印机发现和直接打印

架构

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

openscad-mcp-server/
├── src/
│   ├── main.py                  # 主应用程序
│   ├── main_remote.py           # 远程CUDA MVS服务器
│   ├── ai/                      # AI集成
│   │   ├── gemini_api.py        # Google Gemini API用于图像生成
│   │   └── venice_api.py        # Venice.ai API用于图像生成(可选)
│   ├── models/                  # 3D模型生成
│   │   ├── cuda_mvs.py          # CUDA多视角立体视图集成
│   │   └── code_generator.py    # OpenSCAD代码生成
│   ├── workflow/                # 工作流组件
│   │   ├── image_approval.py    # 图像审批机制
│   │   └── multi_view_to_model_pipeline.py  # 完整的工作流
│   ├── remote/                  # 远程处理
│   │   ├── cuda_mvs_client.py   # 远程CUDA MVS处理客户端
│   │   ├── cuda_mvs_server.py   # 远程CUDA M
│   │   ├── connection_manager.py # 远程连接管理
│   │   └── error_handling.py    # 远程处理错误处理
│   ├── openscad_wrapper/        # OpenSCAD CLI封装
│   ├── visualization/           # 预览生成和Web界面
│   ├── utils/                   # 实用函数
│   └── printer_discovery/       # 3D打印机发现
├── scad/                        # 生成的OpenSCAD文件
├── output/                      # 输出文件(模型、预览)
│   ├── images/                  # 生成的图像
│   ├── multi_view/              # 多视角图像
│   ├── approved_images/         # 用于重建的已批准图像
│   └── models/                  # 生成的3D模型
├── templates/                   # Web界面模板
└── static/                      # Web界面静态文件

安装

  1. 克隆仓库:

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

    python -m venv venv
    source venv/bin/activate  # 在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  # 可选
      REMOTE_CUDA_MVS_API_KEY=your-remote-api-key  # 用于远程处理
      

远程处理设置

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

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

  1. 在服务器机器上安装CUDA多视角立体视图:

    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": "一只低多边形兔子,黑色背景",
        "model": "gemini-2.0-flash-exp-image-generation"
      }
      
    • generate_multi_view_images:生成同一3D对象的多个视角

      {
        "prompt": "一只低多边形兔子",
        "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": "一只低多边形兔子",
        "num_views": 4
      }
      
    • export_model:将模型导出为特定格式

      {
        "model_id": "your-model-id",
        "format": "obj"  // 或 "stl", "ply", "scad" 等
      }
      
    • 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实验模型进行高质量图像生成

    • 支持具有一致风格的多视角生成
    • 需要Google Gemini API密钥
  2. Venice.ai API(可选):替代图像生成服务

    • 支持各种模型,包括flux-dev和fluently-xl
    • 需要Venice.ai API密钥
  3. 用户提供的图像:跳过图像生成,使用自己的图像

    • 直接将图像上传到服务器
    • 对于处理现有照片或渲染很有用

多视角工作流

服务器实现了用于3D重建的多视角工作流:

  1. 图像生成:生成同一3D对象的多个视角
  2. 图像审批:审查并批准/拒绝每个生成的图像
  3. 3D 重建:使用CUDA MVS将批准的图像转换为3D模型
    • 可以在本地或局域网内的远程服务器上处理
  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/

许可证

MIT

贡献

欢迎贡献!请随意提交Pull Request。