Skip to main content
Glama
jlcpcb-mcp

jlcpcb-mcp

by Eyalm321

jlcpcb-mcp

CI

An MCP server for JLCPCB / LCSC components. Search the parts catalog and pull live stock, pricing tiers, datasheets, specifications, and images — straight into Claude, Cursor, or any MCP client.

It uses a hybrid data model:

Data

Source

Freshness

Component catalog (descriptions, packages, attributes, categories)

Local SQLite, built from yaqwsx/jlcparts

Snapshot from your last refresh

JLCPCB assembly stock (the figure that matters for PCBA)

Catalog snapshot (or the official Parts API, when authorized)

Snapshot / real-time

LCSC retail stock

Live LCSC API (wmsc.lcsc.com)

Real-time, per query

Pricing tiers

Live LCSC API (wmsc.lcsc.com)

Real-time, per query

Datasheet URL

Live LCSC API (wmsc.lcsc.com)

Real-time, per query

Two stock pools, don't confuse them. wmsc.lcsc.com reports LCSC retail stock, which is a different inventory from JLCPCB assembly stock. A part can read 0 on LCSC retail while having millions available for JLC assembly (common for Basic parts). Tools expose both as lcsc_retail_stock and jlc_assembly_stock; treat assembly stock as authoritative for board production. The official Parts API (getComponentDetailByCode) gives real-time assembly stock once your API access is approved.

The catalog is downloaded and built into a local SQLite database on first use (a one-time download of ~50 MB that expands to a larger on-disk database). Stock, pricing, and datasheet links are always fetched live, so they're current regardless of catalog age. No API key or account is required.

Tools

Catalog + live data (no credentials needed)

Tool

Description

jlcpcb_search_components

Search the catalog by keyword + filters (category, package, basic-only, min stock) and parametric values (resistance, capacitance, voltage rating, power, output voltage/current, input voltage). Results are enriched with live stock/pricing and ranked Basic-first, then by stock, then by price.

jlcpcb_get_component_details

Full details for one part: catalog metadata + live stock, full pricing tiers, specifications, datasheet, and images.

jlcpcb_get_component_stock

Live, real-time stock quantity for a part (falls back to the catalog snapshot).

jlcpcb_get_component_pricing

Live quantity-break pricing tiers (USD) for a part.

jlcpcb_get_datasheet_url

Datasheet PDF URL for a part (live, with catalog fallback).

jlcpcb_list_categories

List catalog categories/subcategories with component counts.

jlcpcb_database_status

Report the local catalog DB location, size, component count, and last build time.

jlcpcb_refresh_database

Rebuild the local catalog from the latest yaqwsx/jlcparts snapshot.

Official JLCPCB Open API (requires credentials)

These call the authenticated JLCPCB Open API (open.jlcpcb.com, HMAC-SHA256 signed). They return a "not configured" message until you set the credentials below. Apply for access at https://api.jlcpcb.com (approval is based on your order history).

Tool

Description

jlcpcb_official_get_component_detail

Authoritative details (specs/stock/price/attributes) for one or more LCSC codes.

jlcpcb_official_component_library

Browse the full assembly component library, paginated.

jlcpcb_official_private_library

List your account's private/consigned component library.

jlcpcb_official_component_feed

Cursor-paginated bulk feed of the whole catalog (lastKey).

PCB / SMT-stencil ordering (requires credentials)

Tool

Description

jlcpcb_pcb_upload_gerber

Upload a Gerber archive; returns a fileKey.

jlcpcb_pcb_upload_blind_via_hole_img

Upload a blind/buried-via stackup image.

jlcpcb_pcb_impedance_template_list

List impedance template settings for a stackup.

jlcpcb_pcb_stencil_price_config

Get the SMT stencil (steel) price configuration.

jlcpcb_pcb_calculate_price

Quote price + lead time for a PCB / stencil order (no order placed).

jlcpcb_pcb_get_order_detail

Order details by batch number.

jlcpcb_pcb_get_audit_info

Engineering audit (review) info for an uploaded design.

jlcpcb_pcb_get_wip_process

Work-in-progress production status for an order.

jlcpcb_pcb_create_order ⚠️

Place a real, paid PCB order. Gated by JLCPCB_ENABLE_ORDERS.

3D printing (TDP) (requires credentials)

Tool

Description

jlcpcb_tdp_upload_model

Upload a 3D model (STL/STEP); returns a fileAccessId.

jlcpcb_tdp_file_analysis_result

Analysis result (dimensions/printability) for an uploaded model.

jlcpcb_tdp_calculate_price

Quote price for a 3D-printing job (no order placed).

jlcpcb_tdp_order_list

List your 3D-printing orders (paginated/filterable).

jlcpcb_tdp_order_detail

3D-printing order details by batch number.

jlcpcb_tdp_order_process

Production progress for a 3D-printing order.

jlcpcb_tdp_create_order ⚠️

Place a real, paid 3D-printing order. Gated by JLCPCB_ENABLE_ORDERS.

Order safety: the two *_create_order tools place real, paid orders and are disabled by default. They only work when JLCPCB_ENABLE_ORDERS=true and credentials are set. Uploads and price quotes are free and need only credentials.

Related MCP server: Parts Finder MCP

Installation

The server runs over stdio and is launched by your MCP client.

Claude Desktop / generic MCP config

{
  "mcpServers": {
    "jlcpcb": {
      "command": "npx",
      "args": ["-y", "jlcpcb-mcp"]
    }
  }
}

Claude Code

claude mcp add jlcpcb -- npx -y jlcpcb-mcp

Install globally

npm install -g jlcpcb-mcp
jlcpcb-mcp   # runs the stdio server

First run builds the local catalog database (one-time, a few minutes). Subsequent queries are instant. Use the jlcpcb_refresh_database tool to update the catalog later.

Configuration

All configuration is optional — the live API needs no credentials.

Env var

Purpose

JLCPCB_DATABASE_PATH

Override where the catalog SQLite file is stored.

JLCPCB_DEV_MODE

Store the database in ./data within the project (for development).

JLCPCB_APP_ID / JLCPCB_ACCESS_KEY / JLCPCB_SECRET_KEY

Official Open API credentials — enable the jlcpcb_official_* tools.

JLCPCB_ENDPOINT

Override the official API base (default https://open.jlcpcb.com).

JLCPCB_ENABLE_ORDERS

Set to true/1 to allow the *_create_order tools to place real paid orders (off by default).

Default database locations:

  • Windows: %LOCALAPPDATA%\jlcpcb-mcp\components.sqlite

  • macOS: ~/Library/Application Support/jlcpcb-mcp/components.sqlite

  • Linux: ~/.local/share/jlcpcb-mcp/components.sqlite

Development

npm install
npm run build      # tsc -> dist/
npm test           # vitest (mocks network + DB; no large download)
npm run test:watch
npm run dev        # ts-node src/index.ts

The test suite mocks the live API and the catalog download, so it runs fast and offline.

Architecture

src/
  index.ts          # registers all tools on the MCP server (stdio)
  tool.ts           # shared ToolDef type
  live-client.ts    # wmsc.lcsc.com live product API client
  official-client.ts# open.jlcpcb.com authenticated API (HMAC-SHA256 signing)
  database.ts       # DatabaseManager: build/verify/query the catalog (better-sqlite3)
  paths.ts          # platform data-dir resolution
  value-parser.ts   # resistance/capacitance/voltage/current/power parsers
  tools/
    search.ts       # jlcpcb_search_components
    details.ts      # get_component_details / _stock / _pricing / _datasheet
    catalog.ts      # jlcpcb_list_categories
    maintenance.ts  # jlcpcb_database_status / jlcpcb_refresh_database
    official.ts     # jlcpcb_official_* (authenticated Parts API)
    pcb.ts          # jlcpcb_pcb_* (PCB/SMT-stencil quote, upload, order)
    tdp.ts          # jlcpcb_tdp_* (3D-printing quote, upload, order)

Releasing

CI runs the build + tests on every push and PR to main (Node 20 & 22). Publishing is triggered by creating a GitHub Release, which publishes to both registries:

  • npm as the unscoped package jlcpcb-mcp

  • GitHub Packages as @eyalm321/jlcpcb-mcp

One-time repo setup

  1. Push this repo to https://github.com/Eyalm321/jlcpcb-mcp.

  2. Add an NPM_TOKEN repository secret (an npm automation token). GITHUB_TOKEN is provided automatically for GitHub Packages.

  3. To release: bump the version in package.json, commit, then create a GitHub Release (tag e.g. v0.1.0). The publish workflow builds, tests, and publishes to both registries.

Credits

License

MIT © Eyalm321

Available Tools

28 tools
jlcpcb_database_statusA

Report the status of the local component catalog database: whether it exists, its file path, size, component count, and when it was last built/refreshed.

Inputs: no named parameters.

jlcpcb_get_component_detailsA

Get full details for a specific JLCPCB part: catalog metadata (manufacturer, package, category), pricing tiers, parametric specifications, datasheet, and images, plus stock from both pools — jlc_assembly_stock (catalog snapshot, authoritative for PCBA) and lcsc_retail_stock (live LCSC retail). An LCSC-retail 0 is NOT an assembly shortage.

Inputs: lcsc (required).

jlcpcb_get_component_pricingA

Get live quantity-break pricing tiers (USD unit price per quantity ladder) for a specific JLCPCB part.

Inputs: lcsc (required).

jlcpcb_get_component_stockA

Get stock for a specific JLCPCB part from BOTH inventory pools: jlc_assembly_stock (JLCPCB assembly availability, from the catalog snapshot — the number that matters for PCBA) and lcsc_retail_stock (LCSC retail, live from wmsc.lcsc.com). These are DIFFERENT pools: an LCSC-retail 0 does NOT mean a part is unavailable for assembly (common for Basic parts). Treat assembly stock as authoritative for board production.

Inputs: lcsc (required).

jlcpcb_get_datasheet_urlA

Get the datasheet PDF URL for a specific JLCPCB part. Prefers the live API value and falls back to the catalog snapshot.

Inputs: lcsc (required).

jlcpcb_list_categoriesA

List the component categories and subcategories available in the local catalog, each with a component count. Optionally filter to a single top-level category. Useful for discovering valid category filter values for searches.

Inputs: category.

jlcpcb_official_component_feedA

Official JLCPCB Parts API (authenticated): cursor-paginated bulk feed of the component catalog. Pass the lastKey returned by a previous call to page through the entire library. Requires API credentials.

Inputs: last_key.

jlcpcb_official_component_libraryA

Official JLCPCB Parts API (authenticated): browse the full assembly component library, paginated. Requires API credentials.

Inputs: page, page_size.

jlcpcb_official_get_component_detailA

Official JLCPCB Parts API (authenticated): authoritative details — specs, stock, pricing, and attributes — for one or more LCSC part codes. More complete than the public live endpoint. Requires API credentials.

Inputs: codes (required).

jlcpcb_official_private_libraryA

Official JLCPCB Parts API (authenticated): list YOUR account's private / consigned component library (parts you hold at JLCPCB), paginated. Only available with API credentials.

Inputs: page, page_size.

jlcpcb_pcb_calculate_priceA

Official PCB API: calculate price and lead time for a PCB / SMT-stencil order (a quote, no order is placed). Pass a params object with keys such as orderType, fileKey, pcbParam (layers, dimensions, quantity, ...), smtStencilParam, country, postCode, city, shippingMethod. Requires API credentials.

Inputs: params (required).

jlcpcb_pcb_create_orderA

Official PCB API: CREATE A REAL, PAID PCB / SMT-stencil order. Disabled unless JLCPCB_ENABLE_ORDERS=true. Pass a params object (typically built from a prior jlcpcb_pcb_calculate_price quote) with keys such as fileKey, batchNum, orderType, pcbParam, shippingAddress, billingAddress, shippingMethod. Requires API credentials.

Inputs: params (required).

jlcpcb_pcb_get_audit_infoB

Official PCB API: get engineering audit (review) info for an uploaded design by key. Requires API credentials.

Inputs: key (required), language.

jlcpcb_pcb_get_order_detailA

Official PCB API: get order details by batch number. Requires API credentials.

Inputs: batch_num (required).

jlcpcb_pcb_get_wip_processA

Official PCB API: get the work-in-progress production status for an order. Requires API credentials.

Inputs: order_uuid (required).

jlcpcb_pcb_impedance_template_listA

Official PCB API: list impedance template settings for given stackup parameters (stencilLayer, cuprumThickness, plateType, etc.). Requires API credentials.

Inputs: params.

jlcpcb_pcb_stencil_price_configA

Official PCB API: get the SMT stencil (steel) price configuration. Requires API credentials.

Inputs: no named parameters.

jlcpcb_pcb_upload_blind_via_hole_imgA

Official PCB API: upload a blind/buried-via stackup image for boards that need one. Requires API credentials.

Inputs: file_path (required), file_name.

jlcpcb_pcb_upload_gerberA

Official PCB API: upload a Gerber archive (zip) for quoting/ordering. Returns a fileKey to pass to jlcpcb_pcb_calculate_price / jlcpcb_pcb_create_order. Requires API credentials.

Inputs: file_path (required), file_name.

jlcpcb_refresh_databaseA

Download and rebuild the local component catalog from the latest yaqwsx/jlcparts snapshot. Downloads ~50MB and may take several minutes. Use occasionally to pick up newly added components (live stock/pricing is always current regardless).

Inputs: no named parameters.

jlcpcb_search_componentsA

Search the JLCPCB component catalog by keyword and/or parametric filters, enriched with live pricing. The catalog (descriptions, packages, attributes, categories) comes from a local SQLite snapshot. Each result reports jlc_assembly_stock (catalog — the figure that matters for PCBA) and lcsc_retail_stock (live LCSC retail, a different pool; a 0 here is NOT an assembly shortage). Ranked Basic-first, then by assembly stock, then unit price. Examples: '10k resistor 0805', 'STM32F4', 'ceramic capacitor'.

Inputs: query (required), package, category, min_stock, +9 more.

jlcpcb_tdp_calculate_priceA

Official 3D-printing API: calculate price for a 3D-printing job (a quote, no order is placed). Pass a params object with keys such as fileAccessId, materialAccessId, materialColorAccessId, itemCount, surfaceTreatmentProcess, shippingAddress, freightMode. Requires API credentials.

Inputs: params (required).

jlcpcb_tdp_create_orderA

Official 3D-printing API: CREATE A REAL, PAID 3D-printing order. Disabled unless JLCPCB_ENABLE_ORDERS=true. Pass a params object (typically from a prior jlcpcb_tdp_calculate_price quote) with keys such as fileAccessId, materialAccessId, itemCount, shippingAddress, billingAddress, freightMode. Requires API credentials.

Inputs: params (required).

jlcpcb_tdp_file_analysis_resultA

Official 3D-printing API: fetch the analysis result (dimensions/volume/printability) for an uploaded model by its fileAccessId. Requires API credentials.

Inputs: file_access_id (required).

jlcpcb_tdp_order_detailA

Official 3D-printing API: get a 3D-printing order's details by batch number. Requires API credentials.

Inputs: batch_num (required).

jlcpcb_tdp_order_listA

Official 3D-printing API: list your 3D-printing orders, paginated/filterable. Pass an optional params object (currentPage, pageRows, orderStatus, searchKey, ...). Requires API credentials.

Inputs: params.

jlcpcb_tdp_order_processA

Official 3D-printing API: get production progress for a 3D-printing order by order number. Requires API credentials.

Inputs: order_no (required).

jlcpcb_tdp_upload_modelA

Official 3D-printing (TDP) API: upload a 3D model file (e.g. STL/STEP) for analysis and quoting. Returns a fileAccessId used by the other TDP tools. Requires API credentials.

Inputs: file_path (required), file_name.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 28 tools

    Disambiguation3/5

    Most tools have distinct purposes, but there is clear overlap among component info tools: jlcpcb_get_component_details, jlcpcb_get_component_stock, jlcpcb_get_component_pricing, and jlcpcb_official_get_component_detail all return similar data. The official/public split adds confusion. TDP and PCB tools are well-separated.

    Naming Consistency3/5

    Names consistently use the jlcpcb_ prefix with subdomain (official_, tdp_, pcb_) and mostly follow a verb_noun structure. However, several tools are noun phrases (official_component_library, database_status, tdp_file_analysis_result, pcb_impedance_template_list) and the official component tools mix verbs and nouns (official_get_component_detail vs official_component_feed).

    Tool Count4/5

    28 tools is high, but the server covers three distinct services (components, PCB, 3D printing), each with around 9 tools. This makes the count defensible, though slightly heavy for a single surface.

    Completeness4/5

    The major lifecycle flows are covered: search/details/price/order for components and TDP, upload/quote/order/track for PCB. The only notable gap is the lack of a PCB order list (only detail by batch number).

    Maintenance

    ActivityInactive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      F
      maintenance
      A Model Context Protocol (MCP) server for the Mouser Electronics API. Enables searching electronic components, managing shopping carts, and tracking orders directly through Claude or other MCP clients.
      9
      5
      MIT
    • A
      license
      B
      quality
      C
      maintenance
      Read-only MCP server for finding, comparing, and shortlisting engineering parts from distributor and marketplace APIs.
      6
      MIT
    • A
      license
      A
      quality
      D
      maintenance
      A read-only MCP server for electronics engineers to search DigiKey parts, get detailed product information, plan and validate BOMs, and export order lists, using the official DigiKey API.
      7
      Apache 2.0
    • A
      license
      A
      quality
      C
      maintenance
      An MCP server that picks JLCPCB/LCSC parts for KiCad circuits with assembly cost in mind, automating part selection, stock risk checks, and quantity-tiered pricing.
      8
      4
      MIT