home / mcp / kicad mcp server

KiCAD MCP Server

KiCAD MCP is a Model Context Protocol (MCP) implementation that enables Large Language Models (LLMs) like Claude to directly interact with KiCAD for printed circuit board design.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "mixelpixx-kicad-mcp-server": {
      "command": "node",
      "args": [
        "/path/to/KiCAD-MCP-Server/dist/index.js"
      ],
      "env": {
        "LOG_LEVEL": "info",
        "PYTHONPATH": "/path/to/kicad/python"
      }
    }
  }
}

You can run a KiCAD MCP Server to securely connect your KiCAD workspace with AI assistants, enabling natural language control of PCB design tasks. This server exposes a rich set of tools, real-time project state access, and flexible deployment options to automate schematic and board workflows while keeping AI context efficient.

How to use

You interact with the KiCAD MCP Server through a client that supports the MCP interface. Start by launching the local server, then configure your client to connect using the provided stdio channel. Once connected, you can ask the AI to create projects, place components, route nets, load schematics, generate outputs, or inspect current project state. The system uses a router to discover and execute the most appropriate tools for your task, minimizing context while preserving full functionality.

How to install

Prerequisites you need on your machine include KiCAD 9.0 or higher, Node.js 18 or higher, and Python 3.10 or higher. You will also interact with Python dependencies and a local MCP client.

# Linux (Ubuntu/Debian) example
sudo add-apt-repository --yes ppa:kicad/kicad-9.0-releases
sudo apt-get update
sudo apt-get install -y kicad kicad-libraries

# Node.js
curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt-get install -y nodejs

# Install the MCP server locally
git clone https://github.com/mixelpixx/KiCAD-MCP-Server.git
cd KiCAD-MCP-Server
npm install
pip3 install -r requirements.txt
npm run build

# Verify KiCAD Python bindings are accessible
python3 -c "import pcbnew; print(pcbnew.GetBuildVersion())"

Configure and run the server locally

After building, you run the MCP server as a local stdio endpoint. You configure your MCP client to connect to the local node process, which communicates with KiCAD via the Python backend.

{
  "mcpServers": {
    "kicad": {
      "type": "stdio",
      "name": "kicad",
      "command": "node",
      "args": ["/path/to/KiCAD-MCP-Server/dist/index.js"],
      "env": {
        "PYTHONPATH": "/path/to/kicad/python",
        "LOG_LEVEL": "info"
      }
    }
  }
}

Available tools

create_project

Initialize a new KiCAD project and set up the initial PCB and schematic files.

open_project

Load an existing KiCAD project into the MCP session.

save_project

Save the current KiCAD project state to disk.

get_project_info

Retrieve metadata about the current project.

set_board_size

Configure the PCB dimensions for the board outline.

add_board_outline

Create the board outline in the PCB layout.

add_layer

Add a new board layer to the stack.

set_active_layer

Switch the active working layer.

get_layer_list

List all layers in the board stack.

get_board_info

Retrieve properties of the board, such as dimensions and layers.

get_board_2d_view

Generate a 2D preview image of the board.

add_mounting_hole

Place mounting holes at specified coordinates.

add_board_text

Add text annotations on the board.

place_component

Place a single component with its footprint.

move_component

Move an existing component to a new position.

rotate_component

Rotate a component by a given angle.

delete_component

Remove a component from the board.

edit_component

Modify component properties such as value or footprint.

get_component_properties

Query details for a placed component.

get_component_list

List all components currently placed on the board.

place_component_array

Create a grid or pattern of components.

align_components

Align multiple components relative to each other.

duplicate_component

Copy an existing component.

add_net

Create a new electrical net.

route_trace

Route copper traces between pads.

add_via

Place vias for layer transitions.

delete_trace

Remove copper traces.

get_nets_list

List all nets in the design.

create_netclass

Define a net class with specific rules.

add_copper_pour

Create copper pours or polygons.

route_differential_pair

Route a differential pair with specified spacing.

list_libraries

List available footprint libraries.

search_footprints

Search footprints by keywords or attributes.

list_library_footprints

List footprints within a library.

get_footprint_info

Get details about a footprint.

download_jlcpcb_database

Download the local JLCPCB parts database (one-time setup).

search_jlcpcb_parts

Search the JLCPCB catalog with filters.

get_jlcpcb_part

Get pricing and footprint details for a part.

get_jlcpcb_database_stats

View statistics about the local JLCPCB database.

suggest_jlcpcb_alternatives

Find cheaper or more available part alternatives.

create_schematic

Initialize a new schematic from a template.

load_schematic

Open an existing schematic file.

add_schematic_component

Place symbols with on-demand dynamic loading from KiCad libraries.

list_schematic_libraries

List symbol libraries available for schematics.

export_schematic_pdf

Export the schematic as a PDF.

add_schematic_wire

Create wires between schematic points with customizable stroke.

add_schematic_connection

Auto-connect schematic pins with intelligent routing.

add_schematic_net_label

Add net labels in the schematic with orientation control.

connect_to_net

Connect component pins to named nets in the schematic.

check_kicad_ui

Check whether KiCAD UI is running.

launch_kicad_ui

Launch the KiCAD user interface.

set_design_rules

Configure Design Rule Check parameters.

get_design_rules

Retrieve the current DRC settings.

run_drc

Execute a Design Rule Check.

get_drc_violations

Retrieve DRC violations from the latest run.

export_gerber

Generate Gerber fabrication files.

export_pdf

Export documentation as PDF.

export_svg

Export board as SVG vector graphics.

export_3d

Generate 3D models (STEP/VRML) of the board.

export_bom

Produce a bill of materials for the design.