DISCOVER THE FUTURE OF AI AGENTSarrow_forward

PCB Parts MCP Server

calendar_todayAdded Feb 26, 2026
categoryAgent & Tooling
codeOpen Source
PythonModel Context ProtocolAI AgentsCLIAgent & ToolingDeveloper Tools & CodingProtocol, API & Integration

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 support
  • jlc_get_part: Get complete details by LCSC part number or MPN
  • jlc_get_pinout: Extract pin information from EasyEDA symbols
  • jlc_find_alternatives: Find spec-compatible alternatives
  • jlc_list_categories: 52 main categories
  • jlc_get_subcategories: Subcategories under a category
  • jlc_list_attributes: Filterable attributes for subcategory
  • jlc_validate_bom: Stock check, cost calculation, issue flagging
  • jlc_export_bom: JLCPCB-compatible CSV export

Mouser (requires MOUSER_API_KEY)

  • mouser_search: Keyword search
  • mouser_get_part: Part number/MPN query (batch supported)

DigiKey (requires DIGIKEY_CLIENT_ID + SECRET)

  • digikey_search: Keyword search
  • digikey_get_part: Part number/MPN query

SamacSys (no key required)

  • cse_search: Search ECAD models, datasheets, footprints
  • cse_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#

MetricValue
Total Components1.5M+
Main Categories52
Subcategory Aliases220+
High-stock Components (stock ≥ 100)400K+

Library Types#

TypeAssembly FeeDescription
basicNoneJLCPCB standard library common components
preferredNoneRecommended components, stable supply
extended$3/typeNon-common components
no_feeNonebasic + preferred quick filter

Installation#

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#

VariableDefaultDescription
HTTP_PORT8080Server port
RATE_LIMIT_REQUESTS100Requests per IP per minute
MOUSER_API_KEYMouser API key (optional)
DIGIKEY_CLIENT_IDDigiKey OAuth2 client ID (optional)
DIGIKEY_CLIENT_SECRETDigiKey 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

Related Projects

View All arrow_forward

STAY UPDATED

Get the latest AI tools and trends delivered straight to your inbox. No spam, just intelligence.

rocket_launch