Context-hub electronics-sourcing
Guide for AI agents to source electronic components using parts-mcp — tool sequencing, decision patterns, and multi-step workflows
git clone https://github.com/andrewyng/context-hub
T=$(mktemp -d) && git clone --depth=1 https://github.com/andrewyng/context-hub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/content/sourceparts/skills/electronics-sourcing" ~/.claude/skills/andrewyng-context-hub-electronics-sourcing && rm -rf "$T"
content/sourceparts/skills/electronics-sourcing/SKILL.mdElectronics Sourcing Skill
This skill teaches you how to source electronic components effectively using parts-mcp tools. It covers tool sequencing, decision patterns, and how to handle common scenarios.
When to Use Which Search Tool
— Use when you have a part number, description, or general keywords. This is your default starting point.search_parts
"Find me a 100nF capacitor" → search_parts(query="100nF capacitor") "Look up STM32F411" → search_parts(query="STM32F411")
— Use when you need to match specific electrical parameters within a category. More precise than keyword search.search_by_parameters
"I need a 50V 100nF X7R 0402 cap" → search_by_parameters( parameters={"capacitance": "100nF", "voltage": "50V", "dielectric": "X7R", "package": "0402"}, category="capacitor" )
Decision rule: If the user gives you 3+ specific parameters, use
search_by_parameters. For part numbers or general queries, use search_parts.
The Search → Price → Availability → Alternative Pattern
This is the core sourcing workflow. Follow this sequence:
1. SEARCH → Find the part 2. DETAILS → Get full specifications (if needed for validation) 3. PRICE → Compare across suppliers 4. AVAILABILITY → Check stock levels 5. ALTERNATIVE → Find replacements (only if price is too high or stock is insufficient)
Do not skip steps 3 and 4. A part that exists in the database may be out of stock or prohibitively expensive.
When the user asks to "source" or "find" a part, they expect pricing and availability — not just search results. Always follow through to at least step 4.
BOM Processing Pattern
BOM processing is asynchronous. Always follow this exact sequence:
1. upload_bom(file_path=path) → Get job_id 2. check_bom_status(job_id=job_id) → Poll until status is "complete" 3. Review matched_parts and unknown_parts 4. For unmatched: search_parts() to resolve manually 5. calculate_bom_cost() with all resolved parts
Polling: Call
check_bom_status and check the status field. If "in_progress", wait and poll again. Do not assume instant completion.
Handling unmatched parts: When
unknown_parts is not empty, try search_parts with the value and footprint fields as the query. If still unmatched, report them to the user — do not silently skip them.
Datasheet Reading Strategy
Datasheets can be hundreds of pages. Always use this two-step approach:
1. list_datasheet_sections(sku="PART-NUMBER") → See the table of contents → Identify which sections contain what you need 2. read_datasheet(sku="PART-NUMBER", query="relevant keywords") → Read only matching chunks → Saves significant context window
Never call
read_datasheet without a query parameter unless the datasheet is short (< 20 pages). An unfiltered read of a 200-page datasheet will consume excessive context.
Keyword tips: Use specific technical terms. "maximum input voltage absolute ratings" is better than "voltage". Multiple keywords narrow the results.
Manufacturing Pipeline
Manufacturing operations (DFM, fab quoting, assembly) are all asynchronous:
submit_dfm() → check_dfm_status() # DFM analysis quote_fabrication() → check_manufacturing_status() # Fab quote quote_assembly() → polls internally # Combined fab + assembly
DFM first: Always run DFM analysis before requesting a fabrication quote. DFM may reveal issues that affect manufacturability or cost.
Assembly quotes combine fabrication and BOM costing in one call. Use
quote_assembly when the user wants a complete per-unit cost including both PCB fabrication and component assembly.
Handling Partial Failures
Real-world sourcing often has partial results. Handle gracefully:
Some parts not found in BOM:
- Report the unmatched count clearly
- Attempt
for each unmatched partsearch_parts - If still unmatched, list them for the user with their reference designators and values
- Calculate cost for matched parts, noting the incomplete total
Some parts unavailable:
- Report which parts are out of stock
- Automatically call
for each unavailable partfind_alternatives - Present alternatives with their specifications and pricing
- Let the user decide on substitutions
Price comparison with missing suppliers:
- Report how many suppliers were checked
- Note if key suppliers (the user's preferred ones) returned no results
- Present available pricing data without waiting for all suppliers
KiCad Project Workflow
When working with KiCad projects:
1. find_kicad_projects() → Discover available projects 2. analyze_kicad_project(project_path=...) → Understand project structure 3. extract_bom_from_kicad(project_path=...) → Get component list 4. match_components_to_parts(components=...) → Match to real parts 5. Follow the BOM processing pattern above for unmatched components
KiCad CLI requirement: BOM extraction may invoke
kicad-cli if no existing BOM file is found in the project. Ensure KiCad 8+ is installed.
Local mode only: All KiCad tools require local mode (stdio transport). They are not available in hosted/HTTP mode.
Cost Optimization Tips
When helping users optimize costs:
- Check quantity breaks: Call
with different quantities (1, 10, 100, 1000) to show price break curvescompare_prices - Suggest alternatives: If a part is expensive, call
and compare pricingfind_alternatives - Preferred suppliers: Use
inpreferred_suppliers
to bias toward the user's existing supplier relationshipscalculate_bom_cost - Consolidation: When multiple parts come from the same supplier, note the potential for consolidated shipping
Response Patterns
When a user asks to "source a part": →
search_parts → get_part_details → compare_prices → check_availability
Present: part details, best price, stock status, and any concerns.
When a user provides a BOM file: →
upload_bom → poll check_bom_status → report matched/unmatched → calculate_bom_cost
Present: match rate, unmatched items, total cost, per-line breakdown.
When a user asks "is this in stock?": →
check_availability with quantities
Present: stock levels, number of suppliers with stock, whether quantity is meetable.
When a user asks about a datasheet: →
list_datasheet_sections → read_datasheet with targeted query
Present: the specific information requested, citing page numbers.
When a user asks for a manufacturing quote: →
submit_dfm (if not already done) → quote_fabrication or quote_assembly
Present: DFM issues (if any), estimated cost, lead time.