pcb-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| get_board_infoA | Returns high-level information about the currently open PCB board in KiCAD. Use this tool to get an overview of what board is loaded, including the filename, board dimensions in millimeters, copper layer count, and the number of footprints (components), tracks, vias, zones, and nets. This is typically the first tool to call when starting work on a board. Requires KiCAD to be running with a board open in the PCB editor. |
| list_footprintsA | Lists all footprints (components) on the PCB board with their positions, rotation angles, layers, and pad counts. Positions are in millimeters relative to the board origin. Y increases toward the bottom of the board (KiCAD convention). Optionally filter by layer name to see only components on a specific side. Valid layer values: F.Cu, B.Cu, In1.Cu, In2.Cu, F.SilkS, B.SilkS, Edge.Cuts. Use the returned reference designators (like U1, R1, C1) in follow-up tool calls that require a component reference. |
| get_footprintA | Returns detailed information about a single footprint (component) by its reference designator. Includes position, rotation, layer, bounding box, custom fields (like Value and Footprint library name), and a full list of pads with their net names, positions in millimeters, and pad types (SMD, through-hole, NPTH, edge-connector). Use this when you need to understand a specific component's connectivity or physical dimensions. If the reference does not exist on the board, the error response lists all available reference designators you can use instead. |
| list_netsA | Lists all electrical nets on the PCB board with the number of pads and track segments connected to each net. Nets represent electrical connections between component pads. Power nets like GND and VCC typically have high pad counts. Signal nets connect specific pins between a smaller number of components. Use the returned net names in follow-up calls to get_net_connections or list_tracks to explore specific connectivity. |
| get_net_connectionsA | Returns all footprint pads connected to a given net, showing which components are electrically linked through that net. For each connection, shows the footprint reference designator, pad number, and pad position in millimeters. This is useful for understanding the schematic connectivity as realized on the PCB, or for tracing signal paths between components. Results are capped at 50 entries for large nets like GND; a truncation note is appended if more exist. If the net name does not exist, the error response lists available nets. |
| list_tracksA | Lists all track segments (copper traces) on the PCB board. Each track shows start and end positions in millimeters, width in millimeters, the copper layer it is on, and the net it belongs to. Optionally filter by net name to see only traces carrying a specific signal, or by layer to see traces on a specific copper layer. Both filters can be combined. Results are capped at 50 entries for boards with many traces. Valid layer values: F.Cu, B.Cu, In1.Cu through In30.Cu. |
| get_board_statsA | Returns aggregate statistics about the PCB board: dimensions in millimeters, total routed track length in millimeters, via count, zone count, and the number of unrouted (unconnected) nets. Use this for a quick summary of the board's routing completeness. A board with zero unrouted nets is fully routed. Compare total track length across design iterations to track routing progress. |
| list_zonesA | Lists all copper zones on the PCB board with their net assignment, layer, bounding box in millimeters, and current fill status. Copper zones are typically used for ground planes or power distribution. A zone's net determines which pads it connects to when filled. The fill status indicates whether the zone has been computed (filled) or is still an outline only (unfilled). Unfilled zones do not actually connect to anything until a zone refill is run. |
| get_design_rulesA | Returns the board's design rules derived from the Default netclass: minimum clearance, minimum track width, minimum via drill diameter, and via pad diameter, all in millimeters. These constraints define the manufacturing limits for the PCB. On KiCAD 10.x, design rules are extracted from the project's Default netclass settings. Values shown as 'not configured' use KiCAD's internal defaults. Use this before creating tracks or vias to know valid minimum dimensions. |
| move_footprintA | Moves a footprint (component) to a new position on the board and optionally changes its rotation angle. The footprint is identified by its reference designator (e.g. U1, R1, C1). Positions are in millimeters relative to the board origin. Y increases toward the bottom of the board (KiCAD convention). This creates one undo step: the user can press Ctrl+Z in KiCAD to revert the move. Use dry_run=true to preview the intended position change without actually moving the component. The preview shows current position, target position, and delta. WARNING: This modifies the board. Child pads follow the footprint automatically. |
| create_trackA | Creates a copper track (trace) on the board along a path of 2 or more points. The track is assigned to a specific net and placed on a specific copper layer. Points define the track path in millimeters; each consecutive pair of points becomes a straight track segment. The net must already exist on the board. This creates one undo step: Ctrl+Z reverts all segments created in this call. Use dry_run=true to preview the track geometry without creating it. WARNING: This modifies the board. Creating tracks on a nonexistent net will cause DRC violations. |
| create_viaA | Places a via (vertical connection between copper layers) at the specified position. The via is assigned to a net and connects the front and back copper layers. If diameter and drill size are not specified, board design rule defaults are used. This creates one undo step: Ctrl+Z removes the via. Use dry_run=true to preview the via placement without creating it. WARNING: This modifies the board. Place vias only where connectivity is needed. |
| manage_zoneA | Creates, refills, or deletes a copper zone on the board. Actions: 'create' defines a new zone with a polygon outline on a net and layer. 'refill' recomputes fill for all zones (can be slow on complex boards). 'delete' removes a zone by its identifier from list_zones output. Zone creation requires at least 3 outline points forming a closed polygon. This creates one undo step per action: Ctrl+Z reverts it. Use dry_run=true to preview the action without applying it. WARNING: This modifies the board. Deleting a zone removes its copper fill. |
| edit_footprintA | Edits a footprint's properties: set a field value, change layer (flip the component to the other side), or lock/unlock it against accidental moves. Actions: 'set_field' sets a named field (requires field_name and field_value). 'set_layer' flips the component to the specified layer (requires layer). 'lock' prevents accidental moves in the GUI. 'unlock' allows moves again. This creates one undo step: Ctrl+Z reverts the edit. Use dry_run=true to preview the change without applying it. WARNING: set_layer flips the component, which may affect routing. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/Amagtoto/pcb-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server