Furniture Designer について
Furniture Designerは、家具の寸法と種類から製造用パッケージを作成するMCPサーバーで、家具の設計者や製作者を対象としています。構造検証、切断最適化、部品表、組み立て手順、インタラクティブなHTMLレポートを備え、FreeCADへのエクスポートも選択できます。
主な機能
- 01寸法と種類に基づく家具仕様の生成
- 02設計ルールに基づく構造検証
- 03木目と鋸刃幅を考慮した板材切断最適化
- 04部品表と組み立て手順
- 053Dビューア付きインタラクティブHTMLレポート
- 06FreeCADモデルと図面の任意エクスポート
活用シーン
- 01キャビネット設計の製造資料作成
- 02設計の検証と板材切断の最適化
- 03保存済み設計の再開と反復内容の比較
MCP 対応
家具設計、検証、製造計画、プロジェクト管理、レポート作成の23種類のツールをMCPクライアントに提供します。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
プラグインは一連の作業をすべて処理します。種類、寸法、素材、機能について質問し、仕様を生成して検証し、カットを最適化して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によるライブリロード
エージェントが新しい反復を生成するたびに、レポートがブラウザー上で自動的に更新されます。ページを再読み込みする必要はありません。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"]
}
}
これにより、ユーザーが「左側をもっと広くして」と指示すると、エージェントが正しいセクションを参照先として特定できます。
構造フレームとしての台輪
台輪は独立したパネルではなく、家具全体の重量を支える4つの部材からなる長方形のフレームです。
Vista superior del zocalo:
+------ kickplate_front ------+ <- frente (retranqueado 5cm)
| |
kickplate_return_l kickplate_return_r <- retornos laterales
| |
+------ kickplate_back -------+ <- fondo
前面は、足がぶつからないように5cm奥へ引っ込めます。家具の側板は、このフレームの上に載せます。
MDFパネルの自動フィルタリング
MDF 3mmのパネル(背板、引き出し底板)は、カット最適化ツールから自動的に除外されます。これらは異なる材料(メラミン化粧板ではなくMDFボード)から切り出すためです。フィルターは、back、drawer_bottomのロール、および主材より厚さが薄いすべてのパネルに適用されます。
ツール(23 tools)
設計
| Tool | 説明 |
|---|---|
design_furniture | パネル、金具、位置、セクション、構造上の注記を含む完全な仕様を生成します |
ナレッジ
| Tool | 説明 |
|---|---|
get_standards | 家具の種類ごとの人間工学的基準 |
get_material_specs | 材料の特性(厚さ、最大スパン、ねじの保持力) |
get_structural_rules | 重大度と解決策を含む10の構造ルール |
get_hardware_catalog | 数量と配置のルールを含む金具カタログ |
get_assembly_specs | 組み立て仕様:接合部、接着剤、下穴加工、取り付け |
すべて
brief=trueを指定すると、簡潔な回答(トークンを60~80%節約)を返します。
検証と製造
| Tool | 説明 |
|---|---|
validate_structure | 10の構造ルールに照らして仕様を検証します(エラー+警告) |
generate_bom | 部品表:パネルをグループ化し、金具、縁材をメートル単位で表示します |
optimize_cuts | 木目とカーフを考慮した標準ボード(2440x1220mm)の2D最適化 |
get_assembly_steps | スペイン語による段階的な組み立て手順 |
複数設計とレポート
| Tool | 説明 |
|---|---|
create_design | 新しい設計プロジェクトを作成します(design_idを返します) |
list_designs | メタデータとともに、すべてのアクティブな設計を一覧表示します |
get_design_context | 設計の仕様+履歴を取得し、作業を再開します |
get_section_map | ラベルと自然言語による解決機能を含むセクションマップ |
start_design_server | ライブリロード対応のWebSocketを備えたHTTPサーバー(ポート8432)を起動します |
update_design_report | インタラクティブなHTMLレポートを生成/更新します |
FreeCAD — エクスポート(FreeCAD + RPC serverが必要)
| Tool | 説明 |
|---|---|
build_3d_model | XML-RPC経由で、FreeCADに組み立て済み3Dモデルを構築します |
build_exploded_view | FreeCADに分解図を構築します |
build_cut_diagram | FreeCADに切断図を構築します |
build_techdraw | TechDraw技術図面(A3直交投影図)を構築します |
FreeCAD — インポート(freecad-mcpが必要)
| Tool | 説明 |
|---|---|
build_import_script | 既存のFreeCADドキュメントからパネルを抽出するスクリプト |
parse_freecad_import | インポートスクリプトの出力を仕様に解析します |
開発
| Tool | 説明 |
|---|---|
reload_engine | MCP サーバーを再起動せずにエンジンのモジュールを再読み込みします |
家具の種類
| 種類 | 説明 | 主な特徴 |
|---|---|---|
kitchen_base | キッチンのベースキャビネット | 4部材の台輪、横桟、天板なし(カウンター用) |
kitchen_wall | キッチンの吊り戸棚 | 台輪なし、上板と底板あり |
closet | クローゼット/ワードローブ | 台輪、75cmを超える場合は仕切りを自動追加、180cmを超える場合は固定の警告 |
bookshelf | 本棚/シェルフ | 複数の棚板、オプションの扉 |
desk | デスク | 膝を入れるスペース(60cm)、前面隠しパネル |
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) - カット:optimizer は
width/height(_mm接尾辞なし)を使用します — spec とはスキーマが異なります
材料の木目
オプティマイザーは、テクスチャ付きメラミンの木目方向を統一するために grain_direction="length" をサポートしています。これにより、部品の回転が制限されます。木目の制約があると部品が収まらない場合は、警告とともに自動的に none に緩和されます。
のこぎりの切りしろ(kerf)
デフォルトは3mmです。オプティマイザーでカットするたびに差し引かれます。使用する刃に応じて調整できます。
背板
常にMDF 3mmです。背板(ロール back)がない家具は、バリデーターでエラーになります。メラミンのカットオプティマイザーからは自動的に除外されます。
自動仕切り
セクションの幅が材料の最大スパンを超える場合、垂直の仕切りが自動的に追加されます。
高さのある家具(>180cm)
転倒の危険があるため、バリデーターは壁への固定に関する警告を出します。
完全な引き出し
design_furniture は、前板+側板2枚+背板+MDF 3mmの底板+伸縮式スライドレールからなる完全な箱を生成します。
compact モード
主要なツールはデフォルトで compact=true を返します。読みやすい要約と縮小されたJSONが含まれます。完全なJSONが必要な場合にのみ compact=false を使用してください。
ホットリロード
reload_engine は、MCP サーバーを再起動せずにエンジンの全モジュールを再読み込みします。開発中に便利です。
要件
- Python >= 3.12
- パッケージ管理用の uv
- 3Dエクスポート用のFreeCAD 0.21+とMCPアドオン(3Dエクスポートの場合のみ)
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。