Free 2D nesting: sheets needed, scrap and part layout for rectangular parts on sheets.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Lay out rectangular parts on rectangular sheets and return how many sheets are needed, the scrap percentage, the largest reusable offcut, each part's position on each sheet, and a link that opens the job in MOACUT. Sizes in millimetres. Free limit: 10 part types and 30 pieces in total. Sheet counts are correct only for the whole job in one call.
Part types to cut
Sheet width in mm, e.g. 2440
Sheet height in mm, e.g. 1220
Cut width between parts in mm (default 3)
Language of the MOACUT page the link opens (default en)
Clear margin around each sheet in mm (default 10)
Allow parts to turn 90 degrees. Set false when the grain direction matters (default true)
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http moacut https://www.moacut.com/api/mcp
Lay out rectangular parts on rectangular sheets and return how many sheets are needed, the scrap percentage, the largest reusable offcut, each part's position on each sheet, and a link that opens the job in MOACUT. Sizes in millimetres. Free limit: 10 part types and 30 pieces in total. Sheet counts are correct only for the whole job in one call.
| Argument | Type | Description |
|---|---|---|
| kerf | number | Cut width between parts in mm (default 3) |
| parts* | array | Part types to cut |
| language | string | Language of the MOACUT page the link opens (default en) |
| edgeMargin | number | Clear margin around each sheet in mm (default 10) |
| sheetWidth* | number | Sheet width in mm, e.g. 2440 |
| sheetHeight* | number | Sheet height in mm, e.g. 1220 |
| allowRotation | boolean | Allow parts to turn 90 degrees. Set false when the grain direction matters (default true) |
{
"type": "object",
"required": [
"sheetWidth",
"sheetHeight",
"parts"
],
"properties": {
"kerf": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Cut width between parts in mm (default 3)"
},
"parts": {
"type": "array",
"items": {
"type": "object",
"required": [
"width",
"height",
"quantity"
],
"properties": {
"width": {
"type": "number",
"maximum": 100000,
"description": "Part width in mm",
"exclusiveMinimum": 0
},
"height": {
"type": "number",
"maximum": 100000,
"description": "Part height in mm",
"exclusiveMinimum": 0
},
"quantity": {
"type": "integer",
"minimum": 1,
"description": "How many of this part"
}
}
},
"maxItems": 100,
"minItems": 1,
"description": "Part types to cut"
},
"language": {
"enum": [
"en",
"ko",
"ja",
"de",
"es",
"pt"
],
"type": "string",
"description": "Language of the MOACUT page the link opens (default en)"
},
"edgeMargin": {
"type": "number",
"maximum": 100000,
"minimum": 0,
"description": "Clear margin around each sheet in mm (default 10)"
},
"sheetWidth": {
"type": "number",
"maximum": 100000,
"description": "Sheet width in mm, e.g. 2440",
"exclusiveMinimum": 0
},
"sheetHeight": {
"type": "number",
"maximum": 100000,
"description": "Sheet height in mm, e.g. 1220",
"exclusiveMinimum": 0
},
"allowRotation": {
"type": "boolean",
"description": "Allow parts to turn 90 degrees. Set false when the grain direction matters (default true)"
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 11, 2026.