Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Source Parts

PYPI · PARTS-MCP · 2 COMPONENTS · SCANNED SEP 21

Electronic component sourcing, BOM management, and PCB design workflows.

−1 this week 64 Trust /100
Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score → Why this is hard to score →

Supply Chain Security32
Provenance & Transparency48
  • Source repository is publicly reachable at the declared URL. View diagnostics → Pass
  • Provenance check failed: no build-provenance attestation is published. See how to fix → View diagnostics → Fail
  • Clear OSI-approved license (MIT).Pass
  • Actively maintained (last published 35 days ago).Pass
  • Publishes a security disclosure policy (SECURITY.md).Pass
Schema Quality & AI Usability83
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 16082 tokens (~122/item across 131 items; 127 tools + 4 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management97
  • Stability observed for 29 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 98% of tool parameters carry a description.Partial
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety75
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • 0 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "remove_doc_safelist" implies "remove" and declares no destructiveHint at all, which the MCP spec reads as destructive by default. See how to fix → Fail
  • An AI judge read all 128 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
  • Implements a current MCP spec version (2026-07-28).Pass
Install

How do I install the Source Parts MCP server?

Source Parts runs locally as a PyPI package, launched with uvx parts-mcp. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

pypi · parts-mcp

# add to Claude Code
claude mcp add sourceparts-parts-mcp -- uvx parts-mcp
// .cursor/mcp.json
{
  "mcpServers": {
    "sourceparts-parts-mcp": {
      "command": "uvx",
      "args": [
        "parts-mcp"
      ]
    }
  }
}
// .vscode/mcp.json
{
  "servers": {
    "sourceparts-parts-mcp": {
      "command": "uvx",
      "args": [
        "parts-mcp"
      ]
    }
  }
}
# add to Codex CLI
codex mcp add sourceparts-parts-mcp -- uvx parts-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "sourceparts-parts-mcp": {
      "type": "local",
      "command": [
        "uvx",
        "parts-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add sourceparts-parts-mcp --command uvx --arg parts-mcp
# ~/.hermes/config.yaml
mcp_servers:
  sourceparts-parts-mcp:
    command: "uvx"
    args: ["parts-mcp"]
// ~/.netclaw/config/netclaw.json
{
  "McpServers": {
    "sourceparts-parts-mcp": {
      "Transport": "stdio",
      "Command": "uvx",
      "Arguments": [
        "parts-mcp"
      ]
    }
  }
}
# add to Vellum
assistant mcp add sourceparts-parts-mcp -t stdio -c uvx -a parts-mcp
// mcp.json
{
  "mcpServers": {
    "sourceparts-parts-mcp": {
      "command": "uvx",
      "args": [
        "parts-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 20 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 18 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 83 to 87. That category is still filling its 30-day observation window: 25 days of observed history at the previous scan, 26 at this one. The score rises as the window fills, whether or not the server changes.

  • 17 Sept 26 −15
    • Malware scan: pass → unverified security
  • 16 Sept 26 +12
    • Malware scan: unverified → pass security
    • Stability: pass → 0.80 functional
  • 14 Sept 26 −14
    • Malware scan: pass → unverified security
    • Stability: 0.97 → pass security
  • 12 Sept 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 90 to 93. That category is still filling its 30-day observation window: 27 days of observed history at the previous scan, 28 at this one. The score rises as the window fills, whether or not the server changes.

  • 11 Sept 26 +13
    • Malware scan: unverified → pass security
    • Stability: pass → 0.90 functional
  • 10 Sept 26 +1
    • Stability: 0.97 → pass security
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 21 Sept 2026 · Analysed pypi/parts-mcp@0.5.3

Provenance No attestation

The registry publishes no build provenance for this version, so there is nothing to verify.

Result No attestation
Ecosystem pypi

Background: How many MCP packages publish verified provenance →

Install scripts 1 script
Hook Tier Command
build_backend allowlisted hatchling.build

Background: Why install scripts are a supply-chain risk →

Vulnerabilities 2 findings
ID CVE Severity Vector Fix available
GHSA-w8v5-vhqr-4h9v CVE-2025-69872 medium no
PYSEC-2026-2447 CVE-2025-69872 none no

Background: What a vulnerability scan can and cannot prove →

Dependencies 64 packages
Packages resolved 64
Stale 7
No linked repository 1
Tree resolution Complete

Background: SBOMs and build attestations, explained →

MCP tools · 127 exposed · ~16,028 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
edit_schematic_place ~133

Place a symbol instance in a KiCad schematic. Uploads the schematic to the API for server-side modification. Returns the unified diff of changes for review.

NameTypeReqDescription
file_pathstringyesPath to .kicad_sch file or project directory
propertiesOptional property overrides {"Value": "10K", ...}
referencestringyesReference designator (e.g., "R1")
symbolstringyesKiCad lib_id (e.g., "Device:R")
xnumberyesX position in mm
ynumberyesY position in mm

Structured output declared, but exposes no named fields.

No examples provided.

edit_schematic_remove ~56

Remove a component from a schematic by reference designator.

NameTypeReqDescription
file_pathstringyesPath to .kicad_sch file
referencestringyesComponent reference to remove (e.g., "R47")

Structured output declared, but exposes no named fields.

No examples provided.

edit_schematic_value ~87

Update a component property value in a schematic.

NameTypeReqDescription
file_pathstringyesPath to .kicad_sch file
new_valuestringyesNew value to set
property_namestringyesProperty to update (e.g., "Value", "Footprint")
referencestringyesComponent reference designator (e.g., "R47")

Structured output declared, but exposes no named fields.

No examples provided.

edit_schematic_wire ~70

Add a wire segment between two points in a schematic.

NameTypeReqDescription
end_xnumberyes
end_ynumberyes
file_pathstringyesPath to .kicad_sch file
start_xnumberyes
start_ynumberyes

Structured output declared, but exposes no named fields.

No examples provided.

estimate_cost ~61

Get a quick cost estimate for a list of parts. Each part should have at minimum a part_number and quantity field.

NameTypeReqDescription
currencystringCurrency code (default USD)
partsarrayyesList of parts, each with part_number and quantity

Structured output declared, but exposes no named fields.

No examples provided.

export_parts_to_kicad ~59

Export parts data in KiCad-compatible format.

NameTypeReqDescription
formatstringExport format (csv, json)
output_pathstringyesWhere to save the export
partsarrayyesList of parts to export

Structured output declared, but exposes no named fields.

No examples provided.

extract_bom_from_kicad ~42

Extract bill of materials from a KiCad project.

NameTypeReqDescription
project_pathstringyesPath to KiCad project file (.kicad_pro)

Structured output declared, but exposes no named fields.

No examples provided.

extract_netlist_from_project ~40

Extract netlist information from a KiCad project.

NameTypeReqDescription
project_pathstringyesPath to KiCad project file (.kicad_pro)

Structured output declared, but exposes no named fields.

No examples provided.

failure_analysis ~84

Station 5: Run Pareto analysis on failure data with lot correlation. Uploads failure data CSV and identifies top failure modes, correlates with production lots, and provides actionable recommendations. IMPORTANT: Review Pareto chart and lot correlation before taking action.

NameTypeReqDescription
failure_data_pathstringyesPath to failure data CSV (columns: serial, failure_mode, date, lot_number)

Structured output declared, but exposes no named fields.

No examples provided.

find_alternatives ~38

Find alternative parts with similar specifications.

NameTypeReqDescription
parametersOptional key parameters to match
part_numberstringyesOriginal part number

Structured output declared, but exposes no named fields.

No examples provided.

find_kicad_projects ~30

Find KiCad projects in configured search paths. Returns: List of found KiCad projects

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

get_cli_documentation ~81

Get documentation for the Source Parts CLI tool. Returns usage guides, command reference, and examples for the `parts` CLI. The content returned is automatically tailored to your account.

NameTypeReqDescription
sectionOptional topic to focus on (e.g. "auth", "search", "bom", "manufacturing", "project"). Omit for full documentation.

Structured output declared, but exposes no named fields.

No examples provided.

get_identified_item ~40

Get details for an identified PCB/component by short code.

NameTypeReqDescription
short_codestringyesItem short code (e.g., SP-XXXXXX)

Structured output declared, but exposes no named fields.

No examples provided.

get_part_details ~39

Get detailed information about a specific part.

NameTypeReqDescription
manufacturerOptional manufacturer name
part_numberstringyesThe part number to look up

Structured output declared, but exposes no named fields.

No examples provided.

get_preferences ~71

Get user preferences, optionally for a specific device. Preferences are merged: global user defaults are overridden by device-specific values when a device_id is provided.

NameTypeReqDescription
device_idOptional device identifier (e.g. "macbook", "claude-desktop"). If omitted, returns global user preferences only.

Structured output declared, but exposes no named fields.

No examples provided.

get_project_context ~115

Get project context from .parts/config.yaml and the Source Parts API. Reads the local .parts/config.yaml for project metadata, BOM locations, fabrication settings, and DFM rules. Optionally enriches with API data (BOMs, activity) if the project is linked to Source Parts.

NameTypeReqDescription
include_api_contextbooleanFetch project data from the Source Parts API
include_file_listingbooleanResolve and check referenced file paths
project_pathDirectory to search from (defaults to cwd)

Structured output declared, but exposes no named fields.

No examples provided.

highlight_net_traces ~173

Highlight specific net traces on a PCB and generate PDF(s). Renders highlighted net traces as vector PDFs. Supports two output modes: - overlay: Full board with all traces in gray, highlighted nets in color - traces_only: Just the highlighted nets + board outline

NameTypeReqDescription
colorsOptional color mapping {"net_name": "#rrggbb"}
modestring"overlay", "traces_only", or "both" (default: "both")
net_namesarrayyesNet names to highlight (e.g. ["nRF54_P", "nRF54_N"])
output_dirWhere to save PDFs (defaults to project dir)
project_pathstringyesPath to KiCad project directory or .kicad_pro/.kicad_pcb file

Structured output declared, but exposes no named fields.

No examples provided.

identify_pcb ~196

Identify a PCB or component from a photo. Uploads an image for barcode/QR code detection, OCR text extraction, and component identification. Poll the returned job with check_identification_status; fetch finished items with get_identified_item. Supply exactly one of file_path or image_base64. file_path needs filesystem access, so it works in local mode only; hosted callers pass the image bytes base64-encoded, with filename set so the image type can be inferred (defaults to photo.jpg).

NameTypeReqDescription
box_idOptional box/shipment ID to associate
file_pathPath to the image file (jpg, png, gif, heic, webp) — local mode only
filenameName for the uploaded image when using image_base64
image_base64Base64-encoded image bytes, for hosted mode
project_idOptional project ID to associate

Structured output declared, but exposes no named fields.

No examples provided.

kicad_ctrl_analyze ~138

Station 1: Analyze a PCB for affected nets. Uploads the .kicad_pcb to the API, which parses all nets and returns an inventory of tracks/vias per net, plus a highlight overlay PDF. IMPORTANT: Review the results before proceeding. Ask the operator to approve before calling kicad_ctrl_propose_ripup.

NameTypeReqDescription
ecn_idOptional ECN identifier to extract affected nets
net_namesOptional explicit list of net names to analyze
project_pathstringyesPath to .kicad_pro, .kicad_pcb, or project directory

Structured output declared, but exposes no named fields.

No examples provided.

kicad_ctrl_erc ~96

Station 0a: Run Electrical Rules Check on the schematic. Uploads the .kicad_sch to the API, which runs kicad-cli sch erc and returns a violation report + schematic PDF for review. IMPORTANT: Review ERC results before proceeding to netlist diff.

NameTypeReqDescription
project_pathstringyesPath to .kicad_pro, .kicad_sch, or project directory

Structured output declared, but exposes no named fields.

No examples provided.

kicad_ctrl_execute_ripup ~147

Station 3: Execute rip-up — remove tracks and return a diff. The API removes the tracks/vias and returns a unified diff. If apply_diff is True, the diff is applied to the local .kicad_pcb file. Otherwise, the diff is returned for review. IMPORTANT: After applying, open the PCB in KiCad for manual rerouting.

NameTypeReqDescription
apply_diffbooleanIf True, apply the diff to the local file
net_namesarrayyesNet names to rip up
project_pathstringyesPath to .kicad_pro, .kicad_pcb, or project directory

Structured output declared, but exposes no named fields.

No examples provided.

kicad_ctrl_export ~82

Station 6: Export gerbers, drill files, and positions. Downloads a ZIP from the API containing all fabrication files.

NameTypeReqDescription
output_dirLocal directory to save the export (default: CAM/ next to PCB)
project_pathstringyesPath to .kicad_pro, .kicad_pcb, or project directory

Structured output declared, but exposes no named fields.

No examples provided.

kicad_ctrl_netlist_diff ~117

Station 0b: Compare old and new schematic netlists. Shows what connectivity changed — added/removed/modified nets and components. This tells you exactly which PCB traces need rerouting. IMPORTANT: Review the diff before proceeding to PCB analysis.

NameTypeReqDescription
old_schematicPath to the OLD .kicad_sch (previous version). If not provided, uses git to find the previous version.
project_pathstringyesPath to the NEW .kicad_sch (current version)

Structured output declared, but exposes no named fields.

No examples provided.

kicad_ctrl_propose_ripup ~94

Station 2: Propose rip-up — enumerate what would be removed. IMPORTANT: Review the proposal before proceeding. Ask the operator to approve before calling kicad_ctrl_execute_ripup.

NameTypeReqDescription
net_namesarrayyesNet names to rip up
project_pathstringyesPath to .kicad_pro, .kicad_pcb, or project directory

Structured output declared, but exposes no named fields.

No examples provided.

kicad_ctrl_validate ~60

Station 5: Run DRC validation on the PCB. IMPORTANT: Review DRC results before proceeding to export.

NameTypeReqDescription
project_pathstringyesPath to .kicad_pro, .kicad_pcb, or project directory

Structured output declared, but exposes no named fields.

No examples provided.

list_datasheet_sections ~106

List table-of-contents sections from a datasheet PDF. A lightweight way to discover what's in a datasheet before reading specific chunks with read_datasheet. Returns only section titles and page numbers, no chunk text. Two input modes: - file_path: Upload a local PDF file - sku: Fetch cached data from CDN by part number

NameTypeReqDescription
file_pathPath to a local PDF datasheet
skuPart SKU to fetch cached data for

Structured output declared, but exposes no named fields.

No examples provided.

list_devices ~48

List all devices registered for the current user. Each device has an ID, name, last-seen timestamp, and any device-specific preference overrides. Returns: List of devices with their preferences

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

list_doc_safelist ~57

List all MIME types currently on the document upload safelist. Returns the full set of file types that are permitted for upload after Magika content-type scanning. Types not on this list will be rejected at the API boundary.

Input schema present but exposes no named parameters.

Structured output declared, but exposes no named fields.

No examples provided.

logistics_consignment_manifest ~108

Station 4: Generate a consignment manifest by diffing BOM vs inventory. Uploads BOM and compares against current inventory levels to determine what needs to be shipped to the CM (contract manufacturer). IMPORTANT: Review the manifest before shipping. Verify short items.

NameTypeReqDescription
bom_pathstringyesPath to BOM file (.csv or .json)
cm_addressstringyesContract manufacturer shipping address
inventory_levelsobjectyesDict mapping part_number to quantity on hand at CM

Structured output declared, but exposes no named fields.

No examples provided.

logistics_create_shipment ~143

Station 1: Create a shipment with label, packing list, and customs docs. Creates a shipment for an order, generates shipping label data, packing list, and customs declaration for international shipments. IMPORTANT: Review shipment details and label before dispatching.

NameTypeReqDescription
carrierstringPreferred carrier (dhl, fedex, sf_express, usps)
destinationobjectyesDestination address dict with keys: name, street, city, state, postal_code, country
order_idstringyesOrder identifier (e.g. ORD-A1B2C3D4)
weight_kgnumberPackage weight in kilograms

Structured output declared, but exposes no named fields.

No examples provided.

logistics_customs_declare ~124

Station 3: Generate customs declaration from BOM with HS code mapping. Uploads BOM file and maps components to HS codes based on category. Calculates declared values for each line item. IMPORTANT: Review HS codes and declared values before submitting to customs.

NameTypeReqDescription
bom_pathstringyesPath to BOM file (.csv or .json)
destination_countrystringyesDestination country code (e.g. US, DE, JP)
invoice_amountnumberyesTotal invoice amount in USD
origin_countrystringOrigin country code (default CN)

Structured output declared, but exposes no named fields.

No examples provided.

logistics_inventory_reconcile ~101

Station 5: Reconcile physical inventory count against system records. Uploads physical count CSV and system inventory CSV. Diffs quantities and reports matches, overages, and shortages. IMPORTANT: Review discrepancies and investigate before adjusting system records.

NameTypeReqDescription
physical_count_pathstringyesPath to physical count CSV (columns: part_number, counted_quantity)
system_inventory_pathstringyesPath to system inventory CSV (columns: part_number, system_quantity)

Structured output declared, but exposes no named fields.

No examples provided.

logistics_track_shipment ~80

Station 2: Track a shipment and get current status. Returns tracking events with timestamps, locations, and status updates.

NameTypeReqDescription
carrierstringCarrier name (dhl, fedex, sf_express, usps)
shipment_idstringyesShipment identifier (e.g. SHP-A1B2C3D4)

Structured output declared, but exposes no named fields.

No examples provided.

match_components_to_parts ~45

Match KiCad components to real parts.

NameTypeReqDescription
auto_searchbooleanWhether to automatically search for parts
componentsarrayyesList of components from KiCad

Structured output declared, but exposes no named fields.

No examples provided.

open_in_kicad ~36

Open a KiCad project in the KiCad application.

NameTypeReqDescription
project_pathstringyesPath to KiCad project file

Structured output declared, but exposes no named fields.

No examples provided.

parts_cli ~1,788

Run a `parts` CLI command for local project operations. Executes the `parts` CLI binary with the given command and arguments. The command string should NOT include the leading `parts` — just the subcommand and flags. # Parts CLI Command Reference ## ECN Management (project ecn) ### List all ECNs parts project ecn list [--dir ECO] Alias: parts project ecn ls ### Get ECN details Read the file directly: ECO/ECN-006.md ### Create a new ECN parts project ecn create \ --id ECN-021 \ --title "Issue title" \ --type "Schematic Change" \ --severity HIGH \ --disposition REQUIRED \ [--category Electrical] \ [--author "Name"] \ [--source "reference"] \ [--affected "U5, R23"] \ [--output-dir ECO] Types: Design Constraint | Assembly Note | BOM Change | Schematic Change | Process Change Severity: CRITICAL | HIGH | MEDIUM | LOW Disposition: REQUIRED | RECOMMENDED | OPTIONAL ### Validate ECN files parts project ecn validate [--dir ECO] ### Migrate monolithic log to individual files parts project ecn migrate --source Reports/ECN_Log_V1.0.md [--output-dir ECO] ## Fabrication (fab) ### Stackup PDF from gerbers parts fab stackup <gerbers.zip> [-b "Board Name"] [--scale 3] [-o output.pdf] [--prefix "Board_V1.03"] ### Placement / pick-and-place parts fab placement [positions.csv] \ [--rows 3] [--cols 3] \ [--assemble 1,2,3,7,8] \ [--side top|bottom|both] \ [--outline board.gko] \ [--bom bom.csv] \ [--manual-place U,J,SW,MIC] \ [--split-csv] \ [--rotate-top] \ [--machine yy1] \ [-b "Board Name"] [-o ./output] [--prefix "Board_V1.03"] ### Net trace highlight parts fab highlight <board.kicad_pcb> \ --nets "VCC,GND,SDA" \ [--colors "VCC=#ff0000,GND=#0000ff"] \ [--mode overlay|traces|both] \ [--layers "F.Cu"] \ [-o ./output] ### Assembly guide PDF parts fab assembly ### Test point report parts fab testpoints <positions.csv> ### Gerber diff parts fab…

NameTypeReqDescription
commandstringyesThe parts subcommand and arguments. Examples: "project ecn list", "fab stackup gerbers.zip --scale 3", "project ecn create --id ECN-021 --title 'New issue' --type 'BOM Change' --severity HI…
project_pathWorking directory for the command (defaults to cwd). Should be the root of the project containing .parts/config.yaml.

Structured output declared, but exposes no named fields.

No examples provided.

pcb_fab_quote ~321

Instant cross-vendor PCB fab quote with a cost-driver breakdown and ranked cost-optimization tips (JLCPCB, PCBWay). Replicates the vendors' price calculators so you can optimize board cost from the start — see exactly what each feature (layers, ENIG, 2oz copper, castellated edges, soldermask color, fine traces) adds, and what to change to save money. Board fee only (excludes shipping + tariffs).

NameTypeReqDescription
castellatedbooleanCastellated (half-plated) edges.
colorstringSoldermask color (green is cheapest/fastest).
copper_ozintegerOuter copper weight (1 or 2).
finishstringSurface finish — HASL, HASL_leadfree, ENIG, OSP, …
height_mmnumber
layersintegerCopper layer count (1, 2, 4, 6, 8 …).
min_trace_mmMin trace/space in mm (e.g. 0.0889 = 3.5mil); finer can surcharge.
qtyintegerNumber of boards.
thickness_mmnumberBoard thickness in mm.
vendorsRestrict to these vendor slugs (default all, e.g. ["jlcpcb", "pcbway"]).
via_in_padbooleanResin-filled / capped via-in-pad.
width_mmnumber

Structured output declared, but exposes no named fields.

No examples provided.

quality_compliance_check ~112

Station 4: Check BOM regulatory compliance for target markets. Uploads BOM and checks every component against RoHS, REACH SVHC, conflict minerals (3TG), and market-specific requirements (CE/UL/CCC). IMPORTANT: Review non-compliant components and compliance summary per market before proceeding with production or export.

NameTypeReqDescription
bom_pathstringyesPath to BOM file (.csv or .json)
target_marketsarrayyesList of target market codes (EU, US, CN)

Structured output declared, but exposes no named fields.

No examples provided.

quality_fai_inspect ~114

Station 3: First Article Inspection — verify assembled board against BOM. Uploads assembled board photos and BOM file. Server cross-references each visible component against the BOM for presence, polarity, orientation, and correct value. IMPORTANT: Review flagged components manually. Vision-based checks should be confirmed by operator before accepting the first article.

NameTypeReqDescription
board_photosarrayyesList of paths to assembled board photos (JPEG/PNG)
bom_pathstringyesPath to BOM file (.csv or .json)

Structured output declared, but exposes no named fields.

No examples provided.

quality_iqc_inspect ~140

Station 1: Incoming quality control inspection. Uploads component reel/packaging photos and PO reference data. Server validates label readability, checks date code freshness, verifies MPN, and checks MSL level. IMPORTANT: Review the inspection checks before accepting components into stock. Rejected components must not enter production.

NameTypeReqDescription
expected_date_codestringExpected date code (YYWW format, optional)
expected_quantityintegeryesExpected quantity from PO
part_numberstringyesExpected manufacturer part number (MPN)
photosarrayyesList of paths to component reel/packaging photos (JPEG/PNG)

Structured output declared, but exposes no named fields.

No examples provided.

quality_xray_analyze ~114

Station 2: X-ray solder joint analysis for BGA/QFN packages. Uploads X-ray images of solder joints. Server analyzes void percentage, checks for solder bridges, head-in-pillow defects, and other anomalies per IPC-7095/IPC-A-610 standards. IMPORTANT: Review the defect report and void percentages before accepting the board. Joints exceeding 25% void require rework.

NameTypeReqDescription
xray_imagesarrayyesList of paths to X-ray images (JPEG/PNG)

Structured output declared, but exposes no named fields.

No examples provided.

quote_assembly ~176

Get a combined fabrication + assembly quote. Uploads gerbers for fab quotation and a BOM for assembly costing. Polls the BOM status to get a bom_id, then calculates COGS.

NameTypeReqDescription
bom_pathstringyesPath to the BOM file (CSV, XLSX, etc.)
colorstringSolder mask color
gerber_pathstringyesPath to the gerber zip file
layersintegerNumber of PCB layers (default 2)
prioritystringPriority level (low, normal, high)
quantityintegerNumber of assemblies (default 5)
surface_finishstringSurface finish (HASL, ENIG, OSP, etc.)
thicknessnumberBoard thickness in mm (default 1.6)

Structured output declared, but exposes no named fields.

No examples provided.

quote_fabrication ~162

Get a fabrication quote for a project. Submits a fab quotation request using a project reference. Use upload_gerbers_for_quote to upload gerber files directly instead.

NameTypeReqDescription
colorstringSolder mask color (green, red, blue, black, white, yellow)
layersintegerNumber of PCB layers (default 2)
prioritystringPriority level (low, normal, high)
project_idstringyesProject ID to quote
quantityintegerNumber of boards (default 5)
surface_finishstringSurface finish (HASL, ENIG, OSP, etc.)
thicknessnumberBoard thickness in mm (default 1.6)

Structured output declared, but exposes no named fields.

No examples provided.

read_datasheet ~165

Read and chunk a datasheet PDF for analysis. Two input modes: - file_path: Upload a local PDF file for chunking - sku: Fetch cached chunks from CDN by part number If query is provided, only chunks matching the query keywords are returned, reducing context usage. Use list_datasheet_sections first to discover what's in a datasheet before reading specific chunks.

NameTypeReqDescription
chunk_pagesintegerPages per chunk (default 5)
file_pathPath to a local PDF datasheet
max_chunksintegerMaximum chunks to return (default 5). Increase for broader results.
queryOptional keywords to filter chunks (e.g. "maximum input voltage")
skuPart SKU to fetch cached chunks for

Structured output declared, but exposes no named fields.

No examples provided.

remove_doc_safelist ~64

Remove a MIME type from the document upload safelist. After removal, uploads whose Magika-detected type matches this MIME type will be rejected. Requires admin role.

NameTypeReqDescription
mime_typestringyesMIME type to remove, e.g. "application/pdf".

Structured output declared, but exposes no named fields.

No examples provided.

render_schematic ~64

Render a schematic as PDF for visual review. Uses kicad-cli on the server to export the schematic as a PDF.

NameTypeReqDescription
file_pathstringyesPath to .kicad_sch file
save_toOptional directory to save the PDF locally

Structured output declared, but exposes no named fields.

No examples provided.

review_schematic ~76

Compare two schematic versions and return structured diff. Shows added/removed components, changed values, and net changes.

NameTypeReqDescription
new_file_pathstringyesPath to the new/modified .kicad_sch file
old_file_pathstringyesPath to the old/baseline .kicad_sch file

Structured output declared, but exposes no named fields.

No examples provided.

rma_process ~98

Station 4: Process an RMA request with failure categorization and disposition. Categorizes failure mode (DOA, wear-out, damage, no-fault-found), checks warranty status, and generates RMA number with disposition. IMPORTANT: Review disposition before confirming with customer.

NameTypeReqDescription
failure_descriptionstringyesDescription of the failure
order_idstringyesOriginal order identifier
serial_numberstringyesDevice serial number

Structured output declared, but exposes no named fields.

No examples provided.

sales_commission_calculate ~114

Station 5: Calculate sales commission on an order. Computes commission payout based on order total and the given commission structure (percentage or flat amount).

NameTypeReqDescription
commission_ratenumberyesCommission rate — decimal for percentage (e.g. 0.05 for 5%) or dollar amount for flat
commission_typestring"percentage" (default) or "flat"
order_idstringyesOrder identifier (e.g. ORD-A1B2C3D4)

Structured output declared, but exposes no named fields.

No examples provided.

sales_invoice_generate ~123

Station 4: Generate invoice data from an order. Creates a draft invoice with line items, tax calculation, totals, and due date based on payment terms. IMPORTANT: Review invoice details before sending to customer.

NameTypeReqDescription
order_idstringyesOrder identifier (e.g. ORD-A1B2C3D4)
payment_termsstringPayment terms (net30, net60, due_on_receipt, etc.)
tax_ratenumberDecimal tax rate (e.g. 0.0875 for 8.75%)

Structured output declared, but exposes no named fields.

No examples provided.

Common questions

What is the Source Parts MCP server?

Source Parts is an MCP server listed in the public MCP registry as io.github.SourceParts/parts-mcp. Electronic component sourcing, BOM management, and PCB design workflows. This page covers its PyPI package (parts-mcp).

Is the Source Parts MCP server safe to use?

Source Parts scores 64 out of 100 on VerifyMCP. We recorded 2 known advisories against it as of 21 September 2026. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Source Parts MCP server expose?

Source Parts exposes 127 tools: search_parts, search_by_parameters, search_by_marking, get_part_details, compare_prices, and 122 more. Their descriptions and schemas cost roughly 16,028 tokens of context every time the server is loaded.

Is the Source Parts MCP server still maintained?

Source Parts is still listed as active in the MCP registry. We last reached this channel on 21 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

What licence is the Source Parts MCP server under?

Source Parts declares the MIT licence, which is OSI-approved. That covers the source only, and says nothing about the cost of any service it calls.