这是一个模型上下文协议(MCP)服务器,使用户能够从文本描述或图像生成3D模型,重点是使用多视角重建和OpenSCAD创建参数化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界面静态文件
克隆仓库:
git clone https://github.com/jhacksman/OpenSCAD-MCP-Server.git
cd OpenSCAD-M
创建虚拟环境:
python -m venv venv
source venv/bin/activate # 在Windows上:venv\Scripts\activate
安装依赖项:
pip install -r requirements.txt
安装OpenSCAD:
sudo apt-get install openscadbrew install openscad安装CUDA多视角立体视觉:
git clone https://github.com/fixstars/cuda-multi-view-stereo.git
cd cuda-multi-view-stereo
mkdir build && cd build
cmake ..
make
设置API密钥:
.env文件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多视角立体视觉:
git clone https://github.com/fixstars/cuda-multi-view-stereo.git
cd cuda-multi-view-stereo
mkdir build && cd build
cmake ..
make
启动远程CUDA MVS服务器:
python src/main_remote.py
服务器将自动通过Zeroconf在本地网络上发布自己。
在您的.env文件中配置远程处理:
REMOTE_CUDA_MVS_ENABLED=True
REMOTE_CUDA_MVS_USE_LAN_DISCOVERY=True
REMOTE_CUDA_MVS_API_KEY=your-shared-secret-key
或者,您可以直接指定服务器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
启动服务器:
python src/main.py
使用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"
}
服务器支持多种图像生成选项:
Google Gemini API(默认):使用Gemini 2.0 Flash实验模型进行高质量图像生成
Venice.ai API(可选):替代图像生成服务
用户提供的图像:跳过图像生成并使用自己的图像
服务器实现了用于3D重建的多视角工作流:
远程处理工作流允许您将计算密集型任务卸载到更强大的机器上:
服务器支持以多种格式导出模型:
服务器提供了一个Web界面用于:
访问界面:http://localhost:8000/ui/
MIT
欢迎贡献!请随时提交Pull Request。