关于 Furniture Designer
Furniture Designer 是一款 MCP 服务,可将家具尺寸和类型转换为制造资料包,面向家具设计者和制造者。它整合结构校验、板材切割优化、物料清单、装配说明和交互式 HTML 报告,并可选导出到 FreeCAD。
主要功能
- 01按尺寸和类型生成家具规格
- 02依据设计规则进行结构校验
- 03考虑纹理方向和锯缝的板材切割优化
- 04物料清单和装配说明
- 05带 3D 查看器的交互式 HTML 报告
- 06可选导出 FreeCAD 模型和图纸
适用场景
- 01准备柜体设计的制造资料
- 02校验设计并优化板材切割
- 03恢复并比较已保存的设计迭代
MCP 相关
向 MCP 客户端提供 23 个工具,用于家具设计、校验、制造规划、项目管理和报告生成。FreeCAD 相关工具需要相应的 FreeCAD 或 freecad-mcp 依赖。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
furniture-designer-mcp
用于专业家具设计的 MCP 服务
将家具尺寸和类型转换为完整的制造就绪套件:技术规格、结构验证、切割优化、物料清单(BOM)、组装说明、带 3D 查看器的交互式 HTML 报告,以及可选的 FreeCAD 导出。
整体流程
"closet 180x240x60 en melamina 18mm, 2 secciones"
|
+-----------------------+
| design_furniture | -> Spec: paneles, posiciones, hardware, secciones
+-----------+-----------+
|
+---------------+---------------+
| | |
validate generate_bom optimize_cuts
| | |
0 errores 18 paneles 3 tableros
1 warning 34 confirmats 32% desperdicio
8.4m cantos veta alineada
|
get_assembly_steps
|
14 pasos ordenados
con tornilleria por paso
|
update_design_report
|
Reporte HTML interactivo
http://localhost:8432/closet-dormitorio
安装
作为 MCP 服务(推荐)
uvx furniture-designer-mcp
在项目的 .mcp.json 中:
{
"mcpServers": {
"furniture-designer": {
"command": "uvx",
"args": ["furniture-designer-mcp"]
}
}
}
本地开发
git clone https://github.com/LuisEnVilla/furniture-designer-mcp.git
cd furniture-designer-mcp
uv sync
uv run furniture-designer-mcp
与 Claude Code 搭配使用(插件)
furniture-designer-plugin 提供一个包含 4 个阶段的对话式助手,引导用户从构思到生成制造套件:
# Instalar el plugin (incluye el servidor MCP automaticamente)
claude plugin add https://github.com/LuisEnVilla/furniture-designer-plugin
# Iniciar un diseno
> /furniture disena un closet de 120x240x60
该插件负责完整的工作流:询问家具类型、尺寸、材料和功能,然后生成 spec、执行验证、优化切割并生成 HTML 报告——整个过程都通过对话完成。
查看插件完整文档:furniture-designer-plugin
主要功能
交互式 HTML 报告
主要交付成果是一份在 http://localhost:8432/{design_id} 上提供的 HTML 报告,包含:
- 设计页面 — 组装完成的家具 3D 查看器(Three.js)+ 包含规格、部件用途、五金件和备注的技术资料。包含交互式测量工具和内部尺寸 2D 示意图(IKEA 风格)
- 部件页面 — 爆炸视图 3D 展示 + 包含尺寸和封边信息的部件表 + 组装指南
- 切割页面 — 按板材展示的 SVG 排版图,板件按用途着色,并显示封边效果和使用率条(绿色/黄色/红色)
- 历史记录页面 — 按时间排列的迭代时间线,带有变更徽章
多设计持久化
每个设计都存储在 ./designs/{design_id}/ 中,包含:
designs/
closet-dormitorio/
report.html <- servido en http://localhost:8432/closet-dormitorio
spec.json <- ultimo spec (lectura rapida para el agente)
metadata.json <- {name, type, created, updated, iterations}
cocina-isla/
report.html
spec.json
metadata.json
你可以同时处理多个设计,并在之后的会话中继续任意一个设计。
通过 WebSocket 实时重新加载
每当 Agent 生成新迭代时,报告都会在浏览器中自动更新。无需重新加载页面——WebSocket 会通知变更,JS 会更新视图。
使用自然语言的分区映射
引擎会根据设计中的垂直隔板自动生成分区标签:
{
"S1": {
"label_es": "Seccion izquierda",
"aliases": ["izq", "left", "primera"],
"x_start_mm": 18, "x_end_mm": 900,
"parts": ["shelf_S1_1", "bar_S1"]
},
"S2": {
"label_es": "Seccion derecha",
"aliases": ["der", "right", "ultima"],
"x_start_mm": 918, "x_end_mm": 1782,
"parts": ["drawer_S2_1_front", "drawer_S2_2_front"]
}
}
这样用户就可以说“把左边加宽”,由 Agent 找到对应的分区。
踢脚板作为结构框架
踢脚板并非独立面板,而是由 4 个部件组成的矩形框架,用于承托家具的全部重量:
Vista superior del zocalo:
+------ kickplate_front ------+ <- frente (retranqueado 5cm)
| |
kickplate_return_l kickplate_return_r <- retornos laterales
| |
+------ kickplate_back -------+ <- fondo
前面板向内缩进 5 cm,避免脚部碰撞。家具侧板支撑在这个框架上。
自动筛除 MDF 面板
3 mm MDF 面板(背板、抽屉底板)会自动从切割优化器中筛除——它们使用不同的板材库存(MDF 板,而非三聚氰胺板)进行切割。此筛选会应用于 back、drawer_bottom 角色,以及任何厚度小于主材的面板。
工具(23 个)
设计
| 工具 | 描述 |
|---|---|
design_furniture | 生成完整规格,包含面板、五金件、位置、分区和结构说明 |
知识
| 工具 | 描述 |
|---|---|
get_standards | 按家具类型提供的人体工学标准 |
get_material_specs | 材料属性(厚度、最大跨距、螺钉握持力) |
get_structural_rules | 10 条结构规则,包含严重程度和解决方案 |
get_hardware_catalog | 五金件目录,包含数量和安装位置规则 |
get_assembly_specs | 组装规格:连接、粘合剂、预钻孔、安装 |
所有工具均接受
brief=true,以返回精简内容(节省 60-80% 的 token)。
验证与制造
| 工具 | 描述 |
|---|---|
validate_structure | 根据 10 条结构规则验证规格(错误 + 警告) |
generate_bom | 物料清单:分组面板、五金件、以米为单位的封边条 |
optimize_cuts | 在标准板材(2440x1220mm)上进行 2D 优化,并考虑纹理方向和锯缝 |
get_assembly_steps | 以西班牙语提供逐步组装说明 |
多设计与报告
| 工具 | 描述 |
|---|---|
create_design | 创建新的设计项目(返回 design_id) |
list_designs | 列出所有活动设计及其元数据 |
get_design_context | 恢复某个设计的规格和历史记录,以便继续设计 |
get_section_map | 分区映射,包含标签和自然语言解析 |
start_design_server | 启动 HTTP 服务(端口 8432),并启用 WebSocket 实时重新加载 |
update_design_report | 生成/更新交互式 HTML 报告 |
FreeCAD — 导出(需要 FreeCAD + RPC server)
| 工具 | 描述 |
|---|---|
build_3d_model | 通过 XML-RPC 在 FreeCAD 中构建装配后的 3D 模型 |
build_exploded_view | 在 FreeCAD 中构建爆炸视图 |
build_cut_diagram | 在 FreeCAD 中构建切割图 |
build_techdraw | 构建 TechDraw 技术图纸(A3 正交视图) |
FreeCAD — 导入(需要 freecad-mcp)
| 工具 | 描述 |
|---|---|
build_import_script | 用于从现有 FreeCAD 文档中提取面板的脚本 |
parse_freecad_import | 将导入脚本的输出解析为规格 |
开发
| 工具 | 描述 |
|---|---|
reload_engine | 重新加载引擎模块,无需重启 MCP 服务 |
家具类型
| 类型 | 描述 | 主要特征 |
|---|---|---|
kitchen_base | 厨房地柜 | 4 件式踢脚板、横撑、无顶板(用于安装台面) |
kitchen_wall | 厨房吊柜 | 无踢脚板,带顶板和底板 |
closet | 衣柜/橱柜 | 带踢脚板,宽度 >75 cm 时自动添加隔板,高度 >180 cm 时提示锚固 |
bookshelf | 书柜/书架 | 多层搁板,可选装柜门 |
desk | 书桌 | 膝部空间(60 cm)、前挡板 |
vanity | 浴室洗手台/浴室柜 | 厨房地柜式结构 |
材料
| 材料 | 厚度 | 最大无支撑跨度 | 适用场景 |
|---|---|---|---|
melamine_16 (default) | 16mm | 75cm | 通用,成本更低 |
melamine_18 | 18mm | 85cm | 高端厨房和衣柜 |
mdf_15 | 15mm | 80cm | 涂漆家具 |
mdf_18 | 18mm | 90cm | CNC 设计门板 |
plywood_18 | 18mm | 100cm | 长跨度、高强度 |
solid_pine_20 | 20mm | 120cm | 实木家具 |
服务架构
furniture-designer-mcp/
src/furniture_designer_mcp/
server.py <- Punto de entrada MCP (23 tools)
engine/
designer.py <- Motor principal: spec + section_labels
structural_validator.py <- 10 reglas estructurales
cut_optimizer.py <- Bin packing 2D con veta y kerf
bom_generator.py <- Bill of Materials
spec_validator.py <- Validacion de formato de spec
spec_builder.py <- Construccion de spec desde parametros
section_mapper.py <- Mapa de secciones + resolucion natural
design_store.py <- Multi-diseno + persistencia ./designs/
http_server.py <- HTTP + WebSocket (puerto 8432)
report_generator.py <- Template HTML interactivo (~1900 lineas)
freecad_scripts.py <- Generacion de scripts FreeCAD
freecad_client.py <- XML-RPC client para FreeCAD
knowledge/
standards.py <- Estandares ergonomicos
materials.py <- Propiedades de materiales
structural_rules.py <- Reglas de ingenieria
hardware_catalog.py <- Catalogo de herrajes
assembly_specs.py <- Especificaciones de ensamble
技术注意事项
单位
- 输入:尺寸以 cm 为单位(宽、高、深)
- 输出:spec 以 mm 为单位(
width_mm、height_mm、thickness_mm) - 裁切:优化器使用
width/height(无_mm后缀)——与 spec 的 schema 不同
材料纹理方向
优化器支持 grain_direction="length",以保持带纹理三聚氰胺板的纹理方向一致。这会限制部件的旋转。如果部件在纹理方向限制下无法放入,则会自动放宽为 none,并发出提示。
锯缝(kerf)
默认 3mm。优化器会在每次裁切时扣除该值。可根据所用锯片调整。
背板
始终使用 3mm MDF。如果家具没有背板(角色 back),验证器会报错。背板会自动从三聚氰胺板裁切优化器中排除。
自动隔板
如果某个区段的宽度超过材料的最大跨度,则会自动添加垂直隔板。
高柜(>180cm)
验证器会因倾倒风险发出墙面锚固警告。
完整抽屉
design_furniture 会生成完整抽屉箱体:前板 + 2 个侧板 + 后板 + 3mm MDF 底板 + 伸缩滑轨。
compact 模式
主要工具默认返回 compact=true:易读摘要 + 精简 JSON。仅在需要完整 JSON 时使用 compact=false。
热重载
reload_engine 会重新加载 engine 的所有模块,无需重启 MCP 服务。适用于开发过程。
要求
- Python >= 3.12
- 用于包管理的 uv
- FreeCAD 0.21+,带 MCP 插件(仅用于 3D 导出)
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。