使用说明
OpenSCAD MCP服务器
模型上下文协议(MCP)服务器,提供大型语言模型和OpenSCAD之间的无缝集成,用于协作3D建模和快速原型制作。
🚀 特性
- 自然语言到3D模型:用简单的英语描述你的设计,并使用OpenSCAD代码
- 实时视觉反馈:使用针对视觉模型优化的base64 PNG图像进行实时渲染
- 即时3D打印:直接STL导出,为您的3D打印机做好准备
- 持久工作区:Scratchpad在会话中保持您的工作
- 多个摄像头视图:从各个角度(等距、正面、背面、左侧、右侧、顶部、底部)检查您的模型
- 错误处理:用于调试的全面错误报告和日志记录
🎯 用例
- 快速原型制作:快速迭代机械零件和组件
- 教育工具:通过对话式界面学习3D建模
- 参数化设计:通过简单的参数更改生成相关对象的族
- 无障碍:为喜欢基于文本界面的用户提供3D建模
- 自动化:将3D模型生成集成到更大的工作流程中
📋 需求
- Python 3.8+
- OpenSCAD (已安装,可通过命令行访问)
- fastmcp 图书馆
🛠️ 安装
1.安装OpenSCAD
窗户:
# Download from https://openscad.org/downloads.html
# Or via Chocolatey:
choco install openscad
macOS:
brew install openscad
Linux(Ubuntu/Debian):
sudo apt-get install openscad
2.克隆并运行
git clone https://github.com/jabberjabberjabber/openscad-mcp
cd openscad-mcp
uv run --with fastmcp fastmcp dev main.py
3.安装
将此添加到客户端的MCP配置中:
"mcpServers": {
"openscad-mcp": {
"command": "uv",
"args": [
"run",
"--with",
"fastmcp",
"fastmcp",
"run",
"c:/path/to/openscad-mcp/main.py"
],
"env": {
"OPENSCAD_WORK_DIR": "c:/path/to/openscad-mcp/"
}
}
},
🎮 用法
该服务器为3D建模工作流提供了五个主要工具:
可用工具
| 工具 | 用途 | 参数 |
|---|---|---|
show_openscad_script |
显示当前脚本 | 无 |
create_openscad_script |
创建/更新脚本 | script_content: str |
view_render |
渲染PNG图像 | view: str (可选) |
export_model_to_stl |
导出以进行3D打印 | filename: str |
save_openscad_script |
将脚本保存到文件 | filename: str |
工作流示例
# 1. Create a model
create_openscad_script("""
// Simple cube with rounded corners
$fn = 32;
minkowski() {
cube([20, 20, 10], center=true);
sphere(r=2);
}
""")
# 2. View the result
view_render("isometric") # Returns base64 PNG
# 3. Export for printing
export_model_to_stl("rounded_cube")
# 4. Save the source
save_openscad_script("rounded_cube")
摄像头视图
isometric(默认)-三维透视图front-正面正交视图back-后正交视图left-左侧视图right-右侧视图top-俯视图bottom-自下而上视图
🏗️ 建筑
┌─────────────────┐ ┌──────────────────┐ ┌─────────────────┐
│ LLM Client │───▶│ MCP Server │───▶│ OpenSCAD │
│ │ │ │ │ Engine │
│ Natural Language│ │ • Script Storage │ │ • Rendering │
│ Descriptions │ │ • State Mgmt │ │ • STL Export │
│ │◀───│ • Error Handling │◀───│ • Validation │
└─────────────────┘ └──────────────────┘ └─────────────────┘
关键组件
- 持久状态:基于JSON的草稿行用于会话连续性
- OpenSCAD集成:具有超时保护的子进程调用
- 图像生成:Base64 PNG编码,兼容视觉模型
- 文件管理:有组织地输出到可配置的工作目录
- 错误处理:全面的日志记录和优雅的故障模式
🎨 示例项目
空心球体(花瓶模式)
$fn = 64;
difference() {
sphere(r=15); // 30mm diameter
sphere(r=12); // 3mm wall thickness
}
参数齿轮
module gear(teeth=20, height=5) {
linear_extrude(height=height) {
for (i = [0:teeth-1]) {
rotate([0, 0, i*360/teeth]) {
translate([8, 0, 0]) circle(r=1);
}
}
circle(r=7);
}
}
gear(teeth=16, height=8);
可定制支架
width = 30;
depth = 20;
height = 15;
thickness = 3;
difference() {
cube([width, depth, height]);
translate([thickness, thickness, thickness])
cube([width-2*thickness, depth-thickness, height]);
}
⚙️ 配置
环境变量
OPENSCAD_WORK_DIR:文件的工作目录(默认:服务器目录)
日志记录
日志被写入 openscad_mcp.log 详细的操作信息:
- 脚本更新和验证
- 渲染操作和时间
- 导出操作和文件大小
- 错误条件和恢复
📝 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。