Source Parts
PYPI · PARTS-MCP · 2 COMPONENTS · SCANNED SEP 21
Electronic component sourcing, BOM management, and PCB design workflows.
Available components
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
- Malware scan not yet available for this package.Unverified
- CVE check failed: a known advisory affects this package; its severity couldn't be graded. See how to fix → View diagnostics → Fail
- Runs hatchling.build at install time, a recognised native-build step with no shell scripting around it. View diagnostics → Pass
- 8 of 64 dependencies flagged as unhealthy. View diagnostics → Partial
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
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
claude mcp add sourceparts-parts-mcp -- uvx parts-mcp
{
"mcpServers": {
"sourceparts-parts-mcp": {
"command": "uvx",
"args": [
"parts-mcp"
]
}
}
} {
"servers": {
"sourceparts-parts-mcp": {
"command": "uvx",
"args": [
"parts-mcp"
]
}
}
} codex mcp add sourceparts-parts-mcp -- uvx parts-mcp
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sourceparts-parts-mcp": {
"type": "local",
"command": [
"uvx",
"parts-mcp"
],
"enabled": true
}
}
} openclaw mcp add sourceparts-parts-mcp --command uvx --arg parts-mcp
mcp_servers:
sourceparts-parts-mcp:
command: "uvx"
args: ["parts-mcp"] {
"McpServers": {
"sourceparts-parts-mcp": {
"Transport": "stdio",
"Command": "uvx",
"Arguments": [
"parts-mcp"
]
}
}
} assistant mcp add sourceparts-parts-mcp -t stdio -c uvx -a parts-mcp
{
"mcpServers": {
"sourceparts-parts-mcp": {
"command": "uvx",
"args": [
"parts-mcp"
]
}
}
} 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
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 →
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 →
edit_schematic_place 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.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to .kicad_sch file or project directory |
| properties | – | – | Optional property overrides {"Value": "10K", ...} |
| reference | string | yes | Reference designator (e.g., "R1") |
| symbol | string | yes | KiCad lib_id (e.g., "Device:R") |
| x | number | yes | X position in mm |
| y | number | yes | Y position in mm |
Structured output declared, but exposes no named fields.
No examples provided.
edit_schematic_remove Edit Schematic Remove ~56
Remove a component from a schematic by reference designator.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to .kicad_sch file |
| reference | string | yes | Component reference to remove (e.g., "R47") |
Structured output declared, but exposes no named fields.
No examples provided.
edit_schematic_value Edit Schematic Value ~87
Update a component property value in a schematic.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to .kicad_sch file |
| new_value | string | yes | New value to set |
| property_name | string | yes | Property to update (e.g., "Value", "Footprint") |
| reference | string | yes | Component reference designator (e.g., "R47") |
Structured output declared, but exposes no named fields.
No examples provided.
edit_schematic_wire Edit Schematic Wire ~70
Add a wire segment between two points in a schematic.
| Name | Type | Req | Description |
|---|---|---|---|
| end_x | number | yes | – |
| end_y | number | yes | – |
| file_path | string | yes | Path to .kicad_sch file |
| start_x | number | yes | – |
| start_y | number | yes | – |
Structured output declared, but exposes no named fields.
No examples provided.
estimate_cost 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.
| Name | Type | Req | Description |
|---|---|---|---|
| currency | string | – | Currency code (default USD) |
| parts | array | yes | List of parts, each with part_number and quantity |
Structured output declared, but exposes no named fields.
No examples provided.
export_parts_to_kicad Export Parts To Kicad ~59
Export parts data in KiCad-compatible format.
| Name | Type | Req | Description |
|---|---|---|---|
| format | string | – | Export format (csv, json) |
| output_path | string | yes | Where to save the export |
| parts | array | yes | List of parts to export |
Structured output declared, but exposes no named fields.
No examples provided.
extract_bom_from_kicad Extract Bom From Kicad ~42
Extract bill of materials from a KiCad project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Path to KiCad project file (.kicad_pro) |
Structured output declared, but exposes no named fields.
No examples provided.
extract_netlist_from_project Extract Netlist From Project ~40
Extract netlist information from a KiCad project.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Path to KiCad project file (.kicad_pro) |
Structured output declared, but exposes no named fields.
No examples provided.
failure_analysis 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.
| Name | Type | Req | Description |
|---|---|---|---|
| failure_data_path | string | yes | Path to failure data CSV (columns: serial, failure_mode, date, lot_number) |
Structured output declared, but exposes no named fields.
No examples provided.
find_alternatives Find Alternatives ~38
Find alternative parts with similar specifications.
| Name | Type | Req | Description |
|---|---|---|---|
| parameters | – | – | Optional key parameters to match |
| part_number | string | yes | Original part number |
Structured output declared, but exposes no named fields.
No examples provided.
find_kicad_projects 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| section | – | – | Optional 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 Get Identified Item ~40
Get details for an identified PCB/component by short code.
| Name | Type | Req | Description |
|---|---|---|---|
| short_code | string | yes | Item short code (e.g., SP-XXXXXX) |
Structured output declared, but exposes no named fields.
No examples provided.
get_part_details Get Part Details ~39
Get detailed information about a specific part.
| Name | Type | Req | Description |
|---|---|---|---|
| manufacturer | – | – | Optional manufacturer name |
| part_number | string | yes | The part number to look up |
Structured output declared, but exposes no named fields.
No examples provided.
get_preferences 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.
| Name | Type | Req | Description |
|---|---|---|---|
| device_id | – | – | Optional 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| include_api_context | boolean | – | Fetch project data from the Source Parts API |
| include_file_listing | boolean | – | Resolve and check referenced file paths |
| project_path | – | – | Directory to search from (defaults to cwd) |
Structured output declared, but exposes no named fields.
No examples provided.
highlight_net_traces 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
| Name | Type | Req | Description |
|---|---|---|---|
| colors | – | – | Optional color mapping {"net_name": "#rrggbb"} |
| mode | string | – | "overlay", "traces_only", or "both" (default: "both") |
| net_names | array | yes | Net names to highlight (e.g. ["nRF54_P", "nRF54_N"]) |
| output_dir | – | – | Where to save PDFs (defaults to project dir) |
| project_path | string | yes | Path to KiCad project directory or .kicad_pro/.kicad_pcb file |
Structured output declared, but exposes no named fields.
No examples provided.
identify_pcb 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).
| Name | Type | Req | Description |
|---|---|---|---|
| box_id | – | – | Optional box/shipment ID to associate |
| file_path | – | – | Path to the image file (jpg, png, gif, heic, webp) — local mode only |
| filename | – | – | Name for the uploaded image when using image_base64 |
| image_base64 | – | – | Base64-encoded image bytes, for hosted mode |
| project_id | – | – | Optional project ID to associate |
Structured output declared, but exposes no named fields.
No examples provided.
kicad_ctrl_analyze 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.
| Name | Type | Req | Description |
|---|---|---|---|
| ecn_id | – | – | Optional ECN identifier to extract affected nets |
| net_names | – | – | Optional explicit list of net names to analyze |
| project_path | string | yes | Path to .kicad_pro, .kicad_pcb, or project directory |
Structured output declared, but exposes no named fields.
No examples provided.
kicad_ctrl_erc 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.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Path to .kicad_pro, .kicad_sch, or project directory |
Structured output declared, but exposes no named fields.
No examples provided.
kicad_ctrl_execute_ripup 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.
| Name | Type | Req | Description |
|---|---|---|---|
| apply_diff | boolean | – | If True, apply the diff to the local file |
| net_names | array | yes | Net names to rip up |
| project_path | string | yes | Path to .kicad_pro, .kicad_pcb, or project directory |
Structured output declared, but exposes no named fields.
No examples provided.
kicad_ctrl_export Kicad Ctrl Export ~82
Station 6: Export gerbers, drill files, and positions. Downloads a ZIP from the API containing all fabrication files.
| Name | Type | Req | Description |
|---|---|---|---|
| output_dir | – | – | Local directory to save the export (default: CAM/ next to PCB) |
| project_path | string | yes | Path to .kicad_pro, .kicad_pcb, or project directory |
Structured output declared, but exposes no named fields.
No examples provided.
kicad_ctrl_netlist_diff 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.
| Name | Type | Req | Description |
|---|---|---|---|
| old_schematic | – | – | Path to the OLD .kicad_sch (previous version). If not provided, uses git to find the previous version. |
| project_path | string | yes | Path to the NEW .kicad_sch (current version) |
Structured output declared, but exposes no named fields.
No examples provided.
kicad_ctrl_propose_ripup 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.
| Name | Type | Req | Description |
|---|---|---|---|
| net_names | array | yes | Net names to rip up |
| project_path | string | yes | Path to .kicad_pro, .kicad_pcb, or project directory |
Structured output declared, but exposes no named fields.
No examples provided.
kicad_ctrl_validate Kicad Ctrl Validate ~60
Station 5: Run DRC validation on the PCB. IMPORTANT: Review DRC results before proceeding to export.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Path to .kicad_pro, .kicad_pcb, or project directory |
Structured output declared, but exposes no named fields.
No examples provided.
list_datasheet_sections 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
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | – | – | Path to a local PDF datasheet |
| sku | – | – | Part SKU to fetch cached data for |
Structured output declared, but exposes no named fields.
No examples provided.
list_devices 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 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bom_path | string | yes | Path to BOM file (.csv or .json) |
| cm_address | string | yes | Contract manufacturer shipping address |
| inventory_levels | object | yes | Dict mapping part_number to quantity on hand at CM |
Structured output declared, but exposes no named fields.
No examples provided.
logistics_create_shipment 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.
| Name | Type | Req | Description |
|---|---|---|---|
| carrier | string | – | Preferred carrier (dhl, fedex, sf_express, usps) |
| destination | object | yes | Destination address dict with keys: name, street, city, state, postal_code, country |
| order_id | string | yes | Order identifier (e.g. ORD-A1B2C3D4) |
| weight_kg | number | – | Package weight in kilograms |
Structured output declared, but exposes no named fields.
No examples provided.
logistics_customs_declare 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bom_path | string | yes | Path to BOM file (.csv or .json) |
| destination_country | string | yes | Destination country code (e.g. US, DE, JP) |
| invoice_amount | number | yes | Total invoice amount in USD |
| origin_country | string | – | Origin country code (default CN) |
Structured output declared, but exposes no named fields.
No examples provided.
logistics_inventory_reconcile 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.
| Name | Type | Req | Description |
|---|---|---|---|
| physical_count_path | string | yes | Path to physical count CSV (columns: part_number, counted_quantity) |
| system_inventory_path | string | yes | Path to system inventory CSV (columns: part_number, system_quantity) |
Structured output declared, but exposes no named fields.
No examples provided.
logistics_track_shipment Logistics Track Shipment ~80
Station 2: Track a shipment and get current status. Returns tracking events with timestamps, locations, and status updates.
| Name | Type | Req | Description |
|---|---|---|---|
| carrier | string | – | Carrier name (dhl, fedex, sf_express, usps) |
| shipment_id | string | yes | Shipment identifier (e.g. SHP-A1B2C3D4) |
Structured output declared, but exposes no named fields.
No examples provided.
match_components_to_parts Match Components To Parts ~45
Match KiCad components to real parts.
| Name | Type | Req | Description |
|---|---|---|---|
| auto_search | boolean | – | Whether to automatically search for parts |
| components | array | yes | List of components from KiCad |
Structured output declared, but exposes no named fields.
No examples provided.
open_in_kicad Open In Kicad ~36
Open a KiCad project in the KiCad application.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Path to KiCad project file |
Structured output declared, but exposes no named fields.
No examples provided.
parts_cli 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…
| Name | Type | Req | Description |
|---|---|---|---|
| command | string | yes | The 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_path | – | – | Working 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 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).
| Name | Type | Req | Description |
|---|---|---|---|
| castellated | boolean | – | Castellated (half-plated) edges. |
| color | string | – | Soldermask color (green is cheapest/fastest). |
| copper_oz | integer | – | Outer copper weight (1 or 2). |
| finish | string | – | Surface finish — HASL, HASL_leadfree, ENIG, OSP, … |
| height_mm | number | – | – |
| layers | integer | – | Copper layer count (1, 2, 4, 6, 8 …). |
| min_trace_mm | – | – | Min trace/space in mm (e.g. 0.0889 = 3.5mil); finer can surcharge. |
| qty | integer | – | Number of boards. |
| thickness_mm | number | – | Board thickness in mm. |
| vendors | – | – | Restrict to these vendor slugs (default all, e.g. ["jlcpcb", "pcbway"]). |
| via_in_pad | boolean | – | Resin-filled / capped via-in-pad. |
| width_mm | number | – | – |
Structured output declared, but exposes no named fields.
No examples provided.
quality_compliance_check 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bom_path | string | yes | Path to BOM file (.csv or .json) |
| target_markets | array | yes | List of target market codes (EU, US, CN) |
Structured output declared, but exposes no named fields.
No examples provided.
quality_fai_inspect 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.
| Name | Type | Req | Description |
|---|---|---|---|
| board_photos | array | yes | List of paths to assembled board photos (JPEG/PNG) |
| bom_path | string | yes | Path to BOM file (.csv or .json) |
Structured output declared, but exposes no named fields.
No examples provided.
quality_iqc_inspect 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.
| Name | Type | Req | Description |
|---|---|---|---|
| expected_date_code | string | – | Expected date code (YYWW format, optional) |
| expected_quantity | integer | yes | Expected quantity from PO |
| part_number | string | yes | Expected manufacturer part number (MPN) |
| photos | array | yes | List of paths to component reel/packaging photos (JPEG/PNG) |
Structured output declared, but exposes no named fields.
No examples provided.
quality_xray_analyze 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.
| Name | Type | Req | Description |
|---|---|---|---|
| xray_images | array | yes | List of paths to X-ray images (JPEG/PNG) |
Structured output declared, but exposes no named fields.
No examples provided.
quote_assembly 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.
| Name | Type | Req | Description |
|---|---|---|---|
| bom_path | string | yes | Path to the BOM file (CSV, XLSX, etc.) |
| color | string | – | Solder mask color |
| gerber_path | string | yes | Path to the gerber zip file |
| layers | integer | – | Number of PCB layers (default 2) |
| priority | string | – | Priority level (low, normal, high) |
| quantity | integer | – | Number of assemblies (default 5) |
| surface_finish | string | – | Surface finish (HASL, ENIG, OSP, etc.) |
| thickness | number | – | Board thickness in mm (default 1.6) |
Structured output declared, but exposes no named fields.
No examples provided.
quote_fabrication 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.
| Name | Type | Req | Description |
|---|---|---|---|
| color | string | – | Solder mask color (green, red, blue, black, white, yellow) |
| layers | integer | – | Number of PCB layers (default 2) |
| priority | string | – | Priority level (low, normal, high) |
| project_id | string | yes | Project ID to quote |
| quantity | integer | – | Number of boards (default 5) |
| surface_finish | string | – | Surface finish (HASL, ENIG, OSP, etc.) |
| thickness | number | – | Board thickness in mm (default 1.6) |
Structured output declared, but exposes no named fields.
No examples provided.
read_datasheet 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.
| Name | Type | Req | Description |
|---|---|---|---|
| chunk_pages | integer | – | Pages per chunk (default 5) |
| file_path | – | – | Path to a local PDF datasheet |
| max_chunks | integer | – | Maximum chunks to return (default 5). Increase for broader results. |
| query | – | – | Optional keywords to filter chunks (e.g. "maximum input voltage") |
| sku | – | – | Part SKU to fetch cached chunks for |
Structured output declared, but exposes no named fields.
No examples provided.
remove_doc_safelist 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.
| Name | Type | Req | Description |
|---|---|---|---|
| mime_type | string | yes | MIME type to remove, e.g. "application/pdf". |
Structured output declared, but exposes no named fields.
No examples provided.
render_schematic Render Schematic ~64
Render a schematic as PDF for visual review. Uses kicad-cli on the server to export the schematic as a PDF.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to .kicad_sch file |
| save_to | – | – | Optional directory to save the PDF locally |
Structured output declared, but exposes no named fields.
No examples provided.
review_schematic Review Schematic ~76
Compare two schematic versions and return structured diff. Shows added/removed components, changed values, and net changes.
| Name | Type | Req | Description |
|---|---|---|---|
| new_file_path | string | yes | Path to the new/modified .kicad_sch file |
| old_file_path | string | yes | Path to the old/baseline .kicad_sch file |
Structured output declared, but exposes no named fields.
No examples provided.
rma_process 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.
| Name | Type | Req | Description |
|---|---|---|---|
| failure_description | string | yes | Description of the failure |
| order_id | string | yes | Original order identifier |
| serial_number | string | yes | Device serial number |
Structured output declared, but exposes no named fields.
No examples provided.
sales_commission_calculate 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).
| Name | Type | Req | Description |
|---|---|---|---|
| commission_rate | number | yes | Commission rate — decimal for percentage (e.g. 0.05 for 5%) or dollar amount for flat |
| commission_type | string | – | "percentage" (default) or "flat" |
| order_id | string | yes | Order identifier (e.g. ORD-A1B2C3D4) |
Structured output declared, but exposes no named fields.
No examples provided.
sales_invoice_generate 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.
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | Order identifier (e.g. ORD-A1B2C3D4) |
| payment_terms | string | – | Payment terms (net30, net60, due_on_receipt, etc.) |
| tax_rate | number | – | Decimal tax rate (e.g. 0.0875 for 8.75%) |
Structured output declared, but exposes no named fields.
No examples provided.
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.