# oaslananka/kicad-mcp-pro architecture

> Architecture diagram of the GitHub repository oaslananka/kicad-mcp-pro, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-29). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/oaslananka/kicad-mcp-pro
- Repository: https://github.com/oaslananka/kicad-mcp-pro

## Overview

KiCad MCP Pro is an MCP server that lets AI clients inspect and edit KiCad projects, validate designs, and prepare manufacturing outputs. The main workflow enters through MCP, uses project and schematic/PCB tools, runs review gates, then produces exports for handoff. It also offers component-library engineering, a web dashboard, and a desktop launcher. The README establishes these capabilities; sampled source confirms the server, dashboard, IPC client, and footprint tool adapter/service, but not the full tool-registration wiring, so uncertain internal links are omitted.

Main entry points: [`src/kicad_mcp/server.py`](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/server.py) (MCP server), [`src/kicad_mcp/web/routes.py`](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/web/routes.py) (Web dashboard), [`src/kicad_mcp/web/app.py`](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/web/app.py) (Dashboard app), [`src/kicad_mcp/models/pcb.py`](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/models/pcb.py) (Design models)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_entry["Server and Clients"]
  node_server["MCP server<br/>[server.py]"]
  node_protocol["MCP protocol<br/>[protocol_compat.py]"]
  node_resources["MCP resources<br/>[analysis.py]"]
  node_prompts["Workflow prompts<br/>[workflows.py]"]
end

subgraph group_design["Design Workflow"]
  node_project["Project workflows<br/>[workflow.py]"]
  node_schematic["Schematic tools<br/>[basic_authoring.py]"]
  node_pcb["PCB tools"]
  node_models["Design models<br/>[pcb.py]"]
end

subgraph group_review["Review and Output"]
  node_validation["ERC and DRC<br/>[drc_runner.py]"]
  node_dfm["DFM and signoff<br/>[dfm.py]"]
  node_export["Manufacturing exports"]
  node_routing["Routing automation<br/>[routing.py]"]
end

subgraph group_interfaces["User Interfaces"]
  node_dashboard["Web dashboard<br/>[routes.py]"]
  node_webapp["Dashboard app<br/>[app.py]"]
  node_desktop["Desktop app<br/>[lib.rs]"]
end

subgraph group_engineering["Engineering Support"]
  node_library["Component library<br/>[catalog.py]"]
  node_footprint["Footprint engineering"]
  node_ipc["KiCad IPC client<br/>[client.py]"]
end

node_agent(("MCP-capable AI agent"))
node_kicad(("KiCad application"))
node_webuser(("Dashboard user"))
node_freerouting(("FreeRouting"))

node_agent -->|"sends MCP requests"| node_server
node_server -->|"uses protocol compatibility"| node_protocol
node_server -->|"dispatches tools"| node_project
node_server -->|"dispatches tools"| node_schematic
node_server -->|"dispatches tools"| node_pcb
node_server -->|"dispatches tools"| node_library
node_server -->|"dispatches tools"| node_validation
node_server -->|"dispatches tools"| node_dfm
node_server -->|"dispatches tools"| node_export
node_server -->|"dispatches tools"| node_routing
node_server -->|"exposes resources"| node_resources
node_server -->|"exposes prompts"| node_prompts
node_server -->|"serves dashboard API"| node_dashboard
node_project -->|"uses design models"| node_models
node_schematic -->|"uses design models"| node_models
node_pcb -->|"uses design models"| node_models
node_ipc -.->|"connects through IPC"| node_kicad
node_routing -.->|"runs external router"| node_freerouting
node_webuser -->|"uses dashboard"| node_webapp
node_webapp -->|"routes requests"| node_dashboard
node_dashboard -->|"calls MCP tools"| node_server
node_desktop -->|"opens dashboard"| node_webapp
node_footprint -->|"supports footprint work"| node_library

click node_server "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/server.py"
click node_protocol "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/protocol_compat.py"
click node_project "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/project/workflow.py"
click node_schematic "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/schematic/basic_authoring.py"
click node_pcb "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/pcb/board_inspection.py"
click node_models "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/models/pcb.py"
click node_library "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/library/catalog.py"
click node_footprint "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/library/footprint_engineering.py"
click node_ipc "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/ipc/client.py"
click node_validation "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/validation/drc_runner.py"
click node_dfm "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/tools/dfm.py"
click node_export "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/export/manufacturing_package.py"
click node_routing "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/tools/routing.py"
click node_resources "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/resources/analysis.py"
click node_prompts "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/prompts/workflows.py"
click node_dashboard "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/web/routes.py"
click node_webapp "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/web/app.py"
click node_desktop "https://github.com/oaslananka/kicad-mcp-pro/blob/main/src-tauri/src/lib.rs"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_server,node_protocol,node_resources,node_prompts,node_webuser toneBlue
class node_project,node_schematic,node_pcb,node_models toneAmber
class node_validation,node_dfm,node_export,node_routing toneMint
class node_dashboard,node_webapp,node_desktop toneRose
class node_library,node_footprint,node_ipc,node_agent,node_kicad,node_freerouting toneIndigo
```

## Components

### Server and Clients

- [MCP server](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/server.py): `src/kicad_mcp/server.py`
- [MCP protocol](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/protocol_compat.py): `src/kicad_mcp/protocol_compat.py`
- [MCP resources](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/resources/analysis.py): `src/kicad_mcp/resources/analysis.py`
- [Workflow prompts](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/prompts/workflows.py): `src/kicad_mcp/prompts/workflows.py`

### Design Workflow

- [Project workflows](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/project/workflow.py): `src/kicad_mcp/project/workflow.py`
- [Schematic tools](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/schematic/basic_authoring.py): `src/kicad_mcp/schematic/basic_authoring.py`
- [PCB tools](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/pcb/board_inspection.py): `src/kicad_mcp/pcb/board_inspection.py`
- [Design models](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/models/pcb.py): `src/kicad_mcp/models/pcb.py`

### Review and Output

- [ERC and DRC](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/validation/drc_runner.py): `src/kicad_mcp/validation/drc_runner.py`
- [DFM and signoff](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/tools/dfm.py): `src/kicad_mcp/tools/dfm.py`
- [Manufacturing exports](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/export/manufacturing_package.py): `src/kicad_mcp/export/manufacturing_package.py`
- [Routing automation](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/tools/routing.py): `src/kicad_mcp/tools/routing.py`

### User Interfaces

- [Web dashboard](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/web/routes.py): `src/kicad_mcp/web/routes.py`
- [Dashboard app](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/web/app.py): `src/kicad_mcp/web/app.py`
- [Desktop app](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src-tauri/src/lib.rs): `src-tauri/src/lib.rs`

### Engineering Support

- [Component library](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/library/catalog.py): `src/kicad_mcp/library/catalog.py`
- [Footprint engineering](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/library/footprint_engineering.py): `src/kicad_mcp/library/footprint_engineering.py`
- [KiCad IPC client](https://github.com/oaslananka/kicad-mcp-pro/blob/main/src/kicad_mcp/ipc/client.py): `src/kicad_mcp/ipc/client.py`

### Other components

- **MCP-capable AI agent**
- **KiCad application**
- **Dashboard user**
- **FreeRouting**

## Connections

- MCP-capable AI agent → MCP server: sends MCP requests
- MCP server → MCP protocol: uses protocol compatibility
- MCP server → Project workflows: dispatches tools
- MCP server → Schematic tools: dispatches tools
- MCP server → PCB tools: dispatches tools
- MCP server → Component library: dispatches tools
- MCP server → ERC and DRC: dispatches tools
- MCP server → DFM and signoff: dispatches tools
- MCP server → Manufacturing exports: dispatches tools
- MCP server → Routing automation: dispatches tools
- MCP server → MCP resources: exposes resources
- MCP server → Workflow prompts: exposes prompts
- MCP server → Web dashboard: serves dashboard API
- Project workflows → Design models: uses design models
- Schematic tools → Design models: uses design models
- PCB tools → Design models: uses design models
- KiCad IPC client → KiCad application: connects through IPC
- Routing automation → FreeRouting: runs external router
- Dashboard user → Dashboard app: uses dashboard
- Dashboard app → Web dashboard: routes requests
- Web dashboard → MCP server: calls MCP tools
- Desktop app → Dashboard app: opens dashboard
- Footprint engineering → Component library: supports footprint work
