pcb-mcp
Integrates with KiCad to read and modify PCB designs via KiCad's IPC API, providing tools for board state queries, footprint placement, track and via creation, DRC, and manufacturing file export.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@pcb-mcpplace a capacitor at (50, 30) on the top layer"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
pcb-mcp
An MCP server that lets an AI assistant read and modify KiCAD PCB designs through KiCAD's IPC API.
Status
Pre-alpha. There is no working code yet. This is actively being built as a personal learning project and is not usable today. It is not installable.
Related MCP server: Coppermind
What it will do
The server exposes a small set of tools (20 or fewer) so an AI assistant can pick the right one reliably:
Query board state (layers, nets, footprints, tracks, zones)
Place and move footprints
Create tracks and vias
Run Design Rule Check (DRC)
Export manufacturing files (Gerbers, drill files, BOM)
Design decisions
Choice | Reason |
Python 3.11+ | Matches KiCAD plugin ecosystem, broad library support |
Official | Canonical implementation, stable as of 2026-07-28 |
| MIT-licensed, actively maintained, replaces deprecated SWIG |
KiCAD 10.0.x target | Current stable (10.0.5). IPC API first shipped in KiCAD 9 but matured in 10 |
PCB editor scope only | The IPC API has no schematic access today |
MIT license (out-of-process client) | No GPL entanglement because the server communicates over IPC, not linked to KiCAD |
Requirements
KiCAD 10.0.x installed and running with a board open. The IPC API needs a live GUI instance (headless mode is expected in KiCAD 11).
KiCAD API enabled in Preferences → API settings.
Python 3.11+
Only one IPC client can attach to a KiCAD instance at a time.
Development
This project follows a branch-and-pull-request workflow. The main branch is protected, and every change lands through a PR.
Detailed planning and research documents are kept locally and are not published in this repo. The README is the single source of project context for external readers.
License
MIT. See LICENSE.
Available Tools
14 toolscreate_trackADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | Yes | Copper layer to place the track on. Valid values: F.Cu, B.Cu, In1.Cu through In30.Cu. | |
| dry_run | No | If true, compute and report the track geometry without actually creating it. Defaults to false. | |
| net_name | Yes | Name of the net this track belongs to. Case-sensitive. Use list_nets to discover available net names. The track must be on a valid net to pass DRC. | |
| width_mm | Yes | Track width in millimeters. Must be >= the board's minimum track width (check get_design_rules). Common values: 0.15, 0.2, 0.25, 0.3, 0.5 mm. | |
| points_mm | Yes | Path points in millimeters. Must contain at least 2 points. Each consecutive pair creates one track segment. Y increases toward the bottom of the board. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description discloses undo behavior, dry-run preview, and consequences of invalid nets. This significantly enhances transparency and does not contradict annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise but information-dense, with every sentence contributing (purpose, segment logic, prerequisite, undo, preview, warning). It is well-structured and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity, the description covers creation mechanism, constraints, side effects, and preview option. Output schema exists, so detailed return value explanation is unnecessary; the description is complete for safe and correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, setting a baseline of 3. The description adds value by explaining that each consecutive point pair becomes a straight segment, which is not fully conveyed by the schema's 'Path points' description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('Creates a copper track (trace)') and resource (track on a board with path of 2+ points). It distinguishes the tool from siblings like create_via and manage_zone by focusing on track creation and net/layer assignment.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context such as net existence requirement, dry_run preview, and DRC warning. It lacks explicit alternative tool recommendations or exclusions, but the usage hints are sufficient for practical invocation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_viaADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x_mm | Yes | X position in millimeters for the via center. | |
| y_mm | Yes | Y position in millimeters for the via center. Y increases toward the bottom of the board. | |
| dry_run | No | If true, compute and report the via parameters without actually creating it. Defaults to false. | |
| drill_mm | No | Via drill hole diameter in millimeters. Omit to use the board's default minimum via drill from design rules (typically 0.3 mm). | |
| net_name | Yes | Name of the net this via connects. Case-sensitive. Use list_nets to discover available net names. | |
| diameter_mm | No | Via pad diameter in millimeters. Omit to use the board's default via diameter from design rules (typically 0.6 mm). |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true, and the description adds critical context: it creates one undo step (Ctrl+Z), warns that it modifies the board, and explains that defaults are used when parameters are omitted. The dry_run option is also disclosed, going beyond the annotation's bare boolean.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence contributes: core operation, layer connectivity, defaults, undo behavior, dry-run, and a warning. The structure is front-loaded and compact without unnecessary filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the output schema exists and the description covers side effects, warnings, defaults, and preview mode, the tool is fully contextualized. No gaps remain for an agent to understand what happens and what to expect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with detailed parameter descriptions. The description adds value by explaining default design-rule behavior when diameter/drill are omitted and by explicitly recommending dry_run=true for preview, which is not fully captured in the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool 'Places a via' at a specified position, defines it as a vertical connection between copper layers, and mentions net assignment. This specific verb+resource statement distinguishes it from sibling tools like create_track or manage_zone.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The intended use is implied by 'Places a via...' and reinforced with 'Place vias only where connectivity is needed.' It does not explicitly name alternatives or when-not conditions, but the scenario is clear. The dry-run tip provides a safe preview path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
edit_footprintADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Target layer for the footprint. Required when action='set_layer'. Valid values: F.Cu (front), B.Cu (back). Flipping to a different side mirrors the component. | |
| action | Yes | The edit operation to perform. Valid values: 'set_field', 'set_layer', 'lock', 'unlock'. | |
| dry_run | No | If true, compute and report what would change without actually editing the footprint. Defaults to false. | |
| reference | Yes | Reference designator of the footprint to edit. Examples: U1, R1, C1, J1. Use list_footprints to discover available references. | |
| field_name | No | Name of the field to set. Required when action='set_field'. Common fields: 'Value', 'Reference', 'Footprint'. Custom fields are also supported. | |
| field_value | No | New value for the field. Required when action='set_field'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the destructiveHint annotation, the description adds crucial behavioral details: 'This creates one undo step: Ctrl+Z reverts the edit,' 'dry_run=true to preview the change without applying it,' and a specific warning that 'set_layer flips the component, which may affect routing.' These disclosures significantly inform the agent about side effects and safety.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense: a one-sentence overview, bullet-like action breakdown, undo behavior, dry-run tip, and warning. Every sentence earns its place, and the structure naturally front-loads the core purpose before caveats.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and a complex 6-parameter tool, the description fully covers the operation's scope, prerequisites per action, preview mode, undo behavior, and side effects. No critical behavioral gaps remain; the agent can confidently invoke the tool for any listed action.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% parameter coverage, including required-when conditions and example field names. The description restates these requirements ('set_field requires field_name and field_value') and adds a routing warning, but does not add substantial new parameter-level semantics beyond what the schema supplies. Thus baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool edits a footprint's properties and enumerates specific actions (set_field, set_layer, lock, unlock) with distinct purposes. This distinguishes it from sibling tools like list_footprints (read-only) and move_footprint (position change) by emphasizing property/layer/lock edits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use each action (e.g., 'set_field sets a named field (requires field_name and field_value)') and includes practical guidance like using dry_run=true to preview. However, it does not explicitly contrast with alternatives like move_footprint or get_footprint, so exclusions are not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_board_infoARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is known. The description adds meaningful context by specifying the prerequisite (KiCAD running with a board open in the PCB editor) and detailing exactly what information is returned, which goes beyond the bare annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the primary action ('Returns...') and uses four concise sentences, each adding value: the return statement, the detailed list of returned data, the timing guidance, and the environmental prerequisite. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the presence of an output schema and zero parameters, the description needs only to cover purpose, usage timing, and prerequisites—all of which are present. It fully equips an agent to understand what the tool does, when to call it, and what is needed for successful invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to explain. With an empty schema and no parameters, the description does not need to elaborate on input semantics; the baseline of 4 for zero parameters applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool 'Returns high-level information about the currently open PCB board in KiCAD' with a specific verb and resource. It lists concrete data fields (filename, dimensions, layer count, counts of footprints/tracks/vias/zones/nets), which clearly distinguishes it from siblings that focus on individual board elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use the tool: 'This is typically the first tool to call when starting work on a board.' It does not explicitly name alternatives or exclusions, but the positioning as the initial overview step implicitly differentiates it from more specific tools like list_footprints or list_tracks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_board_statsARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark the tool as read-only and non-destructive. The description adds interpretive context about what the stats mean, such as zero unrouted nets indicating a fully routed board, which helps the agent understand the output's significance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core function, followed by practical usage guidance. No redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and the presence of an output schema, the description sufficiently covers what the tool returns and how to interpret it. It also provides enough context to differentiate from sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the schema covers all requirements. The description adds no parameter-specific information, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool returns aggregate board statistics, enumerating the specific metrics (dimensions, track length, via count, zone count, unrouted nets). This distinguishes it from sibling tools like get_board_info and list_zones, which serve different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly advises using the tool for a quick summary of routing completeness and suggests comparing track length across iterations. It does not name alternative tools for when not to use it, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_design_rulesARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, so the read-only nature is covered. The description adds valuable behavioral context: KiCAD 10.x extraction source, 'not configured' defaults falling back to internal defaults, and that the values represent manufacturing limits. This goes beyond the annotations and enriches understanding.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: the first states the core purpose and outputs, the second explains context (KiCAD version and defaults), and the third gives a usage directive. No redundant wording; front-loaded with the main action.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no parameters and an output schema, so the description doesn't need to detail return types. It covers the key contextual aspects: what the rules are, where they come from on KiCAD 10.x, fallback behavior for unset values, and when to invoke the tool—making it complete for a read-only query.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters and 100% schema coverage (empty schema), so parameter semantics are trivially satisfied. The description does not need to explain parameters, but it adds clarity about the output (returning specific millimeter values), which aligns with baseline 4 for a no-parameter tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb 'Returns' and names the exact resource: the board's design rules derived from the Default netclass, listing the specific dimensions (clearance, track width, via drill, via pad). It clearly distinguishes itself from siblings by noting it's for reading rules, not creating tracks/vias or listing zones.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use: 'Use this before creating tracks or vias to know valid minimum dimensions.' This provides a clear use case and implies the tool is a prerequisite for creation tools like create_track and create_via, giving strong contextual guidance without needing to name alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_footprintARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reference | Yes | Reference designator of the footprint to inspect. Examples: U1, R1, C1, J1, D1. Use list_footprints to discover available references. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and destructiveHint; the description adds context by detailing specific returned data (position, rotation, pads, net names) and error behavior (lists available references). No contradictions with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four sentences with clear structure: purpose, contents, usage, error behavior. Each sentence adds value, though slightly more verbose than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With output schema present and read-only annotations, the description fully explains the return values and error handling. Complete for a simple read-only tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with examples and a pointer to list_footprints. The description only repeats 'reference designator' without adding meaning beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states 'Returns detailed information about a single footprint' with a specific verb and resource, distinguishing it from list_footprints (which lists all) and edit_footprint (which modifies).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: 'Use this when you need to understand a specific component's connectivity or physical dimensions.' Does not name alternative tools directly, but the error behavior hints at discovering references.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_net_connectionsARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
| net_name | Yes | Name of the net to look up connections for. Net names are case-sensitive. Examples: GND, VCC, SIG1, /RESET. Use list_nets to discover available net names. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false. The description adds valuable behavioral details beyond that: a 50-entry cap with a truncation note, and that non-existent nets return an error listing available nets. This provides useful expectations about tool behavior without contradicting annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact yet information-dense: main action, what is returned, purpose, cap/truncation behavior, and error handling. Every sentence serves a purpose and the structure is front-loaded with the primary function.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite having an output schema (not shown but present), the description already summarizes the returned fields (reference designator, pad number, pad position). It covers truncation, error paths, and typical use cases. For a tool with a single parameter, this is fully complete for an agent to invoke it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with the net_name parameter well-documented (case-sensitive, examples, cross-reference to list_nets). The tool description adds little about the parameter itself, but the schema carries the weight, so a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and resource ('footprint pads connected to a given net'), clearly distinguishing it from siblings like list_nets and list_tracks. It also states the purpose: showing which components are electrically linked through the net, and how it maps to PCB connectivity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use the tool: 'useful for understanding schematic connectivity as realized on the PCB, or for tracing signal paths between components.' It does not explicitly name alternatives or exclusion scenarios, but the use case is well-clarified.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_footprintsARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
| filter_layer | No | Canonical KiCAD layer name to filter footprints by. Common values: F.Cu (front copper), B.Cu (back copper), In1.Cu, In2.Cu (inner copper layers), F.SilkS, B.SilkS (silkscreen), Edge.Cuts (board outline). Omit to list footprints on all layers. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds concrete behavioral context: positions in millimeters relative to board origin, the KiCAD Y-axis convention, and valid layer names. This helps the agent anticipate output semantics without contradicting the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is composed of four informative sentences, each adding value: the listing action, coordinate system, layer filtering, and follow-up usage. It is front-loaded and avoids redundancy with the schema, though slightly longer than strictly necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema, so return format details are not required. The description covers the essential behavior, coordinates, layer filtering, and downstream usage, making it complete for a read-only listing tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% – the filter_layer parameter's description already includes the valid layer values. The tool description does not add new meaning specific to the parameter beyond reinforcing the optional filter and the fact that omitting it lists all layers, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lists all footprints (components) on the PCB board' – a specific verb and resource – and enumerates the exact attributes (positions, rotation angles, layers, pad counts). This clearly differentiates it from sibling tools like list_nets and list_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides context by stating the optional layer filter and lists valid layer values, plus explains how to use returned reference designators in follow-up tool calls. However, it does not explicitly state when not to use it or name an alternative like get_footprint for single-component details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_netsARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so safety is covered. The description adds behavioral context by explaining what the tool returns (pad counts, track segments) and why certain nets like GND/VCC have higher counts. This goes beyond the annotation's binary safety flags and helps predict the tool's behavior, though it stops short of discussing pagination or performance.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place: the first defines the core action and output, the second provides essential background on what nets are, and the third gives actionable next steps. It is informative without being verbose, and it front-loads the main purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given this is a simple read-only listing tool with an output schema available, the description fully supports an agent in understanding when to call it and how to use the results. It mentions the key output fields (nets with pad counts and track segments) and directs to related tools for deeper exploration. No important gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema is fully covered by its empty properties object. The description does not need to explain parameters, but it does explain the meaning of the returned net names, which adds semantic value for downstream use. This meets the baseline for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Lists') and resource ('all electrical nets on the PCB board') and clearly states the output includes pad counts and track segments. This distinguishes it from sibling tools like list_tracks and list_zones, which focus on different PCB elements.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete follow-up guidance, telling the user to use returned net names in get_net_connections or list_tracks to explore connectivity. It does not explicitly exclude alternatives or state when not to use this tool, but the context of listing all nets is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_tracksARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Filter tracks to only those on this copper layer. Valid values: F.Cu, B.Cu, In1.Cu through In30.Cu. Omit to show tracks on all layers. | |
| net_name | No | Filter tracks to only those belonging to this net. Case-sensitive. Use list_nets to discover available net names. Omit to show tracks on all nets. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is established. The description adds useful behavioral context: 'Results are capped at 50 entries' and valid layer values. There is a minor inconsistency between 'Lists all' and the cap, but the cap is disclosed, so transparency is preserved.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the primary purpose, followed by output details and filter options. Every sentence contributes useful information without repetition or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering safety, the description is complete: it states what the tool does, what fields are returned, how filters work, the result cap, and valid layer values. This is sufficient for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and both parameters have full descriptions. The description adds the key semantic that 'Both filters can be combined', which is not explicitly in the schema. It also re-emphasizes valid layer values and the optional nature of filters, providing extra clarity beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Lists all track segments (copper traces) on the PCB board', providing a specific verb and resource. It clearly distinguishes from siblings like list_zones and list_footprints by focusing on copper traces and enumerating their attributes (positions, width, layer, net).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context on when to use filters: 'Optionally filter by net name... or by layer... Both filters can be combined.' It does not explicitly name alternative tools, but the usage context is clear and the cap of 50 results is stated. The schema for net_name references list_nets, which partially compensates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_zonesARead-only
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds valuable behavioral context: it explains that unfilled zones do not electrically connect until a refill is run, which goes beyond the raw annotation fields. This enriches the agent's understanding of the domain.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences long, front-loaded with the core listing purpose, and every subsequent sentence earns its place by explaining zone terminology and fill behavior. There is no redundancy or padding.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with an output schema and strong annotations, the description fully covers the domain concepts needed to interpret the results. It explains what zones are, what the fill status means, and the operational implication of unfilled zones. No significant gaps remain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema provides no burden. The baseline for 0 parameters is 4, and the description adds semantic detail about the returned data (net, layer, bbox, fill status), making the tool's output expectations clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Lists' and identifies the exact resource ('all copper zones on the PCB board'), then enumerates the key attributes returned (net, layer, bounding box, fill status). This clearly distinguishes it from sibling tools like list_footprints, list_nets, and list_tracks.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when zones are relevant (ground planes, power distribution) and explains the semantic difference between filled and unfilled zones, implying when this tool is useful. However, it does not explicitly name alternative tools (e.g., manage_zone for modifications) or state when not to use it, stopping short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_zoneADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| layer | No | Copper layer for the zone. Required for 'create'. Valid values: F.Cu, B.Cu, In1.Cu through In30.Cu. Ignored for 'refill' and 'delete'. | |
| action | Yes | The zone operation to perform. Valid values: 'create' (new zone), 'refill' (recompute all fills), 'delete' (remove a zone by ID). | |
| dry_run | No | If true, compute and report what would happen without actually modifying zones. Defaults to false. | |
| zone_id | No | Zone identifier to delete. Required for 'delete'. Get zone IDs from list_zones output. Ignored for 'create' and 'refill'. | |
| net_name | No | Net to assign to the zone. Required for 'create'. Ignored for 'refill' and 'delete'. | |
| outline_mm | No | Polygon outline points in millimeters. Required for 'create'. Must contain at least 3 points. Points form a closed polygon (last point connects back to first automatically). Ignored for 'refill' and 'delete'. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even though annotations already indicate destructiveHint, the description adds deeper behavioral context: it warns that the board is modified, notes that deletion removes copper fill, mentions undo behavior (Ctrl+Z per action), and explains the dry_run option. These details go well beyond the annotation flags and fully inform the user of consequences.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is tightly structured: opening overview, per-action detail, prerequisites, undo, dry run, and a final warning. Every sentence conveys necessary information without fluff, and the front-loaded verb makes the purpose immediately clear. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers all essential aspects: actions, parameter requirements, performance note for refill, undo behavior, dry-run preview, and explicit destruction warning. It also integrates the dependency on list_zones for IDs. With an output schema present, the lack of return-value detail is acceptable, making this complete for the tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds value by grouping parameters by action (e.g., 'net and layer' for create, 'zone_id' from list_zones for delete), and clarifies the closed-polygon requirement. While much of this mirrors the schema, the action-oriented organization helps the agent quickly map parameters to usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific three-part verb phrase ('Creates, refills, or deletes a copper zone on the board'), clearly identifying the resource and distinguishing it from sibling tools like list_zones. It goes further by enumerating each action with precise behavior, leaving no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each action and mentions required prerequisites (e.g., 'at least 3 outline points forming a closed polygon'). It also points to the sibling tool 'list_zones' for obtaining IDs, and recommends using 'dry_run=true' to preview actions, effectively contrasting safe and destructive usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
move_footprintADestructive
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.
| Name | Required | Description | Default |
|---|---|---|---|
| x_mm | Yes | Target X position in millimeters from the board origin. | |
| y_mm | Yes | Target Y position in millimeters from the board origin. Y increases toward the bottom of the board. | |
| dry_run | No | If true, compute and report what would change without actually moving the footprint. Defaults to false. | |
| reference | Yes | Reference designator of the footprint to move. Examples: U1, R1, C1, J1, D1. Use list_footprints to discover available references. | |
| rotation_deg | No | Target rotation angle in degrees (0-360). Omit to keep the current rotation unchanged. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint=false, destructiveHint=true), the description adds: the move creates one undo step (Ctrl+Z in KiCAD), modifies the board (WARNING), child pads follow automatically, and dry_run preview shows current position, target position, and delta. This enriches the destructive behavior with actionable details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is moderately long but every sentence adds value: action, identification, coordinate system, undo behavior, dry-run purpose, warning, and child-pad behavior. It is well-structured and front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (positioning, rotation, dry-run, undo, destructive nature), the description covers all critical aspects: how to identify the footprint, coordinate units and direction, preview capability, undo step, and consequences. The output schema exists, so return-format details are not required in the description. No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Even though the schema already covers 100% of parameters, the description adds semantics: 'mm relative to board origin', 'Y increases toward bottom of the board', 'reference designator examples', 'dry_run=true shows current/target/delta', and 'rotation omit keeps current rotation'. This significantly aids correct invocation beyond raw schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description starts with a specific verb and resource: 'Moves a footprint (component) to a new position on the board and optionally changes its rotation angle.' It clearly identifies the footprint via reference designator and distinguishes this from sibling tools like edit_footprint by focusing on positional/rotation changes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: positions are in millimeters from board origin, Y axis direction follows KiCAD convention, and dry_run should be used to preview changes. It also directs users to list_footprints to discover available references. While it doesn't explicitly state when not to use this tool versus edit_footprint, the positional focus and dry-run guidance are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
14 tool updates
v0.1.0- First observed
create_track - First observed
create_via - First observed
edit_footprint - First observed
get_board_info - First observed
get_board_stats - First observed
get_design_rules - First observed
get_footprint - First observed
get_net_connections - First observed
list_footprints - First observed
list_nets - First observed
list_tracks - First observed
list_zones - First observed
manage_zone - First observed
move_footprint
TDQS
Scored across 14 tools
Each tool targets a distinct resource and action: board info, footprints (list/get/move/edit), nets (list/get connections), tracks (list/create), zones (list/manage), vias (create), stats, and design rules. There is no overlap or ambiguity between tool purposes.
All tools follow a consistent verb_noun pattern in snake_case: list_zones, get_board_info, list_footprints, get_footprint, list_nets, get_net_connections, list_tracks, get_board_stats, get_design_rules, move_footprint, create_track, create_via, manage_zone, edit_footprint. The get_ vs list_ distinction is systematic.
14 tools is well within the ideal range for a PCB design server. Each tool serves a clear purpose without redundancy, covering board-level information, component/nets/tracks/zones/vias operations, and design rule queries. The count feels appropriately scoped for the domain.
The tool surface covers reading board data and performing basic edits (move/edit footprint, create track/via, manage zones), but lacks deletion for tracks and vias, and there is no tool to list or query individual vias. This leaves notable gaps for a full PCB editing workflow, though core inspection and simple modifications are supported.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
- mcpOAuthcom.vibgrate
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
- CanvaOAuthcom.canva.mcp
The Canva MCP server connects AI assistants (like Claude, ChatGPT, and Cursor) to Canva's API, enabling them to create and manage designs directly within chat conversations. Key capabilities include generating new designs from prompts, autofilling templates, searching and resizing existing designs, importing files from URLs, exporting designs as PDFs or images, and managing folders and comments without switching between tools.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables natural language interaction with KiCad projects, schematics, and PCBs, supporting project management, design rule checking, netlist extraction, and datasheet RAG search.2MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to design PCBs in KiCAD through natural language, with transactional preview-verify-commit workflow, undo/redo, and an engineering knowledge base.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude to interact with KiCAD for PCB design automation, providing comprehensive tool schemas and real-time project state access.372MIT
- AlicenseCqualityCmaintenanceEnables LLMs to inspect, edit, analyze, and render PCB layouts in real-time using the KiCad IPC API, providing tools for board configuration, footprints, tracks, zones, nets, text, shapes, dimensions, exports, screenshots, and CLI automation.1001MIT