Skip to main content
Glama
nmlsports
by nmlsports

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
KICAD_APPNoPath to the macOS KiCad .app bundle
KICAD_CLINoPath to the kicad-cli executable
KICAD_PYTHONNoPath to the Python interpreter that can import pcbnew
KICAD_MCP_CACHENoDirectory to use for caching~/.cache/kicad-mcp
KICAD_MCP_DEBUGNoSet to 1 to print worker tracebacks to stderr
KICAD_API_SOCKETNoPath to the KiCad IPC API socket

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
project_infoA

Overview of a KiCad project folder: files, board size and counts, schematic sheets. Start here.

board_summaryB

Board overview: outline, layers, footprint/net/track/via counts, zones, design rules and netclasses.

list_componentsA

List footprints on the board with position (mm), rotation, side. Filters are case-insensitive substrings, or globs if they contain * ? [ (e.g. ref="C*", value="10k", footprint="0402", side="F").

get_componentA

Full detail for one footprint by reference: position, bbox, courtyard, fields, 3D model, every pad with net.

measureA

Distance between two items. Each of a/b is a footprint ref ("U7"), a pad ("U7.3" or "J1:A6"), or a point in mm ("120.5,44"). Returns dx/dy, centre distance, compass direction, and edge-to-edge gap (courtyard-to-courtyard for footprints, copper-to-copper for pads).

neighborsB

Footprints within radius mm of a footprint, nearest first, with courtyard gap and direction.

net_infoA

Everything on one net: pads (with pin names), track length per layer, widths, vias, zones, netclass rules. Net name may be exact, case-insensitive, or a unique substring.

list_netsB

Nets on the board with pad count, routed length and via count. sort = pads | length | name.

items_in_regionA

What lies inside a rectangle (mm corners): footprints, tracks per net/layer, vias, zones, text. Optional layer name (e.g. "F.Cu", "B.Silkscreen") restricts the answer.

searchC

Find where a string occurs on the board: references, values, footprint names, fields, net names, silkscreen text.

drcA

Run DRC (cached until the board changes). Without type: counts per violation type. With type: individual findings with positions. severity = error | warning. parity=true also checks against the schematic.

render_3dA

Render the board to a PNG (raytraced-lite) and return its path so you can view it. side = top | bottom | left | right | front | back. zoom > 1 magnifies the centre.

render_layersA

2D plot of chosen layers (comma-separated, e.g. "F.Cu,F.Silkscreen,Edge.Cuts") fitted to the board. Returns the SVG path and, on macOS, a PNG path you can view. mirror=true for looking at the bottom.

schematic_summaryA

Schematic overview from the exported netlist: sheets, symbol counts by prefix, nets, power nets, DNP parts.

sch_componentsB

List schematic symbols with value, footprint, sheet and DNP flag. Filters are substrings or globs.

sch_componentB

One schematic symbol: fields, library part, sheet, and every pin with the net it is on (blank = unconnected).

sch_netB

All pins on a schematic net (exact, case-insensitive, or unique-substring name).

sch_netsB

Schematic nets with pin counts, largest first. filter is a case-insensitive substring.

bomC

Bill of materials grouped by value (and footprint): quantity, references, and part-number fields.

ercA

Run ERC on the schematic (cached until it changes). Without type: counts per type. With type: individual findings with sheet and position. severity = error | warning.

kicad_statusA

Is KiCad running with its API enabled, and which boards/schematics are open? Call before any editing tool. Editing tools work on the board open in the KiCad PCB editor.

move_componentA

Move/rotate/flip one footprint in the open board (one undo step). x/y set an absolute position in mm; dx/dy nudge relative to it; rotation sets degrees, rotate_by adds; flip moves it to the other side.

move_componentsA

Move several footprints as one undo step. moves is a JSON list of objects with keys ref (required) and any of x, y, dx, dy, rotation, rotate_by, flip, locked. Example: [{"ref":"C1","x":120.5,"y":44,"rotation":90},{"ref":"R2","dx":-1.27}]

set_component_attributesB

Set DNP / exclude-from-BOM / exclude-from-position-files / locked flags on a footprint.

set_component_fieldB

Set the value, datasheet or description text of a footprint on the board (not the schematic).

add_trackA

Draw track segments through points (JSON list of [x, y] in mm) on layer for net. Width defaults to the net's netclass. No DRC is run; check with drc after saving.

add_viaA

Place a through via at (x, y) mm on net. Diameter/drill default to the netclass.

ripup_netA

Delete all tracks (and vias unless vias=false) of a net, optionally only on one layer. Undoable in the editor.

get_selectionA

What the user currently has selected in the PCB editor (footprints, tracks, vias...). Useful when they say "this part" or "these tracks".

select_componentsA

Select footprints in the PCB editor so the user can see which ones you mean. refs is a JSON list of references. add=true keeps the existing selection.

refill_zonesA

Refill all copper zones in the open board (needed after moving parts or routing near zones).

save_boardA

Save the open board to disk so file-based tools (measure, drc, render...) see the edits.

live_componentA

Current position/rotation/side of a footprint as shown in the editor (including unsaved edits).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 33 tools

Disambiguation4/5

Most tools map cleanly to a distinct resource and action, with clear board-vs-schematic prefixes (list_components vs sch_components, net_info vs sch_net). A few overlaps exist—project_info/board_summary both report board counts, and live_component/get_component both describe a footprint—but the descriptions resolve the boundaries.

Naming Consistency4/5

The set uses consistent snake_case and useful prefixes: list_/get_ for reads, sch_ for schematic tools, and move_/set_/add_/ripup_ for edits. It deviates with bare acronyms and noun-only names like erc, drc, bom, board_summary, and kicad_status, but the overall pattern remains predictable.

Tool Count2/5

33 tools exceeds the 25+ threshold and makes agent tool selection noticeably harder. The breadth reflects KiCad's complexity, but several summary/query tools could be consolidated without losing capability.

Completeness3/5

The toolset thoroughly covers board/schematic inspection, selection, rendering, ERC/DRC, BOM, and common layout edits. Gaps remain: there is no component creation/deletion, no schematic editing, and track editing is limited to adding segments or ripping up whole nets rather than editing existing tracks.

Maintenance

ActivityMaintained
ResponsivenessNo issues