Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Tools

Functions exposed to the LLM to take actions

NameDescription
kicad_list_tool_categoriesA

List all available tool categories and capabilities.

kicad_get_tools_in_categoryC

Get the tool names available in a specific category.

kicad_set_projectC

Set the active KiCad project directory and file paths.

kicad_get_project_infoA

Show the currently configured KiCad project paths.

project_set_design_intentC

Store high-level design intent used by placement, routing, and release-quality gates.

v1 parameters (all boards): connector_refs, decoupling_pairs, critical_nets, power_tree_refs, analog_refs, digital_refs, sensor_cluster_refs, rf_keepout_regions, manufacturer, manufacturer_tier.

v2 parameters (professional projects): power_rails (list of PowerRailSpec dicts), interfaces (list of InterfaceSpec dicts), mechanical (MechanicalConstraint dict), compliance (list of ComplianceTarget dicts), cost (CostTarget dict), thermal (ThermalEnvelope dict).

project_get_design_intentA

Show the persisted project design intent used by placement and release gates.

project_get_design_specA

Return the resolved project design spec with explicit and inferred fields.

project_infer_design_specA

Infer a design spec from the active PCB without writing it to disk.

project_validate_design_specB

Validate the resolved design spec against the active project PCB.

project_get_next_actionB

Return the next high-priority action derived from the current project gate.

project_auto_fix_loopA

Run the project quality gate and automatically apply server-side fixes.

Each iteration:

  1. Evaluates all project quality gates.

  2. For auto-applicable gates (annotation, zone refill) — calls the underlying fix implementation directly on the server, then re-evaluates.

  3. For gates requiring agent action — returns the tool name and description so the agent can call it, then the agent must call this tool again to continue.

The loop runs up to max_iterations times applying auto-fixes. It stops early when all gates pass or when no further auto-fix is possible without agent involvement.

Args: max_iterations: Maximum number of auto-fix + re-evaluate cycles to attempt before returning control to the agent (1–20).

project_design_reportA

Generate a comprehensive design-status report.

Combines intent summary, v2 spec richness, project gate evaluation, and a prioritised list of next steps into a single structured report. This is the recommended first call after opening a project to understand its current state.

kicad_list_recent_projectsA

List recently opened KiCad projects from KiCad's config files.

kicad_scan_directoryA

Scan a directory and report any KiCad project files it contains.

kicad_create_new_projectC

Create a new minimal KiCad project structure and activate it.

kicad_get_versionA

Get KiCad version information and current connection status.

kicad_helpA

Show a concise startup guide and all tool categories.

pcb_get_board_summaryA

Summarize the current board.

pcb_get_tracksC

List board tracks.

pcb_get_viasA

List board vias.

pcb_get_footprintsC

List board footprints.

pcb_get_footprint_layersB

List every layer referenced by a footprint block, including inner layers.

pcb_get_netsA

List all board nets.

pcb_get_zonesA

List all board copper zones.

pcb_get_shapesB

List graphical board shapes.

pcb_get_padsA

List board pads.

pcb_get_layersA

List enabled board layers.

pcb_get_stackupA

Show the current stackup.

pcb_set_stackupB

Set the active board stackup using a file-backed profile.

pcb_get_impedance_for_traceB

Estimate trace impedance for the supplied width on the named stackup layer.

pcb_check_creepage_clearanceC

Run a heuristic creepage clearance review against pad spacing.

pcb_get_selectionA

List currently selected items in the PCB editor.

pcb_get_board_as_stringA

Return the current board as a bounded S-expression string.

pcb_get_ratsnestA

Report currently unconnected board items using the latest DRC view.

pcb_get_design_rulesA

Read the active board design rules file when available.

pcb_set_design_rulesC

Write board-level manufacturing constraints into the active .kicad_dru file.

pcb_add_trackC

Add a single track segment.

pcb_add_tracks_bulkA

Add multiple tracks in a single operation.

pcb_add_viaC

Add a via.

pcb_add_blind_viaC

Add a blind or buried via between the requested copper layers.

pcb_add_microviaA

Add a microvia between adjacent copper layers.

pcb_add_segmentC

Add a board graphic segment.

pcb_add_circleC

Add a board graphic circle.

pcb_add_rectangleC

Add a board graphic rectangle.

pcb_set_board_outlineC

Draw a rectangular board outline on Edge.Cuts.

pcb_add_textC

Add board text.

pcb_add_barcodeC

Add a production barcode marker to the board file.

pcb_delete_itemsB

Delete items by UUID.

pcb_saveA

Save the active board.

pcb_refill_zonesB

Refill all copper zones.

pcb_highlight_netC

Attempt to highlight a net in the GUI when supported.

pcb_set_net_classC

Assign a net class when the runtime supports it.

pcb_move_footprintC

Move a footprint to an absolute location.

pcb_set_footprint_layerC

Set the footprint copper side.

add_footprint_inner_layer_graphicC

Inject an inner-layer graphic primitive into a footprint block.

pcb_sync_from_schematicA

Sync missing PCB footprints from schematic footprint assignments.

This is a file-based operation intended for initial board bring-up. It adds missing footprint instances to the .kicad_pcb file using schematic references, values, rotations, and assigned Library:Footprint names. When replace_mismatched=True, existing footprints with the same reference but the wrong footprint name are replaced in place.

pcb_auto_place_by_schematicB

Place PCB footprints from the current schematic using deterministic heuristics.

pcb_place_decoupling_capsC

Move capacitor footprints into a tight row near a target IC footprint.

pcb_group_by_functionC

Cluster existing footprints into named functional groups.

pcb_align_footprintsC

Arrange selected footprints into a straight row or column.

pcb_add_zoneC

Add a copper zone with an arbitrary polygon outline on one copper layer.

pcb_add_copper_zoneD

Backward-compatible alias for pcb_add_zone().

pcb_set_keepout_zoneA

Add a rectangular PCB keepout / rule area to the active board.

pcb_add_mounting_holesA

Append standard mounting-hole footprints around the current board frame.

pcb_add_fiducial_marksB

Append simple fiducial footprints near the board corners.

pcb_block_listB

List stored PCB design blocks created from selected footprints.

pcb_block_create_from_selectionB

Capture a reusable PCB design block from selected footprint references.

pcb_block_placeA

Place a stored PCB design block by cloning its saved footprint blocks.

pcb_add_teardropsB

Create small copper helper zones at simple pad-to-track junctions.

pcb_auto_place_force_directedA

Run a force-directed spring-embedder placement algorithm on a set of components.

This tool computes optimised X/Y positions for components based on their net connectivity without requiring KiCad to be open. Use it to get a placement suggestion, then apply the result with pcb_move_footprint for each component.

Args: component_positions: List of component dicts with keys: ref (str), x (float, mm), y (float, mm), w (float, mm, optional default 2), h (float, mm, optional default 2), fixed (bool, optional default false). nets: List of net dicts with keys: name (str), refs (list[str]), weight (float, optional default 1.0). board_width_mm: Soft boundary width in mm (default 100). board_height_mm: Soft boundary height in mm (default 80). iterations: Number of spring-embedder iterations (default 300). k_spring: Spring attraction coefficient (default 0.4). k_repel: Coulomb repulsion coefficient (default 80.0).

Returns: JSON string with optimised positions for each component.

pcb_bga_fanoutA

Generate a BGA fanout via-placement plan (dog-ear or inline strategy).

Returns per-ball via coordinates and suggested track widths so the agent can call pcb_add_via and pcb_add_track to physically fanout the BGA. Actual pad coordinates must come from the board footprint (use pcb_get_pads).

Args: balls: List of ball dicts with keys: row (str, e.g. "A"), col (int, 1-based), net (str), x_mm (float, ball centre X), y_mm (float, ball centre Y). pitch_mm: Ball pitch in mm (e.g. 0.5, 0.65, 0.8, 1.0). via_drill_mm: Via drill diameter in mm (default 0.2). via_annular_mm: Via annular ring width in mm (default 0.1). escape_layer: Inner copper layer to fan out to (default "In1.Cu"). strategy: "dog_ear" (diagonal escape, most common) or "inline" (horizontal escape, for large pitch).

Returns: JSON string with via placement plan for each ball.

sch_get_symbolsA

List all schematic symbols.

sch_get_wiresA

List all wires in the schematic.

sch_get_labelsA

List all labels in the schematic.

sch_get_net_namesA

List unique net names derived from labels.

sch_add_symbolA

Add a schematic symbol at an absolute coordinate.

Coordinates snap to the 2.54 mm schematic grid by default; set snap_to_grid=False only when an exact off-grid coordinate is intentional.

sch_add_wireB

Add a schematic wire, snapping endpoints to the 2.54 mm grid by default.

sch_add_labelC

Add a schematic label, snapping its anchor to the 2.54 mm grid by default.

sch_add_power_symbolB

Add a power symbol, snapping its anchor to the 2.54 mm grid by default.

sch_add_busB

Add a schematic bus, snapping endpoints to the 2.54 mm grid by default.

sch_add_bus_wire_entryA

Add a bus wire entry marker, snapping its anchor to the 2.54 mm grid by default.

sch_add_no_connectA

Add a no-connect marker, snapping it to the 2.54 mm grid by default.

sch_list_swappable_pinsA

List candidate pins and units that can participate in a swap workflow.

sch_swap_pinsC

Record a pin-swap back-annotation intent for a component.

sch_swap_gatesC

Record a gate-swap back-annotation intent for a multi-unit component.

sch_add_jumperC

Add a jumper symbol to the schematic.

sch_update_propertiesC

Update a property on a placed symbol.

sch_move_symbolA

Move an existing symbol instance to a new absolute coordinate.

sch_delete_wireA

Remove a specific wire segment using its UUID or unique UUID prefix.

sch_delete_symbolA

Remove a placed symbol and any directly attached wire segments.

sch_analyze_net_compilationC

Preview how netlist-aware schematic compilation will resolve endpoints and wires.

sch_build_circuitA

Build (overwrite) the active schematic from structured symbol, wire, and label inputs.

IMPORTANT: This tool replaces the entire schematic content. Any symbols already placed in the schematic will be lost. To add symbols to an existing schematic without erasing it use sch_add_symbol / sch_add_wire / sch_add_label instead.

Coordinates are snapped to the 2.54 mm grid by default. When no coordinates are provided for a symbol, set auto_layout=True so the placement engine assigns non-overlapping positions automatically. If nets are also provided the layout is connection-aware and generates Manhattan wire segments from symbol pins. Nets that cannot resolve to at least two routable endpoints raise a clear error instead of silently producing a disconnected schematic.

Recommended workflow:

  1. Call sch_find_free_placement(count=N) to obtain safe coordinates.

  2. Pass those coordinates in the symbols list.

  3. OR set auto_layout=True and omit coordinates entirely.

sch_get_pin_positionsA

Calculate absolute pin positions for a given symbol placement.

sch_check_power_flagsB

Check whether common power nets appear to be flagged.

sch_annotateB

Renumber schematic references sequentially.

sch_reloadA

Ask KiCad to reload the active schematic.

sch_create_sheetB

Create a child schematic sheet and add it to the active top-level schematic.

sch_add_hierarchical_labelB

Add a hierarchical label, preserving the requested shape and rotation.

sch_add_global_labelC

Add a global label, preserving the requested shape and rotation.

sch_list_sheetsA

List child sheets from the active top-level schematic.

Prompts

Interactive templates invoked by user choice

NameDescription
first_pcbGuide an agent through a first-board workflow.
schematic_to_pcbGuide an agent from schematic capture to PCB layout.
manufacturing_exportChecklist for manufacturing exports.
design_review_loopClosed-loop inspection workflow driven by quality gates.
fix_blocking_issuesPrompt focused on consuming the fix queue and clearing blockers.
manufacturing_release_checklistFinal release checklist for fab-ready handoff.

Resources

Contextual data attached and managed by the client

NameDescription
board_summary_resourceLive PCB board summary.
project_info_resourceCurrent project configuration.
project_spec_resourceResolved project design spec including explicit and inferred fields.
project_next_action_resourceServer-recommended next action derived from the fix queue.
board_netlist_resourceCurrent board S-expression, bounded for safety.
project_quality_gate_resourceLatest full project quality gate report.
project_fix_queue_resourcePrioritized blocking issues derived from the project quality gate.
schematic_connectivity_resourceLatest schematic connectivity gate report.
board_placement_quality_resourceLatest placement score and hard-fail placement findings.
get_studio_contextReturn the latest KiCad Studio IDE context.

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/Valxyria/kicad-mcp-pro'

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