mcpField
M
mouser

mouser

github.com/aklofas其他1.5k499 次安装5 天前更新
代码仓库

关于 mouser

mouser 技能通过 Mouser Search API 或网页搜索查询元件,返回规格、价格、库存及生命周期等信息。它支持按原理图或 MPN 列表同步数据手册 PDF,并采用多种来源尝试处理下载受限的情况。

主要功能

  1. 01按关键词、MPN 和制造商搜索
  2. 02查询规格、价格与库存
  3. 03查看生命周期和替代型号
  4. 04按原理图或 MPN 列表同步 PDF
  5. 05多来源尝试下载数据手册

适用场景

  1. 01在 DigiKey 缺货时查找备选货源
  2. 02比较元件价格、库存与订购限制
  3. 03为 KiCad 项目同步数据手册

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/aklofas/kicad-happy --skill mouser

安装后在 Claude Code 中输入/mouser确认已加载。

附带文件scripts/fetch_datasheet_mouser.pyscripts/sync_datasheets_mouser.py

详细介绍

Mouser Electronics 零件搜索与分析

相关技能

技能用途
kicad原理图分析 — 提取 MPN 以查询零件
bomBOM 管理 — 协调从多个分销商采购
digikey原型采购的首选来源(数据手册优先使用此来源 — 提供直接 PDF 链接)
spice使用 Mouser 参数数据构建行为级 SPICE 模型

Mouser 是原型订单的次选来源——当 DigiKey 缺货或价格更高时使用。生产订单请参阅 lcsc/jlcpcb。BOM 管理和导出工作流请参阅 bom。数据手册优先使用 DigiKey 的 API(提供直接 PDF 链接)——Mouser 会阻止自动下载 PDF。

API 凭据设置

Mouser 使用简单的 API 密钥身份验证——无需 OAuth、令牌或回调 URL。Search API 密钥是作为查询参数传递的 UUID。

获取 API 密钥
  1. 前往 mouser.com → My Mouser → My Account
  2. 在“APIs”部分下,点击“Manage”
  3. 注册 Search API 密钥——这是查询零件和下载数据手册所需的密钥
  4. Search API 密钥可能需要审批(状态最初会显示为“pending authorization”)
设置凭据

运行脚本前设置环境变量:

export MOUSER_SEARCH_API_KEY=your-search-api-key-uuid

如果凭据存储在中央机密文件中(例如 ~/.config/secrets.env),请先加载:

export $(grep -v '^#' ~/.config/secrets.env | grep -v '^$' | xargs)

Mouser Search API 参考

所有搜索端点都将 Search API 密钥用作查询参数:?apiKey=<key>。所有 POST 请求的 Content-Type 均为 application/json。

V1 端点
关键词搜索
POST /api/v1/search/keyword?apiKey=<key>
{
  "SearchByKeywordRequest": {
    "keyword": "100nF 0402 ceramic capacitor",
    "records": 50,
    "startingRecord": 0,
    "searchOptions": "InStock"
  }
}
  • searchOptions:"None" | "Rohs" | "InStock" | "RohsAndInStock"
  • records:每次请求最多 50 条记录
  • startingRecord:分页偏移量
零件编号搜索
POST /api/v1/search/partnumber?apiKey=<key>
{
  "SearchByPartRequest": {
    "mouserPartNumber": "GRM155R71C104KA88D|RC0402FR-0710KL",
    "partSearchOptions": "Exact"
  }
}
  • 最多 10 个零件编号,以竖线 (|) 分隔
  • 同时支持 Mouser 零件编号和制造商零件编号(MPN)
  • partSearchOptions:"Exact" | "BeginsWith" | "Contains"
V2 端点

V2 新增制造商筛选,并支持按页码分页。

关键词 + 制造商搜索
POST /api/v2/search/keywordandmanufacturer?apiKey=<key>
{
  "SearchByKeywordMfrNameRequest": {
    "keyword": "LMR51450",
    "manufacturerName": "Texas Instruments",
    "records": 25,
    "pageNumber": 1,
    "searchOptions": "InStock"
  }
}

注意:包装对象名称为 SearchByKeywordMfrNameRequest(不是 SearchByKeywordMfrRequest——V1 名称已弃用)。

零件编号 + 制造商搜索
POST /api/v2/search/partnumberandmanufacturer?apiKey=<key>
制造商列表
GET /api/v2/search/manufacturerlist?apiKey=<key>

返回用于筛选搜索的完整制造商名称列表。

已弃用的 V1 端点

这些端点仍可用,但优先使用对应的 V2 端点:

  • POST /api/v1/search/keywordandmanufacturer → 使用 V2
  • POST /api/v1/search/partnumberandmanufacturer → 使用 V2
  • GET /api/v1/search/manufacturerlist → 使用 V2

搜索响应结构

所有搜索端点都返回相同格式的响应:

{
  "Errors": [],
  "SearchResults": {
    "NumberOfResult": 142,
    "Parts": [...]
  }
}
关键零件字段
字段类型描述
MouserPartNumberstringMouser 的内部零件编号(带前缀,例如 81-GRM155R71C104KA88)
ManufacturerPartNumberstring制造商零件编号(MPN)——用于跨分销商匹配
Manufacturerstring制造商名称
Descriptionstring产品描述
Categorystring产品类别
DataSheetUrlstring规格书 PDF 的 URL(由 Mouser 托管——参见“规格书”部分)
ProductDetailUrlstringMouser 产品页面的 URL
ImagePathstring产品图片 URL
Availabilitystring易读的库存文本(例如,“2648712 In Stock”)
AvailabilityInStockstring数字形式的库存数量(字符串)
AvailabilityOnOrderarray在途库存:[{Quantity, Date}]
LeadTimestring工厂交货周期(例如,“84 Days”)
LifecycleStatusstring|null“New Product”、“End of Life”等
IsDiscontinuedstring“true”或“false”(字符串,而非布尔值)
SuggestedReplacementstring停产产品的替代 MPN
Minstring最小订购数量(字符串)
Multstring订购倍数(字符串)
Reelingbool是否提供编带卷盘包装
ROHSStatusstringRoHS 合规状态
PriceBreaksarray阶梯价格:[{Quantity, Price, Currency}]
ProductAttributesarray参数规格:[{AttributeName, AttributeValue}]
AlternatePackagingsarray|null其他包装的 MPN:[{APMfrPN}]
SurchargeMessagesarray关税/附加费信息:[{code, message}]
ProductCompliancearrayHTS 编码、ECCN:[{ComplianceName, ComplianceValue}]
UnitWeightKgobject以千克为单位的 {UnitWeight: <float>}
特性与注意事项
  • 价格是字符串,包含货币符号:"$0.10",而不是浮点数。比较前请先解析。
  • 库存是字符串:AvailabilityInStock 返回 "2648712",而不是 2648712。
  • IsDiscontinued 是字符串:“true”或“false”,而不是布尔值。
  • Mouser 零件编号带有前缀:81-GRM155R71C104KA88——此前缀由 Mouser 专用。请使用 ManufacturerPartNumber 进行交叉引用。
  • V2 包装器名称与 V1 不同:V2 使用 SearchByKeywordMfrNameRequest,而不是 SearchByKeywordMfrRequest。
  • 关税信息:SurchargeMessages 可能包含美国关税比例,可用于成本估算。
  • 在途数据:AvailabilityOnOrder 显示在途库存数量和预计日期。

规格书下载与同步

Mouser 的 DataSheetUrl 字段指向 Mouser 托管的 URL(mouser.com/datasheet/...)。这些 URL 会阻止自动下载——使用 Python/curl/wget 获取时,即使设置了浏览器 User-Agent 标头,也会返回 HTML“Access denied”页面。下载脚本通过多种策略处理此问题:

  1. 直接尝试 Mouser 规格书 URL(对部分零件有效)
  2. 从 Mouser 产品页面 HTML 中抓取替代规格书链接
  3. 尝试制造商专用的替代 URL 模式

注意:Mouser 产品页面会对大多数自动请求返回 403,因此策略 2 的成功率有限。DigiKey 和 LCSC 是更可靠的规格书来源。

数据手册目录同步

使用 sync_datasheets_mouser.py 在 KiCad 项目旁维护 datasheets/ 目录。工作流和 manifest.json 格式与 DigiKey 技能相同。

# Sync datasheets for a KiCad project
python3 <skill-path>/scripts/sync_datasheets_mouser.py <file.kicad_sch>

# Preview what would be downloaded
python3 <skill-path>/scripts/sync_datasheets_mouser.py <file.kicad_sch> --dry-run

# Retry previously failed downloads
python3 <skill-path>/scripts/sync_datasheets_mouser.py <file.kicad_sch> --force

# Custom output directory
python3 <skill-path>/scripts/sync_datasheets_mouser.py <file.kicad_sch> -o ./my-datasheets

# Parallel downloads (3 workers)
python3 <skill-path>/scripts/sync_datasheets_mouser.py <file.kicad_sch> --parallel 3

# Batch mode — sync from a plain MPN list (no KiCad project required)
python3 <skill-path>/scripts/sync_datasheets_mouser.py --mpn-list mpns.txt --output ./datasheets

MPN 列表批处理模式(KH-312)——当你有 MPN 列表,但没有可供指定的 KiCad 项目时使用(用于 harness 数据手册填充、批量填充零件库)。每行一个 MPN;空行和 # 注释(整行及行内注释)都会跳过;通用值(100nF、DNP)会通过 is_real_mpn() 过滤,并进行去重。省略 --output 时,输出默认为当前工作目录下的 ./datasheets/。

速率限制——脚本默认在请求之间延迟 1.0s,以控制 API 调用速度(Mouser 的 Search API 在免费套餐下每分钟允许 30 次调用;1.0s 的间隔远低于此限制)。如果你使用更高级别的密钥,或希望进一步放慢速度,可使用 --delay <seconds> 覆盖默认值。

下载单个数据手册

使用 fetch_datasheet_mouser.py 下载单个文件。

# Search by MPN (uses Mouser API)
python3 <skill-path>/scripts/fetch_datasheet_mouser.py --search "TPS61023DRLR" -o datasheet.pdf

# Direct URL download
python3 <skill-path>/scripts/fetch_datasheet_mouser.py "https://example.com/datasheet.pdf" -o datasheet.pdf

# JSON output
python3 <skill-path>/scripts/fetch_datasheet_mouser.py --search "ADP1706" --json
下载策略

脚本会按顺序尝试多个来源:

  1. 原理图 URL——使用 KiCad 符号中嵌入的数据手册 URL(仅同步时使用)
  2. Mouser API 搜索——从 API 响应中获取 DataSheetUrl
  3. 制造商备用来源——当 Mouser URL 被屏蔽时,尝试主要制造商(TI、Microchip 等)的已知 URL 模式
  4. 无头浏览器备用方案——如果已安装 playwright,则最后尝试使用无头 Chromium

所有方法都失败时,向用户提供 ProductDetailUrl,以便他们在浏览器中从 Mouser 产品页面下载。

网页搜索备用方案

如果没有 API 密钥,可直接获取产品页面来搜索 Mouser:

  • 搜索 URL:https://www.mouser.com/c/?q=<query>
  • 产品页面包含完整规格、价格阶梯、库存和数据手册
  • Mouser 的搜索结果可能较嘈杂(页面大量依赖 JS)

在查询中加入关键参数:

  • 无源器件:数值、封装(0402/0603/0805)、容差、电压/功率额定值、介质(C0G/X7R)
  • IC:零件编号或功能、封装(QFN/SOIC/TSSOP)、关键规格(电压、电流、接口)
  • 连接器:类型(USB-C、JST-PH)、引脚数、间距、安装方式(SMD/THT)、方向

提示

  • 使用竖线分隔符,可在一次 PartNumber 搜索中查询最多 10 个零件编号
  • Min 和 Mult 字段很重要——某些零件有最低订购数量,或必须按倍数订购
  • SurchargeMessages 可能包含美国关税百分比——估算成本时应将其考虑在内
  • AvailabilityOnOrder 显示预计到货日期和在途库存
  • 选择零件前,检查 IsDiscontinued 和 LifecycleStatus

评论

支持 Markdown