Furniture Designer

io.github.LuisEnVillaPublished by GitHub account LuisEnVillav0.1.3Updated Oct 27, 2026

Professional furniture design: specs, validation, cut optimization, BOM, and 3D reports.

VerifiedSTDIODesktop onlyData & AnalyticsMedia & Design

Overview

AI-generated overview

Local MCP server that turns furniture dimensions and type into a fabrication package: spec, structural validation, cut optimization, BOM, assembly steps and a…

What you can do
  • Generate a full furniture spec (panels, hardware, positions, sections) from type and dimensions
  • Look up ergonomic standards, material properties, structural rules, hardware catalog and assembly specs
  • Validate the spec against structural rules and produce a bill of materials with edge banding
  • Optimize 2D cuts on standard boards with grain direction and kerf
  • Produce step-by-step assembly instructions in Spanish
  • Manage multiple saved designs, serve an interactive HTML report with 3D viewer and live reload
When to use it
Useful for woodworking and cabinet-making work where an assistant should go from a described piece (closet, kitchen base or wall cabinet, bookshelf, desk, vanity) to a buildable package with cut lists and assembly steps. Also handy for iterating on a design and reviewing it in a browser-based 3D report.
Requirements
Runs locally as a Python package (Python 3.12 or newer, uv recommended; launched via uvx). FreeCAD 0.21+ with an MCP addon is needed only for the 3D export tools. Designs are stored in a local designs folder and the HTML report is served on local port 8432.
Before you install
Designs, specs and reports are written to a local designs directory, and the report server listens on local port 8432. FreeCAD export tools require a running FreeCAD RPC server. No credentials or payments are involved.

Installation

In SourceWeft

  1. Open Furniture Designer in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

furniture-designer-mcp

Servidor MCP para diseño profesional de muebles

[PyPI] [License] [MCP] [Python] [GitHub Release]

[Claude Code Plugin]

Convierte dimensiones y tipo de mueble en un paquete completo listo para fabricacion: especificacion tecnica, validacion estructural, optimizacion de cortes, BOM, instrucciones de ensamble, reporte HTML interactivo con viewer 3D, y exportacion opcional a FreeCAD.

[reporte]

Flujo general

"closet 180x240x60 en melamina 18mm, 2 secciones"                    |        +-----------------------+        |   design_furniture    |  -> Spec: paneles, posiciones, hardware, secciones        +-----------+-----------+                    |    +---------------+---------------+    |               |               |validate      generate_bom    optimize_cuts    |               |               |0 errores     18 paneles       3 tableros1 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

Instalacion

Como servidor MCP (recomendado)

bash
uvx furniture-designer-mcp

En .mcp.json de tu proyecto:

json
{  "mcpServers": {    "furniture-designer": {      "command": "uvx",      "args": ["furniture-designer-mcp"]    }  }}

Desarrollo local

bash
git clone https://github.com/LuisEnVilla/furniture-designer-mcp.gitcd furniture-designer-mcpuv syncuv run furniture-designer-mcp

Uso con Claude Code (Plugin)

El furniture-designer-plugin agrega un asistente conversacional de 4 fases que guia al usuario desde la idea hasta el paquete de fabricacion:

bash
# 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

El plugin maneja el flujo completo: pregunta tipo, dimensiones, material y funcionalidad, luego genera el spec, valida, optimiza cortes y produce el reporte HTML — todo conversacionalmente.

Ver documentacion completa del plugin: furniture-designer-plugin

Funcionalidades principales

Reporte HTML interactivo

El entregable principal es un reporte HTML servido en http://localhost:8432/{design_id} con:

  • Pagina Diseno — Viewer 3D (Three.js) del mueble ensamblado + ficha tecnica con specs, roles, hardware y notas. Incluye herramienta de medicion interactiva y diagrama 2D de dimensiones internas (tipo IKEA)
  • Pagina Partes — Vista 3D explosionada + tabla de partes con dimensiones y canteado + guia de ensamble
  • Pagina Cortes — Layout SVG por tablero con piezas coloreadas por rol, canteado visual, barra de uso (verde/amarillo/rojo)
  • Pagina Historial — Timeline vertical de iteraciones con badges de cambios
[Pagina Diseno] [Pagina Partes — vista explosionada] [Pagina Historial — timeline de iteraciones]

Multi-diseno con persistencia

Cada diseño se almacena en ./designs/{design_id}/ con:

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

Puedes trabajar en multiples diseños simultáneamente y retomar cualquiera en sesiones futuras.

Live reload via WebSocket

El reporte se actualiza automáticamente en el navegador cada vez que el agente genera una nueva iteración. No necesitas recargar la página — el WebSocket notifica el cambio y el JS actualiza la vista.

Mapa de secciones con lenguaje natural

El motor genera etiquetas de sección automáticamente basadas en los divisores verticales del diseño:

json
{  "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"]  }}

Esto permite que el usuario diga "haz la izquierda mas ancha" y el agente resuelva la referencia a la sección correcta.

Zocalo como marco estructural

El zócalo no es un panel suelto — es un marco rectangular de 4 piezas que soporta todo el peso del mueble:

Vista superior del zocalo:
    +------ kickplate_front ------+    <- frente (retranqueado 5cm)    |                              |    kickplate_return_l    kickplate_return_r    <- retornos laterales    |                              |    +------ kickplate_back -------+    <- fondo

El frente se retranquea 5cm para que los pies no choquen. Los laterales del mueble se apoyan encima de este marco.

Filtro automatico de paneles MDF

Los paneles de MDF 3mm (respaldos, fondos de cajón) se filtran automáticamente del optimizador de cortes — se cortan de un stock diferente (tablero MDF, no melamina). El filtro actúa sobre roles back, drawer_bottom, y cualquier panel con espesor menor al material principal.

Herramientas (23 tools)

Diseno

ToolDescripcion
design_furnitureGenera spec completa con paneles, hardware, posiciones, secciones y notas estructurales

Conocimiento

ToolDescripcion
get_standardsEstándares ergonómicos por tipo de mueble
get_material_specsPropiedades del material (espesor, tramo máximo, agarre de tornillo)
get_structural_rules10 reglas estructurales con severidad y solución
get_hardware_catalogCatálogo de herrajes con reglas de cantidad y colocación
get_assembly_specsEspecificaciones de ensamble: uniones, adhesivos, pre-taladrado, montaje

Todas aceptan brief=true para respuestas compactas (ahorro 60-80% tokens).

Validacion y fabricacion

ToolDescripcion
validate_structureValida spec contra 10 reglas estructurales (errores + warnings)
generate_bomBill of Materials: paneles agrupados, herrajes, cantos en metros
optimize_cutsOptimización 2D en tableros estándar (2440x1220mm) con veta y kerf
get_assembly_stepsInstrucciones de ensamble paso a paso en español

Multi-diseno y reporte

ToolDescripcion
create_designCrea proyecto de diseño nuevo (retorna design_id)
list_designsLista todos los diseños activos con metadata
get_design_contextRecupera spec + historial de un diseño para retomar
get_section_mapMapa de secciones con etiquetas y resolución de lenguaje natural
start_design_serverInicia servidor HTTP (puerto 8432) con WebSocket live reload
update_design_reportGenera/actualiza reporte HTML interactivo

FreeCAD — exportar (requiere FreeCAD + RPC server)

ToolDescripcion
build_3d_modelConstruye modelo 3D ensamblado en FreeCAD via XML-RPC
build_exploded_viewConstruye vista explosionada en FreeCAD
build_cut_diagramConstruye diagrama de corte en FreeCAD
build_techdrawConstruye plano técnico TechDraw (vistas ortogonales A3)

FreeCAD — importar (requiere freecad-mcp)

ToolDescripcion
build_import_scriptScript para extraer paneles de un documento FreeCAD existente
parse_freecad_importParsear salida del script de importación a spec

Desarrollo

ToolDescripcion
reload_engineRecarga módulos del engine sin reiniciar el servidor MCP

Tipos de mueble

TipoDescripcionCaracteristicas clave
kitchen_baseGabinete base de cocinaZócalo 4 piezas, travesaños, sin tapa (para cubierta)
kitchen_wallGabinete aéreo de cocinaSin zócalo, tapa superior e inferior
closetCloset / armarioZócalo, divisiones auto si >75cm, alerta anclaje si >180cm
bookshelfLibrero / estanteríaRepisas múltiples, puertas opcionales
deskEscritorioEspacio para rodillas (60cm), panel de recato
vanityVanitorio / mueble de bañoEstructura tipo base de cocina

Materiales

MaterialEspesorTramo max. sin soporteMejor para
melamine_16 (default)16mm75cmUso general, más económico
melamine_1818mm85cmCocinas y closets de gama alta
mdf_1515mm80cmMuebles pintados
mdf_1818mm90cmPuertas con diseño CNC
plywood_1818mm100cmTramos largos, alta resistencia
solid_pine_2020mm120cmMuebles de madera maciza

Arquitectura del servidor

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

Consideraciones tecnicas

Unidades

  • Entrada: dimensiones en cm (ancho, alto, fondo)
  • Salida: spec en mm (width_mm, height_mm, thickness_mm)
  • Cortes: el optimizer usa width/height (sin sufijo _mm) — schema diferente al spec

Veta del material

El optimizador soporta grain_direction="length" para mantener la dirección de veta consistente en melaminas con textura. Esto restringe la rotación de piezas. Si una pieza no cabe con restricción de veta, se relaja automáticamente a none con aviso.

Desbaste de sierra (kerf)

3mm por defecto. Se descuenta en cada corte del optimizador. Ajustable según la hoja utilizada.

Respaldos

Siempre MDF 3mm. El validador genera error si un mueble no tiene panel trasero (rol back). Se excluyen automáticamente del optimizador de cortes de melamina.

Divisiones automaticas

Si el ancho de una sección excede el tramo máximo del material, se agrega una división vertical automáticamente.

Muebles altos (>180cm)

El validador genera warning de anclaje a pared por riesgo de volcamiento.

Cajones completos

design_furniture genera caja completa: frente + 2 laterales + trasera + fondo MDF 3mm + correderas telescópicas.

Modo compact

Las tools principales retornan compact=true por defecto: resumen legible + JSON reducido. Usar compact=false solo si se necesita el JSON completo.

Hot-reload

reload_engine recarga todos los módulos del engine sin reiniciar el servidor MCP. Útil durante desarrollo.

Requisitos

  • Python >= 3.12
  • uv para gestión de paquetes
  • FreeCAD 0.21+ con addon MCP (solo para exportación 3D)

Licencia

MIT

Source: README.md at commit aada7ee

Tools

0
SourceWeft has not started this package in its sandbox yet, so its tools are not known.

Version history

1
  1. v0.1.3LatestSep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts