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
sales_order_convert ~89

Station 3: Validate stock/lead times and convert quote to order. Checks inventory for all line items in the quote and flags any shortages or long lead times. If all clear, creates the order. IMPORTANT: Review items at risk before confirming the order.

NameTypeReqDescription
quote_idstringyesQuote identifier to convert (e.g. QUO-A1B2C3D4)

Structured output declared, but exposes no named fields.

No examples provided.

sales_quote_build ~118

Station 1: Price a BOM and generate a quote breakdown. Uploads the BOM file to the API, which prices all components using the internal DB, adds fab + assembly + margin, and returns a full quote breakdown for operator review. IMPORTANT: Review the quote before sending to the customer or proceeding to negotiation.

NameTypeReqDescription
bom_pathstringyesPath to BOM file (.csv or .json)
customer_namestringyesCustomer name or identifier
quantityintegeryesBuild quantity (number of units)

Structured output declared, but exposes no named fields.

No examples provided.

sales_quote_negotiate ~117

Station 2: Revise quantities or pricing on an existing quote. Recalculates the quote at new terms and shows the margin delta compared to the original quote. IMPORTANT: Review margin impact before accepting revised terms.

NameTypeReqDescription
quote_idstringyesExisting quote identifier (e.g. QUO-A1B2C3D4)
revised_margin_pctNew margin percentage as decimal (optional, e.g. 0.20 for 20%)
revised_quantityNew build quantity (optional)

Structured output declared, but exposes no named fields.

No examples provided.

scan_doc ~84

Scan a local file with Magika to detect its true content type. Uses the Source Parts document scanning API (backed by Google Magika) to identify what a file actually is, regardless of its extension. Useful for checking whether a file would be accepted by the safelist before uploading it.

NameTypeReqDescription
file_pathstringyesAbsolute path to the local file to scan.

Structured output declared, but exposes no named fields.

No examples provided.

sch_check_structure ~76

Validate structural integrity of a .kicad_sch file. Uploads to /v1/sch/check. Use this before and after edits to confirm the file is intact (paren balance, no premature close, no malformed placed-symbol blocks).

NameTypeReqDescription
schematic_pathstringyesPath to .kicad_sch to validate

Structured output declared, but exposes no named fields.

No examples provided.

sch_erc_categorize ~69

Parse a kicad-cli ERC JSON report, group violations by type. Pure-local (no API call). Entry point for an agent deciding what to fix and in what order.

NameTypeReqDescription
erc_report_pathstringyesPath to the kicad-cli ERC JSON report

Structured output declared, but exposes no named fields.

No examples provided.

sch_export_bom ~251

Extract the bill of materials from a KiCad schematic. Uploads to /v1/eda/sch/export/bom, which runs `kicad-cli sch export bom` server-side, and returns the components both parsed and raw. Prefer this over reading a .kicad_sch yourself — the file's lib_symbols block holds symbol definitions that are easily miscounted as placed parts. Supply exactly one of schematic_path or schematic_content.

NameTypeReqDescription
exclude_dnpbooleanDrop components marked Do-Not-Populate
fieldsComma-separated fields to emit, e.g. "Reference,Value,Footprint"
format_presetstring"CSV" or "TSV"
group_byComma-separated fields to group identical parts by, e.g. "Value"
output_pathWrite the raw export here as well (local mode only)
schematic_contentSchematic file text, for hosted mode
schematic_pathPath to a .kicad_sch (local mode only)
sort_descbooleanSort descending instead of ascending
sort_fieldField to sort on

Structured output declared, but exposes no named fields.

No examples provided.

sch_export_graphic ~272

Plot a KiCad schematic to PDF, DXF, HPGL or PostScript. Runs `kicad-cli sch export <format>` server-side. For a bill of materials use sch_export_bom instead — it returns parsed components rather than an opaque file. hpgl and ps are plotted one file per page, so those come back as a ZIP archive whatever output_path is named. is_archive says which you got. Supply exactly one of schematic_path or schematic_content. In hosted mode the file is returned base64 in content_base64, since there is no filesystem to write to.

NameTypeReqDescription
black_and_whitebooleanMonochrome output (pdf, dxf, ps)
formatstringyes"pdf", "dxf", "hpgl" or "ps"
output_pathWhere to write the result (local mode only). Defaults to the schematic's own directory when a path was given.
pagesComma-separated page numbers; all pages when omitted
pen_sizePen width in mm (hpgl only, server default 0.5)
schematic_contentSchematic file text, for hosted mode
schematic_pathPath to a .kicad_sch (local mode only)

Structured output declared, but exposes no named fields.

No examples provided.

sch_libsync ~125

Consolidate lib_symbols from sub-sheets into root .kicad_sch. Uploads root + sub-sheets to /v1/sch/libsync. Resolves the lib_symbol_issues class of ERC violations. On name collision, the root's version is kept and the conflict is reported.

NameTypeReqDescription
output_pathOutput path (default: overwrite root_path)
root_pathstringyesPath to root .kicad_sch
sub_sheet_pathsarrayyesList of sub-sheet .kicad_sch paths (≥1)

Structured output declared, but exposes no named fields.

No examples provided.

sch_pin_position ~134

Compute the absolute schematic coordinate of a component pin. Pure math — no file I/O, no API call. Encodes the sym_pos + rotate_CW(angle, negate_Y(pin_lib_pos)) formula that's easy to get wrong by hand.

NameTypeReqDescription
pin_lib_xnumberyesPin X in library symbol definition (mm)
pin_lib_ynumberyesPin Y in library symbol definition (mm)
sym_anglenumberyesSymbol rotation angle in degrees (CW)
sym_xnumberyesSymbol placement X (mm)
sym_ynumberyesSymbol placement Y (mm)

Structured output declared, but exposes no named fields.

No examples provided.

sch_remove_wires ~131

Remove (wire ...) blocks by UUID from a .kicad_sch. Uploads to /v1/sch/clean with an explicit UUID list. The server verifies paren balance after removal and refuses to return a broken file (returns HTTP 422 instead). On success, writes the modified file back to schematic_path (unless dry_run).

NameTypeReqDescription
dry_runbooleanIf true, don't write the modified file
schematic_pathstringyesPath to .kicad_sch to modify
uuidsarrayyesList of wire UUIDs to remove

Structured output declared, but exposes no named fields.

No examples provided.

search_by_marking ~231

Resolve an IC/SMD top-marking code to candidate parts. The code printed on a package (e.g. "F407VG" on an STM32, "UADD" on a SOT-23) goes in; ranked candidate parts come out. Markings are not unique across vendors, so treat the answer as candidates to confirm against package and pinout, not a definitive ID. Each candidate carries a "match" lane: catalog — a part whose stored marking equals the code identified — a prior identify.parts photo recognition that read this code (returns its mpn_candidates) mpn — a part whose MPN starts or ends with the code (many markings are MPN fragments; vendor-assigned codes will not hit this lane) Use search_parts for MPNs and keywords; use this when all you have is the code on the chip.

NameTypeReqDescription
codestringyesThe marking as printed on the package
limitintegerMaximum candidates per match lane (max 25)

Structured output declared, but exposes no named fields.

No examples provided.

search_by_parameters ~89

Search parts by specific parameters within a category. BOTH arguments are required — calling with only `parameters` fails with missing_argument: category.

NameTypeReqDescription
categorystringyesPart category (required — e.g. "resistor", "capacitor", "mosfet")
limitintegerMaximum results
parametersobjectyesParametric search criteria as {name: value}

Structured output declared, but exposes no named fields.

No examples provided.

search_parts ~92

Search for electronic parts across suppliers.

NameTypeReqDescription
categoryOptional category filter (e.g., "resistor", "capacitor")
filtersOptional parametric filters (e.g., {"resistance": "10k", "tolerance": "1%"})
limitintegerMaximum number of results to return
querystringyesSearch query (part number, description, or keywords)

Structured output declared, but exposes no named fields.

No examples provided.

set_preferences ~94

Set user preferences, optionally for a specific device. Merges the provided key-value pairs into existing preferences. To delete a key, set its value to null.

NameTypeReqDescription
device_idOptional device identifier. If provided, preferences are stored as device-specific overrides.
preferencesobjectyesKey-value pairs to set. Keys use dot notation (e.g. "ecn.default_author", "fab.default_scale").

Structured output declared, but exposes no named fields.

No examples provided.

submit_dfm ~85

Queue a DFM (Design for Manufacturability) analysis for a project.

NameTypeReqDescription
bom_idOptional BOM ID to include in analysis
notesOptional notes for the analysis
prioritystringPriority level ("low", "normal", "high")
project_idstringyesProject ID to analyze
revisionOptional revision identifier

Structured output declared, but exposes no named fields.

No examples provided.

suggest_reroute ~129

Suggest routing paths for disconnected nets after rip-up. Runs an A* pathfinder on the server and returns suggested track segments as KiCad S-expressions for operator review.

NameTypeReqDescription
file_pathstringyesPath to .kicad_pcb file
grid_stepnumberRouting grid resolution in mm (default 0.25)
layerstringCopper layer to route on (default "F.Cu")
netsarrayyesList of net names to route
widthnumberTrack width in mm (default 0.25)

Structured output declared, but exposes no named fields.

No examples provided.

supply_chain_avl_qualify ~108

Station 2: Check components against AVL rules and score counterfeit risk. Uploads the BOM file to the API, which checks each component against the Approved Vendor List (AVL): authorized distributors, source control requirements (e.g. SI1304BDL), and counterfeit risk scoring based on component age, popularity, and price anomalies. IMPORTANT: Review flagged components before proceeding with procurement.

NameTypeReqDescription
bom_pathstringyesPath to BOM file (.csv or .json)

Structured output declared, but exposes no named fields.

No examples provided.

supply_chain_obsolescence_check ~96

Station 3: Check lifecycle status for each part and suggest alternatives. Uploads the BOM file to the API, which checks each component's lifecycle status (active, NRND, obsolete, EOL, unknown) and suggests drop-in alternatives for at-risk parts. IMPORTANT: Review at-risk components and alternatives before design freeze.

NameTypeReqDescription
bom_pathstringyesPath to BOM file (.csv or .json)

Structured output declared, but exposes no named fields.

No examples provided.

supply_chain_procurement_approve ~135

Station 1: Group BOM by vendor, check MOQs, calculate price breaks, estimate lead times. Uploads the BOM file to the API, which groups components by vendor, validates minimum order quantities, applies price-break discounts, and estimates lead times for each purchase order. IMPORTANT: Review the purchase orders before placing with vendors.

NameTypeReqDescription
bom_pathstringyesPath to BOM file (.csv or .json)
quantityintegeryesBuild quantity (number of units)
target_datestringyesTarget delivery date (ISO 8601, e.g. 2026-04-15)

Structured output declared, but exposes no named fields.

No examples provided.

test_coverage_analysis ~106

Station 1: Analyze test point coverage and probe accessibility. Uploads test points CSV and PCB file. Server checks probe spacing (min 1.27mm), keep-out violations, and ICT fixture clearance. IMPORTANT: Review blocked points before committing to fixture design.

NameTypeReqDescription
pcb_pathstringyesPath to .kicad_pcb file
test_points_pathstringyesPath to test points CSV (columns: ref, net_name, x, y, side)

Structured output declared, but exposes no named fields.

No examples provided.

test_provision_devices ~95

Station 2: Generate per-device provisioning packages. Creates unique keys, certificates, and serial numbers for each device. Returns provisioning packages for flashing during production test. IMPORTANT: Verify firmware URL and device list before provisioning.

NameTypeReqDescription
cert_templatestringCertificate template ("production" or "development")
device_idsarrayyesList of device identifiers to provision
firmware_urlstringyesURL to firmware binary

Structured output declared, but exposes no named fields.

No examples provided.

test_reliability_predict ~140

Station 3: Calculate MTBF using MIL-HDBK-217F simplified method. Uploads BOM file and calculates per-component failure rates, total MTBF, and identifies weakest components. IMPORTANT: Review weakest links and consider derating or alternatives.

NameTypeReqDescription
ambient_tempnumberAmbient operating temperature in Celsius (default 25)
bom_pathstringyesPath to BOM file (.csv or .json)
duty_cyclenumberOperating duty cycle 0.0-1.0 (default 1.0)
environmentstringOperating environment (ground_benign, ground_fixed, airborne, etc.)

Structured output declared, but exposes no named fields.

No examples provided.

trigger_part_render ~124

Queue a Blender render job for an electronic component. Every image is generated from parametric .blend templates — no supplier assets. Pass either sku or part_id. The system will match the part to the correct Blender template based on category, package, and MPN suffix.

NameTypeReqDescription
forcebooleanIf false (default), skip if a render already exists
part_idInternal part ID (required if no sku)
skuSource Parts SKU (required if no part_id)
template_overrideForce a specific .blend template file

Structured output declared, but exposes no named fields.

No examples provided.

upload_bom ~88

Upload a BOM file for processing and part matching. Reads the file from the local filesystem, uploads it to the API for processing. Use check_bom_status with the returned job_id to track progress and see which parts are unknown. Supported formats: CSV, XLSX, XLS, JSON, XML.

NameTypeReqDescription
file_pathstringyesPath to the BOM file on the local filesystem

Structured output declared, but exposes no named fields.

No examples provided.

upload_gerbers_for_quote ~175

Upload a gerber zip file to get a fabrication quote. Reads the gerber zip from disk and submits it for fabrication quotation. Use check_manufacturing_status with the returned job_id to track progress.

NameTypeReqDescription
colorstringSolder mask color (green, red, blue, black, white, yellow)
file_pathstringyesPath to the gerber zip file
layersintegerNumber of PCB layers (default 2)
prioritystringPriority level (low, normal, high)
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.

user_profile ~57

Get the current user's profile, role, and preferences. Returns the authenticated user's profile including their role level (public, admin, owner), global preferences, and per-device overrides. Returns: User profile with role, preferences, and device list

Input schema present but exposes no named parameters.

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.