首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
OpenSCAD-MCP-Server2025-05-280分享
github
允许用户通过多视图重建和OpenSCAD,使用文本描述或图像生成参数化3D模型,并支持AI图像生成和远程处理。
By jhacksman
2025-05-280
github
详情内容

OpenSCAD MCP服务器

这是一个模型上下文协议(MCP)服务器,允许用户通过文本描述或图像生成3D模型,重点是通过多视图重建和OpenSCAD创建参数化3D模型。

功能特点

  • AI图像生成:使用Google Gemini或Venice.ai API从文本描述生成图像
  • 多视图图像生成:为同一3D对象创建多个视图以进行重建
  • 图像审批工作流:在重建前审查并批准/拒绝生成的图像
  • 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 MVS服务器
│   │   ├── connection_manager.py # 远程连接管理
│   │   └── error_handling.py     # 远程处理错误处理
│   ├── openscad_wrapper/         # OpenSCAD命令行包装器
│   ├── 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=您的Gemini API密钥
      VENICE_API_KEY=您的Venice API密钥  # 可选
      REMOTE_CUDA_MVS_API_KEY=您的远程API密钥  # 用于远程处理
      

远程处理设置

服务器支持将计算密集型任务(特别是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=您的共享密钥
    
  2. 或者,您可以直接指定服务器URL:

    REMOTE_CUDA_MVS_ENABLED=True
    REMOTE_CUDA_MVS_USE_LAN_DISCOVERY=False
    REMOTE_CUDA_MVS_SERVER_URL=http://服务器IP:8765
    REMOTE_CUDA_MVS_API_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": "兔子模型"
      }
      
    • create_3d_model_from_text:从文本到3D模型的完整流程

      {
        "prompt": "低多边形兔子",
        "num_views": 4
      }
      
    • export_model:将模型导出为特定格式

      {
        "model_id": "您的模型ID",
        "format": "obj"  // 或"stl"、"ply"、"scad"等
      }
      
    • discover_remote_cuda_mvs_servers:在您的网络上查找CUDA MVS服务器

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

      {
        "server_id": "服务器ID",
        "job_id": "作业ID"
      }
      
    • download_remote_model_result:从远程服务器下载完成的模型

      {
        "server_id": "服务器ID",
        "job_id": "作业ID",
        "output_name": "模型名称"
      }
      
    • discover_printers:发现网络上的3D打印机

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

      {
        "model_id": "您的模型ID",
        "printer_id": "您的打印机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模型
    • 可以在本地处理或在局域网内的远程服务器上处理
  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。

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档