OpenSCAD MCP服务器

一个模型上下文协议(MCP)服务器,提供大型语言模型与OpenSCAD之间的无缝集成,用于协作3D建模和快速原型设计。

  • by jabberjabberjabber
  • Python
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 jabberjabberjabber/openscad-mcp

使用说明

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许可证获得许可-请参阅 许可证 文件以获取详细信息。