Source Parts MCP Server
OfficialServer Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| SOURCE_PARTS_API_KEY | No | API key for authenticated requests. The server works without an API key for public product searches. An API key provides access to additional features like higher rate limits, access to private/draft products, bulk operations, and historical data. | |
| SOURCE_PARTS_API_URL | No | API base URL (defaults to https://source.parts/api) | https://source.parts/api |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| logging | {} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| extensions | {
"io.modelcontextprotocol/ui": {}
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_partsC | Search for electronic parts across suppliers. |
| search_by_parametersC | Search parts by specific parameters. |
| get_part_detailsB | Get detailed information about a specific part. |
| compare_pricesA | Compare prices for a part across multiple suppliers. |
| check_availabilityC | Check availability for multiple parts. |
| find_alternativesC | Find alternative parts with similar specifications. |
| calculate_bom_costC | Calculate total cost for a bill of materials. |
| submit_dfmC | Queue a DFM (Design for Manufacturability) analysis for a project. |
| check_dfm_statusC | Check the status of a DFM analysis job. |
| check_bom_statusA | 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. |
| upload_bomA | 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. |
| quote_fabricationA | 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. |
| check_manufacturing_statusA | Check the status of any manufacturing job (fab, DFM, AOI, QC). |
| estimate_costA | Get a quick cost estimate for a list of parts. Each part should have at minimum a part_number and quantity field. |
| check_identification_statusA | Check the status of a PCB/component identification job. |
| get_identified_itemB | Get details for an identified PCB/component by short code. |
| upload_gerbers_for_quoteA | 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. |
| quote_assemblyA | 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. |
| identify_pcbC | Identify a PCB or component from a photo. Uploads an image for barcode/QR code detection, OCR text extraction, and component identification. |
| read_datasheetA | Read and chunk a datasheet PDF for analysis. Two input modes:
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. |
| list_datasheet_sectionsA | 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:
|
| get_cli_documentationA | Get documentation for the Source Parts CLI tool. Returns usage guides, command reference, and examples for the |
| trigger_part_renderA | 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. |
| check_render_statusA | Check the status of a Blender render job. Returns the CDN URL when the render is complete, or the error message if it failed. |
| ecn_listA | 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 |
| ecn_getA | Get the full content of a specific ECN by ID. Returns both structured metadata and the full markdown body.
For local projects, use: |
| ecn_createA | 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: |
| ecn_updateA | 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: |
| ecn_validateA | 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: |
| eco_listB | 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. |
| eco_getA | 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. |
| eco_createA | 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. |
| eco_updateA | 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. |
| eco_approveA | 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. |
| eco_build_statusA | 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. |
| list_doc_safelistA | 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. |
| add_doc_safelistA | 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. |
| remove_doc_safelistA | 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. |
| scan_docA | 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. |
| user_profileA | 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 |
| get_preferencesA | 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. |
| set_preferencesA | 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. |
| list_devicesA | 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 |
| admin_set_user_roleA | Set a user's role level. Owner-only. |
| admin_list_usersA | List all users. Owner-only. |
| dfm_estimateA | 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. |
| dfm_submitA | 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. |
| dfm_check_statusA | Check the current status of a DFM review request. Polls the API for the latest status, progress percentage, findings count, and estimated completion date. |
| dfm_add_findingsA | 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. |
| dfm_generate_reportA | 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. |
| dfm_deliver_reportA | 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. |
| parts_cliA | Run a Executes the Parts CLI Command ReferenceECN Management (project ecn)List all ECNsparts project ecn list [--dir ECO] Alias: parts project ecn ls Get ECN detailsRead the file directly: ECO/ECN-006.md Create a new ECNparts project ecn create Types: Design Constraint | Assembly Note | BOM Change | Schematic Change | Process Change Severity: CRITICAL | HIGH | MEDIUM | LOW Disposition: REQUIRED | RECOMMENDED | OPTIONAL Validate ECN filesparts project ecn validate [--dir ECO] Migrate monolithic log to individual filesparts project ecn migrate --source Reports/ECN_Log_V1.0.md [--output-dir ECO] Fabrication (fab)Stackup PDF from gerbersparts fab stackup <gerbers.zip> [-b "Board Name"] [--scale 3] [-o output.pdf] [--prefix "Board_V1.03"] Placement / pick-and-placeparts fab placement [positions.csv] Net trace highlightparts fab highlight <board.kicad_pcb> Assembly guide PDFparts fab assembly Test point reportparts fab testpoints <positions.csv> Gerber diffparts fab diff <v1.zip> <v2.zip> [--name-a "V1" --name-b "V2"] Structural diff reportparts fab report <v1.zip> <v2.zip> X-ray inspection reportparts fab xray Releaseparts fab release Machine SD cardparts fab machine BOMUpload BOMparts bom <filename.xlsx> [-p project_id] [--wait] [--no-lcsc] [--dfm-check] Generate BOM PDFparts bom pdf [bom.csv] [-b "Board Name"] [-o output.pdf] [--prefix "Board_V1.03"] Clean EIA capacitor codesparts bom clean <bom.csv> Convert CSV to Excelparts bom convert <file.csv> Fetch datasheets for BOM partsparts bom datasheets <bom.csv> Enrich BOM with descriptionsparts bom enrich <bom.csv> Check BOM job statusparts bom status <job_id> ProjectInit new projectparts init [path] [-t dfm|pcb|assembly] [-a "Author"] [-d "Description"] [--skip-git] [-i] Project CRUDparts project create parts project list parts project get parts project delete ECO (Engineering Change Order)parts project eco Statusparts status Search & PartsSearch partsparts search [--in-stock] [--eu-only|--us-only|--cn-only] Smart query (search, URL, SMD codes)parts q Price estimateparts price Inventory checkparts inventory Datasheetparts datasheet Find alternativesparts guide SMD code decodeparts smd Resistor color bandsparts resistor Part marking lookupparts marking IQC / IngestUpload images for identificationparts ingest <file_or_dir> [-p project_id] [-b box_id] [--wait] [--recursive] [--dry-run] Detect from photoparts detect Scan barcodeparts scan List IQC itemsparts ingest items Reprocess itemparts ingest reprocess <short_code> ManufacturingDFM analysisparts dfm <project_id> AOI inspectionparts aoi QC inspectionparts qc EDA (eda)DXF board outline infoparts eda dxf <file.dxf> [--json] Parse a DXF file and report board outline dimensions, bounding box, entity count, and layer names. Example: parts eda dxf board_outline.dxf Example: parts eda dxf board_outline.dxf --json Electrical Rules Checkparts eda erc <file.kicad_sch> [--severity all|error|warning] [--rules file] [--json] Upload a KiCad schematic and run ERC. Returns violations by severity. Design Rules Checkparts eda drc <file.kicad_pcb> [--severity all|error|warning] [--rules file.kicad_dru] [--json] Upload a KiCad PCB and run DRC. Returns violations by severity. Import Altium to KiCadparts eda import altium <file.SchDoc|.PcbDoc> [-o output] [--name project] [--revision EVT1] [--no-git] Convert Altium schematic or PCB to KiCad format. Orders & CommerceGet quoteparts fab quote RFQparts rfq Add to cartparts cart Buyparts buy COGS calculationparts cogs <bom_id|project_id> [-q quantity] MiscAuthparts auth Balanceparts balance Historyparts history Labelsparts label Notesparts note "text" Todosparts todo "text" Tracker (price/qty watch)parts tracker Wishlistparts wishlist Expensesparts expense Reportsparts report Git operationsparts push parts pull parts log parts tag GitHub Actionsparts github report --project --repo <owner/repo> [--thread-id ] Global flags (apply to all commands)-q, --quiet Suppress progress output -v, --verbose Verbose output -h, --help Help for any command |
| extract_bom_from_kicadB | Extract bill of materials from a KiCad project. |
| find_kicad_projectsA | Find KiCad projects in configured search paths. Returns: List of found KiCad projects |
| match_components_to_partsC | Match KiCad components to real parts. |
| analyze_kicad_projectC | Analyze a KiCad project to extract detailed information. |
| extract_netlist_from_projectB | Extract netlist information from a KiCad project. |
| open_in_kicadB | Open a KiCad project in the KiCad application. |
| highlight_net_tracesA | Highlight specific net traces on a PCB and generate PDF(s). Renders highlighted net traces as vector PDFs. Supports two output modes:
|
| convert_kicad_versionA | 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. |
| convert_allegroA | 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. |
| convert_padsA | 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. |
| convert_gedaA | 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. |
| convert_protelA | 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. |
| export_parts_to_kicadB | Export parts data in KiCad-compatible format. |
| kicad_ctrl_ercA | 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. |
| kicad_ctrl_netlist_diffA | 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. |
| kicad_ctrl_analyzeA | 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. |
| kicad_ctrl_propose_ripupA | 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. |
| kicad_ctrl_execute_ripupA | 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. |
| kicad_ctrl_validateB | Station 5: Run DRC validation on the PCB. IMPORTANT: Review DRC results before proceeding to export. |
| kicad_ctrl_exportB | Station 6: Export gerbers, drill files, and positions. Downloads a ZIP from the API containing all fabrication files. |
| edit_schematic_placeA | 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. |
| edit_schematic_wireB | Add a wire segment between two points in a schematic. |
| edit_schematic_valueC | Update a component property value in a schematic. |
| edit_schematic_removeB | Remove a component from a schematic by reference designator. |
| review_schematicA | Compare two schematic versions and return structured diff. Shows added/removed components, changed values, and net changes. |
| render_schematicB | Render a schematic as PDF for visual review. Uses kicad-cli on the server to export the schematic as a PDF. |
| suggest_rerouteA | 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. |
| get_project_contextA | 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. |
| sales_quote_buildA | 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. |
| sales_quote_negotiateA | 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. |
| sales_order_convertA | 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. |
| sales_invoice_generateB | 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. |
| sales_commission_calculateB | Station 5: Calculate sales commission on an order. Computes commission payout based on order total and the given commission structure (percentage or flat amount). |
| assembly_readiness_checkA | 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. |
| assembly_feeder_setupA | 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. |
| assembly_reflow_profileA | 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. |
| assembly_aoi_inspectA | 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. |
| assembly_functional_testA | 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. |
| logistics_create_shipmentB | 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. |
| logistics_track_shipmentA | Station 2: Track a shipment and get current status. Returns tracking events with timestamps, locations, and status updates. |
| logistics_customs_declareA | 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. |
| logistics_consignment_manifestA | 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. |
| logistics_inventory_reconcileA | 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. |
| supply_chain_procurement_approveB | 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. |
| supply_chain_avl_qualifyB | 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. |
| supply_chain_obsolescence_checkA | 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. |
| design_schematic_reviewA | 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. |
| design_impedance_calculateA | Calculate controlled impedance for a PCB trace. Computes characteristic impedance using standard formulas for microstrip, stripline, or differential pair configurations. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| find_resistor | Help finding the right resistor. |
| source_bom | Help sourcing a complete bill of materials. |
| find_alternative | Help finding alternative parts. |
| parametric_search | Help with parametric component search. |
| quick_availability | Quick availability check for parts. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| list_part_categories | List available part categories. |
| list_search_parameters | List available search parameters for parts. |
| list_suppliers | List available electronic component suppliers through Source Parts API. |
| supplier_capabilities | Get capabilities provided by Source Parts API. |
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/SourceParts/parts-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server