Floor plans in real millimetres: doors, windows, tables; validate, render SVG, elevations, sections.
Copy the AI prompt to install this server into Claude Code, Cursor, or another agent β or use 1-click editor setup below.
One-click editor setup isnβt available for this listing yet β we donβt have a confirmed install command, and weβd rather show nothing than point your editor at the wrong package or host. Follow the projectβs own setup instructions, linked above.
Describe a building; Skopia draws it β plan, section and elevation, from one document. You give it a brief or a measured survey. It draws the floor plan in a CAD register, in real millimetres, and then projects the section and the elevation of that same building from the same document, so the three drawings cannot disagree with each other. One floor or a whole house. Then a true-to-scale sheet, or a DXF to refine in AutoCAD, Revit or Vectorworks.
Every drawing draws itself, whole and at its own scale: the plan, each section and each elevation come back as an SVG to look at and check. A sheet is where drawings go once they are right, not where you start.

A contemporary house, ground floor: built and furnished through the operations an agent calls, every fixture from the stock and turned by the wall it names, both cut lines placed by rule. The engine's own render of the document, not a drawing of it.

Section AβA, cut on the line marked in the plan above and projected from the same document. Nothing here was drawn twice: the window is the plan's window and the kitchen is the plan's kitchen.
Every call needs a key. Getting one is free, instant, and needs no approval.
The one-click installs above carry no key: Cursor reads SKOPIA_KEY from
your environment, VS Code asks for it as it installs.
Cursor, VS Code, Codex, .mcp.json and raw HTTP are covered at
/setup.
ChatGPT, Claude Desktop and claude.ai need no key at all. Their
connector dialogs take an MCP server that speaks OAuth, and this one does:
paste https://skopia.datatreehaus.com/v1, and the consent page mints a key
for that connection which you never see. No account is created; the key is
the whole of it, and it is revocable like any other. In a client that can
show one (ChatGPT, or anything on the MCP Apps extension), a plan or a sheet
arrives as a picture rather than as SVG text.
Protocol: MCP over Streamable HTTP. The server is built on revision
2026-07-28 (server/discover, no initialize) and also speaks the
initialize-era revisions β 2025-11-25, 2025-06-18, 2025-03-26,
2024-11-05 β so an ordinary client just connects: open with initialize,
name your revision in MCP-Protocol-Version, and none of the newer
revision's mirrored headers or _meta fields are asked of you. initialize
and ping are the only calls that need no key.
A model asked to draw a floor plan will emit SVG, and it will look entirely fine. The walls will not quite close, the elevation will not agree with the plan, and the door will swing out of its hinge. Nothing will fail. That is the problem this exists to remove.
An agent cannot draw a door wrong here, because it does not draw the door. It names one β panelled, part-glazed, three rows β and the same component answers in the plan, the elevation and the section. The swing is derived once and reviewed once, and cannot come out of the hinge on a Tuesday.
opening:3.jamb.left), so there is no field anywhere that could hold a
wrong number.missing_dimensions
tells you which measurements were never actually taken, rather than picking
a plausible number that closes the ring. From the moment software invents
that number it is indistinguishable from a measured one.{"type": "sash", "panes": [3, 2]}
is a six-over-six sash. The same window as SVG path data is around fifty
times the tokens, and a model can get path data subtly wrong in ways nothing
checks.suggest_joins reports which tables could
be pushed together and changes nothing. Adjacency may suggest; a person
decides.The case for this had to be tested rather than asserted, so the competitor is a real file in our repository: a hand-written script that draws the same house. It was written with the engine's source open β its palette, its wall conventions, its house data β and corrected three times against renders with a person reviewing. It is not a cold run and we will not present it as one.
Which makes the failures sharper rather than softer. Given every one of those advantages, it was still wrong three times.
Every version rendered cleanly. Two of the three faults were invisible at the size the drawing was reviewed at, and the third survived two rounds of review looking perfectly reasonable. An agent running unattended ships it.
Tokens are not the argument. On raw count, a script an agent writes once still beats calling this β the drawing goes to a file, where a tool result comes back into the context β and our own benchmark says so plainly rather than burying it. The argument is that the cheap path's failures are silent, plausible, and found by a human or not at all.
The cheap version is the wrong one, every time.
We have not measured tokens-to-completion for a cold agent. That needs a real run against a brief, with no sight of this engine's source, recorded to the point where the drawings are actually right. We have not done it, and nothing above is quoted as though we had.
One agent, one brief, this engine, September 2026. It cost about 269,000 tokens and the drawings came out wrong: a section facing the wrong way, a blank section BβB, a two-over-two sash that was not one, 1:50 too small for the sheet, and eight dimension queries too small to read.
So: naming a component removes a class of error, not the category. An agent can still ask for the wrong one, point a section the wrong way, or produce a drawing that comes out blank. We have done all three.
The most useful evidence we have, because this is code written for nothing else, under 680 tests, and every one of these still shipped and was caught by a person looking at a drawing at a size they could read:
-85.66329565734681, because every
axis-aligned corner projects to a whole millimetre unaided and nothing
showed it until a curve.No reviews yet β be the first to share how this listing worked for you.
Showcase your server listing on GitHub or your project documentation. Embed this dynamic SVG badge to highlight official listing status and live engagement.
[](https://allmcps.com/mcp/skopia-2)<a href="https://allmcps.com/mcp/skopia-2"><img src="https://allmcps.com/api/badge/skopia-2?style=directory" alt="Skopia on AllMCPs" /></a>