KiCAD-MCP-Server

157 tools. 93 can modify or destroy data without limits.

7 destructive tools with no built-in limits. Policy required.

Last updated:

93 can modify or destroy data
64 read-only
157 tools total

Community server · catalogue entry verified 10/06/2026

How to control KiCAD-MCP-Server ↓

What KiCAD-MCP-Server exposes to your agents

Read (64) Write / Execute (86) Destructive / Financial (7)
Critical Risk

The most dangerous KiCAD-MCP-Server tools

93 of KiCAD-MCP-Server's 157 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control KiCAD-MCP-Server

PolicyLayer is an MCP gateway — it sits between your AI agents and KiCAD-MCP-Server, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "delete_component": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "route_arc_trace": {
    "limits": [
      {
        "counter": "route_arc_trace_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "batch_list_symbol_pins": {
    "limits": [
      {
        "counter": "batch_list_symbol_pins_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register KiCAD-MCP-Server — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON KICAD-MCP-SERVER →

Free to start. No card required.

All 157 KiCAD-MCP-Server tools

WRITE 81 tools
Write route_arc_trace Route a copper arc trace defined by start/mid/end points. Uses true PCB arc primitives when available. Write download_jlcpcb_database Download the JLCPCB parts catalog to a local SQLite database for fast offline search. Sources (no API credent Write enrich_datasheets Fill in missing Datasheet URLs in a KiCAD schematic using LCSC part numbers. For every placed symbol that has Write snapshot_project Save a named checkpoint snapshot of the current project state (renders board to PDF and records step label). C Write add_board_outline Add a board outline to the PCB Write add_board_text Add a text label to a PCB layer (e.g. silkscreen, fab, courtyard). Write add_component_annotation Add a text annotation or comment to a PCB component. Write add_copper_pour Add a copper pour (ground/power plane) to the PCB Write add_gnd_stitching_vias Drop GND stitching vias across the board with collision checking against every non-GND segment, via, and pad o Write add_hierarchical_sheet Insert a hierarchical-sheet reference block into a parent schematic, pointing at an existing sub-sheet file. A Write add_layer Add a new copper or technical layer to the PCB stackup. Write add_mounting_hole Place a mounting hole (NPTH or PTH) at the specified position on the PCB. Write add_net Add a new net to the PCB Write add_net_class Create a named net class with specific design rules (clearance, track width, via size) and assign nets to it. Write add_no_connect Add a no-connect flag (X marker) to a pin that is intentionally left unconnected. Write add_schematic_component Add a component to a KiCAD schematic Write add_schematic_hierarchical_label Add a hierarchical label (sheet interface port) to a sub-sheet schematic. Write add_schematic_net_label Add a net label to the schematic. Write add_schematic_text Add a free-form text annotation to the schematic. Write add_schematic_wire Add a wire connection to a KiCAD schematic Write add_sheet_pin Add a pin to a sheet symbol block on the parent schematic. Sheet pins are the Write add_via Add a via to the PCB Write add_zone Create a copper fill zone (pour) on a PCB layer for a specified net. Write align_components Align multiple PCB components horizontally, vertically or on a grid with optional spacing. Write annotate_schematic Assign reference designators to unannotated components (R? → R1, R2, ...). Must be called before tools that re Write assign_net_to_class Assign a net to an existing net class to apply its specific design rules. Write autoplace_schematic_fields Automatically reposition every component Write batch_add_and_connect Place multiple components AND wire their nets in a single call — the fewest-round-trip way to build a subcircu Write batch_add_components Add multiple components to a schematic in one call (far fewer round-trips than add_schematic_component). Each Write batch_add_no_connects Add no-connect (X) flags to multiple pins in one call, to mark intentionally unconnected pins and silence ERC. Write batch_connect Place net labels on multiple pins in one call to wire nets quickly. Write batch_edit_schematic_components Edit multiple existing components in one call. Write batch_set_schematic_property_positions Move many Reference/Value field labels in a single file read/write — far faster than repeated set_schematic_pr Write connect_passthrough Connects all pins of a source connector (e.g. J1) to matching pins of a target connector (e.g. J2) via shared Write connect_to_net Connect a component pin to a named net by adding a wire stub and net label at the exact pin endpoint. Write copy_routing_pattern Copy routing pattern (traces and vias) from a group of source components to a matching group of target compone Write create_footprint Create a new KiCAD footprint (.kicad_mod) inside a .pretty library directory. Write create_hierarchical_subsheet Create a new sub-sheet .kicad_sch file and link it into a parent schematic in a single call (create_schematic Write create_netclass Create a new net class with custom design rules. Write create_project Create a new KiCAD project Write create_schematic Create a new KiCAD schematic Write create_symbol Create a new schematic symbol in a .kicad_sym library file (created if missing). Write duplicate_component Duplicate an existing PCB component at an offset position, optionally with a new reference designator. Write edit_component Edit properties of an existing PCB component (reference, value, footprint). Write edit_footprint_pad Edit an existing pad inside a .kicad_mod footprint file. Write edit_schematic_component Update properties of a placed symbol in a KiCAD schematic (.kicad_sch) in-place. Use this tool to: • assign Write export_3d Export the PCB as a 3D model (STEP, STL, VRML or OBJ) including optional copper, solder mask, silkscreen and c Write export_dsn Export the current PCB to Specctra DSN format. Useful for manual Freerouting workflow or external autorouters. Write export_gerber Export PCB Gerber manufacturing files to a directory. Optionally include drill files, map files and choose lay Write export_netlist Export the schematic netlist to a file using kicad-cli. Supports KiCad XML (default), Spice (for simulation), Write export_pdf Export the PCB layout as a PDF document, optionally selecting layers, page size and colour mode. Write export_position_file Export a component placement/position file (pick-and-place) for PCB assembly in CSV or ASCII format. Write export_schematic_pdf Export a KiCAD schematic to PDF Write export_vrml Export the PCB as a VRML 3D model for use in web viewers or simulation tools. Write group_components Group multiple PCB components together by name for easier selection and manipulation. Write import_ses Import a Specctra SES (session) file into the current PCB. Use after running Freerouting externally. Write modify_trace Modify an existing trace (change width, layer, or net). Write move_component Move a PCB component to a new position. Optionally update rotation or flip to a different copper layer. Write move_schematic_component Move a placed symbol to a new position in the schematic. By default (preserveWires=true) wire endpoints touchi Write move_schematic_net_label Move a net label (local, global, or hierarchical) to a new position in the schematic. Use currentPosition to d Write place_component Place a component on the PCB Write place_component_array Place a rectangular grid array of identical components on the PCB with configurable row/column spacing. Write register_footprint_library Register a .pretty footprint library in KiCAD Write register_symbol_library Register a .kicad_sym library in KiCAD Write replace_component Replace an existing PCB component with a different component type, optionally changing footprint and value. Write replace_schematic_component Replace a placed component Write rotate_component Rotate a PCB component to an absolute angle in degrees. Write rotate_schematic_component Rotate a placed symbol in the schematic. Write route_differential_pair Route a differential pair between two sets of points. Write route_pad_to_pad PREFERRED tool for pad-to-pad routing. Looks up pad positions automatically, detects the net from the pad, and Write route_trace Route a trace between two points or pads Write save_project Save the current KiCAD project Write set_active_layer Set the currently active PCB layer by name (e.g. F.Cu, B.Cu). Write set_board_size Set the size of the PCB board Write set_design_rules Configure PCB design rules: clearance, track width, via dimensions and courtyard requirements. Write set_layer_constraints Set per-layer design rule constraints (minimum track width, clearance and via dimensions). Write set_schematic_component_property Add or update a single custom property on a placed schematic symbol. This is a focused convenience wrapper ar Write set_schematic_property_position Move a component Write snap_to_grid Snap schematic element coordinates to the nearest grid point. Write sync_schematic_to_board Import the schematic netlist into the PCB board — equivalent to pressing F8 in KiCAD (Tools → Update PCB from
READ 64 tools
Read batch_list_symbol_pins Return pin names, numbers, types, and symbol-local coordinates for multiple symbols in a single call. Use inst Read check_clearance Check the actual clearance between two PCB items (track, via, pad, zone or component) and report whether it me Read check_courtyard_overlaps Detect courtyard overlaps between footprints and (optionally) flag courtyards that extend past the board outli Read check_freerouting Check if Java and Freerouting JAR are available on the system. Run this before autoroute to verify prerequisit Read check_kicad_ui Check if KiCAD UI is currently running Read find_component Search for a PCB component by reference designator or value and return its position and properties. Read find_orphaned_wires Find wire segments with at least one dangling endpoint — not connected to a component pin, Read find_overlapping_elements Detect spatially overlapping symbols, wires, and labels in the schematic. Finds duplicate power symbols at the Read find_wires_crossing_symbols Find all wires that cross over component symbol bodies. Wires passing over symbols are unacceptable in schemat Read get_backend_state Return the active backend, realtime status, loaded project/board paths, and dirty state. Read get_board_2d_view get_board_2d_view Read get_board_extents Return the bounding box (min/max X and Y) of all objects on the current PCB board. Read get_board_info Retrieve general information about the current PCB board (dimensions, layer count, DRC status). Read get_category_tools Return all tools available in a specific category. Use list_tool_categories first to find valid category names Read get_component_list Return a list of all components on the PCB, optionally filtered by layer or bounding box region. Read get_component_pads Return all pads of a PCB component with their positions, net assignments and sizes. Read get_component_properties Return all properties of a PCB component (position, rotation, layer, value, footprint). Read get_datasheet_url Get the LCSC datasheet URL for a component by LCSC number. Returns the direct PDF URL and product page URL. N Read get_design_rules Return the current PCB design rules (clearance, track width, via sizes, courtyard settings). Read get_drc_violations Return the list of current DRC violations on the PCB, optionally filtered by severity (error, warning). Read get_elements_in_region List all symbols, wires, and labels within a rectangular region of the schematic. Useful for understanding wha Read get_footprint_info Get detailed information about a specific footprint Read get_jlcpcb_database_stats Get statistics about the local JLCPCB parts database Read get_jlcpcb_part Get detailed information about a specific JLCPCB part by LCSC number Read get_layer_list Return the list of all layers defined in the current PCB board. Read get_net_at_point Returns the net name at a given (x, y) coordinate in a schematic, or null if no net label Read get_net_connections Get all connections for a named net Read get_nets_list Get a list of all nets in the PCB with optional statistics. Read get_pad_position Return the exact XY position of a specific pad on a PCB component. Use this before routing to get accurate sta Read get_project_info Get information about the current project Read get_schematic_component Get full component info from a schematic: position, every field Read get_schematic_pin_locations Returns the exact x/y coordinates of every pin on a schematic component. Use this before add_schematic_net_lab Read get_schematic_view Return a rasterized image of the schematic (PNG by default, or SVG). Uses kicad-cli to export SVG, then conver Read get_schematic_view_region Export a cropped region of the schematic as an image (PNG or SVG). Specify bounding box coordinates in schemat Read get_symbol_info Get detailed information about a specific symbol (global or project-scope when projectPath is supplied or a pr Read get_wire_connections Returns the net name and all wires and component pins connected at a given point. Read list_floating_labels Returns all net labels in the schematic that are not connected to any component pin. Read list_footprint_libraries List available .pretty footprint libraries and their contents (first 20 footprints per library). Read list_libraries List all available KiCAD footprint libraries Read list_library_footprints List all footprints in a specific KiCAD library Read list_library_symbols List all symbols in a specific KiCAD symbol library (global or project-scope when projectPath is supplied or a Read list_schematic_components List all components in a schematic with their references, values, positions, and pins. Essential for inspectin Read list_schematic_labels List all net labels, global labels, and power flags in the schematic. Read list_schematic_libraries List available KiCAD symbol libraries Read list_schematic_nets List all nets in the schematic with their connections. Read list_schematic_texts List all free-form text annotations (notes, headings, documentation strings) in the schematic. Read list_schematic_wires List all wires in the schematic with start/end coordinates. Read list_symbol_libraries List all available KiCAD symbol libraries from global sym-lib-table, plus the project Read list_symbol_pins Return pin names, numbers, and types for a symbol directly from the library — no schematic required. Use this Read list_symbols_in_library List all symbol names in a .kicad_sym library file. Read list_tool_categories List all available KiCAD tool categories with their descriptions and tool counts. Use this to discover which t Read load_schematic Load an existing KiCAD schematic Read query_traces Query traces on the board with optional filters by net, layer, or bounding box. Read query_zones Query copper zones (filled pours) on the board with optional filters by net, layer, or bounding box. Returns z Read search_footprints Search for footprints matching a pattern across all libraries Read search_jlcpcb_parts Search JLCPCB parts catalog by specifications. Searches the local JLCPCB database (must be downloaded first w Read search_symbols Search for symbols in local KiCAD symbol libraries. Searches by: symbol name, LCSC ID, description, manufactu Read search_tools Search all available KiCAD tools by keyword. Returns matching tool names and their categories. Read export_bom Export a Bill of Materials (BOM) from the PCB in CSV, XML, HTML or JSON format. Read export_schematic_svg Export schematic to SVG format using kicad-cli. Read export_svg Export the PCB layout as an SVG vector image, optionally selecting layers and colour mode. Read generate_netlist Return a structured JSON netlist from the schematic — component list (reference, value, footprint) and net lis Read open_project Open an existing KiCAD project Read suggest_jlcpcb_alternatives Suggest alternative JLCPCB parts for a given component. Finds similar parts that may be cheaper, have more st

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about KiCAD-MCP-Server

Can an AI agent delete data through the KiCAD-MCP-Server MCP server? +

Yes. The KiCAD-MCP-Server server exposes 7 destructive tools including delete_component, delete_schematic_component, delete_schematic_net_label. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through KiCAD-MCP-Server? +

The KiCAD-MCP-Server server has 81 write tools including route_arc_trace, download_jlcpcb_database, enrich_datasheets. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach KiCAD-MCP-Server.

How many tools does the KiCAD-MCP-Server MCP server expose? +

157 tools across 4 categories: Destructive, Execute, Read, Write. 64 are read-only. 93 can modify, create, or delete data.

How do I enforce a policy on KiCAD-MCP-Server? +

Register the KiCAD-MCP-Server MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every KiCAD-MCP-Server tool call.

Deterministic rules across all 157 KiCAD-MCP-Server tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Free to start. No card required.

157 KiCAD-MCP-Server tools catalogued and risk-classified — across an index of 43,000+ MCP servers.

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.