Comprehensive Model Context Protocol server for managing Home Assistant through AI assistants.
KiCad Workbench is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Gives KiCad 8, 9 and 10 projects to LLM agents: schematics, boards, ERC, DRC, BOM, edits
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user kicad-workbench-mcp '--' uvx kicad-workbench
# 2 — ask your agent for something these tools do
# search_parts_registry, get_registry_part, download_registry_part and 48 more
KiCad Workbench costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one runs on your machine: your client starts KiCad Workbench as a process under your own user, with your files and your network, so the tool surface below is what it can do to your computer rather than to a server somewhere else. Its scan result is on the Security tab — read the surface before you approve it.
This is a public server: you run it yourself and this marketplace is not in the path. You need uv (docs.astral.sh/uv): uvx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user kicad-workbench-mcp '--' uvx kicad-workbenchReconnect, or start a new session, and the tools appear in the model’s tool list.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
51 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Search an open registry of KiCad parts (no login).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | The words to find. Each word must match. "*" is a wildcard. |
| limit | integer | no | The maximum number of results (default 20). |
Give the full record of one part of the parts registry.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| part_id | string | yes | The ID of the part (search_parts_registry gives it). |
Download the files of a part of the parts registry into a local folder.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| part_id | string | yes | The ID of the part (search_parts_registry gives it). |
| save_dir | string | yes | A folder that exists, for example the library folder of the project: in the working folder, the home folder or a folder of PARTS_REGISTRY_SAVE_ROOTS. |
| formats | array | no | The files to download: "footprint", "symbol", "step" and "preview". Default: the footprint and the symbol. |
Give the bill of materials (BOM) of a schematic, as KiCad makes it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| schematic_path | string | yes | A .kicad_sch file of the project. The BOM is the BOM of the full project, also for a sub-sheet. |
| output_path | string | no | The CSV file to write, as kicad-cli writes it. A relative path is relative to the project directory. The tool does not expand variables. The tool replaces an existing file. Empty: the tool keeps no fi |
| fields | array | no | The fields of the BOM, in their order. "*" adds all other fields. A generated field has the form "${QUANTITY}" or "${DNP}". Default: Reference, Value, Footprint, Datasheet, ${QUANTITY}, ${DNP} and "*" |
| group_by | array | no | The fields whose equal values put symbols into one line. Each name must be an item of fields: a field that "*" adds does not group the symbols. Default: no groups. |
| exclude_dnp | boolean | no | True to remove the symbols that have DNP. |
| variant | string | no | The name of a variant of the project (KiCad 10 and later). Empty: the default variant. |
| all_variants | boolean | no | True to export the default variant and each variant of the project (KiCad 10 and later), one kicad-cli run and one CSV file for each: the default variant into output_path, the variant X into <stem>-X< |
Check the MPNs of the symbols: the fields Value, MPN, Value_Confirmed and MPN_Confirmed.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| schematic_path | string | yes | A .kicad_sch file of the project. The tool checks the full project. |
Trace the connections of a component across the full schematic hierarchy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | A .kicad_sch file of the project (the root schematic or a sub-sheet: the tool uses the netlist of the root schematic). |
| reference | string | yes | The reference of the component, for example "U1". |
| pin_number | string | no | Optional pin number. Empty: all pins. |
Analyze all nets of the full schematic hierarchy.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | A .kicad_sch file of the project (the root schematic or a sub-sheet: the tool uses the netlist of the root schematic). |
| filter_pattern | string | no | Optional regular expression for the net names (no difference of case). Empty: all nets. |
| show_hierarchy | boolean | no | True (default): list the sheet paths of the hierarchy with their files. |
List the symbol or footprint libraries of KiCad and of a project.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| kind | string | no | "symbol" or "footprint". |
| project_path | string | no | Optional .kicad_pro, .kicad_sch or .kicad_pcb file, or the project directory. |
Search the symbols of the KiCad libraries by name, description and keywords.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Words to find, for example "op amp rail-to-rail". |
| project_path | string | no | Optional project (.kicad_pro, .kicad_sch, .kicad_pcb or its directory), to include its libraries. |
| library | string | no | Optional name of one library to search (also when it is hidden). |
| limit | integer | no | The maximum number of results in the table. |
| include_hidden | boolean | no | Also search libraries that are hidden in KiCad. |
Search the footprints of the KiCad libraries by name, description and tags.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | Words to find, for example "0603 resistor". |
| project_path | string | no | Optional project (.kicad_pro, .kicad_sch, .kicad_pcb or its directory), to include its libraries. |
| library | string | no | Optional name of one library to search (also when it is hidden). |
| limit | integer | no | The maximum number of results in the table. |
| include_hidden | boolean | no | Also search libraries that are hidden in KiCad. |
Show the content of a symbol of a KiCad library: fields, units and pins.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| lib_id | string | yes | The library ID, for example "Device:R" or "MCU_ST_STM32F4:STM32F405RGTx". |
| project_path | string | no | Optional project (.kicad_pro, .kicad_sch, .kicad_pcb or its directory), to include its libraries. |
Show the content of a footprint of a KiCad library: pads, courtyard, attributes, 3D models.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| lib_id | string | yes | The library ID, for example "Resistor_SMD:R_0603_1608Metric". |
| project_path | string | no | Optional project (.kicad_pro, .kicad_sch, .kicad_pcb or its directory), to include its libraries and to set ${KIPRJMOD} for the 3D models. |
Compare the pin numbers of a library symbol with the pad numbers of a footprint.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| symbol_lib_id | string | yes | The library ID of the symbol, for example "Device:R". |
| footprint_lib_id | string | no | Optional library ID of the footprint, for example "Resistor_SMD:R_0603_1608Metric". If empty, the tool uses the Footprint field of the symbol. |
| project_path | string | no | Optional project (.kicad_pro, .kicad_sch, .kicad_pcb or its directory), to include its libraries. |
Compare the pins of each symbol of a schematic with the pads of its footprint.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| schematic_path | string | yes | A schematic of the project (.kicad_sch). For a sub-sheet or an other top-level sheet, the tool uses the project. |
| references | array | no | Optional references to check, for example ["U1", "J3"]. All symbols of the netlist if empty. |
Render a symbol or a footprint of a KiCad library as PNG images.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| lib_id | string | yes | The library ID, for example "Device:R" or "Resistor_SMD:R_0603_1608Metric". |
| item_type | string | yes | "symbol" or "footprint". |
| max_width_px | integer | yes | The largest image width that your vision input reads with no reduction, from 64 to 8192 pixels. |
| max_height_px | integer | yes | The largest image height that your vision input reads with no reduction. If your input also has a limit of the pixel count, give a width and a height whose product is in that limit. |
| layout | string | no | "tiles": the smallest text gets at least 15 pixels (the height of a 1.27 mm text at 300 DPI), never less than 300 DPI. An item that does not fit in one image at that scale is divided into tiles that o |
| region | array | no | Optional [x, y, width, height] in mm, a part of the page to draw (the origin is the top left corner of the page; the summary gives the page sizes). Use it to see a part in more detail. The region appl |
| pages | array | no | Optional names of the pages to draw, from the summary or from an error (a symbol has one page for each unit and body style, for example "74HC00_unit2"). All pages if empty. |
| project_path | string | no | Optional project (.kicad_pro, .kicad_sch, .kicad_pcb or its directory), to include its libraries. |
| output_dir | string | no | Optional directory to keep the SVG and PNG files. The tool replaces files with the same names, and does not delete other files. The summary gives the files that it wrote. |
| include_hidden | boolean | no | Symbol only: also draw the hidden pins and the hidden fields. |
| max_images | integer | no | The tool gives an error, not images, when the item needs more images than this. |
Make the netlist of a schematic with kicad-cli, and give the path of its file.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| schematic_path | string | yes | A .kicad_sch file of the project. |
Give the nets of the pins of a component, and the pins on each net.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| netlist_path | string | yes | A netlist file of generate_netlist. |
| reference | string | yes | The reference of the component, for example "R16". |
| pin_number | string | no | Optional pin number, for example "1". Empty: all pins. |
Give the nets of a netlist file with their pins.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| netlist_path | string | yes | A netlist file of generate_netlist. |
| filter_pattern | string | no | Optional regular expression for the net names (no difference of case). Empty: all nets. |
Give the components of a netlist file with the nets of their pins.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| netlist_path | string | yes | A netlist file of generate_netlist. |
| filter_ref | string | no | Optional start of the references to give, for example "R", "U" or "C" (the case is important). Empty: all components. |
Give the footprints of a board.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | The .kicad_pcb file. |
| filter_layer | string | no | Optional layer of the footprints to give, for example "F.Cu" or "B.Cu". Empty: all footprints. |
Give the size, the layers, the counts and the design rules of a board.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | The .kicad_pcb file. |
Give the routing of a board: track widths, vias, net lengths and layers.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | The .kicad_pcb file. |
Give the tracks and the vias of one net of a board, with their lengths and widths.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | The .kicad_pcb file. |
| net_name | string | yes | The name of the net. |
Give the differential pairs, the RF tracks and the longest signal nets of a board (heuristic).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | The .kicad_pcb file. |
| net_name | string | no | Optional name of one net to analyze in detail. |
Give the copper zones of a board and the routing of its power nets (heuristic).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| file_path | string | yes | The .kicad_pcb file. |
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
No parameter schema on file.
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install KiCad Workbench or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | high | capability blast radius (high) — client exposure if the model is manipulated | −6 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (51 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. high is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| export_bom | no tags | |
| check_symbol_fields | no tags | |
| trace_hierarchical_connection | no tags | |
| analyze_hierarchical_nets | no tags | |
| list_libraries | no tags | |
| search_library_symbols | no tags | |
| search_library_footprints | no tags | |
| get_library_symbol | no tags | |
| get_library_footprint | no tags | |
| check_pin_pad_mapping | no tags | |
| check_schematic_pin_pad_mapping | no tags | |
| render_library_item | no tags | |
| check_library_links | no tags | |
| trace_netlist_connection | no tags | |
| get_netlist_nets | no tags | |
| get_netlist_components | no tags | |
| generate_netlist | no tags | |
| search_parts_registry | no tags | |
| get_registry_part | untrusted-input | untrusted-input: keyword "download" |
| download_registry_part | untrusted-input | untrusted-input: keyword "download" |
| list_pcb_footprints | no tags | |
| get_pcb_statistics | no tags | |
| analyze_pcb_nets | no tags | |
| find_tracks_by_net | no tags | |
| analyze_pcb_signal_integrity | no tags | |
| analyze_pcb_power_integrity | no tags | |
| setup_pcb_layout | no tags | |
| export_gerber | no tags | |
| detect_pin_conflicts | no tags | |
| create_kicad_project | no tags | |
| list_schematic_components | no tags | |
| get_symbol_details | no tags | |
| search_symbols | no tags | |
| list_schematic_nets | no tags | |
| get_schematic_info | no tags | |
| add_hierarchical_label | no tags | |
| add_global_label | no tags | |
| add_component_from_library | no tags | |
| add_wire | no tags | |
| add_label | no tags | |
| search_components_by_type | no tags | |
| set_symbol_fields | no tags | |
| run_erc | no tags | |
| run_drc | no tags | |
| get_erc_violations | no tags | |
| get_drc_violations | no tags | |
| export_erc_report | no tags | |
| export_drc_report | no tags | |
| render_pcb | no tags | |
| export_pcb_3d | no tags | |
| export_schematic_svg | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.1.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish KiCad Workbench can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.