Skip to main content
Glama
Averyy

PCB Parts MCP Server

by Averyy

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HTTP_PORTNoServer port8080
MOUSER_API_KEYNoMouser API key (optional, enables Mouser tools)
DIGIKEY_CLIENT_IDNoDigiKey OAuth2 client ID (optional, enables DigiKey tools)
RATE_LIMIT_REQUESTSNoRequests per minute per IP100
DIGIKEY_CLIENT_SECRETNoDigiKey OAuth2 client secret
DISTRIBUTOR_DAILY_LIMITNoDaily API request quota per distributor (Mouser/DigiKey)1000

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "subscribe": false,
  "listChanged": true
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
jlc_stock_check

Real-time stock verification via live JLCPCB API. Use jlc_search first for most queries — it's faster and supports parametric filters.

Only use this when you need:

  • Real-time stock verification before placing an order

  • Parts with stock < 10 or out-of-stock parts

  • Pagination through large result sets

Args: query: Search keywords (e.g., "ESP32", "10uF 25V", "STM32F103") category_id: Category ID from search_help subcategory_id: Subcategory ID from search_help category_name: Category name (e.g., "Resistors", "Capacitors") subcategory_name: Subcategory name (e.g., "Tactile Switches") min_stock: Min stock (default 10). Set 0 for out-of-stock parts library_type: "basic", "preferred", "no_fee", "extended", or "all" package: Package filter (e.g., "0402", "LQFP48") manufacturer: Manufacturer filter packages: Multiple packages (OR filter) manufacturers: Multiple manufacturers (OR filter) sort_by: "quantity" or "price" page: Page number (default 1) limit: Results per page (default 20, max 100)

Returns: Results with pagination. Use get_part(lcsc) for full details.

jlc_search

Fast DB search with natural language parsing and parametric filters. In-stock parts only (stock >= 10).

Args: query: Search query - supports natural language like: - "10k resistor 0603 1%" (auto-detects type, value, package, tolerance) - "100nF 25V capacitor" (auto-applies voltage >= 25V filter) - "n-channel mosfet SOT-23" (auto-filters to MOSFETs subcategory) Or use with explicit filters for text search within results.

subcategory_id: Subcategory ID (e.g., 2954 for MOSFETs)
subcategory_name: Subcategory name (e.g., "MOSFETs", "Schottky Diodes")
spec_filters: Parametric filters for precise searches. Each filter is a dict:
    - name: Attribute name (Vgs(th), Capacitance, Voltage, etc.)
    - op: Operator: "=", ">=", "<=", ">", "<"
    - value: Value with units (e.g., "2.5V", "10uF", "20mΩ")
    Example: [{"name": "Vgs(th)", "op": "<", "value": "2.5V"}]

min_stock: Minimum stock (default 10). Database only indexes stock >= 10.
library_type: "basic", "preferred", "no_fee", "extended", or None (all)
prefer_no_fee: Sort basic/preferred first (default True)
package: Single package filter (e.g., "0603", "SOT-23")
packages: Multiple packages (OR logic): ["0402", "0603", "0805"]
manufacturer: Manufacturer filter
match_all_terms: AND logic for query terms (default True)
sort_by: "stock" (highest) or "price" (cheapest)
limit: Max results (default 50, max 100)

Attribute aliases: MOSFETs: Vgs(th), Vds, Id, Rds(on) Diodes: Vr, If, Vf Passives: Capacitance, Resistance, Inductance, Voltage, Tolerance

Returns: results: Matching components with specs total: Total count (before limit) filters_applied: Applied filters (useful for debugging) parsed: (when using natural language) What was extracted from query

jlc_search_help

Browse categories, subcategories, and filterable attributes to help build searches.

Call with no args to list all categories. Pass a category to see its subcategories. Pass a subcategory to discover filterable attributes for use with jlc_search spec_filters.

Args: category: Category name (e.g., "Connectors") or ID (e.g., 13). Lists subcategories. subcategory: Subcategory name (e.g., "MOSFETs") or ID (e.g., 2954). Lists filterable attributes.

If both provided, subcategory takes precedence (more specific).

Returns: No args: List of all categories with id, name, part count, subcategory count category: Subcategories with id, name, part count subcategory: Filterable attributes with name, alias, type, example values

Example: 1. search_help() → see all categories sorted by part count 2. search_help(category="Transistors") → see MOSFETs, BJTs, etc. 3. search_help(subcategory="MOSFETs") → see Vgs(th), Vds, Id, Rds(on) filters 4. jlc_search(query="n-channel", spec_filters=[{"name": "Vgs(th)", "op": "<", "value": "2.5V"}])

jlc_get_part

Get full details for a specific JLCPCB part.

Args: lcsc: LCSC part code (e.g., "C82899") mpn: Manufacturer part number (e.g., "LM358P", "STM32F103C8T6"). Searches local DB by exact MPN match, then normalized variants, then full-text search. Useful for finding the JLCPCB equivalent of a part from another distributor or reference design.

One of lcsc or mpn must be provided. If both are provided, lcsc takes precedence.

Returns: For lcsc: Full part details including description, all pricing tiers, datasheet URL, component attributes, and EasyEDA footprint availability: - has_easyeda_footprint: True if EasyEDA has footprint/symbol, False if not, null if unknown - easyeda_symbol_uuid: UUID for direct EasyEDA editor link (null if no footprint) - easyeda_footprint_uuid: UUID for footprint (null if no footprint)

For mpn: List of matching JLCPCB parts from the local database (stock >= 10),
sorted by stock. Each result includes lcsc, model (MPN), manufacturer,
package, stock, price, library_type, category, subcategory, and specs.

Note: has_easyeda_footprint=True means `ato create part` will work for Atopile/KiCad users.
jlc_find_alternatives

Find alternative parts similar to a given component.

Searches the same subcategory for parts with better availability. Useful when a part has low stock or you want to compare options.

Args: lcsc: LCSC part code to find alternatives for (e.g., "C2557") min_stock: Minimum stock for alternatives (default: 10) same_package: If True, only return parts with the same package size library_type: Filter alternatives by library type: - "basic": Only basic parts (no assembly fee) - "preferred": Only preferred parts (no assembly fee) - "no_fee": Basic or preferred (no assembly fee) - best for cost optimization - "extended": Only extended parts ($3 assembly fee each) - "all" or None (default): All library types Use "no_fee" to find cheaper alternatives for an extended part. has_easyeda_footprint: Filter by EasyEDA footprint availability: - True: Only return parts WITH EasyEDA footprints (for Atopile/KiCad users) - False: Only return parts WITHOUT footprints - None (default): Don't filter by footprint (fastest) Note: Filtering by footprint is slower as it checks each alternative. limit: Maximum alternatives to return (default: 10, max: 50)

Returns: Original part info (with library_type and has_easyeda_footprint) and list of alternatives sorted by stock. Alternatives include library_type and specs for easy comparison. When filtering by footprint, alternatives also include EasyEDA UUIDs.

jlc_get_pinout

Get pin information for a component from EasyEDA symbol data.

Returns raw pin data exactly as EasyEDA provides it, with no interpretation or guessing. Pin names are descriptive (VCC, GND, PA0, etc.) and can be read directly by LLMs and users.

Args: lcsc: LCSC part code (e.g., "C8304"). If provided, fetches UUID automatically. uuid: EasyEDA symbol UUID directly (alternative to lcsc)

One of lcsc or uuid must be provided.

Returns: Pin mapping with: - lcsc: LCSC code (if provided) - model: Part model/name - manufacturer: Manufacturer name - package: Package type - pin_count: Total number of pins - pins: List of pins, each with: - number: Physical pin number (e.g., "1", "2") - name: Pin name exactly as in EasyEDA symbol - electrical: (rare) EasyEDA electrical type if set by symbol creator - easyeda_symbol_uuid: UUID to view symbol at easyeda.com/component/{uuid} - unverified: (only if true) "Symbol not verified by LCSC"

The electrical field is only included when the symbol creator explicitly set it in EasyEDA. Values: "input", "output", "bidirectional", "power". Most symbols don't set this field.

Example output for STM32F103CBT6: {"pin_count": 48, "pins": [ {"number": "1", "name": "VBAT"}, {"number": "2", "name": "PC13-TAMPER-RTC"}, {"number": "10", "name": "PA0_WKUPUSART2_CTSADC12_IN0TIM2_CH1_ETR"}, ... ]}

Example output for MOSFET AO3400: {"pin_count": 3, "pins": [ {"number": "1", "name": "G"}, {"number": "2", "name": "S"}, {"number": "3", "name": "D"} ]}

Example output for RP2040 (has electrical types): {"pin_count": 57, "pins": [ {"number": "1", "name": "1", "electrical": "bidirectional"}, {"number": "2", "name": "2", "electrical": "bidirectional"}, ... ]}

mouser_get_part

Cross-reference a specific MPN on Mouser. Use jlc_search first for general component searches. Daily quota applies.

Args: part_number: Mouser part number or manufacturer PN (e.g., "595-LM358P" or "LM358P"). For batch lookup, pipe-delimit up to 10 numbers: "595-LM358P|511-LM358P"

Returns: results: Full part details including all attributes, pricing tiers, availability, datasheet total: Number of parts found

digikey_get_part

Cross-reference a specific MPN on DigiKey. Use jlc_search first for general component searches. Daily quota applies.

Args: product_number: DigiKey part number or manufacturer PN (e.g., "296-1395-5-ND" or "LM358P")

Returns: Full product details including all parameters, pricing variations, availability, datasheet

cse_search

Search SamacSys ComponentSearchEngine for ECAD model availability and datasheets.

Use this to check if KiCad/Eagle/Altium symbols, footprints, and 3D models exist for a part. No API key required.

WARNING: This tool is slow (up to 45s response time). Only use when you specifically need ECAD model availability or datasheets from ComponentSearchEngine. For general part search, use jlc_search instead. For EasyEDA footprint availability, use jlc_get_part.

Args: query: MPN or keyword (e.g., "LM358P", "STM32F103", "ESP32") limit: Max results to return (1-10, default 5)

Returns: results: List of parts with mfr_part_number, manufacturer, description, datasheet_url, has_model (symbol/footprint available), has_3d (3D model available), model_quality (0-4), cse_part_id, pin_count, image_url total: Total matching results

cse_get_kicad

Get KiCad schematic symbol and PCB footprint for any component.

Downloads from SamacSys ComponentSearchEngine. Works for any manufacturer's part, not limited to JLCPCB. Returns the raw .kicad_sym and .kicad_mod file contents as text that can be read directly or saved to a KiCad project.

WARNING: This tool is slow (up to 45s response time). Only use when you specifically need KiCad symbol/footprint files. For checking if an EasyEDA footprint exists, use jlc_get_part instead.

Args: query: MPN to search for (e.g., "LM358P", "STM32F103CBT6", "ESP32-WROOM-32E"). Finds the best matching part with an available model. part_id: CSE part ID from a previous cse_search result (skips search step). Use this if you already know the exact part.

One of query or part_id must be provided.

Returns: kicad_symbol: Raw .kicad_sym file content (pin names, types, graphical symbol) kicad_footprint: Raw .kicad_mod file content (pad layout, silkscreen, courtyard) part_id: CSE part ID (for future lookups) mfr_part_number, manufacturer, description: Part metadata (when searched by query)

sensor_recommend

Recommend sensor ICs and modules for a measurement need. Returns popular, well-supported options with platform compatibility info.

NOT for buying parts — use jlc_search to find JLCPCB stock and pricing. This answers: "What sensor should I use to measure X on my platform?"

Args: query: Search by name, description, or manufacturer (e.g., "BME280", "waterproof temperature") measure: What to measure. Single or AND multiple: "temperature", ["temperature", "pressure"]. Types: temperature, humidity, pressure, distance, co2, gas, particulate, light, color, uv, acceleration, gyroscope, magnetic_field, current, voltage, motion, rotation, proximity, gesture, radar, sound, flow, touch, weight, ph, dissolved_oxygen, conductivity, orp, ir_temperature, biometric, radiation, gps, co, soil_moisture. Aliases: "imu" → acceleration OR gyroscope OR magnetic_field. "barometric" → pressure. Sub-measures (search directly): voc, pir, ultrasonic, lidar, tof, radar. type: Sensing technology: "tof", "ultrasonic", "radar", "ndir", "electrochemical", "mems", etc. protocol: Interface: "i2c", "spi", "uart", "one_wire", "analog", "digital", "pwm" platform: Filter by support: "arduino", "esphome", "micropython", "circuitpython", "tasmota", "zephyr" limit: Max results (default 15)

Returns: Sensors sorted by platform support (how many platforms have drivers for this sensor). Each result includes: name, manufacturer, measures, type, protocol, voltage, platforms, platform_count, description, urls, datasheet_url (when available).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Averyy/pcbparts-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server