← Back to search

io.github.daedalus/mcp-kicad

daedalus Scanned 18d ago

MCP server exposing KiCad PCB Editor functionality via IPC API

C
72 / 100

Versions

0.1.0latest
first seen Jun 5, 2026
0.1.1
first seen May 19, 2026
PermissionsTool SafetyAuthAnnotationsCode QualityStabilitySpecVuln HistoryAuthorTransparencyCommunity

Tools 41

save_board
annotations: none low

Save the board to a file.

path string
delete_item
annotations: none low

Delete an item from the board.

item_id str
connect_kicad
annotations: none low

Connect to a running KiCad instance via the IPC API. This must be called before any other operations. Ensure KiCad is running with the API server enabled in Preferences > Plugins. Args: socket_path: Optional path to IPC socket. If not provided, reads from KICAD_API_SOCKET environment variable or uses default platform path. kicad_token: Optional API token for authentication. timeout_ms: Connection timeout in milliseconds. Default 2000. Returns: Dictionary with connection status, KiCad version, and version match info. Example: >>> connect_kicad() {"connected": True, "version": "9.0.1", "version_match": True}

timeout_ms int kicad_token string socket_path string
check_connection
annotations: none low

Check if currently connected to KiCad. Returns connection status, KiCad version, and whether versions match. Returns: Dictionary with connection status and version info. Example: >>> check_connection() {"connected": True, "version": "9.0.1", "version_match": True}

get_board_info
annotations: none low

Get board metadata (title, date, company, revision, comments). Returns: Dictionary with board metadata fields. Example: >>> get_board_info() {"title": "My PCB", "date": "2025-01-01", "company": "", "revision": "1.0"}

get_layers
annotations: none low

List all PCB layers with their properties. Returns: List of layer objects with id, name, type, visible, enabled. Example: >>> get_layers() [{"id": 0, "name": "Copper", "type": "signal", "visible": True, "enabled": True}]

get_board_design_settings
annotations: none low

Get board design rules and constraints. Returns: Dictionary with design settings (track widths, clearances, via specs). Example: >>> get_board_design_settings() {"track_width": 0.2, "via_diameter": 0.6, "via_drill": 0.3}

list_footprints
annotations: none low

List all footprints on the board. Returns: List of footprint objects with reference, value, footprint type, position. Example: >>> list_footprints() [{"reference": "U1", "value": "ATmega328P", "footprint": "Package:DIP-8", ...}]

get_footprint
annotations: none low

Get detailed properties of a specific footprint by reference designator. Args: reference: Footprint reference designator (e.g., "U1", "R5"). Returns: Footprint object with all properties including pads, or None if not found. Example: >>> get_footprint("U1") {"reference": "U1", "value": "ATmega328P", "pads": [...]}

reference str
search_footprints
annotations: none low

Search footprints by reference designator, value, or footprint name. Args: query: Search string to match against reference, value, or footprint name. Returns: List of matching footprints. Example: >>> search_footprints("ATmega") [{"reference": "U1", "value": "ATmega328P", ...}]

query str
list_nets
annotations: none low

List all nets on the board. Returns: List of net objects with name, code, and netclass. Example: >>> list_nets() [{"name": "GND", "code": 0, "netclass": "Default"}, {"name": "VCC", ...}]

create_zone
annotations: none low

Create a copper zone on the board.

net str layer str priority int boundary_points string
get_net
annotations: none low

Get detailed information about a specific net by name. Args: name: Net name (e.g., "GND", "VCC"). Returns: Net object with connected pads and item count, or None if not found. Example: >>> get_net("GND") {"name": "GND", "code": 0, "connected_pads": [...], "item_count": 42}

name str
list_netclasses
annotations: none low

List all netclasses on the board. Returns: List of netclass objects with name and properties. Example: >>> list_netclasses() [{"name": "Default", "clearance": 0.2, "track_width": 0.25, ...}]

list_zones
annotations: none low

List all zones (copper areas) on the board. Returns: List of zone objects with name, net, layer, fill mode, priority. Example: >>> list_zones() [{"name": "GND", "net": "GND", "layer": "Copper", "priority": 0}]

list_tracks
annotations: none low

List all tracks on the board. Returns: List of track objects with start/end positions, layer, net, width. Example: >>> list_tracks() [{"start": {"x": 0, "y": 0}, "end": {"x": 100, "y": 0}, "net": "VCC", ...}]

list_vias
annotations: none low

List all vias on the board. Returns: List of via objects with position, diameter, drill, net, layers. Example: >>> list_vias() [{"position": {"x": 100, "y": 50}, "diameter": 0.6, "drill": 0.3, "net": "GND"}]

list_pads
annotations: none low

List all pads across all footprints. Returns: List of pad objects with footprint reference, number, net, position, size. Example: >>> list_pads() [{"footprint": "U1", "number": "1", "net": "VCC", "position": {"x": 0, "y": 0}, ...}]

list_texts
annotations: none low

List all text elements on the board. Returns: List of text objects with content, type, layer, position, size. Example: >>> list_texts() [{"text": "PCB Title", "type": "PCB_TEXT", "layer": "Silkscreen", ...}]

get_text_extents
annotations: none low

Calculate the bounding box of a text string. Args: text: The text string to measure. size: Font size in mm. Default 10. Returns: Dictionary with x, y, width, height of the bounding box. Example: >>> get_text_extents("Hello") {"x": 0, "y": 0, "width": 12.5, "height": 3.0}

size int text str
get_version
annotations: none low

Get KiCad version and API version information. Returns: Dictionary with version strings and version match status. Example: >>> get_version() {"version": "9.0.1", "api_version": "9.0", "version_match": True}

get_project
annotations: none low

Get current project information. Returns: Dictionary with project name and path. Example: >>> get_project() {"name": "my_design", "path": "/path/to/my_design.pro"}

create_net
annotations: none low

Create a new net on the board.

name str netclass str
create_track
annotations: none low

Create a track segment on the board.

net str end_x float end_y float layer str width float start_x float start_y float
create_via
annotations: none low

Create a via on the board.

x float y float net str drill float layers string diameter float
create_text
annotations: none low

Create a text element on the board.

x float y float size float text str layer str rotation float thickness float
create_circle
annotations: none low

Create a circle on the board.

x float y float layer str filled bool radius float line_width float
create_rectangle
annotations: none low

Create a rectangle on the board.

x float y float layer str width float filled bool height float rotation float line_width float
create_arc
annotations: none low

Create an arc on the board.

end_x float end_y float layer str start_x float start_y float center_x float center_y float line_width float
create_line
annotations: none low

Create a line segment on the board.

end_x float end_y float layer str start_x float start_y float line_width float
move_item
annotations: none low

Move an item to a new position.

x float y float item_id str
rotate_item
annotations: none low

Rotate an item.

angle float item_id str center_x float center_y float
move_footprint
annotations: none low

Move a footprint to a new position by reference.

x float y float reference str
rotate_footprint
annotations: none low

Rotate a footprint by reference.

angle float reference str
create_footprint
annotations: none low

Place a footprint on the board.

x float y float layer str value str rotation float footprint str reference str
add_to_selection
annotations: none low

Add an item to the selection.

item_id str
clear_selection
annotations: none low

Clear the current selection.

get_selection
annotations: none low

Get the current selection.

set_active_layer
annotations: none low

Set the active layer.

layer str
refill_zones
annotations: none low

Refill all zones on the board.

get_item_by_id
annotations: none low

Get item details by ID.

item_id str

Permissions 2

filesystem low
Server uses filesystem capabilities via: os
env_vars low
Server uses env_vars capabilities via: os.environ

Scan Findings 104

low
Tool 'create_text' has no annotations annotation_checker · 100%
low
Tool 'create_circle' has no annotations annotation_checker · 100%
low
Tool 'connect_kicad' has no annotations annotation_checker · 100%
low
Tool 'check_connection' has no annotations annotation_checker · 100%
low
Tool 'get_board_info' has no annotations annotation_checker · 100%
low
Tool 'get_layers' has no annotations annotation_checker · 100%
low
Tool 'get_board_design_settings' has no annotations annotation_checker · 100%
low
Tool 'list_footprints' has no annotations annotation_checker · 100%
low
Tool 'get_footprint' has no annotations annotation_checker · 100%
low
Tool 'search_footprints' has no annotations annotation_checker · 100%
low
Tool 'list_nets' has no annotations annotation_checker · 100%
low
Tool 'get_net' has no annotations annotation_checker · 100%
low
Tool 'list_netclasses' has no annotations annotation_checker · 100%
low
Tool 'list_zones' has no annotations annotation_checker · 100%
low
Tool 'list_tracks' has no annotations annotation_checker · 100%
low
Tool 'list_vias' has no annotations annotation_checker · 100%
low
Tool 'list_pads' has no annotations annotation_checker · 100%
low
Tool 'list_texts' has no annotations annotation_checker · 100%
low
Tool 'get_text_extents' has no annotations annotation_checker · 100%
low
Tool 'get_version' has no annotations annotation_checker · 100%
low
Tool 'get_project' has no annotations annotation_checker · 100%
low
Tool 'create_net' has no annotations annotation_checker · 100%
low
Tool 'create_track' has no annotations annotation_checker · 100%
low
Tool 'create_via' has no annotations annotation_checker · 100%
low
Tool 'create_rectangle' has no annotations annotation_checker · 100%
low
Tool 'create_arc' has no annotations annotation_checker · 100%
low
Tool 'create_line' has no annotations annotation_checker · 100%
low
Tool 'move_item' has no annotations annotation_checker · 100%
low
Tool 'rotate_item' has no annotations annotation_checker · 100%
low
Tool 'delete_item' has no annotations annotation_checker · 100%
low
Tool 'create_zone' has no annotations annotation_checker · 100%
low
Tool 'save_board' has no annotations annotation_checker · 100%
low
Tool 'move_footprint' has no annotations annotation_checker · 100%
low
Tool 'rotate_footprint' has no annotations annotation_checker · 100%
low
Tool 'create_footprint' has no annotations annotation_checker · 100%
low
Tool 'add_to_selection' has no annotations annotation_checker · 100%
low
Tool 'clear_selection' has no annotations annotation_checker · 100%
low
Tool 'get_selection' has no annotations annotation_checker · 100%
low
Tool 'set_active_layer' has no annotations annotation_checker · 100%
low
Tool 'refill_zones' has no annotations annotation_checker · 100%
low
Tool 'get_item_by_id' has no annotations annotation_checker · 100%
info
Sandbox failed to start for behavioral verification behavioral_verifier · 100%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-5h2m-4q8j-pqpj) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-c2jp-c369-7pvx) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-m8x7-r2rg-vh5g) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-mxxr-jv3v-6pgc) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-rcfx-77hg-w2wv) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-rj5c-58rq-j5g5) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-rww4-4w9c-7733) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (GHSA-vv7q-7jx5-f767) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (PYSEC-2026-1364) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (PYSEC-2026-1365) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (PYSEC-2026-2474) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (PYSEC-2026-2475) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (PYSEC-2026-2476) dependency_analyzer · 95%
medium
Vulnerable dependency: fastmcp@2.0 (PYSEC-2026-338) dependency_analyzer · 95%
info
pyproject.toml metadata manifest_parser · 100%
info
Tool: connect_kicad manifest_parser · 90%
info
Tool: check_connection manifest_parser · 90%
info
Tool: get_board_info manifest_parser · 90%
info
Tool: get_layers manifest_parser · 90%
info
Tool: create_zone manifest_parser · 90%
info
Tool: get_board_design_settings manifest_parser · 90%
info
Tool: list_footprints manifest_parser · 90%
info
Tool: get_footprint manifest_parser · 90%
info
Tool: search_footprints manifest_parser · 90%
info
Tool: list_nets manifest_parser · 90%
info
Tool: get_net manifest_parser · 90%
info
Tool: list_netclasses manifest_parser · 90%
info
Tool: list_zones manifest_parser · 90%
info
Tool: list_tracks manifest_parser · 90%
info
Tool: list_vias manifest_parser · 90%
info
Tool: list_pads manifest_parser · 90%
info
Tool: list_texts manifest_parser · 90%
info
Tool: save_board manifest_parser · 90%
info
Tool: get_text_extents manifest_parser · 90%
info
Tool: get_version manifest_parser · 90%
info
Tool: get_project manifest_parser · 90%
info
Tool: create_net manifest_parser · 90%
info
Tool: create_track manifest_parser · 90%
info
Tool: create_via manifest_parser · 90%
info
Tool: create_text manifest_parser · 90%
info
Tool: create_circle manifest_parser · 90%
info
Tool: create_rectangle manifest_parser · 90%
info
Tool: create_arc manifest_parser · 90%
info
Tool: create_line manifest_parser · 90%
info
Tool: move_item manifest_parser · 90%
info
Tool: rotate_item manifest_parser · 90%
info
Tool: delete_item manifest_parser · 90%
info
Tool: move_footprint manifest_parser · 90%
info
Tool: rotate_footprint manifest_parser · 90%
info
Tool: create_footprint manifest_parser · 90%
info
Tool: add_to_selection manifest_parser · 90%
info
Tool: clear_selection manifest_parser · 90%
info
Tool: get_selection manifest_parser · 90%
info
Tool: set_active_layer manifest_parser · 90%
info
Tool: refill_zones manifest_parser · 90%
info
Tool: get_item_by_id manifest_parser · 90%
info
Required env vars (2) manifest_parser · 80%
info
Sandbox failed to start for output poisoning scan output_poisoning · 100%
low
Permission: filesystem access detected permission_analyzer · 70%
low
Permission: env_vars access detected permission_analyzer · 90%
info
No dependency files found for SBOM generation sbom_generator · 100%
medium
No build provenance detected (SLSA L0) slsa_assessor · 90%