BoardRepo
Search and inspect real KiCad and EDA projects with BoardRepo.
Community: Submitted by a user or imported; check the owner before granting accessOnlineNo sign-inGlobalFreeRead-only
What it can do
- Search Boards: Use when the user wants to find real public KiCad/EDA projects: reference designs, or boards using a given component, tag, license, author, or capability (pcb, schematic, bom, gerbers).
- Get Board: Use when the user names a specific public board, gives a boardrepo.com URL, or picks a search_boards result. Returns its metadata, a bounded README excerpt, tags, license, source EDA format
- List Board Files: Use when you need the exact files in a known public board (KiCad source, docs, fabrication outputs, gerbers) before read_file, or to show a project's layout. Returns paths, extension
What data it sees
Do you need an account
No: the server works without sign-in
Search and inspect real KiCad and EDA projects with BoardRepo. Explore schematics, BOMs, source files, KiCad DRC/ERC results, and fabrication constraints through a read-only remote MCP server.
Server tool list (11)
Raw names from tools/list. Only developers need these.
| search_boards | Use when the user wants to find real public KiCad/EDA projects: reference designs, or boards using a given component, tag, license, author, or capability (pcb, schematic, bom, gerbers). Searches BoardRepo's public corpus and returns up to 20 board summaries per page (handle/slug, name, description, tags, license, capabilities, saves, stars, URL), ranked by popularity by default so the most-trusted boards come first; pass page for more, or sort:recent for newest. Query is free text plus optional qualifiers: component:esp32 tag:keyboard license:mit has:pcb author:handle. If a query returns nothing, broaden it (drop qualifiers, simpler terms) before concluding none exists, and weigh each result by its saves/stars and completeness rather than trusting it blindly. Do not use for general electronics theory, generic datasheet facts, or the user's own local or private design. Pass a result's handle/slug or URL to get_board; do not guess a handle/slug. |
| get_board | Use when the user names a specific public board, gives a boardrepo.com URL, or picks a search_boards result. Returns its metadata, a bounded README excerpt, tags, license, source EDA format and detected KiCad version, the capabilities it offers (schematic, pcb, bom, gerbers), file count, and canonical URL. Accepts handle/slug or a boardrepo.com URL; do not invent one. For the design itself, chain to read_schematic (wiring), get_bom (parts), or list_board_files then read_file (source). |
| list_board_files | Use when you need the exact files in a known public board (KiCad source, docs, fabrication outputs, gerbers) before read_file, or to show a project's layout. Returns paths, extensions, sizes, and roles, up to 100 per call; pass the returned cursor only when more are needed. Returns paths only, never contents. Do not guess paths; for wiring prefer read_schematic and for parts prefer get_bom over reading raw files. |
| read_file | Use when the user wants the raw contents of a specific file in a public board (a README, config, or a .kicad_sch/.kicad_pcb), by an exact path from list_board_files or one the user gave. Text returns a 128 KiB UTF-8 chunk (pass the returned nextOffset for more); binary returns a download URL, not bytes, so do not claim to have read a binary's contents. Do not guess paths. To understand how a circuit is wired, prefer read_schematic over parsing raw .kicad_sch. |
| get_bom | Use when the user asks which parts a public board uses: reference designators, quantity, value, footprint, MPN, manufacturer, DNP, and datasheet. Returns up to 200 lines per call (pass the returned cursor for more). Pass include_pricing to also get live best unit price, in-stock quantity, and lifecycle-risk per part. No device pinouts. Search first if the board is unknown; use read_schematic for how the parts connect. |
| read_schematic | Use when the user asks how a public board is wired, what a component (e.g. U1) connects to, or which pins are on a net (e.g. GND), in that design. Returns the board's latest geometry-free connectivity. No focus returns a bounded overview (components + a net index); ref returns one component and the nets it connects to with the other pins on those nets; net returns the pins on that net. These are in-design connections, not an authoritative manufacturer pinout, and a very large design may be truncated (the response flags this). Prefer a focused ref or net over repeated overviews. Use get_bom for purchasing and read_file for raw source. If nets are still computing, continue with the components shown and try again shortly rather than inferring connectivity. |
| get_checks | Use when the user asks whether a board passes KiCad's own checks, or before trusting a design: returns the stored DRC (design rules, unconnected copper, schematic-vs-board parity) and ERC (electrical rules) results for the board's current version, with exact error and warning counts per category and paged example violations. These are KiCad's checks as the board's author configured them, so rules they waived were never evaluated and are listed separately. This is not a design review. If the checks have not been run for this version the result says so, and that is NOT the same as passing. |
| run_checks | Use when get_checks reports the checks have not been run for this board's current version and you need a verdict before answering. Runs KiCad's own DRC and ERC, or a fab house's manufacturability rules when `vendor` is given (list them with list_fab_profiles). EXPENSIVE and shared: this is a real kicad-cli run on one worker that everyone's boards queue behind, so run it when the answer matters, not on every board you look at. It usually returns the result directly; on a busy queue it returns status 'running' and you read the result later with get_checks. Do not use it to re-run a board that already has a result at this version. |
| list_fab_profiles | Use before get_checks(vendor: ...) to see which fab houses a board can be checked against, and exactly which limits each one is checked to (track width, clearance, drill, annular ring, edge clearance, hole spacing). Takes no board. Layer coverage is per profile and is NOT interchangeable: a fab with no profile for a board's layer count cannot answer for it, and get_checks says so rather than guessing. Do not invent a vendor id. |
| query_design | Use to read a KiCad file as STRUCTURE rather than text: pass a file path from list_board_files and a select path of node names from the root, and get the matching nodes back as data. For example select ["kicad_pcb","layers"] for the layer stack, ["kicad_pcb","footprint"] for the footprints, ["kicad_sch","lib_symbols"] for symbol definitions, or query a .kicad_pro for design rules and net classes. Far cheaper and more reliable than reading a multi-megabyte board as raw text with read_file. For schematic CONNECTIVITY prefer read_schematic, which is already solved; use this for everything the netlist does not carry. |
| search_board | Use to find where something appears across a board's text files in ONE call, instead of reading files one by one: give a literal string (a net name, a reference designator, a part number, a footprint) and get back the file, line number and matching line for each hit. Optionally restrict to a file extension with path_suffix. Matching is literal and case-insensitive, not a regular expression. Prefer read_schematic for how a design is wired and query_design for a file's structure; use this when you need to locate something by name. |