{
  "markdown": "<div align=\"center\">\n\n# furniture-designer-mcp\n\n**Servidor MCP para diseño profesional de muebles**\n\n[![PyPI](https://img.shields.io/pypi/v/furniture-designer-mcp?label=PyPI&color=blue)](https://pypi.org/project/furniture-designer-mcp/)\n[![License](https://img.shields.io/github/license/LuisEnVilla/furniture-designer-mcp)](LICENSE)\n[![MCP](https://img.shields.io/badge/MCP-Protocol-orange)](https://modelcontextprotocol.io/)\n[![Python](https://img.shields.io/badge/Python-3.12+-green)](https://python.org)\n[![GitHub Release](https://img.shields.io/github/v/release/LuisEnVilla/furniture-designer-mcp)](https://github.com/LuisEnVilla/furniture-designer-mcp/releases)\n\n[![Claude Code Plugin](https://img.shields.io/badge/Claude_Code-Plugin-blueviolet?logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTEyIDJDNi40OCAyIDIgNi40OCAyIDEyczQuNDggMTAgMTAgMTAgMTAtNC40OCAxMC0xMFMxNy41MiAyIDEyIDJ6bTAgMThjLTQuNDIgMC04LTMuNTgtOC04czMuNTgtOCA4LTggOCAzLjU4IDggOC0zLjU4IDgtOCA4eiIvPjwvc3ZnPg==)](https://github.com/LuisEnVilla/furniture-designer-plugin)\n\n<!-- mcp-name: io.github.LuisEnVilla/furniture-designer-mcp -->\n\nConvierte 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.\n\n</div>\n\n<img width=\"1200\" alt=\"reporte\" src=\"https://github.com/user-attachments/assets/8218cef2-4624-49e2-856d-f965600ee53e\" />\n\n\n## Flujo general\n\n```\n\"closet 180x240x60 en melamina 18mm, 2 secciones\"\n                    |\n        +-----------------------+\n        |   design_furniture    |  -> Spec: paneles, posiciones, hardware, secciones\n        +-----------+-----------+\n                    |\n    +---------------+---------------+\n    |               |               |\nvalidate      generate_bom    optimize_cuts\n    |               |               |\n0 errores     18 paneles       3 tableros\n1 warning     34 confirmats    32% desperdicio\n              8.4m cantos      veta alineada\n                    |\n            get_assembly_steps\n                    |\n            14 pasos ordenados\n            con tornilleria por paso\n                    |\n        update_design_report\n                    |\n        Reporte HTML interactivo\n        http://localhost:8432/closet-dormitorio\n```\n\n## Instalacion\n\n### Como servidor MCP (recomendado)\n\n```bash\nuvx furniture-designer-mcp\n```\n\nEn `.mcp.json` de tu proyecto:\n\n```json\n{\n  \"mcpServers\": {\n    \"furniture-designer\": {\n      \"command\": \"uvx\",\n      \"args\": [\"furniture-designer-mcp\"]\n    }\n  }\n}\n```\n\n### Desarrollo local\n\n```bash\ngit clone https://github.com/LuisEnVilla/furniture-designer-mcp.git\ncd furniture-designer-mcp\nuv sync\nuv run furniture-designer-mcp\n```\n\n### Uso con Claude Code (Plugin)\n\nEl [**furniture-designer-plugin**](https://github.com/LuisEnVilla/furniture-designer-plugin) agrega un asistente conversacional de 4 fases que guia al usuario desde la idea hasta el paquete de fabricacion:\n\n```bash\n# Instalar el plugin (incluye el servidor MCP automaticamente)\nclaude plugin add https://github.com/LuisEnVilla/furniture-designer-plugin\n\n# Iniciar un diseno\n> /furniture disena un closet de 120x240x60\n```\n\nEl 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.\n\n> Ver documentacion completa del plugin: [furniture-designer-plugin](https://github.com/LuisEnVilla/furniture-designer-plugin)\n\n## Funcionalidades principales\n\n### Reporte HTML interactivo\n\nEl entregable principal es un reporte HTML servido en `http://localhost:8432/{design_id}` con:\n\n- **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)\n- **Pagina Partes** — Vista 3D explosionada + tabla de partes con dimensiones y canteado + guia de ensamble\n- **Pagina Cortes** — Layout SVG por tablero con piezas coloreadas por rol, canteado visual, barra de uso (verde/amarillo/rojo)\n- **Pagina Historial** — Timeline vertical de iteraciones con badges de cambios\n\n<img width=\"1200\" alt=\"Pagina Diseno\" src=\"https://github.com/user-attachments/assets/127ca291-bd01-45a6-a9e2-fcacc2d5d2cf\" />\n\n<img width=\"1200\" alt=\"Pagina Partes — vista explosionada\" src=\"https://github.com/user-attachments/assets/580771cc-f25a-424d-b62b-d7c3a88c9ae5\" />\n\n<img width=\"1200\" alt=\"Pagina Historial — timeline de iteraciones\" src=\"https://github.com/user-attachments/assets/0762242f-80b8-457b-a5c3-fc70323fbb62\" />\n\n\n### Multi-diseno con persistencia\n\nCada diseño se almacena en `./designs/{design_id}/` con:\n\n```\ndesigns/\n  closet-dormitorio/\n    report.html       <- servido en http://localhost:8432/closet-dormitorio\n    spec.json         <- ultimo spec (lectura rapida para el agente)\n    metadata.json     <- {name, type, created, updated, iterations}\n  cocina-isla/\n    report.html\n    spec.json\n    metadata.json\n```\n\nPuedes trabajar en multiples diseños simultáneamente y retomar cualquiera en sesiones futuras.\n\n### Live reload via WebSocket\n\nEl 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.\n\n### Mapa de secciones con lenguaje natural\n\nEl motor genera etiquetas de sección automáticamente basadas en los divisores verticales del diseño:\n\n```json\n{\n  \"S1\": {\n    \"label_es\": \"Seccion izquierda\",\n    \"aliases\": [\"izq\", \"left\", \"primera\"],\n    \"x_start_mm\": 18, \"x_end_mm\": 900,\n    \"parts\": [\"shelf_S1_1\", \"bar_S1\"]\n  },\n  \"S2\": {\n    \"label_es\": \"Seccion derecha\",\n    \"aliases\": [\"der\", \"right\", \"ultima\"],\n    \"x_start_mm\": 918, \"x_end_mm\": 1782,\n    \"parts\": [\"drawer_S2_1_front\", \"drawer_S2_2_front\"]\n  }\n}\n```\n\nEsto permite que el usuario diga \"haz la izquierda mas ancha\" y el agente resuelva la referencia a la sección correcta.\n\n### Zocalo como marco estructural\n\nEl zócalo no es un panel suelto — es un marco rectangular de 4 piezas que soporta todo el peso del mueble:\n\n```\nVista superior del zocalo:\n\n    +------ kickplate_front ------+    <- frente (retranqueado 5cm)\n    |                              |\n    kickplate_return_l    kickplate_return_r    <- retornos laterales\n    |                              |\n    +------ kickplate_back -------+    <- fondo\n```\n\nEl frente se retranquea 5cm para que los pies no choquen. Los laterales del mueble se apoyan encima de este marco.\n\n### Filtro automatico de paneles MDF\n\nLos 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.\n\n## Herramientas (23 tools)\n\n### Diseno\n\n| Tool | Descripcion |\n|---|---|\n| `design_furniture` | Genera spec completa con paneles, hardware, posiciones, secciones y notas estructurales |\n\n### Conocimiento\n\n| Tool | Descripcion |\n|---|---|\n| `get_standards` | Estándares ergonómicos por tipo de mueble |\n| `get_material_specs` | Propiedades del material (espesor, tramo máximo, agarre de tornillo) |\n| `get_structural_rules` | 10 reglas estructurales con severidad y solución |\n| `get_hardware_catalog` | Catálogo de herrajes con reglas de cantidad y colocación |\n| `get_assembly_specs` | Especificaciones de ensamble: uniones, adhesivos, pre-taladrado, montaje |\n\n> Todas aceptan `brief=true` para respuestas compactas (ahorro 60-80% tokens).\n\n### Validacion y fabricacion\n\n| Tool | Descripcion |\n|---|---|\n| `validate_structure` | Valida spec contra 10 reglas estructurales (errores + warnings) |\n| `generate_bom` | Bill of Materials: paneles agrupados, herrajes, cantos en metros |\n| `optimize_cuts` | Optimización 2D en tableros estándar (2440x1220mm) con veta y kerf |\n| `get_assembly_steps` | Instrucciones de ensamble paso a paso en español |\n\n### Multi-diseno y reporte\n\n| Tool | Descripcion |\n|---|---|\n| `create_design` | Crea proyecto de diseño nuevo (retorna design_id) |\n| `list_designs` | Lista todos los diseños activos con metadata |\n| `get_design_context` | Recupera spec + historial de un diseño para retomar |\n| `get_section_map` | Mapa de secciones con etiquetas y resolución de lenguaje natural |\n| `start_design_server` | Inicia servidor HTTP (puerto 8432) con WebSocket live reload |\n| `update_design_report` | Genera/actualiza reporte HTML interactivo |\n\n### FreeCAD — exportar (requiere FreeCAD + RPC server)\n\n| Tool | Descripcion |\n|---|---|\n| `build_3d_model` | Construye modelo 3D ensamblado en FreeCAD via XML-RPC |\n| `build_exploded_view` | Construye vista explosionada en FreeCAD |\n| `build_cut_diagram` | Construye diagrama de corte en FreeCAD |\n| `build_techdraw` | Construye plano técnico TechDraw (vistas ortogonales A3) |\n\n### FreeCAD — importar (requiere freecad-mcp)\n\n| Tool | Descripcion |\n|---|---|\n| `build_import_script` | Script para extraer paneles de un documento FreeCAD existente |\n| `parse_freecad_import` | Parsear salida del script de importación a spec |\n\n### Desarrollo\n\n| Tool | Descripcion |\n|---|---|\n| `reload_engine` | Recarga módulos del engine sin reiniciar el servidor MCP |\n\n## Tipos de mueble\n\n| Tipo | Descripcion | Caracteristicas clave |\n|---|---|---|\n| `kitchen_base` | Gabinete base de cocina | Zócalo 4 piezas, travesaños, sin tapa (para cubierta) |\n| `kitchen_wall` | Gabinete aéreo de cocina | Sin zócalo, tapa superior e inferior |\n| `closet` | Closet / armario | Zócalo, divisiones auto si >75cm, alerta anclaje si >180cm |\n| `bookshelf` | Librero / estantería | Repisas múltiples, puertas opcionales |\n| `desk` | Escritorio | Espacio para rodillas (60cm), panel de recato |\n| `vanity` | Vanitorio / mueble de baño | Estructura tipo base de cocina |\n\n<!-- ![Tipos de mueble soportados — diagrama comparativo](docs/screenshots/furniture-types-overview.png) -->\n\n## Materiales\n\n| Material | Espesor | Tramo max. sin soporte | Mejor para |\n|---|---|---|---|\n| `melamine_16` (default) | 16mm | 75cm | Uso general, más económico |\n| `melamine_18` | 18mm | 85cm | Cocinas y closets de gama alta |\n| `mdf_15` | 15mm | 80cm | Muebles pintados |\n| `mdf_18` | 18mm | 90cm | Puertas con diseño CNC |\n| `plywood_18` | 18mm | 100cm | Tramos largos, alta resistencia |\n| `solid_pine_20` | 20mm | 120cm | Muebles de madera maciza |\n\n## Arquitectura del servidor\n\n```\nfurniture-designer-mcp/\n  src/furniture_designer_mcp/\n    server.py                  <- Punto de entrada MCP (23 tools)\n    engine/\n      designer.py              <- Motor principal: spec + section_labels\n      structural_validator.py  <- 10 reglas estructurales\n      cut_optimizer.py         <- Bin packing 2D con veta y kerf\n      bom_generator.py         <- Bill of Materials\n      spec_validator.py        <- Validacion de formato de spec\n      spec_builder.py          <- Construccion de spec desde parametros\n      section_mapper.py        <- Mapa de secciones + resolucion natural\n      design_store.py          <- Multi-diseno + persistencia ./designs/\n      http_server.py           <- HTTP + WebSocket (puerto 8432)\n      report_generator.py      <- Template HTML interactivo (~1900 lineas)\n      freecad_scripts.py       <- Generacion de scripts FreeCAD\n      freecad_client.py        <- XML-RPC client para FreeCAD\n    knowledge/\n      standards.py             <- Estandares ergonomicos\n      materials.py             <- Propiedades de materiales\n      structural_rules.py      <- Reglas de ingenieria\n      hardware_catalog.py      <- Catalogo de herrajes\n      assembly_specs.py        <- Especificaciones de ensamble\n```\n\n## Consideraciones tecnicas\n\n### Unidades\n\n- **Entrada**: dimensiones en **cm** (ancho, alto, fondo)\n- **Salida**: spec en **mm** (`width_mm`, `height_mm`, `thickness_mm`)\n- **Cortes**: el optimizer usa `width`/`height` (sin sufijo `_mm`) — schema diferente al spec\n\n### Veta del material\n\nEl 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.\n\n### Desbaste de sierra (kerf)\n\n3mm por defecto. Se descuenta en cada corte del optimizador. Ajustable según la hoja utilizada.\n\n### Respaldos\n\nSiempre 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.\n\n### Divisiones automaticas\n\nSi el ancho de una sección excede el tramo máximo del material, se agrega una división vertical automáticamente.\n\n### Muebles altos (>180cm)\n\nEl validador genera warning de anclaje a pared por riesgo de volcamiento.\n\n### Cajones completos\n\n`design_furniture` genera caja completa: frente + 2 laterales + trasera + fondo MDF 3mm + correderas telescópicas.\n\n### Modo compact\n\nLas tools principales retornan `compact=true` por defecto: resumen legible + JSON reducido. Usar `compact=false` solo si se necesita el JSON completo.\n\n### Hot-reload\n\n`reload_engine` recarga todos los módulos del engine sin reiniciar el servidor MCP. Útil durante desarrollo.\n\n## Requisitos\n\n- Python >= 3.12\n- [uv](https://docs.astral.sh/uv/) para gestión de paquetes\n- FreeCAD 0.21+ con addon MCP (solo para exportación 3D)\n\n## Licencia\n\nMIT\n",
  "bytes": 13625,
  "sha": "bbb92198f4710d52d2c7af28b74d4dffbab69dfad89b3963693ac73701bb6366",
  "repo_slug": "luisenvilla/furniture-designer-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_luisenvilla_furniture_designer_8988cd52/readme"
}