Skip to main content
Glama
ProductOfAmerica

mcp-server-kicad

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KICAD_FP_LIBNoPath to .pretty footprint library directory
KICAD_SYM_LIBNoPath to .kicad_sym symbol library file
KICAD_PCB_PATHNoPath to .kicad_pcb PCB file
KICAD_SCH_PATHNoPath to .kicad_sch schematic file
KICAD_OUTPUT_DIRNoOutput directory for exports and reports

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_schematic_summaryA

Get schematic page info and item counts.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_componentsA

List all placed components in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_labelsA

List all net labels in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_wiresB

List all wire segments in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_global_labelsA

List all global labels in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_hierarchical_labelsA

List all hierarchical labels in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_sheetsA

List all hierarchical sheets in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_junctionsA

List all junctions in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_no_connectsB

List all no-connect flags in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
list_schematic_bus_entriesA

List all bus entries in the schematic.

Args:
    schematic_path: Path to .kicad_sch file
get_symbol_pinsA

Get pin info for a symbol in the schematic's lib_symbols.

Args:
    symbol_name: Symbol name (e.g. "LM7805", "C", "Fuse")
    schematic_path: Path to .kicad_sch file
get_pin_positionsA

Get absolute pin positions for a placed component (accounts for rotation/mirror).

Args:
    reference: Component reference (e.g. "U1", "R1")
    schematic_path: Path to .kicad_sch file
get_net_connectionsA

Find all component pins connected to a net label.

Scans labels matching the text, traces wires from label positions,
and identifies component pins at wire endpoints.

Args:
    label_text: Net name to search for (e.g. "VCC", "GND")
    schematic_path: Path to .kicad_sch file
place_componentA

Place a component in the schematic.

Args:
    lib_id: Library identifier (e.g. "Device:R", "Device:C", "MyLib:MyPart")
    reference: Reference designator (e.g. "R1", "U1")
    value: Component value (e.g. "10K", "100nF")
    x: X position in schematic units (mm)
    y: Y position in schematic units (mm)
    rotation: Rotation angle in degrees (0, 90, 180, 270)
    symbol_lib_path: Path to .kicad_sym file if using custom library
    mirror: Mirror axis ("x", "y", or "" for none)
    schematic_path: Path to .kicad_sch file
    project_path: Path to .kicad_pro file (for correct hierarchy resolution in sub-sheets)
remove_componentA

Remove a component by reference designator.

Args:
    reference: Reference designator to remove (e.g. "U2")
    schematic_path: Path to .kicad_sch file
remove_labelA

Remove net label(s) by text, optionally filtered by position.

If x and y are provided, only removes labels matching both text AND
position (within 0.1mm tolerance). Otherwise removes ALL labels with
matching text.

Args:
    text: Label text to match (e.g. "VCC", "PGND")
    x: Optional X position filter
    y: Optional Y position filter
    schematic_path: Path to .kicad_sch file
remove_wireA

Remove a wire segment by its endpoint coordinates.

Matches wires with endpoints within 0.1mm tolerance (in either order).
Use list_schematic_wires to get wire coordinates first.

Args:
    x1: Start X
    y1: Start Y
    x2: End X
    y2: End Y
    schematic_path: Path to .kicad_sch file
remove_junctionB

Remove a junction at the given coordinates.

Args:
    x: X position
    y: Y position
    schematic_path: Path to .kicad_sch file
add_wiresA

Add multiple wires at once. Each wire dict has keys: x1, y1, x2, y2.

Args:
    wires: List of wire defs [{x1, y1, x2, y2}, ...]
    schematic_path: Path to .kicad_sch file
add_labelA

Add a net label at a position.

Args:
    text: Net name (e.g. "VIN_PROT", "5V_REL")
    x: X position
    y: Y position
    rotation: Degrees (0=right, 90=up, 180=left, 270=down)
    schematic_path: Path to .kicad_sch file
add_junctionsB

Add multiple junctions. Each point dict has keys: x, y.

Args:
    points: List of junction positions [{x, y}, ...]
    schematic_path: Path to .kicad_sch file
add_lib_symbolC

Load a symbol definition from a .kicad_sym library into the schematic.

Args:
    symbol_lib_path: Path to .kicad_sym file
    symbol_name: Symbol name (e.g. "LM7805")
    schematic_path: Path to .kicad_sch file
move_componentA

Move a placed component to a new position.

Args:
    reference: Reference designator (e.g. "R1")
    x: New X position
    y: New Y position
    rotation: New rotation in degrees (None = keep current)
    schematic_path: Path to .kicad_sch file
set_component_propertyB

Set any property on a placed component. Creates it if missing.

Args:
    reference: Component reference (e.g. "R1")
    key: Property name (e.g. "MPN", "Tolerance", "Value")
    value: Property value
    schematic_path: Path to .kicad_sch file
set_page_sizeA

Set the schematic page/sheet size.

Args:
    size: Standard name (A5, A4, A3, A2, A1, A0, A, B, C, D, E) or 'User' for custom
    width: Custom width in mm (required when size='User')
    height: Custom height in mm (required when size='User')
    portrait: If True, swap width/height for portrait orientation
    schematic_path: Path to .kicad_sch file
add_global_labelA

Add a global net label (visible across all sheets).

Args:
    text: Net name (e.g. "VCC", "SDA")
    x: X position
    y: Y position
    rotation: Degrees (0=right, 90=up, 180=left, 270=down)
    shape: Label shape: input, output, bidirectional, tri_state, passive
    schematic_path: Path to .kicad_sch file
add_hierarchical_labelA

Add a hierarchical label to a sub-sheet schematic.

Args:
    text: Label name (must match parent sheet pin name)
    shape: Direction — input, output, bidirectional, tri_state, passive
    x: X position in mm
    y: Y position in mm
    rotation: Degrees (0, 90, 180, 270)
    schematic_path: Path to .kicad_sch file
remove_hierarchical_labelA

Remove a hierarchical label by name or UUID.

Args:
    text: Label text to match
    schematic_path: Path to .kicad_sch file
    uuid: Optional UUID for disambiguation when multiple labels share a name
modify_hierarchical_labelA

Modify an existing hierarchical label.

Args:
    text: Current label text to find
    schematic_path: Path to .kicad_sch file
    new_text: New label text (empty = keep current)
    new_shape: New shape/direction (empty = keep current)
    new_x: New X position (None = keep current)
    new_y: New Y position (None = keep current)
    uuid: UUID for disambiguation
add_power_symbolA

Place a power symbol (VCC, GND, +3V3, etc.).

Uses place_component internally. Power symbols are regular symbols
from the 'power' library with isPower=True.

Automatically places a PWR_FLAG at the same position so the net
satisfies ERC (power pin driven).

Args:
    lib_id: Library ID (e.g. "power:VCC", "power:GND")
    reference: Reference (e.g. "#PWR01")
    x: X position
    y: Y position
    rotation: Rotation in degrees
    symbol_lib_path: Path to power symbol .kicad_sym if not in schematic
    schematic_path: Path to .kicad_sch file
    project_path: Path to .kicad_pro file (for sub-sheet instance tracking)
auto_place_decoupling_capA

Place a decoupling capacitor and wire it to power/ground nets.

Places the cap, wires pin 1 (top) to power_net and pin 2 (bottom)
to ground_net via stub wires + labels.

Args:
    lib_id: Cap symbol (e.g. "Device:C")
    reference: Reference (e.g. "C5")
    value: Cap value (e.g. "100nF")
    x: X position
    y: Y position
    power_net: Label for pin 1 (e.g. "VCC", "+3V3")
    ground_net: Label for pin 2 (e.g. "GND", "PGND")
    rotation: Rotation in degrees (default 0)
    symbol_lib_path: Path to .kicad_sym if using custom lib
    schematic_path: Path to .kicad_sch file
    project_path: Path to .kicad_pro file (for sub-sheet instance tracking)
add_textA

Add a text annotation to the schematic.

Args:
    text: Text content
    x: X position
    y: Y position
    rotation: Rotation in degrees
    schematic_path: Path to .kicad_sch file
remove_textA

Remove text annotation(s) by content, optionally filtered by position.

If x and y are provided, only removes texts matching both content AND
position (within 0.1mm tolerance). Otherwise removes ALL texts with
matching content.

Args:
    text: Text content to match
    x: Optional X position filter
    y: Optional Y position filter
    schematic_path: Path to .kicad_sch file
wire_pins_to_netA

Wire multiple component pins to the same net label.

Batch version of wire_pin_to_label. Single file load/save cycle.

Args:
    pins: List of {"reference": "R1", "pin": "1"} dicts
    label_text: Net label text (e.g. "GND", "VCC")
    direction: Wire direction: "auto", "left", "right", "up", "down"
    stub_length: Wire stub length in mm (default 2.54)
    auto_pwr_flag: Auto-place PWR_FLAG when net has power_in but no power_out (default True)
    schematic_path: Path to .kicad_sch file
connect_pinsB

Connect two component pins with Manhattan (L-shaped) wire routing.

Combines get_pin_positions + coordinate math + add_wires into one call.

Args:
    ref1: First component reference (e.g. "U1")
    pin1: First pin name or number
    ref2: Second component reference (e.g. "C3")
    pin2: Second pin name or number
    schematic_path: Path to .kicad_sch file
no_connect_pinA

Place a no-connect flag on a component pin.

Resolves pin position and places a no-connect flag.

Args:
    reference: Component reference (e.g. "U2")
    pin_name: Pin name (e.g. "NC") or number (e.g. "3")
    schematic_path: Path to .kicad_sch file
list_pcb_footprintsB

List all footprints on the PCB.

Args:
    pcb_path: Path to .kicad_pcb file
list_pcb_tracesA

List all trace segments and vias on the PCB.

Args:
    pcb_path: Path to .kicad_pcb file
list_pcb_netsA

List all named nets on the PCB.

Args:
    pcb_path: Path to .kicad_pcb file
list_pcb_zonesA

List all zones (copper and keepout) on the PCB.

Args:
    pcb_path: Path to .kicad_pcb file
list_pcb_layersA

List all layers defined in the PCB stackup.

Args:
    pcb_path: Path to .kicad_pcb file
list_pcb_graphic_itemsB

List all graphic items (lines, text, etc.) on the PCB.

Args:
    pcb_path: Path to .kicad_pcb file
get_board_infoB

Get board summary: footprint count, trace count, net count, thickness.

get_footprint_padsA

Get pad info for a placed footprint on the PCB.

Args:
    reference: Footprint reference (e.g. "R1", "U1")
    pcb_path: Path to .kicad_pcb file
place_footprintA

Place a footprint on the PCB.

Args:
    reference: Reference designator (e.g. "R2")
    value: Component value (e.g. "4.7K")
    x: X position in mm
    y: Y position in mm
    rotation: Rotation in degrees
    layer: Layer (F.Cu or B.Cu)
    pcb_path: Path to .kicad_pcb file
move_footprintA

Move a footprint to a new position.

Args:
    reference: Reference designator (e.g. "R1")
    x: New X position
    y: New Y position
    rotation: New rotation (None = keep current)
    layer: New layer (empty = keep current)
    pcb_path: Path to .kicad_pcb file
check_placementA

Check if placing/moving a footprint to (x, y) would violate constraints.

Args:
    reference: Footprint reference designator
    x: Proposed X position
    y: Proposed Y position
    rotation: Proposed rotation in degrees
    pcb_path: Path to .kicad_pcb file
remove_footprintB

Remove a footprint by reference designator.

Args:
    reference: Reference designator (e.g. "R1")
    pcb_path: Path to .kicad_pcb file
add_traceB

Add a trace segment between two points.

Args:
    x1: Start X
    y1: Start Y
    x2: End X
    y2: End Y
    width: Trace width in mm
    layer: Copper layer (e.g. "F.Cu", "B.Cu")
    net: Net number
    pcb_path: Path to .kicad_pcb file
add_viaA

Add a via at a position.

Args:
    x: X position
    y: Y position
    size: Via pad size in mm
    drill: Drill diameter in mm
    net: Net number
    layers: Via layers (default: ["F.Cu", "B.Cu"])
    pcb_path: Path to .kicad_pcb file
add_pcb_textB

Add text to the PCB (silkscreen, fab layer, etc.).

Args:
    text: Text content
    x: X position
    y: Y position
    layer: Layer (e.g. "F.SilkS", "B.SilkS", "F.Fab")
    rotation: Rotation in degrees
    pcb_path: Path to .kicad_pcb file
add_pcb_lineB

Add a graphic line to the PCB (edge cuts, silkscreen, etc.).

Args:
    x1: Start X
    y1: Start Y
    x2: End X
    y2: End Y
    layer: Layer (e.g. "Edge.Cuts", "F.SilkS")
    width: Line width in mm
    pcb_path: Path to .kicad_pcb file
add_copper_zoneA

Create an unfilled copper zone. Call fill_zones afterward to compute fills.

Args:
    net_name: Name of the net to assign to this zone (e.g. "GND")
    layer: Copper layer (e.g. "F.Cu", "B.Cu")
    corners: List of {x, y} dicts defining the zone polygon (min 3)
    clearance: Zone clearance in mm
    min_thickness: Minimum copper thickness in mm
    thermal_relief: Use thermal relief pads (True) or solid connection (False)
    thermal_gap: Thermal relief gap in mm
    thermal_bridge_width: Thermal relief bridge width in mm
    priority: Zone fill priority (higher fills first)
    pcb_path: Path to .kicad_pcb file
add_keepout_zoneB

Create a keep-out zone that restricts placement of specified items.

Args:
    corners: List of {x, y} dicts defining the zone polygon (min 3)
    layers: Layers to apply keep-out to (default: ["F.Cu", "B.Cu"])
    no_tracks: Restrict tracks in this zone
    no_vias: Restrict vias in this zone
    no_pads: Restrict pads in this zone
    no_copper_pour: Restrict copper pour in this zone
    no_footprints: Restrict footprints in this zone
    pcb_path: Path to .kicad_pcb file
fill_zonesB

Fill all copper zones on the board using pcbnew's zone filler.

Requires KiCad's pcbnew Python bindings to be installed.

Args:
    pcb_path: Path to .kicad_pcb file
set_trace_widthA

Change the width of existing traces matching the given filters. At least one filter (net_name, layer, or bounding box) is required.

Args:
    width: New trace width in mm
    net_name: Filter by net name
    layer: Filter by layer name (e.g. "F.Cu", "B.Cu")
    x_min: Left edge of bounding box filter (mm)
    y_min: Top edge of bounding box filter (mm)
    x_max: Right edge of bounding box filter (mm)
    y_max: Bottom edge of bounding box filter (mm)
    pcb_path: Path to .kicad_pcb file
remove_tracesA

Remove trace segments matching the given filters. Does not remove vias. At least one filter (net_name, layer, or bounding box) is required.

Args:
    net_name: Filter by net name
    layer: Filter by layer name (e.g. "F.Cu", "B.Cu")
    x_min: Left edge of bounding box filter (mm)
    y_min: Top edge of bounding box filter (mm)
    x_max: Right edge of bounding box filter (mm)
    y_max: Bottom edge of bounding box filter (mm)
    pcb_path: Path to .kicad_pcb file
add_thermal_viasA

Add a grid of thermal vias under a footprint pad.

Args:
    reference: Footprint reference (e.g. "U1", "R1")
    pad_number: Pad number to center vias on. If empty, auto-selects largest SMD pad.
    rows: Number of rows in the via grid
    cols: Number of columns in the via grid
    spacing: Spacing between vias in mm
    via_size: Via annular ring diameter in mm
    via_drill: Via drill diameter in mm
    net_name: Net to assign to vias. If None, auto-detect from pad.
    pcb_path: Path to .kicad_pcb file
set_net_classA

Create or update a net class with design rules and assign nets.

Edits the KiCad project file (.kicad_pro) alongside the board to
define the net class and assign nets.  Does NOT require pcbnew.

Args:
    name: Net class name (e.g. "Power", "HighSpeed")
    nets: List of net names to assign to this class
    track_width: Track width in mm (None = use default)
    clearance: Clearance in mm (None = use default)
    via_size: Via diameter in mm (None = use default)
    via_drill: Via drill in mm (None = use default)
    pcb_path: Path to .kicad_pcb file
remove_dangling_tracksA

Detect and remove trace segments with unconnected endpoints.

Iteratively removes dangling segments until no more are found.
A segment is considered dangling if either endpoint does not connect
to a pad, via, or another trace endpoint.

Args:
    pcb_path: Path to .kicad_pcb file
autoroute_pcbA

Autoroute PCB traces using the Freerouting autorouter.

Exports the board to Specctra DSN format, runs Freerouting for automated
trace routing, and imports the results into a new PCB file. The original
board is never modified.

Requires Java 17+ and KiCad's pcbnew Python bindings. On first run,
the Freerouting JAR is auto-downloaded (~20MB).

Args:
    pcb_path: Path to .kicad_pcb file
    max_passes: Maximum autorouter optimization passes
    num_threads: Thread count for routing
    timeout: Max seconds to wait for routing (default: 600)
    output_dir: Directory for output files (default: same as PCB)
get_footprint_boundsA

Get the board-coordinate bounding box of a placed footprint.

Args:
    reference: Footprint reference designator
    pcb_path: Path to .kicad_pcb file
validate_boardA

Validate all footprint placements against keep-out zones and board edge.

Args:
    pcb_path: Path to .kicad_pcb file
list_lib_symbolsA

List all symbols in a .kicad_sym library file.

Args:
    symbol_lib_path: Path to .kicad_sym file
get_symbol_infoA

Get detailed pin and property info for a symbol in a library.

Args:
    symbol_name: Symbol name (e.g. "LM7805")
    symbol_lib_path: Path to .kicad_sym file
add_symbolA

Add a new symbol definition to a .kicad_sym library.

Creates a complete symbol with pins and body graphics.  If the library
file does not exist it will be created.

Args:
    name: Symbol name (e.g. "MP4572GQB-P", "TLV75733PDBVR")
    pins: Pin definitions — list of dicts, each with keys:
        number (str): pin number, e.g. "1"
        name (str): pin name, e.g. "VIN" ("~" for unnamed)
        type (str): electrical type — "input", "output", "bidirectional",
          "passive", "power_in", "power_out", "tri_state",
          "open_collector", "open_emitter", "unconnected", "free"
        x (float): X position in mm (default 0)
        y (float): Y position in mm (default 0)
        rotation (float): angle 0/90/180/270 (default 0)
        length (float): pin length in mm (default 2.54)
    reference_prefix: Reference prefix e.g. "U", "R", "C" (default "U")
    is_power: True for power symbols (default False)
    pin_names_offset: Pin name label offset in mm (default 0.508)
    in_bom: Include in BOM (default True)
    on_board: Place on board (default True)
    footprint: Default footprint e.g. "Package_SO:SOIC-8" (default "")
    datasheet: Datasheet URL (default "~")
    rectangles: Optional body rectangle(s) — list of dicts with keys:
        x1, y1, x2, y2 (float): corner coordinates in mm
        fill (str): "none", "background", or "outline" (default "background")
        If omitted, a rectangle is auto-computed from pin positions.
    symbol_lib_path: Path to .kicad_sym file
list_lib_footprintsA

List all footprints in a .pretty library directory.

Args:
    pretty_dir: Path to .pretty directory containing .kicad_mod files
get_footprint_infoA

Get pad and outline details for a footprint .kicad_mod file.

Args:
    footprint_path: Path to .kicad_mod file
create_projectA

Create a KiCad 9 project (.kicad_pro + .kicad_prl + .kicad_sch).

Args:
    directory: Directory to create the project in (created if missing)
    name: Project name (used for filenames)
create_schematicB

Create a valid empty KiCad 9 schematic file.

Args:
    schematic_path: Path for the new .kicad_sch file
create_symbol_libraryA

Create a valid empty KiCad 9 symbol library.

Args:
    symbol_lib_path: Path for the new .kicad_sym file
create_sym_lib_tableA

Create a sym-lib-table file in the given directory.

Each entry dict needs 'name' and 'uri' keys.
Overwrites existing sym-lib-table if present.

Args:
    directory: Directory to write sym-lib-table in
    entries: List of dicts with 'name' and 'uri' keys
add_hierarchical_sheetA

Add a hierarchical sheet to a parent schematic with matching labels in the child.

Creates the sheet block in the parent and corresponding hierarchical
labels in the child schematic. The child schematic must already exist
(create it with create_schematic first).

Args:
    parent_schematic_path: Path to parent .kicad_sch
    sheet_name: Display name for the sheet
    sheet_file: Path to child .kicad_sch (must exist)
    pins: List of dicts with 'name' (str) and 'direction' (str) keys.
          Direction: input, output, bidirectional, tri_state, passive.
    x: X position of sheet block (default 25.4)
    y: Y position of sheet block (default 25.4)
    project_path: Path to .kicad_pro file (for sub-sheet instance tracking)
remove_hierarchical_sheetA

Remove a hierarchical sheet block from a parent schematic.

Identify the sheet by name, uuid, or both. If name matches multiple sheets,
returns an error with UUIDs for disambiguation.

Args:
    parent_schematic_path: Path to parent .kicad_sch
    name: Sheet name to match
    uuid: Sheet UUID for unambiguous identification
    delete_child_file: If True, delete the child .kicad_sch file
          (unless still referenced by another sheet)
modify_hierarchical_sheetA

Modify properties of an existing hierarchical sheet block.

Args:
    sheet_uuid: UUID of the sheet to modify (from list_schematic_sheets)
    schematic_path: Path to parent .kicad_sch
    sheet_name: New display name (empty = keep)
    file_name: New file path (empty = keep)
    width: New width in mm (None = keep)
    height: New height in mm (None = keep)
add_sheet_pinA

Add a pin to an existing hierarchical sheet block.

Args:
    sheet_uuid: UUID of the sheet
    pin_name: Pin name (should match a hierarchical label in the child schematic)
    connection_type: input, output, bidirectional, tri_state, passive
    schematic_path: Path to parent .kicad_sch
    side: Which sheet edge to place pin on (left or right)
remove_sheet_pinA

Remove a pin from a hierarchical sheet block.

Args:
    sheet_uuid: UUID of the sheet
    pin_name: Name of the pin to remove
    schematic_path: Path to parent .kicad_sch
annotate_schematicA

Auto-assign reference designators to unannotated components.

Finds components with '?' in their reference (e.g. R?, U?) and assigns
sequential numbers, respecting existing references in the schematic
and across the hierarchy when project_path is provided.

Args:
    schematic_path: Path to .kicad_sch file
    project_path: Path to .kicad_pro file (scans hierarchy for existing refs)
validate_hierarchyA

Validate hierarchical schematic for common issues.

Checks for orphaned labels/pins, direction mismatches, duplicate
reference designators, unannotated components, and missing files.

Args:
    schematic_path: Path to root .kicad_sch file
is_root_schematicA

Check if a schematic is the root or a sub-sheet.

Args:
    schematic_path: Path to .kicad_sch file
list_hierarchyA

List the full sheet hierarchy starting from a root schematic.

Args:
    schematic_path: Path to root .kicad_sch file
get_sheet_infoA

Get detailed info about a hierarchical sheet including pin/label matching.

Args:
    sheet_uuid: UUID of the sheet
    schematic_path: Path to parent .kicad_sch
trace_hierarchical_netA

Trace a net across the hierarchy, following hierarchical pins and labels.

Args:
    net_name: Net/label name to trace
    schematic_path: Path to root .kicad_sch file
list_cross_sheet_netsA

List all nets that cross sheet boundaries (hierarchical pins and global labels).

Args:
    schematic_path: Path to root .kicad_sch file
get_symbol_instancesA

List all symbol instances from a root schematic's symbolInstances table.

Args:
    schematic_path: Path to root .kicad_sch file
move_hierarchical_sheetA

Move a hierarchical sheet block to a new position, including all pins.

Args:
    sheet_uuid: UUID of the sheet to move
    new_x: New X position in mm
    new_y: New Y position in mm
    schematic_path: Path to parent .kicad_sch
reorder_sheet_pagesC

Reorder hierarchical sheets by specifying the desired UUID order.

Args:
    page_order: List of sheet UUIDs in desired order
    schematic_path: Path to root .kicad_sch file
duplicate_sheetA

Duplicate a hierarchical sheet, copying the child file with new UUIDs.

Args:
    sheet_uuid: UUID of the sheet to duplicate
    new_sheet_name: Display name for the new sheet
    schematic_path: Path to parent .kicad_sch
    project_path: Path to .kicad_pro (for hierarchy metadata)
    new_file_name: Name for the copied file (auto-generated if empty)
flatten_hierarchyA

Flatten a hierarchical schematic into a single sheet.

Merges all child sheet content into one schematic with offset positions.
Creates a new file — does NOT modify the original hierarchy.

Args:
    schematic_path: Path to root .kicad_sch file
    output_path: Path for flattened output (defaults to *_flat.kicad_sch)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ProductOfAmerica/mcp-server-kicad'

If you have feedback or need assistance with the MCP directory API, please join our Discord server