cd /news/ai-agents/show-hn-hackerscad-script-3d-solids-… · home › topics › ai-agents › article
[ARTICLE · art-160263] src=hackerscad.com ↗ pub= topic=ai-agents verified=true sentiment=↑ positive

Show HN: Hackerscad – script 3D solids in a C/JS-like language, with MCP server

Hackerscad, a parametric CAD tool that models 3D solids in a small sandboxed C/JS-like language, launched with an MCP server that lets Claude or other AI agents write, check and render models. The tool writes mouse-driven edits such as fillets and holes back into readable code, supports unittest blocks that the command line checks, renders and exports in a script or CI, and exports 3MF with a colour per part, STL, STEP or drawings with views and dimensions. The MCP server installs hackerscad's skill and the application itself if missing, after asking the user first.

read2 min views3 publishedOct 29, 2026

hackerscad is a parametric CAD where the model is code. Type and the 3D view follows; round an edge with the mouse and the code is written for you. Exact solids, real threads, files for every printer.

Paste this to it: it installs hackerscad's skill, then hackerscad itself if it's missing (asking you first) and the MCP server. Then it reads the language from docs written for agents, checks and renders its models, and shows them in your window. More below

A small, sandboxed language with units, selectors and libraries. It diffs, versions and reviews like any other code.

Fillets, holes, sketches on a face, parts moved and patterned: every click lands in the file, readable.

3MF with a colour per part, STL, STEP, or a drawing with views and dimensions.

unittest blocks hold what the part must do. The command line checks, renders and exports, in a script or in CI.

// batteries.hcad: a holder for AA cells
import std;

@param immutable cells = 4;
immutable aa = 14.5.mm, play = 0.4.mm;
immutable hole = aa + play, pitch = hole + 2.mm;

@part
Solid holder()
{
    auto b = box(cells * pitch + 2.mm,
            pitch + 2.mm, 22.mm)
        .fillet(edges.parallel(Z), r: 3.mm);

    // a pocket for each cell, its rim chamfered
    foreach (i; 0 .. cells)
        b -= cylinder(d: hole, h: 22.mm)
            .move(x: (i - (cells - 1) / 2.0) * pitch,
                z: 3.mm);
    b = b.chamfer(edges.of(faces.top), d: 0.6.mm);

    // a grip on both long sides, last
    return b
        .knurl(faces.front, kind: "diagonal",
            pitch: 3.mm)
        .knurl(faces.back, kind: "diagonal",
            pitch: 3.mm);
}

// a cell in the first pocket, to see it fit
@part("Yellow Pop", alpha: 0.4, export: false)
Solid cell()
{
    auto body = cylinder(d: aa, h: 49.5.mm);
    auto tip = cylinder(d: 5.5.mm, h: 1.mm)
        .move(z: 49.5.mm);
    return (body + tip)
        .move(x: -(cells - 1) / 2.0 * pitch, z: 3.mm);
}

unittest
{
    assert(hole > aa, "an AA cell does not fit");
    assert((holder & cell).volume < 0.01.mm ^^ 3,
        "the cell rubs against the holder");
}

For the curious.

Tell Claude or another agent what you need. It models it, checks its sizes, shows it in your window and leaves you code you can change.

Paste this: it installs the skill, then hackerscad itself if it is missing (asking you first) and the MCP server.

hcad --version tells whether hcad is in your PATH; if not, use its full path below. One package per system: the app, the command line tool and the MCP server.

── more in #ai-agents 4 stories · sorted by recency
── more on @hackerscad 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/show-hn-hackerscad-s…] indexed:0 read:2min 2026-10-29 · —