Skip to main content
Glama
tmpk13

digi-mouse-search

by tmpk13

eparts-search-mcp

一个 MCP 服务器,用于在 DigiKey、LCSC 和 Mouser 上搜索电子元器件。每个分销商可以单独查询,也可以一起查询,相同零件编号的报价会合并为一条记录,方便比较价格。

工具

工具

用途

search_parts

在一个或多个分销商中进行关键词搜索

part_details

按制造商或分销商零件编号查找单个零件

source_status

哪些源已配置,以及剩余多少请求预算

clear_cache

丢弃缓存的响应,以强制获取最新的库存和定价

search_parts 接受一个 sources 列表。省略它则搜索所有已配置的分销商;传入 ["mouser"] 则只搜索该分销商。默认情况下,结果按零件编号合并,并进行 cheapest_at_quantity 比较;传入 merge=false 可将每个分销商的结果保留在单独的列表中。

比较仅考虑在所请求数量下有价格的报价。LCSC 销售的许多零件以十的倍数出售,因此在数量为一时,此类报价没有适用的价格阶梯,会被排除在比较之外,而不是被视为免费。

如果某个分销商失败、未配置或超出配额,其他分销商仍会返回结果,失败情况会在 errors 下报告。

Related MCP server: Nexar MCP Server

安装

要在系统任意位置使用该服务器,请将其安装为独立工具。可执行文件位于 ~/.local/bin(如果设置了 $XDG_BIN_HOME 则使用该路径),其依赖项位于 ~/.local/share/uv/tools 下的独立环境中:

uv tool install .

mise run install-tool 执行相同操作,mise run uninstall-tool 则将其移除。安装后,eparts-search-mcp 可在任何目录下通过 stdio 运行服务器,并从下文所述的 XDG 配置文件中读取凭据。不会触及 ~/.local~/.config 之外的任何内容,因此无需特权安装步骤。

确保 ~/.local/binPATH 中:

export PATH="$HOME/.local/bin:$PATH"

开发环境设置

用于开发服务器而非使用它:

mise install
mise run install
mise run test

凭据可以来自配置文件或环境变量。配置文件可将凭据保留在环境变量和进程列表之外;默认从 ~/.config/eparts-search-mcp/config.toml(或如果设置了 $XDG_CONFIG_HOME 则使用该路径)读取,因此无需 EPARTS_CONFIG

# ~/.config/eparts-search-mcp/config.toml
[providers.digikey]
# DigiKey: register an app at developer.digikey.com with Product Information enabled
client_id = "..."
client_secret = "..."

[providers.lcsc]
# LCSC: partner credentials issued by an account manager
key = "..."
secret = "..."

[providers.mouser]
# Mouser: request a Search API key from mouser.com/api-hub
api_key = "..."

由于该文件包含机密信息,请仅允许您本人读取。如果组或其他用户可访问,服务器会在启动时发出警告:

chmod 600 ~/.config/eparts-search-mcp/config.toml

相同的值也可以通过环境变量提供,环境变量会覆盖文件:

export DIGIKEY_CLIENT_ID=...
export DIGIKEY_CLIENT_SECRET=...
export LCSC_KEY=...
export LCSC_SECRET=...
export MOUSER_API_KEY=...

只需要您实际需要的分销商的凭据。没有凭据的源会被报告为未配置,而不是导致搜索失败。

获取凭据

DigiKey。 个人开发者应用只能获得沙箱访问权限,沙箱返回的是合成数据。要获取真实的库存和定价,您需要一个 Production 应用,该应用位于组织(Organization)下:

  1. 使用您的 DigiKey 账户登录 developer.digikey.com。

  2. 在导航栏中打开 Organizations,如果您还不是成员,请创建一个。

  3. Operations 下,选择 Production Apps,然后选择 Create Production App

  4. 为应用启用 Product Information

  5. 打开应用以复制其 Client IDClient Secret

OAuth 回调字段仅用于三腿 OAuth。此服务器使用两腿客户端凭据流程,因此回调永远不会被重定向;https://localhost 可满足表单要求。

沙箱和生产凭据不可互换。沙箱凭据仅适用于 sandbox-api.digikey.com,这正是 DIGIKEY_SANDBOX=true 所选择的。

LCSC。 Open API 是合作伙伴集成,而非自助注册,因此凭据来自 LCSC 账户经理,且调用 IP 地址需先被列入白名单。接入过程从独立主机(fatapi.lcsc.com)上的测试环境开始,该环境返回模拟目录数据;LCSC_SANDBOX=true 选择该环境。集成签署后,生产凭据才会到达,并用于 api.lcsc.com

调用通过请求参数、密钥、每个请求的 nonce 和时间戳的 SHA-256 签名进行身份验证。密钥是该哈希的输入,永远不会被传输,因此它永远不会出现在 URL 或日志中;时间戳会被检查,这意味着系统时钟严重错误会被视为请求过期,而不是密钥被拒绝。

Mouser。 在 mouser.com/api-hub 申请 Search API 密钥。它是一个单一密钥,作为查询参数发送,并通过电子邮件到达。

MCP 客户端配置

如上安装后,命令位于 PATH 中,无需路径或环境变量,因为凭据来自配置文件:

{
  "mcpServers": {
    "eparts-search-mcp": {
      "command": "eparts-search-mcp"
    }
  }
}

某些客户端以裸环境启动服务器,该环境不包含 ~/.local/bin;请在此处使用绝对路径:

{
  "mcpServers": {
    "eparts-search-mcp": {
      "command": "/home/you/.local/bin/eparts-search-mcp"
    }
  }
}

要从源代码检出运行而不安装,或通过客户端而非配置文件传递凭据:

{
  "mcpServers": {
    "eparts-search-mcp": {
      "command": "/path/to/eparts-search-mcp/.venv/bin/python",
      "args": ["-m", "eparts_search_mcp"],
      "env": {
        "DIGIKEY_CLIENT_ID": "...",
        "DIGIKEY_CLIENT_SECRET": "...",
        "MOUSER_API_KEY": "..."
      }
    }
  }
}

速率限制

每个分销商每天大约授予一千次调用,因此每个请求都有预算。每秒和每分钟窗口通过等待强制执行;每日窗口是硬性停止,会报告错误,因为调用者无法有效地等待在午夜重置的配额。每日计数器是持久化的,因此重启服务器不会重置它。

默认值:

窗口

DigiKey

LCSC

Mouser

每秒

2

1

1

每分钟

60

45

25

每天

1000

1000

1000

突发

5

5

3

最大等待

10 秒

10 秒

10 秒

LCSC 文档规定每分钟 60 次关键词搜索,每天一千次,并且只计算成功的调用。其每分钟默认值设置为低于文档规定的上限,因为被分销商限流比本地等待成本更高。当 LCSC 自己的计数器仍然拒绝调用时,错误会说明这一点,以区别于本地预算。

每个值都可以按提供商配置,既可以通过环境变量,也可以通过 TOML 文件。使用 noneoffunlimited0 禁用窗口:

export DIGIKEY_RATE_PER_DAY=250
export DIGIKEY_RATE_PER_MINUTE=30
export LCSC_RATE_PER_MINUTE=20
export MOUSER_RATE_PER_SECOND=none
export MOUSER_RATE_BURST=5
export MOUSER_RATE_MAX_WAIT=30

这些也存在于配置文件中(默认为 ~/.config/eparts-search-mcp/config.toml,或 EPARTS_CONFIG 指向的位置),请参阅 config.example.toml。环境变量覆盖文件,因此客户端启动命令可以调整限制,而无需编辑磁盘上的配置。

缓存的响应在提供服务时不消耗预算。source_status 报告当天剩余量。

其他设置

变量

默认值

含义

EPARTS_CONFIG

~/.config/eparts-search-mcp/config.toml

TOML 配置文件的路径;未设置时读取默认位置

EPARTS_CACHE_PATH

$XDG_STATE_HOME/eparts-search-mcp/cache.sqlite3

缓存和使用数据库

EPARTS_CACHE_TTL

3600

缓存响应生命周期(秒)

EPARTS_REQUEST_TIMEOUT

30

HTTP 超时(秒)

DIGIKEY_SANDBOX

false

使用 DigiKey 沙箱主机,该主机返回合成数据

DIGIKEY_LOCALE_SITE

US

要搜索的 DigiKey 站点

DIGIKEY_LOCALE_CURRENCY

USD

DigiKey 定价的货币

DIGIKEY_LOCALE_LANGUAGE

en

DigiKey 结果的语言

LCSC_SANDBOX

false

使用 LCSC 测试主机,该主机返回模拟数据

LCSC_CURRENCY

USD

LCSC 定价的货币:USD、EUR、HKD 或 CNY

LCSC_LANGUAGE

EN

LCSC 结果的语言:EN 或 CN

磁盘上的文件

服务器保留的所有内容都位于 XDG 基础目录下,因此安装不会在 home 目录之外拥有任何内容:

内容

位置

可执行文件

$XDG_BIN_HOME,即 ~/.local/bin/eparts-search-mcp

工具环境

~/.local/share/uv/tools/eparts-search-mcp

凭据和设置

$XDG_CONFIG_HOME/eparts-search-mcp/config.toml

缓存和每日使用计数器

$XDG_STATE_HOME/eparts-search-mcp/cache.sqlite3

XDG_CONFIG_HOMEXDG_STATE_HOME 在未设置时默认为 ~/.config~/.local/stateEPARTS_CONFIGEPARTS_CACHE_PATH 覆盖后两者。使用 uv tool uninstall eparts-search-mcp 卸载会保留配置和缓存;要删除它们,请同时删除这些目录。

架构

classDiagram
    class MCPServer {
        search_parts(keyword, sources, merge)
        part_details(part_number, sources)
        source_status()
        clear_cache(source)
    }
    class SearchService {
        +providers: dict
        +limiters: dict
        +resolve_sources(sources)
        +search(...) SearchResult
        +details(...) list~Part~
    }
    class Provider {
        <<abstract>>
        +name: str
        +configured: bool
        +search(...) list~Part~
        +details(...) Part
        #_cached_request(...)
    }
    class DigiKeyProvider {
        -_token: str
        -_access_token()
        -_manufacturer_filter_id(name)
        -_pick_variation(product)
    }
    class LCSCProvider {
        -_headers(payload)
        -_to_part(entry)
        +sign(payload, key, secret, nonce, timestamp)
    }
    class MouserProvider {
        -_parse_response(response)
        +parse_price(raw)
    }
    class RateLimiter {
        +acquire()
        +remaining_today()
    }
    class Cache {
        +get(key)
        +set(key, provider, value, ttl)
        +get_daily_usage(provider, day)
        +increment_daily_usage(provider, day)
    }
    class Part {
        +source, mpn, manufacturer
        +stock, price_breaks, specs
        +unit_price_at(quantity)
    }
    class MergedPart {
        +mpn
        +offers: list~Part~
        +sources
    }

    MCPServer --> SearchService
    SearchService --> Provider
    SearchService --> RateLimiter
    SearchService --> Cache
    Provider <|-- DigiKeyProvider
    Provider <|-- LCSCProvider
    Provider <|-- MouserProvider
    Provider --> RateLimiter : acquire before call
    Provider --> Cache : read before spending budget
    RateLimiter --> Cache : persist daily counter
    Provider --> Part : produces
    MergedPart o-- Part : groups offers by part number

一个提供商调用的请求流程:

sequenceDiagram
    participant C as MCP client
    participant S as SearchService
    participant P as Provider
    participant K as Cache
    participant L as RateLimiter
    participant A as Distributor API

    C->>S: search_parts(keyword, sources)
    S->>S: resolve_sources
    par each source
        S->>P: search(keyword)
        P->>K: get(key)
        alt cached
            K-->>P: payload
        else not cached
            P->>L: acquire()
            alt budget available
                L-->>P: ok
                P->>A: HTTP request
                A-->>P: response
                P->>K: set(key, payload)
            else daily quota spent
                L--)P: RateLimitExceeded
            end
        end
        P-->>S: parts or error
    end
    S->>S: merge by part number
    S-->>C: results plus per source errors

关于三个 API 的说明

DigiKey 使用 OAuth2 客户端凭据。令牌持续十分钟,并在内存中缓存;请求需要客户端 ID 头以及 Bearer 令牌。过滤器表示为不透明的 ID,因此制造商名称首先通过制造商端点解析。

LCSC 对每个请求进行签名,而不是携带令牌:密钥、nonce、时间戳和排序后的查询参数与密钥一起进行哈希处理,摘要放在头中。与 Mouser 一样,即使请求失败,它也返回 HTTP 200,将真实结果放在响应的 code 字段中,适配器将其视为权威。没有按零件端点,因此详细信息查找是关键词搜索,从中挑选出精确匹配;仅返回近似匹配的关键词搜索不会产生结果,而不是可能错误的结果。也没有制造商过滤器,因此制造商被合并到关键词中,并在返回时过滤结果。

Mouser 使用作为查询参数传递的 API 密钥,即使请求失败也返回 HTTP 200,将失败信息放在 Errors 数组中。适配器将该数组视为权威。价格以本地化显示字符串而非数字形式到达。

参数规格在三个分销商之间没有共享词汇,因此它们作为名称/值映射传递,而不是规范化为通用模式。LCSC 的卷盘附加费也以相同方式报告,因为它是每订单费用,每单位价格阶梯无法表达。

本工具的制作使用了 Claude Code。

Install Server
A
license - permissive license
A
quality
B
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables searching for electronic components through the Nexar Supply API, providing detailed part information including manufacturer, pricing, specifications, and datasheets.
  • F
    license
    Not graded
    quality
    C
    maintenance
    Enables searching for electronic components, comparing prices across distributors, checking availability, and retrieving datasheets through the Nexar/Octopart API with specialized tools for resistors, capacitors, inductors, semiconductors, crystals, and connectors.
    8
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides access to the DigiKey Product Search API v4, allowing users to search for electronic components and retrieve detailed product specifications. It supports keyword searches, pricing inquiries, manufacturer lookups, and access to technical datasheets.
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables searching and filtering over 1.5 million electronic components across JLCPCB, Mouser, and DigiKey using parametric queries and smart parsing. It supports finding alternative parts, accessing pinout data, and downloading KiCad footprints directly through AI coding assistants.
    11
    102
    MIT

View all related MCP servers

Related MCP Connectors

  • Electronic component sourcing, BOM management, and PCB design workflows.

  • Electronic component datasheets for AI agents — specs, pinouts, package data on demand.

  • Hosted no-auth MCP for exact-spec packaging search, live price, stock, cart handoff, and no-match.

View all MCP Connectors

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/tmpk13/eparts-search-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server