The tool

A Python toolkit that treats an IPC-2581 XML export as a queryable database. Load one file, then ask structured questions: where is U3, what is on the I2C net, what is the stackup, what changed between rev A and B. Same engine behind a CLI, a REST API, an MCP server, and a canvas board viewer.

IPC-2581 is the unified manufacturing exchange (connectivity, geometry, BOM, stackup, drill, paste, assembly) that is supposed to replace the Gerber + Excellon + IPC-D-356 + ODB++ pile. This project reads that file. It does not drive KiCad.

Why it exists

Once a board leaves the EDA tool, fab, assembly, and review live on exports. Locating a refdes, dumping a net, or diffing two revs without opening Allegro or KiCad is useful for people, for CI, and for an assistant that should not be clicking around a CAD GUI.

KiCad MCP servers that edit a live design are complementary. This one is read-only analysis of what you actually sent to the house.

Try the viewer

A static sim of the canvas inspector on a small RP2040 breakout: USB-C, SPI flash, crystal with load caps, and an LED. Every part is on a net. Pan, scroll-zoom, click a part, filter a net, or ask where is Y1?

loading…

Simulation only. Baked fixture, not a live XML parse. The real viewer loads .view.json or a REST session, including revision diff.

Two tracks, one parser

Query platform. Typed model + spatial index. CLI (ipc2581 locate, nets, stackup, compare-boards, ask, snapshots), FastAPI sessions, MCP tools for Cursor / Claude. ask_board is pattern routing, not an LLM: “where is R1?” hits the same locate path.

Viewer. Offline canvas (no CDN): pan/zoom, copper/silk/paste/drill, pin hover, net highlight, BOM search, measure, minimap, side-by-side rev diff, PNG/SVG snapshot. View model export so the browser never has to chew raw XML.

KiCad exports get nets from pad PinRef data. Allegro / Cadence LogicalNet exports work directly. Fixtures include a minimal blinky, KiCad SPI / RP2040-zero charger, and a Parallella layout.

Status

v0.7.x. Phases 0-5 complete; visualization, ask_board, compare-sessions, and viewer through 7.4 (layers, net diff, silk refdes, XML upload) shipped. About a hundred tests. Podman images for API and MCP. Offline Swagger UI vendored next to the API.

Limits

Not a layout editor, not a Gerber CAM station, and not a replacement for the EDA tool. Streaming parse of 100 MB+ dumps is still on the list. The viewer is a beta inspector, not a fab sign-off UI.

What's next

Viewport culling / LOD so a full KiCad board stays at 30 fps, richer component detail queries, and a CI template that validates and diffs exports on every release. Still one file, one index, CLI / HTTP / MCP, plus a picture.

In short

Query an IPC-2581 export: locate parts, walk nets, diff revs, and look at the board in a browser without opening the CAD tool that made it.


references