Metadata-Version: 2.4
Name: kicad-mcp-pro
Version: 3.9.0
Summary: Production-grade MCP server for KiCad EDA—PCB design, DRC, simulation, BOM, DFM, and manufacturing.
Project-URL: Homepage, https://github.com/oaslananka/kicad-mcp
Project-URL: Documentation, https://oaslananka.github.io/kicad-mcp
Project-URL: Repository, https://github.com/oaslananka/kicad-mcp
Project-URL: Bug Tracker, https://github.com/oaslananka/kicad-mcp/issues
Project-URL: Changelog, https://github.com/oaslananka/kicad-mcp/blob/main/CHANGELOG.md
Project-URL: Funding, https://github.com/sponsors/oaslananka
Author: Osman Aslan
License: MIT
License-File: LICENSE
Keywords: ai,eda,eda-automation,gerber-export,kicad,llm,mcp,pcb,pcb-design,schematic
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Topic :: Scientific/Engineering :: Electronic Design Automation (EDA)
Classifier: Topic :: Software Development :: Code Generators
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Requires-Python: >=3.13
Requires-Dist: anyio>=4.4.0
Requires-Dist: authlib>=1.7.1
Requires-Dist: idna>=3.15
Requires-Dist: kicad-python<0.8,>=0.6
Requires-Dist: kicad-sch-api<0.6,>=0.5.0
Requires-Dist: mcp[cli]<2.0.0,>=1.27.1
Requires-Dist: opentelemetry-exporter-otlp<2.0.0,>=1.42.1
Requires-Dist: opentelemetry-sdk<2.0.0,>=1.42.1
Requires-Dist: pydantic-settings>=2.3.0
Requires-Dist: pydantic>=2.7.0
Requires-Dist: rich>=13.7.0
Requires-Dist: starlette<2.0.0,>=1.0.1
Requires-Dist: structlog>=24.2.0
Requires-Dist: typer>=0.12.0
Requires-Dist: urllib3>=2.7.0
Provides-Extra: components
Requires-Dist: gql>=3.5.0; extra == 'components'
Requires-Dist: httpx>=0.27.0; extra == 'components'
Provides-Extra: dev
Requires-Dist: bandit>=1.7.9; extra == 'dev'
Requires-Dist: cairosvg<3.0.0,>=2.7.0; extra == 'dev'
Requires-Dist: hypothesis>=6.100.0; extra == 'dev'
Requires-Dist: mkdocs-git-revision-date-localized-plugin>=1.2.9; extra == 'dev'
Requires-Dist: mkdocs-glightbox>=0.4.0; extra == 'dev'
Requires-Dist: mkdocs-material>=9.5.32; extra == 'dev'
Requires-Dist: mkdocs-minify-plugin>=0.8.0; extra == 'dev'
Requires-Dist: mkdocs-redirects>=1.2.1; extra == 'dev'
Requires-Dist: mkdocstrings[python]>=0.25.0; extra == 'dev'
Requires-Dist: mutmut>=3.0.0; extra == 'dev'
Requires-Dist: mypy>=1.10.0; extra == 'dev'
Requires-Dist: pillow<13.0.0,>=12.2.0; extra == 'dev'
Requires-Dist: properdocs>=1.6.7; extra == 'dev'
Requires-Dist: pymdown-extensions>=10.21.3; extra == 'dev'
Requires-Dist: pyright>=1.1.390; extra == 'dev'
Requires-Dist: pytest-asyncio>=0.25.0; extra == 'dev'
Requires-Dist: pytest-benchmark>=4.0.0; extra == 'dev'
Requires-Dist: pytest-cov>=5.0.0; extra == 'dev'
Requires-Dist: pytest-mock>=3.14.0; extra == 'dev'
Requires-Dist: pytest-testmon>=2.1.1; extra == 'dev'
Requires-Dist: pytest-xdist>=3.6.0; extra == 'dev'
Requires-Dist: pytest>=8.2.0; extra == 'dev'
Requires-Dist: radon>=6.0.1; extra == 'dev'
Requires-Dist: ruff>=0.15.0; extra == 'dev'
Requires-Dist: vulture>=2.11; extra == 'dev'
Requires-Dist: watchfiles>=1.0.0; extra == 'dev'
Requires-Dist: zizmor>=1.24.1; extra == 'dev'
Provides-Extra: freerouting
Requires-Dist: docker>=7.0.0; extra == 'freerouting'
Provides-Extra: http
Requires-Dist: httpx>=0.27.0; extra == 'http'
Requires-Dist: uvicorn[standard]>=0.30.0; extra == 'http'
Provides-Extra: simulation
Requires-Dist: numpy>=1.26.0; extra == 'simulation'
Provides-Extra: tray
Requires-Dist: pillow>=10.0.0; extra == 'tray'
Requires-Dist: pystray>=0.19.5; extra == 'tray'
Provides-Extra: vcs
Requires-Dist: gitpython<4.0.0,>=3.1.49; extra == 'vcs'
Description-Content-Type: text/markdown

# KiCad MCP Pro

[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/oaslananka/kicad-mcp)
[![PyPI - Version](https://img.shields.io/pypi/v/kicad-mcp-pro)](https://pypi.org/project/kicad-mcp-pro/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/kicad-mcp-pro)](https://pypi.org/project/kicad-mcp-pro/)
[![npm - Version](https://img.shields.io/npm/v/kicad-mcp-pro)](https://www.npmjs.com/package/kicad-mcp-pro)
[![CI](https://github.com/oaslananka/kicad-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/oaslananka/kicad-mcp/actions)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
[![OpenSSF Scorecard](https://api.scorecard.dev/projects/github.com/oaslananka/kicad-mcp/badge)](https://securityscorecards.dev/viewer/?uri=github.com/oaslananka/kicad-mcp)

<!-- mcp-name: io.github.oaslananka/kicad-mcp-pro -->

Canonical repository: https://github.com/oaslananka/kicad-mcp

- PyPI: `kicad-mcp-pro`
- npm wrapper: `kicad-mcp-pro`
- MCP Registry name: `io.github.oaslananka/kicad-mcp-pro`
- Version: `3.8.0`

KiCad MCP Pro is a Model Context Protocol server for KiCad EDA workflows. It exposes tools, resources, and prompts for schematic, PCB, validation, DFM, and manufacturing export automation.

Telemetry and error reporting are disabled by default. Opt-in OpenTelemetry
configuration and privacy rules are documented in
[`docs/configuration.md`](docs/configuration.md#opentelemetry) in [`docs/telemetry.md`](docs/telemetry.md).

## Quick Start

### Desktop App

Download the latest installer from the
[GitHub releases page](https://github.com/oaslananka/kicad-mcp/releases/latest).
The Tauri desktop app starts the Python dashboard server automatically and opens
the GUI at `http://127.0.0.1:3334/ui`.

### CLI

```bash
uvx kicad-mcp-pro init
uvx kicad-mcp-pro tray
uvx kicad-mcp-pro dashboard --open
uvx kicad-mcp-pro --transport streamable-http --port 3334
```

### Web Dashboard

```bash
uvx kicad-mcp-pro dashboard --host 127.0.0.1 --port 3334 --open
# http://127.0.0.1:3334/ui
```

## Transports

KiCad MCP Pro supports `stdio` and Streamable HTTP. Streamable HTTP is served at
`/mcp` by default and can be moved with `KICAD_MCP_MOUNT_PATH`.

```bash
uvx kicad-mcp-pro@3.8.0 --transport streamable-http --host 127.0.0.1 --port 3334
```

Streamable HTTP clients must send:

- `Accept: application/json, text/event-stream`
- `Content-Type: application/json`
- `MCP-Protocol-Version: 2025-11-25` after initialization
- `MCP-Session-Id` on follow-up requests when `KICAD_MCP_STATEFUL_HTTP=1`

By default Streamable HTTP is stateless, so ChatGPT-style connectors can
initialize and call `tools/list` without a session-header injection proxy. Set
`KICAD_MCP_STATEFUL_HTTP=1` to require session IDs after `initialize`.

The deprecated HTTP+SSE fallback routes are disabled by default. Set
`KICAD_MCP_LEGACY_SSE=1` only for older clients that cannot use Streamable HTTP.

## Install

```bash
corepack pnpm run dev:doctor -- --ci
uvx kicad-mcp-pro@3.8.0 --help
npx kicad-mcp-pro@3.8.0 --help
```

For source checkouts, `corepack pnpm run dev:doctor` validates Node, pnpm,
Python, uv, MCP server CLI startup/version reporting, fixture corpus, protocol
schemas, common development ports, and optional Cloudflare tunnel tooling.

## Package Metadata

The canonical metadata source of truth is `server.json`, which defines the MCP server contract. It is synchronized with `pyproject.toml` and verified in CI via `pnpm run metadata:check`.
