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 →
add_doc_safelist Add Doc Safelist ~112
Add a MIME type to the document upload safelist. Once added, files whose Magika-detected type matches this MIME type will be accepted for upload. Requires admin role.
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | – | Optional human-readable note about this entry. |
| label | string | yes | Magika content label, e.g. "pdf". Run `parts doc scan` against a sample file to find the correct label. |
| mime_type | string | yes | MIME type to allow, e.g. "application/pdf". |
Structured output declared, but exposes no named fields.
No examples provided.
admin_list_users Admin List Users ~31
List all users. Owner-only.
| Name | Type | Req | Description |
|---|---|---|---|
| role | – | – | Optional filter by role (public, admin, owner) |
Structured output declared, but exposes no named fields.
No examples provided.
admin_set_user_role Admin Set User Role ~53
Set a user's role level. Owner-only.
| Name | Type | Req | Description |
|---|---|---|---|
| role | string | yes | New role: public, admin, or owner |
| user_id | string | yes | Target user's Auth0 sub or Source Parts user ID |
Structured output declared, but exposes no named fields.
No examples provided.
analyze_kicad_project Analyze Kicad Project ~40
Analyze a KiCad project to extract detailed information.
| 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.
assembly_aoi_inspect Assembly Aoi Inspect ~81
Station 4: Automated optical inspection. Uploads board photos and optional golden reference image. Server compares placement quality and flags defects. IMPORTANT: Review the defect report and manually verify flagged items.
| Name | Type | Req | Description |
|---|---|---|---|
| board_photos | array | yes | List of paths to board photos (JPEG/PNG) |
| reference_image | – | – | Optional path to golden reference image |
Structured output declared, but exposes no named fields.
No examples provided.
assembly_feeder_setup Assembly Feeder Setup ~104
Station 2: Generate optimal feeder slot assignment. Uploads BOM and position CSV. Server groups components and assigns feeder slots to minimize changeover time. IMPORTANT: Review the feeder map before loading the machine.
| Name | Type | Req | Description |
|---|---|---|---|
| bom_path | string | yes | Path to BOM CSV file |
| machine | string | – | Machine type (e.g. "neoden", "juki", "yamaha") |
| position_path | string | yes | Path to position/placement CSV file |
Structured output declared, but exposes no named fields.
No examples provided.
assembly_functional_test Assembly Functional Test ~101
Station 5: Validate functional test results against pass/fail criteria. Uploads test results CSV and criteria JSON. Server validates each unit against specs and calculates yield. IMPORTANT: Review yield and outliers before lot disposition.
| Name | Type | Req | Description |
|---|---|---|---|
| criteria | – | – | Pass/fail criteria dict, e.g. {"Vout": {"min": 3.2, "max": 3.4}} |
| results_path | string | yes | Path to test results CSV file |
Structured output declared, but exposes no named fields.
No examples provided.
assembly_readiness_check Assembly Readiness Check ~104
Station 1: Pre-assembly readiness checklist. Uploads BOM, gerber ZIP, and position CSV to the API. Server checks: all parts parseable? stencil layer present? positions match BOM? IMPORTANT: Review the checklist before proceeding to feeder setup.
| Name | Type | Req | Description |
|---|---|---|---|
| bom_path | string | yes | Path to BOM CSV file |
| gerber_path | string | yes | Path to gerber ZIP file |
| position_path | string | yes | Path to position/placement CSV file |
Structured output declared, but exposes no named fields.
No examples provided.
assembly_reflow_profile Assembly Reflow Profile ~83
Station 3: Analyze BOM thermal specs and recommend reflow profile. Uploads BOM CSV. Server analyzes MSL levels, peak reflow temps, and soak times across all components. IMPORTANT: Review thermal constraints and MSL warnings before reflowing.
| Name | Type | Req | Description |
|---|---|---|---|
| bom_path | string | yes | Path to BOM CSV file (with optional MSL, Peak_Temp columns) |
Structured output declared, but exposes no named fields.
No examples provided.
cad_convert_step Cad Convert Step ~104
Convert a CAD file between formats (STEP ↔ STL / OBJ / glTF / AMF / DXF). Hits POST /v1/cad/step/convert. Result written to a local temp file.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to .step/.stp/.brep/.stl file (<=100 MB). |
| target_format | string | yes | One of step | stl | obj | amf | dxf | gltf. |
Structured output declared, but exposes no named fields.
No examples provided.
cad_inspect_step Cad Inspect Step ~80
Inspect a STEP / BREP / STL file and return its geometry summary. Hits POST /v1/cad/step/inspect (synchronous, sub-second for typical product files).
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to a .step / .stp / .brep / .stl file (<=100 MB). |
Structured output declared, but exposes no named fields.
No examples provided.
cad_modify_step Cad Modify Step ~729
Apply a chain of parametric operations to a STEP/BREP file. Hits POST /v1/cad/step/pipeline. The result is written to a local temp file and the path is returned — chain calls by passing the previous output_path back in. Operation schemas. These are exact, and not guessable — translate takes "offset" not "vector", chamfer takes "length" not "distance", and rotate takes an axis as two points rather than a direction vector. The API rejects an op with a missing or misspelled field. {"kind": "translate", "offset": [x, y, z]} {"kind": "rotate", "axis_start": [x,y,z], "axis_end": [x,y,z], "angle_deg": 90} {"kind": "drill", "radius": R, "depth": D, "at": [x, y, z]} {"kind": "boss", "outer_radius": R, "height": H, "at": [x, y, z], "inner_radius": r} # inner_radius optional {"kind": "fillet", "radius": R} # all edges {"kind": "chamfer", "length": L} # all edges {"kind": "cut", "shape": <primitive>} {"kind": "union", "shape": <primitive>} {"kind": "intersect", "shape": <primitive>} {"kind": "mirror_y", "plane_y": Y} {"kind": "linear_pattern", "feature": <primitive>, "direction": [x,y,z], "spacing": S, "count": N} <primitive> is cylinder, box or sphere, each taking an optional "at": {"primitive": "cylinder", "radius": R, "height": H, "at": [x,y,z]} Ops apply in order, each to the result of the previous one. Coordinates are in the file's own frame — check it with cad_inspect_step first, since an op placed outside the solid succeeds and changes nothing. Example — drill four corner holes: cad_modify_step( file_path="/tmp/plate.step", operations=[ {"kind": "drill", "radius": 1.35, "depth": 10, "at": [57.59, 43.90, 0]}, {"kind": "drill", "radius": 1.35, "depth": 10, "at": [124.59, 43.90, 0]}, {"kind": "drill", "radius": 1.35, "depth": 10, "at": [57.59, 140.90, 0]}, {"kind": "drill", "radius": 1.35, "depth": 10,…
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Local path to the input file (<=100 MB). |
| operations | array | yes | Non-empty list of operation dicts (each with a "kind" field plus op-specific params). Max 256 ops per call. |
| output_format | string | – | One of step | stl | obj | amf | dxf | gltf. Defaults to "step". |
Structured output declared, but exposes no named fields.
No examples provided.
calculate_bom_cost Calculate Bom Cost ~54
Calculate total cost for a bill of materials.
| Name | Type | Req | Description |
|---|---|---|---|
| bom | array | yes | List of parts with quantities |
| preferred_suppliers | – | – | Optional supplier preferences |
| quantity | integer | – | Number of boards/assemblies |
Structured output declared, but exposes no named fields.
No examples provided.
check_availability Check Availability ~38
Check availability for multiple parts.
| Name | Type | Req | Description |
|---|---|---|---|
| part_numbers | array | yes | List of part numbers |
| quantities | – | – | Optional quantities needed for each part |
Structured output declared, but exposes no named fields.
No examples provided.
check_bom_status Check Bom Status ~131
Check BOM processing status and report unknown/unmatched parts. When processing is complete, automatically fetches the full BOM and separates parts into matched and unmatched lists. Unknown parts are highlighted so you can see which components need attention. Note: the upload_bom tool that produces these job IDs needs filesystem access and is only registered in local mode. In hosted mode submit the BOM to POST /v1/bom directly to obtain a job_id.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID returned from upload_bom (local mode) or POST /v1/bom |
Structured output declared, but exposes no named fields.
No examples provided.
check_dfm_status Check Dfm Status ~35
Check the status of a DFM analysis job.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID returned from submit_dfm |
Structured output declared, but exposes no named fields.
No examples provided.
check_identification_status Check Identification Status ~49
Check the status of a PCB/component identification job.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID returned from identify_pcb (which accepts a file_path locally or image_base64 when hosted) |
Structured output declared, but exposes no named fields.
No examples provided.
check_manufacturing_status Check Manufacturing Status ~44
Check the status of any manufacturing job (fab, DFM, AOI, QC).
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | Job ID returned from a manufacturing submission |
Structured output declared, but exposes no named fields.
No examples provided.
check_render_status Check Render Status ~53
Check the status of a Blender render job. Returns the CDN URL when the render is complete, or the error message if it failed.
| Name | Type | Req | Description |
|---|---|---|---|
| job_id | string | yes | The render job UUID from trigger_part_render |
Structured output declared, but exposes no named fields.
No examples provided.
compare_prices Compare Prices ~186
Get Source Parts catalog pricing for a part at a quantity. Single-source: prices come from the Source Parts catalog only. Per-supplier comparison (DigiKey, Mouser, …) is NOT supported — a `suppliers` list is acknowledged with a warning, never silently honored. `best_price` is therefore the catalog price at the best applicable quantity break, not a cross-supplier minimum. Refuses to price fuzzy matches: if the catalog's closest hit is not an exact (normalized) match for `part_number`, the response is success=False naming the closest candidate instead of pricing a different part.
| Name | Type | Req | Description |
|---|---|---|---|
| part_number | string | yes | Exact part number (MPN) or Source Parts SKU |
| quantity | integer | – | Quantity needed |
| suppliers | – | – | Not supported — present for compatibility; a warning is returned when passed |
Structured output declared, but exposes no named fields.
No examples provided.
convert_allegro Convert Allegro ~180
Convert a Cadence Allegro PCB board file to KiCad format. Imports a Cadence Allegro .brd binary file (versions 16-23) and converts it to a KiCad .kicad_pcb file. Uses KiCad 10's built-in Allegro importer — no Cadence software required. Board files only. Schematics are not supported. The .brd extension is also used by Eagle; KiCad auto-detects the format via magic bytes. Output is a ZIP archive containing the .kicad_pcb file and any extracted footprint libraries.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to Allegro .brd file or zip archive |
| output_path | – | – | Where to save the output ZIP (default: <stem>_kicad.zip next to input) |
Structured output declared, but exposes no named fields.
No examples provided.
convert_geda Convert Geda ~109
Convert a gEDA PCB board file to KiCad format. Imports a gEDA .pcb board file using KiCad's pcbnew bindings. Board files only — schematic import is not available programmatically. Output is a ZIP archive containing the .kicad_pcb file.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to gEDA .pcb file or zip archive |
| output_path | – | – | Where to save the output ZIP (default: <stem>_kicad.zip next to input) |
Structured output declared, but exposes no named fields.
No examples provided.
convert_kicad_version Convert Kicad Version ~179
Convert a KiCad file to an older version. Downconverts .kicad_pcb, .kicad_sch, or project ZIP archives from KiCad 10 to version 7, 8, or 9 for fab shop compatibility. Rounded rectangles (gr_roundrect / fp_roundrect) introduced in KiCad 10 are converted to right-angle rectangles. Hatched copper fills are removed. The file version header is updated to match the target version.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to .kicad_pcb, .kicad_sch, or .zip project archive |
| output_path | – | – | Where to save the result (default: same dir, _v<N> suffix) |
| target_version | string | yes | Target version: "7", "8", or "9" |
Structured output declared, but exposes no named fields.
No examples provided.
convert_pads Convert Pads ~111
Convert a PADS ASCII layout file to KiCad format. Imports a PADS ASCII .asc layout file using kicad-cli pcb import --format pads. Board files only — schematics are not supported. Output is a ZIP archive containing the .kicad_pcb file.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to PADS .asc file or zip archive |
| output_path | – | – | Where to save the output ZIP (default: <stem>_kicad.zip next to input) |
Structured output declared, but exposes no named fields.
No examples provided.
convert_protel Convert Protel ~189
Convert a Protel99SE project file to KiCad format. Converts Protel99SE schematic and PCB files to KiCad 7 format. Accepts individual files (.sch, .pcb, .lib) or a zip archive containing multiple Protel files. The output ZIP includes the converted KiCad files and a conversion_report.txt describing any warnings or unsupported features (e.g. ASCII schematic format, unsupported .pcblib files). .ddb archives require mdbtools on the server. If mdbtools is not installed, the API returns a 503 error rather than silently producing no output.
| Name | Type | Req | Description |
|---|---|---|---|
| file_path | string | yes | Path to Protel .sch, .pcb, .lib, .ddb, or .zip file |
| output_path | – | – | Where to save the output ZIP (default: <stem>_kicad.zip next to input) |
Structured output declared, but exposes no named fields.
No examples provided.
design_impedance_calculate Design Impedance Calculate ~123
Calculate controlled impedance for a PCB trace. Computes characteristic impedance using standard formulas for microstrip, stripline, or differential pair configurations.
| Name | Type | Req | Description |
|---|---|---|---|
| copper_weight_oz | number | – | Copper weight in oz (default 1.0) |
| stackup | object | yes | Dict with dielectric_height_mm and dielectric_constant (Er) |
| trace_spacing | number | – | Trace spacing in mm (required for differential) |
| trace_type | string | – | Type: microstrip, stripline, or differential |
| trace_width | number | yes | Trace width in mm |
Structured output declared, but exposes no named fields.
No examples provided.
design_schematic_review Design Schematic Review ~100
Review a KiCad schematic for common design issues. Uploads a .kicad_sch file and checks for: unconnected pins, missing decoupling capacitors (ICs without bypass caps within proximity), power domain analysis (voltage rails, current budget), and net naming conventions. IMPORTANT: Review all findings before proceeding with layout.
| Name | Type | Req | Description |
|---|---|---|---|
| project_path | string | yes | Path to the .kicad_sch schematic file |
Structured output declared, but exposes no named fields.
No examples provided.
design_thermal_analysis Design Thermal Analysis ~96
Estimate thermal dissipation from BOM and identify hot spots. Uploads a BOM file and estimates power dissipation per IC from typical values, identifies components exceeding thermal limits, and recommends thermal vias or heatsinking. IMPORTANT: Review thermal risks and recommendations before layout.
| Name | Type | Req | Description |
|---|---|---|---|
| ambient_temp_c | number | – | Ambient temperature in Celsius (default 25) |
| bom_path | string | yes | Path to BOM file (.csv or .json) |
Structured output declared, but exposes no named fields.
No examples provided.
dfm_add_findings Dfm Add Findings ~180
Add review findings to a DFM request (admin-only). Each finding should include category, severity, description, recommendation, and affected_area. The API validates all fields and stores them in the dfm_review_findings table. IMPORTANT: Review all findings before generating the customer report.
| Name | Type | Req | Description |
|---|---|---|---|
| findings | array | yes | List of finding dicts, each with: - category: e.g. design_issue, manufacturability, material - severity: info, low, medium, high, or critical - description: What the issue is - recommendation: How to… |
| request_id | string | yes | DFM review request ID (e.g. DFM-A1B2C3D4) |
Structured output declared, but exposes no named fields.
No examples provided.
dfm_check_status Dfm Check Status ~69
Check the current status of a DFM review request. Polls the API for the latest status, progress percentage, findings count, and estimated completion date.
| Name | Type | Req | Description |
|---|---|---|---|
| request_id | string | yes | DFM review request ID (e.g. DFM-A1B2C3D4) |
Structured output declared, but exposes no named fields.
No examples provided.
dfm_deliver_report Dfm Deliver Report ~108
Re-send or deliver the DFM report to a specific email (admin-only). Sends the previously generated PDF report to the specified email, or re-sends to the original customer if no email override is given.
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Optional override recipient email address | |
| message | string | – | Optional custom note to include in the email |
| request_id | string | yes | DFM review request ID (e.g. DFM-A1B2C3D4) |
Structured output declared, but exposes no named fields.
No examples provided.
dfm_estimate Dfm Estimate ~114
Analyze design file complexity and get DFM review pricing. Uploads a design file (Gerber ZIP, .kicad_pcb, or CAD file) to the Source Parts API, which analyzes layer count, component density, HDI features, and blind/buried vias to produce a complexity score and pricing estimate.
| Name | Type | Req | Description |
|---|---|---|---|
| design_path | string | yes | Path to design file (Gerber .zip or .kicad_pcb) |
| tier | string | – | Optional tier selection (basic or comprehensive) |
Structured output declared, but exposes no named fields.
No examples provided.
dfm_generate_report Dfm Generate Report ~88
Generate a PDF report and email it to the customer (admin-only). Triggers the existing PDF generation service, uploads the report to storage, and sends it via Resend to the customer on file. IMPORTANT: Ensure all findings have been added before generating.
| Name | Type | Req | Description |
|---|---|---|---|
| request_id | string | yes | DFM review request ID (e.g. DFM-A1B2C3D4) |
Structured output declared, but exposes no named fields.
No examples provided.
dfm_submit Dfm Submit ~135
Submit a DFM review request with design files and customer info. Uploads the design file, creates a review request in the database, and triggers a Stripe payment intent. Returns a payment URL if payment is required.
| Name | Type | Req | Description |
|---|---|---|---|
| customer_email | string | yes | Customer's email address |
| customer_name | string | yes | Customer's full name |
| design_path | string | yes | Path to design file (Gerber .zip or .kicad_pcb) |
| notes | string | – | Optional notes or requirements |
| promo_code | string | – | Optional promotional code |
| tier | string | yes | Review tier (basic or comprehensive) |
Structured output declared, but exposes no named fields.
No examples provided.
doc_wip_history Doc Wip History ~84
Show past WiP report deliveries for a project or client. Exactly one of project or client must be provided.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | – | – | Optional Bearer token for the landing-page API |
| client | – | – | Filter by client email or name |
| limit | integer | – | Max rows (default 50, max 200) |
| project | – | – | Filter by project name |
Structured output declared, but exposes no named fields.
No examples provided.
doc_wip_new Doc Wip New ~105
Scaffold a new WiP engineering report from the standard template. Writes a markdown file at out_path (or Reports/<slug>.md by default). Refuses to overwrite an existing file.
| Name | Type | Req | Description |
|---|---|---|---|
| out_path | – | – | Output path (default: Reports/<slug>.md) |
| project | string | yes | Short project slug (e.g. "capstone-rev-b") |
| slug | – | – | Override the auto-generated slug (default: WiP-<today>-<project>) |
Structured output declared, but exposes no named fields.
No examples provided.
doc_wip_preview Doc Wip Preview ~39
Audit a WiP report for IP-leak / formatting issues.
| Name | Type | Req | Description |
|---|---|---|---|
| report_path | string | yes | Path to the .md file to audit |
Structured output declared, but exposes no named fields.
No examples provided.
doc_wip_send Doc Wip Send ~154
Send a WiP report — server renders PDF and emails it. Runs the audit in strict mode first; aborts if any errors.
| Name | Type | Req | Description |
|---|---|---|---|
| api_key | – | – | Optional Bearer token for the landing-page API |
| bcc | – | – | Optional BCC recipients |
| cc | – | – | Optional CC recipients |
| client_email | string | yes | Primary client email (for DB row) |
| client_name | string | yes | Recipient display name |
| project_name | string | yes | Project name for the email + DB row |
| report_path | string | yes | Path to the .md file |
| subject | – | – | Email subject (default: derived from filename) |
| to | array | yes | List of recipient email addresses (≥1) |
Structured output declared, but exposes no named fields.
No examples provided.
ecn_create Ecn Create ~283
Create a new Engineering Change Notice (ECN). The API clones the repo, creates the ECN file in ECO/, commits, and optionally pushes to a branch or creates a PR. For local projects, use: `parts project ecn create --id ECN-021 ...`
| Name | Type | Req | Description |
|---|---|---|---|
| affected | string | – | Affected components |
| author | string | – | Author name (defaults to 'Unknown') |
| body | string | – | ECN body content (markdown). If empty, a template is used. |
| branch | – | – | Target branch for the commit (default: main) |
| category | string | – | Optional category (e.g. Electrical, Mechanical, Thermal) |
| create_pr | boolean | – | If True, create a pull request with the change |
| disposition | string | yes | One of: REQUIRED, RECOMMENDED, OPTIONAL |
| ecn_id | string | yes | ECN identifier (e.g. 'ECN-021') |
| ecn_type | string | yes | One of: Design Constraint, Assembly Note, BOM Change, Schematic Change, Process Change |
| project_id | string | yes | Source Parts project ID or git repo URL |
| severity | string | yes | One of: CRITICAL, HIGH, MEDIUM, LOW |
| source | string | – | Source reference |
| title | string | yes | ECN title describing the issue |
Structured output declared, but exposes no named fields.
No examples provided.
ecn_get Ecn Get ~85
Get the full content of a specific ECN by ID. Returns both structured metadata and the full markdown body. For local projects, use: `parts project ecn get <ECN-ID>`
| Name | Type | Req | Description |
|---|---|---|---|
| ecn_id | string | yes | ECN identifier (e.g. 'ECN-006') |
| project_id | string | yes | Source Parts project ID or git repo URL |
Structured output declared, but exposes no named fields.
No examples provided.
ecn_list Ecn List ~138
List all Engineering Change Notices (ECNs) in a project. The API clones the project repo and reads ECO/ECN-*.md files. For local projects, use the `parts` CLI: `parts project ecn list`
| Name | Type | Req | Description |
|---|---|---|---|
| ecn_type | – | – | Filter by type (Design Constraint, Assembly Note, BOM Change, Schematic Change, Process Change) |
| project_id | string | yes | Source Parts project ID or git repo URL |
| severity | – | – | Filter by severity (CRITICAL, HIGH, MEDIUM, LOW) |
| status | – | – | Filter by status (OPEN, IN REVIEW, APPROVED, IMPLEMENTED, CLOSED) |
Structured output declared, but exposes no named fields.
No examples provided.
ecn_update Ecn Update ~229
Update metadata or body of an existing ECN. The API clones the repo, modifies the ECN file, commits, and optionally creates a PR. Only the fields you provide will be changed. For local projects, use: `parts project ecn update ECN-006 --status CLOSED`
| Name | Type | Req | Description |
|---|---|---|---|
| affected | – | – | New affected components |
| body | – | – | New body content (replaces entire body) |
| branch | – | – | Target branch for the commit |
| category | – | – | New category |
| create_pr | boolean | – | If True, create a PR with the change |
| disposition | – | – | New disposition (REQUIRED, RECOMMENDED, OPTIONAL) |
| ecn_id | string | yes | ECN identifier (e.g. 'ECN-006') |
| project_id | string | yes | Source Parts project ID or git repo URL |
| severity | – | – | New severity (CRITICAL, HIGH, MEDIUM, LOW) |
| source | – | – | New source reference |
| status | – | – | New status (OPEN, IN REVIEW, APPROVED, IMPLEMENTED, CLOSED) |
| title | – | – | New title |
Structured output declared, but exposes no named fields.
No examples provided.
ecn_validate Ecn Validate ~80
Validate all ECN files for correct frontmatter schema. The API clones the repo and checks all ECO/ECN-*.md files for required fields, valid enum values, and filename/ID consistency. For local projects, use: `parts project ecn validate`
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Source Parts project ID or git repo URL |
Structured output declared, but exposes no named fields.
No examples provided.
eco_approve Eco Approve ~159
Approve an ECO and optionally batch-approve its ECNs. Sets the ECO status to AUTHORIZED. If approved_ecn_ids is provided, those ECNs are also moved to APPROVED status. If omitted, all ECNs under the ECO are approved.
| Name | Type | Req | Description |
|---|---|---|---|
| approved_ecn_ids | – | – | Specific ECN IDs to approve (default: all ECNs in this ECO) |
| branch | – | – | Target branch for the commit |
| create_pr | boolean | – | If True, create a PR with the changes |
| eco_id | string | yes | ECO identifier (e.g. 'ECO-001') |
| note | string | – | Optional approval note or comment |
| project_id | string | yes | Source Parts project ID or git repo URL |
Structured output declared, but exposes no named fields.
No examples provided.
eco_build_status Eco Build Status ~99
Check build readiness — are all ECOs/ECNs resolved? Returns a summary of every ECO and its ECNs, with counts of how many are blocking the build. The build is ready only when every ECN across all ECOs has reached CLOSED or IMPLEMENTED status. This powers the locked/unlocked state of the Build button on source.parts/build.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Source Parts project ID or git repo URL |
Structured output declared, but exposes no named fields.
No examples provided.
eco_create Eco Create ~195
Create a new Engineering Change Order (ECO) that bundles ECNs. The API clones the repo, creates the ECO file in ECO/, commits, and optionally creates a PR.
| Name | Type | Req | Description |
|---|---|---|---|
| author | string | – | Author name |
| body | string | – | ECO body content (markdown) |
| branch | – | – | Target branch for the commit |
| create_pr | boolean | – | If True, create a pull request with the change |
| ecn_ids | – | – | List of ECN IDs to bundle (e.g. ['ECN-041', 'ECN-042']) |
| eco_id | string | yes | ECO identifier (e.g. 'ECO-003') |
| project_id | string | yes | Source Parts project ID or git repo URL |
| revision | string | yes | Revision identifier (e.g. 'EVT1 → EVT2', 'DVT updates') |
| title | string | yes | ECO title describing the change scope |
Structured output declared, but exposes no named fields.
No examples provided.
eco_feedback Eco Feedback ~107
Station 6: Generate ECN suggestions based on failure patterns. Uses failure analysis data to suggest engineering change notices (e.g., paste aperture changes, AVL updates, design modifications). IMPORTANT: Review ECN suggestions before creating formal ECNs.
| Name | Type | Req | Description |
|---|---|---|---|
| failure_analysis_id | string | – | Reference to a prior failure analysis |
| lot_correlation | – | – | Optional list of lot data [{lot, failure_rate}] |
| top_failures | – | – | Optional list of failure summaries [{failure_mode, count, percentage}] |
Structured output declared, but exposes no named fields.
No examples provided.
eco_get Eco Get ~79
Get full details of a specific ECO including all its ECNs. Returns the ECO metadata, full markdown body, and the complete list of bundled ECNs with their current statuses.
| Name | Type | Req | Description |
|---|---|---|---|
| eco_id | string | yes | ECO identifier (e.g. 'ECO-001') |
| project_id | string | yes | Source Parts project ID or git repo URL |
Structured output declared, but exposes no named fields.
No examples provided.
eco_list Eco List ~85
List all Engineering Change Orders (ECOs) in a project. Returns each ECO with its bundled ECN IDs, status, and a summary of how many ECNs are resolved vs blocking.
| Name | Type | Req | Description |
|---|---|---|---|
| project_id | string | yes | Source Parts project ID or git repo URL |
| status | – | – | Filter by ECO status (e.g. AUTHORIZED, PENDING CLIENT AUTHORIZATION) |
Structured output declared, but exposes no named fields.
No examples provided.
eco_update Eco Update ~176
Update an existing ECO's metadata or status. Only the fields you provide will be changed. Use this to authorize an ECO, update its ECN list, or change its status.
| Name | Type | Req | Description |
|---|---|---|---|
| body | – | – | New body content (replaces entire body) |
| branch | – | – | Target branch for the commit |
| create_pr | boolean | – | If True, create a PR with the change |
| ecn_ids | – | – | Updated list of bundled ECN IDs |
| eco_id | string | yes | ECO identifier (e.g. 'ECO-001') |
| project_id | string | yes | Source Parts project ID or git repo URL |
| revision | – | – | New revision string |
| status | – | – | New status (PENDING CLIENT AUTHORIZATION, AUTHORIZED, IN PROGRESS, COMPLETED, REJECTED) |
| title | – | – | New title |
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.