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. 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 agents 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. python // 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.