AIKEA
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@AIKEA I need a plywood bookcase 80cm wide and 1.8m tall for paperbacks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
AIKEA
Design flat-pack furniture with Claude, get back a kit a CNC shop can cut.
AIKEA is a Model Context Protocol server. You describe a bookcase, cabinet, storage cube or desk, and Claude designs it through AIKEA. The server works out every panel and its machining, and produces a fabrication package:
CNC-ready DXFs: nested sheet layouts plus one file per part, with a layer for each operation (profile, drill Ø×depth, groove)
Cut list and hardware list that includes spares (cam locks, dowels, confirmat screws, shelf pins, anti-tip kit)
IKEA-style assembly instructions: lettered parts, hardware icons and isometric step drawings, in printable HTML
Shop notes covering layer conventions, edge bores, edge banding and machining totals
A quote request (RFQ) you can email to any CNC shop, or POST to a fabricator's webhook
Preview | Step drawing | Instructions |
|
|
|
How it works
idea ──► aikea_design ──► parts + joinery + checks ──► aikea_build ──► DXF / cut list / BOM / instructions / zip
▲ │ │
└────┘ revise (design_id) aikea_request_quote ──► CNC shop (webhook or email)Parametric templates (
bookshelf,cabinet,cube,desk) generate panels in 3D. Each panel has its own right-handed local frame, so every hole is in part coordinates, the same as on the CNC bed.Joinery is computed in world space and projected onto both parts. A cam lock adds a 15mm housing and an 8mm edge bore to one panel, and a 5mm bolt hole to the mating face at the exact same world point. The tests check that every edge bore lines up with a hole in its mating part.
Validation flags parts that won't fit a sheet (grain-aware), shelf sag (δ = 5wL⁴/384EI against L/600), tip-over risk, and machining that clashes or sits too close to an edge.
Nesting uses MaxRects with several part orderings, and never rotates parts whose grain matters.
Outputs are written to
$AIKEA_HOME/designs/<id>/(default~/.aikea).
Related MCP server: furniture-designer-mcp
Install
git clone https://github.com/atimics/aikea && cd aikea
npm install # also builds dist/
npm testClaude Desktop / Claude Code (stdio)
{
"mcpServers": {
"aikea": { "command": "node", "args": ["/absolute/path/to/aikea/dist/index.js"] }
}
}Claude Code: claude mcp add aikea -- node /absolute/path/to/aikea/dist/index.js
Remote connector (Streamable HTTP)
AIKEA_PUBLIC_URL=https://aikea.example.com PORT=3000 node dist/index.js --http
# MCP endpoint: https://aikea.example.com/mcp
# Downloads: https://aikea.example.com/files/<design_id>/<design_id>.zipWhen AIKEA_PUBLIC_URL is set, build results include download links, which is what you need when the client runs somewhere else (for example, claude.ai custom connectors). HTTP mode is stateless and has no auth, so put it behind your own auth proxy before exposing it. A Dockerfile is included.
Tools
Tool | What it does |
| Templates and their parameters, materials, joinery, load presets |
| Create or revise ( |
| Render the finished piece or any assembly step |
| Read saved designs ( |
| Quick sag check for a span, depth, material and load |
| Nest and write the full fabrication package + zip |
| Configure CNC shops |
| Build and send an RFQ (webhook) and/or return an RFQ email |
Built files are also exposed as MCP resources: aikea://designs/{id}/{design.json|instructions.html|SHOP_NOTES.md|cutlist.csv|hardware.csv}.
Example conversation
You: I need a bookcase for a 75cm alcove, 1.6m tall, for paperbacks. Plywood, and I'd like to be able to take it apart when I move.
Claude: (aikea_design bookshelf {width: 740, height: 1600, depth: 250, adjustableShelves: 4, joinery: "cam_dowel", material: "plywood_18"}) Here it is. At 740mm wide the shelves sag about 1mm under a full load of paperbacks (under L/600), which you won't see. It's tall enough to tip, so I've included an anti-tip kit… (aikea_build) Everything nests on one 4×8 sheet of plywood plus a hardboard back. Want me to write the quote request for a local CNC shop?
Materials and joinery
Key | Board | Sheet |
| Baltic birch ply | 1525 × 1525 |
| Hardwood-veneer ply | 2440 × 1220 |
| MDF | 2440 × 1220 |
| Melamine particleboard | 2440 × 1220 |
| Back panels | 2440 × 1220 |
cam_dowel: Ø15 cam housings with a 34mm drilling distance, Ø5 cam bolts, and Ø8×30 dowels. Knock-down and re-assemblable, like IKEA.confirmat: 7×50 confirmat screws through countersunk Ø7 clearance holes, into pilot holes in the panel edges.
The back panel slides into a stopped groove in the sides and a through groove in the top and bottom. Adjustable shelves sit on Ø5 pins on a 32mm grid.
DXF conventions
All files are AutoCAD R12, in mm, with face A up.
Layer | Operation |
| Profile cut, full depth, outside the line |
| Vertical drilling |
| Groove / pocket (closed boundary) |
| Horizontal edge bores, informational: the line runs from the edge to the bore depth |
| Not machined |
Most flatbed routers can't drill into panel edges, so edge bores are listed separately in SHOP_NOTES.md. The shop either drills them on a horizontal boring unit, or you drill them at home with a doweling jig.
Fulfilment: what "delivered" means today
As of 2026, no public API exists for "CNC-cut my flat-pack, kit the hardware and ship it." AIKEA therefore uses an adapter model:
Email RFQ (works everywhere):
aikea_request_quotereturns a ready-to-send email with the package zip. It lists materials, sheet count, machining totals (the numbers shops quote from), and what you want done: edge banding, edge boring, hardware kitting, finishing and delivery. If Claude also has an email connector, it can send the email for you.Webhook (for shops that integrate): a fabricator in
$AIKEA_HOME/fabricators.json(orAIKEA_FABRICATOR_WEBHOOK) receives a JSONPOSTwith the full package:
{
"schema": "aikea.rfq/v1",
"design": { "id": "...", "name": "...", "template": "bookshelf", "overall_mm": {"width":800,"depth":300,"height":1800}, "joinery": "cam_dowel" },
"quantity": 1,
"customer": { "name": "...", "email": "...", "postalCode": "..." },
"services": { "edgeBanding": true, "horizontalBoring": true, "hardwareKit": true, "delivery": true, "finishing": null },
"materials": [{ "key": "plywood_18", "sheets": 2, "sheet_mm": [2440, 1220], ... }],
"machining": { "parts": 11, "profileCutM": 29.8, "holes": 220, "edgeBores": 26, "grooveM": 5.0, "edgeBandM": 8.9, "weightKg": 32.7 },
"cutlist": [ ... ], "hardware": [ ... ], "sheets": [ ... ], "files": [ ... ],
"package_zip_base64": "UEsDB..."
}Whatever the webhook returns (a quote id, price, lead time) is passed back to Claude. If you run a CNC shop and want to be a fulfilment partner, implement that endpoint.
CLI
node dist/cli.js design bookshelf examples/bookshelf.json --name "Hall bookcase" --build
node dist/cli.js build <design_id>
node dist/cli.js listLimits (v0.1)
Rectangular panels only: no doors, drawers, curves or vertical dividers yet. For wide units, build two carcasses side by side.
Sag and stability checks are engineering estimates, not certifications. Always anchor tall furniture to the wall.
Material moduli and sheet sizes are nominal. Measure your actual board thickness, because grooves are sized from the nominal value.
License
MIT
Available Tools
10 toolsaikea_add_fabricatorAdd a fabricatorC
Save a CNC shop for quotes. Give an email for RFQ emails and/or a webhook URL that accepts the aikea.rfq/v1 JSON schema.
Inputs: id (required), name (required), email, notes, +4 more.
aikea_buildBuild the fabrication packageB
Nest parts onto sheets and write the fabrication package: nested-sheet and per-part DXFs (layered by operation), cutlist.csv, hardware.csv, instructions.html (IKEA-style), SHOP_NOTES.md and a zip. Returns file paths (and download URLs when served over HTTP) plus a sheet layout image.
Inputs: design_id (required), trim, spacing, tool_diameter.
aikea_designCreate or revise a furniture designA
Generate a parametric flat-pack design: every panel, its CNC machining (holes, grooves, edge bores), hardware and assembly steps. Returns a summary, validation issues and a preview image. Pass design_id to revise an existing design in place.
Inputs: template (required), name, params, design_id.
aikea_get_designGet a designARead-only
Return a saved design's summary, or the full JSON model (every part with local-frame machining) when full=true.
Inputs: design_id (required), full.
aikea_list_designsList saved designsARead-only
List saved designs, newest first.
Inputs: no named parameters.
aikea_list_fabricatorsList fabricatorsBRead-only
List CNC shops configured for quotes ($AIKEA_HOME/fabricators.json, or AIKEA_FABRICATOR_WEBHOOK).
Inputs: no named parameters.
aikea_list_optionsList templates, materials and optionsARead-only
List furniture templates with their parameters, board materials, joinery methods and load presets. Call this first.
Inputs: no named parameters.
aikea_previewRender a designARead-only
Render an isometric preview of the finished piece, or of a single assembly step (1-based) with the newly added parts highlighted and labelled.
Inputs: design_id (required), step.
aikea_request_quoteRequest a fabrication quoteB
Package a design for a CNC shop: builds it if needed, POSTs the RFQ to the fabricator's webhook when one is configured, and always returns a ready-to-send RFQ email (to/subject/body + zip path). Confirm quantities and contact details with the user before submitting.
Inputs: customer (required), design_id (required), notes, delivery, +7 more.
aikea_shelf_sagEstimate shelf sagARead-only
Estimate the deflection of a uniformly loaded shelf (simply supported). Useful for choosing widths/materials before designing.
Inputs: span (required), depth (required), load, material.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Most tools target distinct resources and actions, but a few overlaps exist: aikea_design already returns a preview image while aikea_preview renders specific previews, and aikea_request_quote internally builds a design, blurring the line with aikea_build. The descriptions clarify these differences well enough that an agent can usually select correctly.
All tools share the aikea_ prefix and use snake_case, which is good. However, most follow a verb_noun pattern (list_options, get_design, add_fabricator), while several are verb-only (design, preview, build) and one is noun_noun (shelf_sag), creating minor inconsistency.
With 10 tools, the set is well-scoped for a parametric furniture design and CNC fabrication server. Each tool covers a distinct part of the workflow: templates, design, retrieval, preview, engineering check, build, fabricator management, and quoting.
The core lifecycle from design to fabrication and quoting is covered, and aikea_design allows in-place revision. Minor gaps include no delete operations for saved designs or fabricators, and no way to fetch a single fabricator, but these are not critical for the primary workflow.
Maintenance
Related MCP Connectors
Design homes with your AI: floor plans, furniture, joinery, lighting and photos, live.
Design 3D-printable parts by chatting: create, edit, render and publish parametric forges.
Parametric 3D CAD for AI agents: build print-ready parts, check them, export STL, 3MF or STEP.
Cutlist optimization for sheet, linear and roll stock, with grain, kerf, nesting and saw exports.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables users to create and edit 3D floor plans conversationally, describing rooms and layouts or uploading DWG/PDF drawings, then view them in 2D/3D via a live link.4MIT
- AlicenseNot gradedqualityDmaintenanceEnables professional furniture design from dimensions and type to a complete manufacturing package, including structural validation, cut optimization, BOM generation, assembly instructions, interactive HTML report with 3D viewer, and optional FreeCAD export.3MIT
- AlicenseNot gradedqualityBmaintenanceLets another chat app connect to the locally running furniture planner and work on the currently open design, adding walls or panelling and other features. It exposes the same parametric modelling tools so edits stay checked and the cut list remains accurate.18 npm2MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to turn a furniture description into a parametric design, cut list, plywood sheet nesting, lumber cutting plan and dimensioned builder drawings, with no CAD required. When CadQuery or a licensed Autodesk Fusion is available, it also builds exact STEP/STL models and verifies them against the kernel.102MIT


