OpenSCAD渲染服务

一个基于HTTP MCP协议的C#服务器,用于将OpenSCAD模型渲染成确定性的多视图PNG图像,适用于LLM工具使用。

  • by WaromiV
  • C#
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 WaromiV/openscad-ai-cs

使用说明

OpenSCAD AI C#MCP服务器

C#中的HTTP MCP服务器,将OpenSCAD模型渲染为确定性多视图PNG图像,供LLM工具使用。

特性

  • 基于HTTP的MCP(POST /mcp)使用JSON-RPC 2.0方法: initialize, ping, tools/list, tools/call
  • 健康/根端点(GET /)返回 server up
  • 工具: render_openscad
    • 输入: scad_file_path (路径到 .scad 文件)
    • 可选输入: print_process (fdm 或 sla,默认值 fdm)
    • 固定渲染大小: 1600x1200 (不可由用户配置)
    • 输出:带有MCP的6个确定性视图 image 内容块(base64 PNG)
    • 视图:top_ne、缩放的top_ne x3、top_sw、bottom_ne、bottom_sw、top
    • 严格的印刷适性规则,自动执行:禁止边缘壁厚接近零;FDM的最小壁厚为1.0mm,SLA为2.0mm
  • 工具: compare_renders
    • 输入: reference_image_path (目标/原始图像), rendered_image_path (OpenSCAD渲染)
    • 输出:具有解释的定量相似性度量
    • 度量:SSIM(结构相似性)、MSE(均方误差)、直方图相关性、边缘对齐
    • 自动调整图像大小以匹配尺寸,从而进行准确比较
  • F6风格渲染管道(网格导出+渲染),不是OpenSCAD预览模式
  • 相机居中于bbox模型中心($vpt)具有确定性距离($vpd)
  • 在图像叠加上:顶部标签+XYZ图例(X红色,Y绿色,Z蓝色)
  • 可选的CGAL验证工人集成,用于断开连接的零件和自交叉点

需求

  • .NET SDK 10+
  • OpenSCAD CLI可在 PATH 作为 openscad

跑

dotnet run --urls http://127.0.0.1:8770

要与CGAL worker一起运行:

CGAL_WORKER_PATH=/absolute/path/to/cgal_worker dotnet run --urls http://127.0.0.1:8770

默认工作路径(如果未设置env var):

  • Validation/cgal_worker/bin/cgal_worker

然后:

  • GET http://127.0.0.1:8770/ -> server up
  • POST http://127.0.0.1:8770/mcp 用于MCP JSON-RPC调用

MCP工具示例

渲染OpenSCAD模型

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "render_openscad",
    "arguments": {
      "scad_file_path": "/absolute/path/to/model.scad"
    }
  }
}

将渲染图像与参考进行比较

{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "compare_renders",
    "arguments": {
      "reference_image_path": "/path/to/original_photo.png",
      "rendered_image_path": "/path/to/render_top_ne.png"
    }
  }
}

退货:

  • ssim:0.0-1.0(1.0=结构相同)
  • mse:越低越好(<100优秀,100-500可接受,>500显著差异)
  • histogram_correlation:-1.0到1.0(>0.90的颜色匹配良好)
  • edge_alignment:0.0-1.0(>0.80边缘对齐良好)