An MCP server for AI coding assistants that unifies search across JLCPCB, Mouser, and DigiKey distributors, featuring parametric search, BOM validation, and KiCad footprint downloads.
Overview#
PCB Parts MCP Server is an MCP (Model Context Protocol) server for AI coding assistants, providing unified access to JLCPCB, Mouser, and DigiKey electronic component distributors. Engineers can perform component search, BOM validation, and KiCad footprint downloads directly within AI coding environments like Claude, Cursor, and VS Code.
Version: 3.1.0
Author: Avery (Averyy)
License: MIT License
Language: Python 87.8% (requires ≥ 3.11)
Problems Solved#
- Fragmented multi-platform search: JLCPCB, Mouser, DigiKey are independent with no unified query interface
- Complex specifications: Manual filtering through numerous electrical parameters is inefficient
- Tedious BOM preparation: Need to check stock, cost, and extended library fees one by one
- Difficult shortage alternatives: Hard to quickly locate spec-compatible alternatives
Target Users#
- PCB design engineers
- Electronics product developers
- Makers using AI coding assistants for hardware development
Supported AI Assistants: Claude Desktop, Claude Code, Cursor, VS Code (Cline/Roo Code, etc.)
Supported EDA Tools: KiCad (via SamacSys footprint download), EasyEDA (pinout extraction)
Core Capabilities#
16 MCP Tools Across 4 Data Sources#
JLCPCB (Local Database + Real-time API)
jlc_search: Smart query parsing + parametric filtering (400K+ high-stock components)jlc_search_api: Real-time API, full 1.5M catalog, pagination supportjlc_get_part: Get complete details by LCSC part number or MPNjlc_get_pinout: Extract pin information from EasyEDA symbolsjlc_find_alternatives: Find spec-compatible alternativesjlc_list_categories: 52 main categoriesjlc_get_subcategories: Subcategories under a categoryjlc_list_attributes: Filterable attributes for subcategoryjlc_validate_bom: Stock check, cost calculation, issue flaggingjlc_export_bom: JLCPCB-compatible CSV export
Mouser (requires MOUSER_API_KEY)
mouser_search: Keyword searchmouser_get_part: Part number/MPN query (batch supported)
DigiKey (requires DIGIKEY_CLIENT_ID + SECRET)
digikey_search: Keyword searchdigikey_get_part: Part number/MPN query
SamacSys (no key required)
cse_search: Search ECAD models, datasheets, footprintscse_get_kicad: Download KiCad symbols and footprints
Smart Features#
- Natural language parsing: Automatically parse "10k 0603 1%" into resistance/package/tolerance filters
- Parametric filtering: Support expressions like
Vgs(th) < 2V,Rds(on) < 10mΩ,Id >= 5A - Package variant expansion: Auto-expand SOT-23 → SOT-23-3, SOT-23-3L, SOT-23(TO-236)
- MPN mapping: Manufacturer part number → JLCPCB LCSC part number
Data Scale#
| Metric | Value |
|---|---|
| Total Components | 1.5M+ |
| Main Categories | 52 |
| Subcategory Aliases | 220+ |
| High-stock Components (stock ≥ 100) | 400K+ |
Library Types#
| Type | Assembly Fee | Description |
|---|---|---|
| basic | None | JLCPCB standard library common components |
| preferred | None | Recommended components, stable supply |
| extended | $3/type | Non-common components |
| no_fee | None | basic + preferred quick filter |
Installation#
Managed Service (Recommended)#
Claude Code
claude mcp add -s user --transport http pcbparts https://pcbparts.dev/mcp
Claude Desktop (~/Library/Application Support/Claude/claude_desktop_config.json)
{
"mcpServers": {
"pcbparts": {
"type": "http",
"url": "https://pcbparts.dev/mcp"
}
}
}
Cursor (~/.cursor/mcp.json) and VS Code (.vscode/mcp.json) configurations are similar.
Self-hosted Deployment#
From Source
git clone https://github.com/Averyy/pcbparts-mcp
cd pcbparts-mcp
uv venv && uv pip install -e .
.venv/bin/python -m pcbparts_mcp.server # http://localhost:8080/mcp
Docker
docker compose up -d # Production (GHCR image)
docker compose -f docker-compose.local.yml up --build # Local build
Environment Variables#
| Variable | Default | Description |
|---|---|---|
HTTP_PORT | 8080 | Server port |
RATE_LIMIT_REQUESTS | 100 | Requests per IP per minute |
MOUSER_API_KEY | — | Mouser API key (optional) |
DIGIKEY_CLIENT_ID | — | DigiKey OAuth2 client ID (optional) |
DIGIKEY_CLIENT_SECRET | — | DigiKey OAuth2 client secret (optional) |
Example Queries#
"Find logic-level MOSFETs with Vgs(th) < 2V and Id >= 5A"
"100nF 25V capacitors in 0402 or 0603"
"Find alternatives for C82899 in basic library"
"STM32 microcontrollers with 10000+ stock"
"Validate my BOM and check for stock issues"
"Get KiCad footprint for ESP32-S3-WROOM-1"
Technical Architecture#
Dependencies: MCP SDK ≥ 1.3.0, FastMCP ≥ 3.0.0, curl_cffi ≥ 0.7.0, httpx ≥ 0.27.0, uvicorn + starlette, pydantic ≥ 2.0
Key Techniques:
- TLS fingerprint simulation (curl_cffi mimics browser to avoid JLCPCB API 403 rejection)
- Streamable HTTP stateless transport
- Rate limiting: 100 requests/minute/IP