Plannr is a free, open-source SketchUp-style 3D modeller that runs in your browser, with plugins for brick construction, timber framing and electrical layouts, and an MCP endpoint so an AI can model w
翻訳待ち
デザインTypeScript · RustGitHub @MatthiasDMオンライン所有者未確認
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
A SketchUp-style 3D modeller in the browser: Rust engine, three.js viewport, plugins for brick construction, timber framing and electrical layouts, and MCP so an AI can model with you.
翻訳待ち
Loading the full README.
Read the full README ↗Try it: plannr.m-dm.org · ☕ Buy me a coffee on Ko-fi
A SketchUp-style 3D modeller as a web app. A Rust engine owns the model and every modelling operation; the browser is a viewport with the familiar tool set; and the same operations are exposed over MCP, so an AI can draw, push/pull, move, measure, paint, annotate, change the camera and take screenshots of what it made. The core is generic — domain tools (houses, rooms, pipes…) come as plugins.
crates/plannr-core document model, ops kernel (draw / push-pull / offset / move / rotate / scale / …), undo history,
tessellation + section cuts, metrics, GLB export, plugin trait
crates/plannr-server Axum REST API + WebSocket + MCP endpoint + SQLite + static hosting (port 8795)
web/ Vite + TypeScript + three.js frontend (SketchUp-style UI)
docs/CONTRACT.md the document / ops / REST / WebSocket / MCP contract
docs/PLUGINS.md how to write engine and browser plugins, and how installable packages work
| Isolate a storey for a dollhouse view: cavity walls, beam-and-block floors and the material takeoff in Model Info. | Every timber roof type, framed on the same shed by the framing plugin. |
| The situation plan the electrical plugin draws: points as IEC symbols, numbered per circuit, conduits dashed. | The same model in the light theme. |
PLANNR_PUBLIC=1 runs Plannr as a public site (this is how plannr.m-dm.org runs): the front page
(web/home.html) is served at / and the modeller at /app; every browser gets a random owner key
(kept in localStorage, sent as X-Plannr-Owner) and only ever sees the projects it made (at most 30);
the MCP endpoint is off, and installing or switching plugins needs the server's PLANNR_TOKEN. Without it, Plannr is a single-user local app with MCP.
cd web && npm install && npm run build && cd .. # builds web/dist
cargo run --release -p plannr-server # http://localhost:8795
The server prints an MCP token at startup (or set PLANNR_TOKEN). In the app, Help → Connect an AI (MCP)…
opens a panel that stays open: it shows the endpoint and the running server's token (when the browser is on the
same machine), lets you test it, and hands you the
command below and a JSON config for other MCP clients with the token filled in. Connect Claude Code with:
claude mcp add --transport http plannr http://localhost:8795/mcp --header "Authorization: Bearer <token>"
Frontend development: keep the server running and use cd web && npm run dev (Vite proxies /api).
Tests: cargo test. Type-check: cd web && npx tsc --noEmit.
This is the beginning of the README. Read the rest at the original. Read the full README ↗