Skip to main content
Glama
Averyy

PCB Parts MCP Server

by Averyy

PCB Parts MCP Server

MCP server for searching electronic components across JLCPCB, Mouser, and DigiKey directly from Claude, Cursor, and other AI coding assistants. 1.5M+ parts with parametric filtering and KiCad footprints. No API key required.

Website: pcbparts.dev

Features

  • Cross-distributor search: JLCPCB, Mouser, and DigiKey from one MCP server

  • Parametric search: Filter by electrical specs (Vgs(th) < 2V, Rds(on) < 10mΩ, etc.)

  • Smart query parsing: "10k 0603 1%" auto-parses into structured filters

  • Find alternatives: Spec-aware compatibility checking for 120+ component types

  • KiCad footprints: Download symbols and footprints via SamacSys

  • Pinout data: Component pin information from EasyEDA symbols

  • MPN lookup: Find JLCPCB equivalents by manufacturer part number

  • Sensor recommendation: Find sensor ICs by what they measure, protocol, or platform (1,500+ sensors, 56 measure types)

  • Reference boards: Search ~285 OSHW board schematics, IC neighborhoods, cross-board consensus for design patterns

  • Design rules: 41 curated PCB design reference files covering power, protection, interfaces, MCUs, layout, and EMC

  • 14 MCP tools across 7 data sources

  • No API key required for JLCPCB (Mouser/DigiKey optional)

Related MCP server: KiCad MCP Server

Quick Start

Claude Code

claude mcp add -s user --transport http pcbparts https://pcbparts.dev/mcp

Optional — auto-approve all pcbparts tools in ~/.claude/settings.json:

{
  "permissions": {
    "allow": ["mcp__pcbparts__*"]
  }
}

Claude Desktop

Add via Settings → Connectors → "Add custom connector", or add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "pcbparts": {
      "type": "http",
      "url": "https://pcbparts.dev/mcp"
    }
  }
}

Cursor

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "pcbparts": {
      "type": "http",
      "url": "https://pcbparts.dev/mcp"
    }
  }
}

VS Code

Add to .vscode/mcp.json:

{
  "servers": {
    "pcbparts": {
      "type": "http",
      "url": "https://pcbparts.dev/mcp"
    }
  }
}

Copilot for Xcode

Add to Extensions config:

{
  "mcpServers": {
    "pcbparts": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://pcbparts.dev/mcp"]
    }
  }
}

Available Tools

JLCPCB (Local DB + Live API)

Tool

Description

jlc_search

Primary search — smart query parsing + parametric spec filters (local DB, 575K+ in-stock parts)

jlc_stock_check

Real-time stock verification via live JLCPCB API (use jlc_search first)

jlc_get_part

Full details for a specific LCSC part code or MPN lookup

jlc_get_pinout

Component pin information from EasyEDA symbols

jlc_find_alternatives

Find spec-compatible alternative parts with verification

jlc_search_help

Browse categories, subcategories, and filterable attributes

Mouser (requires MOUSER_API_KEY)

Tool

Description

mouser_get_part

Cross-reference a specific MPN on Mouser (daily quota applies)

DigiKey (requires DIGIKEY_CLIENT_ID + DIGIKEY_CLIENT_SECRET)

Tool

Description

digikey_get_part

Cross-reference a specific MPN on DigiKey (daily quota applies)

Sensor Recommendation (no key required)

Tool

Description

sensor_recommend

Find sensor ICs/modules by measurement need, protocol, or platform (1,500+ sensors, 56 measure types)

Reference Boards (no key required)

Tool

Description

board_search

Search ~285 OSHW reference board schematics by IC, tag, org, or free text. Cross-board consensus shows how ICs are typically used.

board_get

Get full board details — BOM, design rules, dimensions. Use focus param for pin-grouped IC neighborhoods (decoupling, bias, connections).

Design Rules (no key required)

Tool

Description

get_design_rules

PCB design rules & best practices (41 curated reference files: power, protection, interfaces, MCUs, layout, EMC)

SamacSys (no key required)

Tool

Description

cse_search

Search for ECAD models, datasheets, and footprint availability

cse_get_kicad

Download KiCad symbols and footprints for any part

search vs stock_check

Use jlc_search (default) for:

  • Parametric filtering ("Vgs(th) < 2V", "voltage >= 25V")

  • Smart query parsing ("10k 0603 1%" auto-detects value, package, tolerance)

  • Most searches

Use jlc_stock_check only when you need:

  • Real-time stock verification before ordering

  • Out-of-stock or low-stock parts (stock < 10)

  • Full 1.5M catalog (search indexes 575K+ with stock >= 10)

Library Types

Type

Assembly Fee

Description

basic

None

Common parts in JLCPCB's standard library

preferred

None

Recommended parts with good availability

extended

$3/unique part

Less common parts

no_fee

None

Filter shortcut: searches basic + preferred combined

Subcategory Aliases

Natural language names that map to JLCPCB subcategories (220+ aliases supported):

Category

Aliases

Capacitors

mlcc, ceramic capacitor, electrolytic, tantalum, supercap

Resistors

resistor, chip resistor, current sense resistor

Inductors

inductor, ferrite bead, ferrite

Diodes

schottky, zener, tvs, esd diode, rectifier

MOSFETs

mosfet, n-channel mosfet, p-channel mosfet, nmos, pmos

Regulators

ldo, buck, boost, dc-dc

Crystals

crystal, oscillator, tcxo

Connectors

usb-c, pin header, jst, terminal block, qwiic

LEDs

led, rgb led, ws2812, neopixel

MCUs

mcu, microcontroller

Attribute Aliases

Short names for parametric spec filters:

Component

Attributes

MOSFETs

Vgs(th), Vds, Id, Rds(on)

Diodes

Vr, If, Vf

BJTs

Vceo, Ic

Passives

Capacitance, Resistance, Inductance, Voltage, Tolerance, Power

Use jlc_search_help(subcategory=...) to discover all filterable specs for any subcategory.

Package Expansion

Package filters auto-expand to include variants:

  • "SOT-23" → includes SOT-23-3, SOT-23-3L, SOT-23(TO-236)

  • "0603" → includes 1608 (metric equivalent)

  • Specific packages like "QFN-24-EP(4x4)" are NOT expanded

find_alternatives

Finds verified-compatible alternatives using spec-aware rules:

  1. Matches primary spec (resistance, capacitance, etc.)

  2. Verifies must_match specs (dielectric, LED color, relay coil voltage)

  3. Verifies same_or_better specs (higher voltage OK, lower tolerance OK)

  4. Ranks by library type (basic/preferred saves $3), stock, EasyEDA availability

Supported: Resistors, capacitors, inductors, ferrite beads, MOSFETs, BJTs, diodes (all types), LEDs, optocouplers, crystals, oscillators, LDOs, DC-DC converters, voltage references, WiFi/BT/LoRa modules, switches, relays, connectors, and more (120+ subcategories).

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"
"Cross-reference TPS63020 on Mouser and compare with JLCPCB pricing"
"Get KiCad footprint for ESP32-S3-WROOM-1"
"What sensor should I use to measure CO2 on ESPHome?"
"Recommend an IMU sensor with I2C interface"
"Show me boards that use the MCP73831 charger"
"How is the RP2040 typically used? What decoupling and crystal do real boards use?"
"Get the ESP32-S3 neighborhood on the Adafruit Feather"
"What are the design rules for USB-C?"
"Show me LDO design best practices"

API Details

  • Endpoint: https://pcbparts.dev/mcp

  • Transport: Streamable HTTP (stateless)

  • Health: https://pcbparts.dev/health

  • Rate limit: 100 requests/minute per IP

  • Auth: None required

Self-Hosting

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

Or with Docker:

docker compose up -d                                    # production (GHCR image)
docker compose -f docker-compose.local.yml up --build   # local dev (builds from source)

Environment Variables

Variable

Default

Description

HTTP_PORT

8080

Server port

RATE_LIMIT_REQUESTS

100

Requests per minute per IP

MCP_ALLOWED_HOSTS

pcbparts.dev

Comma-separated Host headers accepted by the server (DNS-rebinding protection; localhost is always allowed)

DISTRIBUTOR_DAILY_LIMIT

1000

Daily API request quota per distributor (Mouser/DigiKey)

MOUSER_API_KEY

Mouser API key (optional, enables Mouser tools)

DIGIKEY_CLIENT_ID

DigiKey OAuth2 client ID (optional, enables DigiKey tools)

DIGIKEY_CLIENT_SECRET

DigiKey OAuth2 client secret

LLM-Readable Documentation

An llms.txt file is available for LLMs and AI agents to quickly understand this service. See llmstxt.org for the spec.

Contributing

Issues and PRs welcome — see CONTRIBUTING.md for development setup, testing, and project conventions.

License

MIT

Available Tools

11 tools
cse_get_kicadGet KiCad Symbol & FootprintA
Read-onlyIdempotent

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
part_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations: it discloses the slow response time (up to 45s), specifies the source (SamacSys ComponentSearchEngine), and explains the return format (raw file contents as text). Annotations cover read-only, open-world, and idempotent hints, but the description complements these with practical constraints and data source details without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded, starting with the core purpose, followed by key details (source, scope, output format), warnings, usage guidelines, and parameter explanations. Every sentence adds value, with no redundant information, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (external API integration, slow operation, multiple parameters) and the presence of an output schema, the description is complete. It covers purpose, usage context, behavioral traits, parameter semantics, and output details, providing all necessary context for an agent to invoke the tool correctly without needing to rely solely on structured fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining both parameters in detail: 'query' is defined as an MPN to search for with examples, and 'part_id' is described as a CSE part ID from previous results that skips search. It also clarifies the relationship ('One of query or part_id must be provided'), adding crucial semantics not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Get', 'Downloads') and resources ('KiCad schematic symbol and PCB footprint', 'raw .kicad_sym and .kicad_mod file contents'). It distinguishes itself from siblings by specifying it works for any manufacturer's part via SamacSys ComponentSearchEngine, unlike JLCPCB-focused tools like jlc_get_part.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('when you specifically need KiCad symbol/footprint files') and when not to ('For checking if an EasyEDA footprint exists, use jlc_get_part instead'). It also mentions performance considerations ('slow, up to 45s response time') and prerequisites ('One of query or part_id must be provided'), offering clear alternatives and exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

digikey_get_partDigiKey Part LookupA
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
product_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only, non-destructive, idempotent, and open-world behavior. The description adds valuable context beyond annotations by disclosing a 'Daily quota applies' constraint, which is critical for usage planning. No contradictions with annotations are present.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is highly concise and well-structured: a purpose statement, usage guideline, quota warning, parameter explanation with examples, and return value summary—all in minimal sentences. Every part adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (single parameter, annotations, output schema), the description is complete. It covers purpose, usage guidelines, behavioral constraints (quota), parameter semantics, and return values, with the output schema handling detailed response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining the parameter's purpose ('DigiKey part number or manufacturer PN') and providing concrete examples (e.g., '296-1395-5-ND' or 'LM358P'). This adds essential meaning not present in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Cross-reference', 'Lookup') and identifies the resource ('specific MPN on DigiKey'). It distinguishes from siblings by mentioning 'jlc_search' as an alternative for general searches, making the scope explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Cross-reference a specific MPN on DigiKey') versus alternatives ('Use jlc_search first for general component searches'), including a named sibling tool. This helps the agent choose appropriately based on the query type.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jlc_find_alternativesFind Alternative PartsA
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
lcscYes
min_stockNo
same_packageNo
library_typeNo
has_easyeda_footprintNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond what annotations provide. While annotations already indicate this is a read-only, non-destructive, idempotent operation, the description adds practical details about performance implications ('filtering by footprint is slower'), sorting behavior ('sorted by stock'), and response structure. It doesn't contradict annotations, which already cover the safety profile adequately.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and efficiently organized. It starts with a clear purpose statement, provides usage context, then documents parameters in a structured format with bullet points for enum values, and concludes with return value information. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, 0% schema coverage) and the presence of an output schema, the description provides excellent contextual completeness. It fully documents all parameters, explains behavioral aspects, provides usage guidance, and describes the return structure. The output schema handles the formal return specification, allowing the description to focus on semantic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by providing comprehensive parameter documentation. It explains each parameter's purpose, provides examples (e.g., 'C2557'), documents defaults, enumerates valid values for library_type and has_easyeda_footprint with clear explanations, and offers practical guidance on parameter usage. This goes well beyond what the bare schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('find alternative parts similar to a given component') and resources ('searches the same subcategory for parts with better availability'). It distinguishes itself from siblings like 'jlc_get_part' or 'jlc_search' by focusing specifically on finding alternatives rather than retrieving or searching for parts generally.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('useful when a part has low stock or you want to compare options'). It also offers specific usage advice within parameter descriptions, such as recommending 'no_fee' library type 'to find cheaper alternatives for an extended part' and noting that 'filtering by footprint is slower as it checks each alternative.'

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jlc_get_partGet Part DetailsA
Read-onlyIdempotent

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.
ParametersJSON Schema
NameRequiredDescriptionDefault
lcscNo
mpnNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: it explains the search logic for mpn ('exact match, then normalized variants, then full-text search'), specifies a stock threshold ('stock >= 10'), and mentions sorting order ('sorted by stock'), which are not captured in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (Args, Returns, Note), uses bullet points for readability, and every sentence adds value—no fluff. It efficiently covers parameter rules, return formats, and a practical note, making it easy to scan and understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (two parameters with conditional logic, different return formats based on input) and the presence of an output schema, the description is complete. It explains parameter requirements, search behavior, return details (including specific fields like has_easyeda_footprint), and even includes a practical note for Atopile/KiCad users, leaving no gaps for agent understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by detailing both parameters: lcsc is defined as 'LCSC part code' with an example, and mpn is defined as 'Manufacturer part number' with examples and a thorough explanation of its search behavior. This adds significant meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and resource 'full details for a specific JLCPCB part', making the purpose explicit. It distinguishes from siblings like 'jlc_search' (which likely returns multiple results) and 'jlc_stock_check' (which focuses on stock), establishing a specific lookup function.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage rules: 'One of lcsc or mpn must be provided. If both are provided, lcsc takes precedence.' It also explains when to use mpn ('Useful for finding the JLCPCB equivalent of a part from another distributor or reference design'), guiding users on parameter selection based on their needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jlc_get_pinoutGet Component PinoutA
Read-onlyIdempotent

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"}, ... ]}

ParametersJSON Schema
NameRequiredDescriptionDefault
lcscNo
uuidNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations. While annotations indicate read-only, non-destructive, and idempotent operations, the description clarifies that data is returned 'exactly as EasyEDA provides it, with no interpretation or guessing,' explains the optional 'electrical' field's rarity and possible values, and mentions the 'unverified' flag. This provides important implementation details not covered by annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It begins with the core purpose, then explains the return format, details parameters, and provides multiple illustrative examples. Every sentence adds value - there's no redundant information, and the structure helps users quickly understand what the tool does and how to use it.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (fetching and returning structured pin data), the description is complete. It explains the purpose, parameters, return format with detailed field descriptions, includes important behavioral notes about data interpretation and optional fields, and provides multiple concrete examples. The presence of an output schema reduces the need to explain return values, but the description still provides valuable context about what to expect.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining both parameters: 'lcsc: LCSC part code (e.g., "C8304"). If provided, fetches UUID automatically.' and 'uuid: EasyEDA symbol UUID directly (alternative to lcsc).' It also clarifies the relationship between them: 'One of lcsc or uuid must be provided.' This provides complete parameter semantics beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get pin information for a component from EasyEDA symbol data.' It specifies the exact resource (component pinout) and source (EasyEDA symbol data), and distinguishes itself from siblings like 'jlc_get_part' by focusing specifically on pin information rather than general part data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance: 'One of lcsc or uuid must be provided.' It also distinguishes this tool from alternatives by specifying it returns 'raw pin data exactly as EasyEDA provides it, with no interpretation or guessing,' which helps users understand when to use this versus other data-fetching tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jlc_search_helpSearch Help & BrowseA
Read-onlyIdempotent

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"}])

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNo
subcategoryNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context: the precedence rule ('If both provided, subcategory takes precedence'), the sorting behavior ('sorted by part count'), and the relationship to jlc_search. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose. Each sentence adds value: purpose statement, usage rules, parameter details, return values, and examples. No redundant information, and the example section efficiently demonstrates three key usage patterns.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (hierarchical browsing with multiple modes), the description is complete. It covers all parameter combinations, return formats for each case, and ties into the broader workflow with jlc_search. With annotations covering safety and an output schema presumably detailing return structures, no gaps remain.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining both parameters in detail: 'category: Category name (e.g., "Connectors") or ID (e.g., 13). Lists subcategories.' and 'subcategory: Subcategory name (e.g., "MOSFETs") or ID (e.g., 2954). Lists filterable attributes.' It also clarifies precedence and provides concrete examples.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Browse categories, subcategories, and filterable attributes to help build searches.' It specifies the verb ('browse') and resources ('categories, subcategories, filterable attributes'), and distinguishes it from sibling tools like jlc_search by explaining it's for discovery rather than actual searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: '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.' It also references the sibling tool jlc_search for actual searching, creating clear alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jlc_stock_checkStock Check (Live API)A
Read-onlyIdempotent

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
category_idNo
subcategory_idNo
category_nameNo
subcategory_nameNo
min_stockNo
library_typeNo
packageNo
manufacturerNo
packagesNo
manufacturersNo
sort_byNo
pageNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable context: it's a 'live API' for 'real-time' verification, mentions pagination behavior ('Pagination through large result sets'), and notes it's specifically for low-stock scenarios ('Parts with stock < 10 or out-of-stock parts'). It doesn't contradict annotations and provides operational context beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured: purpose and guidelines upfront, followed by categorized parameter explanations and return note. Every sentence adds value—no redundancy. It's appropriately sized for a complex tool with many parameters, using bullet points and clear sections without unnecessary elaboration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (14 parameters, 0% schema coverage), the description provides comprehensive guidance: clear purpose, explicit usage scenarios, detailed parameter semantics, and notes on output ('Results with pagination. Use get_part(lcsc) for full details.'). With annotations covering safety and an output schema presumably detailing returns, the description fills all necessary gaps without over-explaining structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage and 14 parameters, the description carries full burden. It provides detailed semantic explanations for all parameters: examples (e.g., 'ESP32' for query), clarifications (e.g., 'default 10. Set 0 for out-of-stock parts' for min_stock), enumerations (e.g., library_type options), and usage notes (e.g., 'Category ID from search_help'). This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool performs 'Real-time stock verification via live JLCPCB API' with specific verb ('verification') and resource ('stock'), distinguishing it from siblings like 'jlc_search' (faster with parametric filters) and 'jlc_get_part' (full details). It explicitly differentiates from 'jlc_search' by noting this tool is for real-time verification before orders.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit when-to-use guidance: '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.' It names the alternative tool ('jlc_search') and specifies three concrete scenarios for this tool's use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

mouser_get_partMouser Part LookupA
Read-onlyIdempotent

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

ParametersJSON Schema
NameRequiredDescriptionDefault
part_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context beyond annotations: the daily quota constraint (rate limiting) and batch lookup capability (pipe-delimited up to 10 numbers), which are not captured in annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and front-loaded: the first sentence states purpose and usage guidance, the second adds behavioral constraints, then parameter and return sections provide essential details. Every sentence earns its place with zero wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (cross-referencing with batch capability), the description provides complete context: purpose, usage guidelines, behavioral constraints (quota), parameter semantics, and return value explanation. With an output schema present, the description appropriately focuses on what the tool does rather than return format details.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description fully compensates by explaining the part_number parameter's semantics: it accepts 'Mouser part number or manufacturer PN' with examples ('595-LM358P' or 'LM358P') and describes batch lookup syntax ('pipe-delimit up to 10 numbers'). This adds crucial meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Cross-reference a specific MPN on Mouser') and resource ('MPN'), distinguishing it from siblings like 'jlc_search' for general searches and 'digikey_get_part' for other distributors. It precisely defines the tool's scope as a targeted part lookup rather than general component searching.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool ('Cross-reference a specific MPN') versus alternatives ('Use jlc_search first for general component searches'), naming a specific sibling tool. It also includes a daily quota constraint that informs usage frequency decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

sensor_recommendSensor RecommendA
Read-onlyIdempotent

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).

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
measureNo
typeNo
protocolNo
platformNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds valuable context about what the tool returns (popular, well-supported options with platform compatibility info) and how results are sorted (by platform support count), which goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, exclusion, question answered, parameters, returns) and every sentence adds value. It's appropriately sized for a 6-parameter tool with complex options, though slightly lengthy due to the extensive measure type list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, 0% schema coverage) and the presence of an output schema, the description is complete. It explains all parameters thoroughly, clarifies the tool's purpose and exclusions, and describes the return format and sorting logic, making the output schema sufficient for detailed response structure.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the full burden of explaining parameters. It provides comprehensive details for all 6 parameters: query usage examples, measure types with extensive list and aliases, type examples, protocol options, platform filters, and limit default. This fully compensates for the schema's lack of descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb ('Recommend') and resource ('sensor ICs and modules'), explicitly distinguishing it from sibling tools like jlc_search for buying parts. It answers a specific question pattern: 'What sensor should I use to measure X on my platform?'

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool (for sensor recommendations based on measurement needs) and when not to use it ('NOT for buying parts — use jlc_search'). It names a specific alternative tool and defines the exact question this tool answers.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.6/5.0
Disambiguation4/5

Most tools have distinct purposes, such as cse_get_kicad for KiCad files, jlc_search for parametric searches, and sensor_recommend for sensor recommendations. However, there is some overlap between jlc_search and jlc_stock_check, as both can search for parts, though jlc_stock_check is specifically for real-time stock verification. The descriptions help clarify these distinctions, but an agent might occasionally confuse them.

Naming Consistency4/5

The naming follows a consistent pattern with prefixes like cse_, jlc_, digikey_, mouser_, and sensor_ to group tools by source, and uses verb_noun or noun_verb formats (e.g., cse_get_kicad, jlc_search_help). There are minor deviations, such as jlc_find_alternatives (verb_noun) vs. jlc_stock_check (noun_noun), but overall, the naming is predictable and readable.

Tool Count5/5

With 11 tools, the count is well-scoped for a PCB parts server covering multiple distributors (JLCPCB, DigiKey, Mouser, SamacSys) and specialized functions like sensor recommendations. Each tool serves a clear purpose, such as searching, getting details, finding alternatives, or checking stock, without redundancy or bloat, making it efficient for agents to handle PCB design tasks.

Completeness5/5

The tool set provides comprehensive coverage for PCB part sourcing and design, including search (jlc_search, cse_search), detailed part retrieval (jlc_get_part, digikey_get_part), cross-referencing (jlc_find_alternatives), stock verification (jlc_stock_check), ECAD model access (cse_get_kicad), pinout data (jlc_get_pinout), and sensor recommendations (sensor_recommend). There are no obvious gaps; agents can perform end-to-end workflows from part discovery to integration in designs.

Maintenance

ActivityActive
ResponsivenessSlow

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    A
    maintenance
    Enables Claude to search and manage electronic components, PCB parts, and manufacturing services through direct access to the Source Parts API. Provides comprehensive product search, pricing, inventory checking, and parametric filtering capabilities for electronics procurement.
    100
    1
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables natural language search and exploration of KiCad component symbol libraries with fast full-text search across 20,000+ components including metadata like datasheets, footprints, and descriptions.
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables searching for electronic components, comparing prices across distributors, checking availability, and retrieving datasheets through the Nexar/Octopart API with specialized tools for resistors, capacitors, inductors, semiconductors, crystals, and connectors.
    8
  • A
    license
    A
    quality
    C
    maintenance
    Provides AI agents with instant, structured access to electronic component datasheets, pinouts, and electrical specifications without requiring PDF uploads. It enables seamless part searching, design validation, and side-by-side component comparisons across major hardware providers.
    12
    84
    10
    MIT

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