Kicad (ProductOfAmerica) MCP Server

mcp-server-kicad PyPI v0.20.1

Published by productofamerica — no publish provenance, so origin is unverified, but the source is public: the repository link below is self-declared yet readable, so you can inspect the code before adopting it.

MCP servers for KiCad schematic, PCB, and export automation

Trust grade
A
93/100
Last scanned get badge →
Trust
A · 93/100
Adoption risk for you: the threat score, then adjusted down for blast radius, publisher verification and how much the scan could see. Deterministic; every point is auditable.
Capability
High
Blast radius if it went rogue — what the server’s tools could reach. Independent of trust.
Coverage
Source
How much the scan could actually inspect. Shallow coverage is stated, never hidden.
Share this Trust Score
𝕏 Share LinkedIn Reddit
A Why this grade threat 100 − adoption risk = 93/100

The grade answers one question — how safe is this server for you to adopt — so it is computed in two auditable stages. Nothing below is an opinion or an LLM's guess; every line is a real term the deterministic engine applied, and the same input always yields the same number.

1. Threat score — 100 − 0 = 100. What the published surface and source actually contain:

The deterministic scan raised no scored threat in the surface it inspected — the threat score stayed at 100. Capability observations and advisory notes are recorded but never lower it.

2. Client adoption risk — 100 − 7 = 93. Three small, subtract-only factors that reflect your risk in adopting it — a clean scan proves less on a powerful, unverified or barely-inspectable package, so the grade says so plainly:

PointsAdoption-risk factor
−6 capability blast radius (high) — client exposure if the model is manipulated
−1 publisher verification (public source) — no provenance, but the source is public and inspectable

Capability observations and info notes are shown under Findings but never scored. Open any row's finding below for the file, line and evidence behind a deduction.

Findings 3

high Shell/command execution in server code (mcp_server_kicad/_freerouting.py)MTC-SRC-002

In the server's implementation (`mcp_server_kicad/_freerouting.py:84`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: result = subprocess.run( ["java", "-version"], capture_output=True, t

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server mcp_server_kicad/_freerouting.py

high Shell/command execution in server code (mcp_server_kicad/_shared.py)MTC-SRC-002

In the server's implementation (`mcp_server_kicad/_shared.py:833`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: try: return subprocess.run( [executable] + args, capture_output=True, te

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server mcp_server_kicad/_shared.py

low Shell/command execution in packaging/dev tooling (tests/conftest.py)MTC-SRC-002

In a packaging/dev/install script (shipped, but not the server runtime) (`tests/conftest.py:485`): Spawning a shell/process is command-execution capability; with unsanitized tool input it is command injection / RCE. This is read from the code itself — not from the tool description — so a poisoned server cannot hide it behind honest-looking metadata.

Evidence: f): self.proc = subprocess.Popen( self.argv, stdin=subprocess.PIPE, stdout=s

Fix: Review this call path: confirm it never receives unsanitized tool input, constrain it, or remove it. Treat a server whose code reaches these sinks as high-capability regardless of what its tools claim.

Location: server tests/conftest.py

Tools 109

Each tool and what it can reach — statically extracted from the published source.

  • add_copper_zoneno sensitive capability
  • add_global_labelno sensitive capability
  • add_hierarchical_labelno sensitive capability
  • add_hierarchical_sheetno sensitive capability
  • add_junctionsno sensitive capability
  • add_keepout_zoneno sensitive capability
  • add_labelno sensitive capability
  • add_lib_symbolno sensitive capability
  • add_pcb_lineno sensitive capability
  • add_pcb_textno sensitive capability
Show 99 more tools ↓
  • add_power_symbolno sensitive capability
  • add_sheet_pinno sensitive capability
  • add_symbolno sensitive capability
  • add_textno sensitive capability
  • add_thermal_viasno sensitive capability
  • add_traceno sensitive capability
  • add_viano sensitive capability
  • add_wiresno sensitive capability
  • annotate_schematicno sensitive capability
  • auto_place_decoupling_capno sensitive capability
  • autoroute_pcbno sensitive capability
  • check_placementno sensitive capability
  • connect_pinsno sensitive capability
  • create_projectno sensitive capability
  • create_schematicno sensitive capability
  • create_sym_lib_tableno sensitive capability
  • create_symbol_libraryno sensitive capability
  • duplicate_sheetno sensitive capability
  • export_3dno sensitive capability
  • export_bomno sensitive capability
  • export_footprint_svgno sensitive capability
  • export_gerbersno sensitive capability
  • export_hierarchical_netlistno sensitive capability
  • export_ipc2581no sensitive capability
  • export_netlistno sensitive capability
  • export_pcbno sensitive capability
  • export_positionsno sensitive capability
  • export_schematicno sensitive capability
  • export_symbol_svgno sensitive capability
  • fill_zonesno sensitive capability
  • flatten_hierarchyno sensitive capability
  • get_board_infono sensitive capability
  • get_footprint_boundsno sensitive capability
  • get_footprint_infono sensitive capability
  • get_footprint_padsno sensitive capability
  • get_net_connectionsno sensitive capability
  • get_pin_positionsno sensitive capability
  • get_schematic_summaryno sensitive capability
  • get_sheet_infono sensitive capability
  • get_symbol_infono sensitive capability
  • get_symbol_instancesno sensitive capability
  • get_symbol_pinsno sensitive capability
  • get_versionno sensitive capability
  • is_root_schematicno sensitive capability
  • list_cross_sheet_netsno sensitive capability
  • list_hierarchyno sensitive capability
  • list_lib_footprintsno sensitive capability
  • list_lib_symbolsno sensitive capability
  • list_pcb_footprintsno sensitive capability
  • list_pcb_graphic_itemsno sensitive capability
  • list_pcb_layersno sensitive capability
  • list_pcb_netsno sensitive capability
  • list_pcb_tracesno sensitive capability
  • list_pcb_zonesno sensitive capability
  • list_schematic_bus_entriesno sensitive capability
  • list_schematic_componentsno sensitive capability
  • list_schematic_global_labelsno sensitive capability
  • list_schematic_hierarchical_labelsno sensitive capability
  • list_schematic_junctionsno sensitive capability
  • list_schematic_labelsno sensitive capability
  • list_schematic_no_connectsno sensitive capability
  • list_schematic_sheetsno sensitive capability
  • list_schematic_wiresno sensitive capability
  • list_unconnected_pinsno sensitive capability
  • modify_hierarchical_labelno sensitive capability
  • modify_hierarchical_sheetno sensitive capability
  • move_componentno sensitive capability
  • move_footprintno sensitive capability
  • move_hierarchical_sheetno sensitive capability
  • no_connect_pinno sensitive capability
  • place_componentno sensitive capability
  • place_footprintno sensitive capability
  • remove_componentno sensitive capability
  • remove_dangling_tracksno sensitive capability
  • remove_footprintno sensitive capability
  • remove_hierarchical_labelno sensitive capability
  • remove_hierarchical_sheetno sensitive capability
  • remove_junctionno sensitive capability
  • remove_labelno sensitive capability
  • remove_no_connectno sensitive capability
  • remove_sheet_pinno sensitive capability
  • remove_textno sensitive capability
  • remove_tracesno sensitive capability
  • remove_wireno sensitive capability
  • reorder_sheet_pagesno sensitive capability
  • run_drcno sensitive capability
  • run_ercno sensitive capability
  • run_jobsetno sensitive capability
  • set_component_propertyno sensitive capability
  • set_net_classno sensitive capability
  • set_page_sizeno sensitive capability
  • set_trace_widthno sensitive capability
  • trace_hierarchical_netno sensitive capability
  • update_pcb_from_schematicno sensitive capability
  • upgrade_footprint_libno sensitive capability
  • upgrade_symbol_libno sensitive capability
  • validate_boardno sensitive capability
  • validate_hierarchyno sensitive capability
  • wire_pins_to_netno sensitive capability

What this scan could not see

Versions 7

Scan history per published version. The engine is deterministic — the same version always yields the same score, so a changed score means the package itself changed.

VersionScoreFindingsEngineScanned
v0.20.1 latest A 93/100 3 1.13.0 2026-08-25
v0.19.4 A 93/100 4 1.12.1 2026-08-15
v0.17.3 A 93/100 4 1.12.1 2026-08-14
v0.17.1 A 93/100 4 1.12.1 2026-08-13
v0.13.4 A 93/100 4 1.12.1 2026-08-12
Show 2 more versions ↓
v0.10.0 A 93/100 3 1.12.1 2026-08-10
v0.9.1 A 93/100 4 1.12.1 2026-07-27

Embed this score

Show this server's live Trust Score in your README, docs or website. The badge is served straight from the registry and updates automatically after every rescan — no API key needed. It links back to this page, so anyone who sees the grade can also read the findings behind it instead of taking a number on faith.

MCP Trust Score: A · 93/100
Markdown (GitHub README)
[![MCP Trust Score](https://mcptrustchecker.com/registry/mcp-server-kicad/badge.svg)](https://mcptrustchecker.com/registry/mcp-server-kicad)
HTML
<a href="https://mcptrustchecker.com/registry/mcp-server-kicad"><img src="https://mcptrustchecker.com/registry/mcp-server-kicad/badge.svg" alt="MCP Trust Score" height="20"></a>
Prefer shields.io styling? Point it at https://mcptrustchecker.com/registry/mcp-server-kicad/badge.json via https://img.shields.io/endpoint?url=…

Verify this score yourself

The score above is reproducible: the same package version always yields the same result. Run it locally or over the free API — no account, no LLM, fully deterministic.

npx mcptrustchecker scan mcp-server-kicad --online --registry pypi

Use the free API → How scoring works

Other implementations of Kicad 5

Independent packages implementing the same tool, scanned with the same engine. Compare all 6 side by side →

More in Productivity & Workflow