digi-mouse-search
digi-mouse-search
DigiKey と Mouser の両方で電子部品を検索する MCP サーバーです。各販売代理店を単独で、または両方をまとめて検索でき、同じ部品番号のオファーは単一のエントリに統合されるため、価格を比較できます。
ツール
ツール | 目的 |
| 一方または両方の販売代理店を横断するキーワード検索 |
| メーカーまたは販売代理店の部品番号で単一部品を検索 |
| 設定されているソースと、残りのリクエスト予算の確認 |
| キャッシュされた応答を破棄し、最新の在庫と価格を取得 |
search_parts は sources リストを受け取ります。省略すると設定済みのすべての販売代理店を検索し、["mouser"] を渡すとその代理店のみを検索します。結果はデフォルトで部品番号ごとに統合され、cheapest_at_quantity 比較が行われます。merge=false を渡すと、各販売代理店の結果を別々のリストに保持します。
一方の販売代理店が失敗した場合、未設定の場合、または割り当て枠を使い切った場合でも、他の代理店は結果を返し、失敗は errors の下に報告されます。
セットアップ
mise install
mise run install
mise run test認証情報は環境変数から取得します:
# DigiKey: register an app at developer.digikey.com with Product Information enabled
export DIGIKEY_CLIENT_ID=...
export DIGIKEY_CLIENT_SECRET=...
# Mouser: request a Search API key from mouser.com/api-hub
export MOUSER_API_KEY=...実際に使用する販売代理店の認証情報のみが必要です。認証情報がないソースは、検索が失敗するのではなく未設定として報告されます。
認証情報の取得
DigiKey。 個人の開発者アプリは常にサンドボックスアクセスのみが付与され、サンドボックスは合成データを返します。実際の在庫と価格を取得するには、Organization 配下にある Production アプリが必要です:
developer.digikey.com に DigiKey アカウントでサインインします。
ナビゲーションバーの Organizations を開き、まだメンバーでない場合は作成します。
Operations の下で Production Apps を選択し、Create Production App を選択します。
アプリで Product Information を有効にします。
アプリを開いて Client ID と Client Secret をコピーします。
OAuth コールバックフィールドは、スリーレッグ OAuth でのみ使用されます。このサーバーはツーレッグのクライアント認証情報フローを使用するため、コールバックへのリダイレクトは発生しません。https://localhost でフォームを満たせます。
サンドボックスと本番の認証情報は互換性がありません。サンドボックスの認証情報は sandbox-api.digikey.com に対してのみ機能し、これは DIGIKEY_SANDBOX=true で選択されます。
Mouser。 mouser.com/api-hub で Search API キーをリクエストします。これは単一のキーで、クエリパラメータとして送信され、メールで届きます。
MCP クライアント設定
{
"mcpServers": {
"digi-mouse-search": {
"command": "/path/to/digi-mouse-search/.venv/bin/python",
"args": ["-m", "digi_mouse_search"],
"env": {
"DIGIKEY_CLIENT_ID": "...",
"DIGIKEY_CLIENT_SECRET": "...",
"MOUSER_API_KEY": "..."
}
}
}
}レート制限
両方の販売代理店は 1 日あたり約 1,000 回の呼び出しを許可するため、すべてのリクエストに予算が設定されています。1 秒あたりおよび 1 分あたりのウィンドウは待機によって強制されます。日次ウィンドウはハードストップで、代わりにエラーを報告します。呼び出し側が深夜にリセットされる割り当てを待つことは実用的ではないためです。日次カウンターは永続化されるため、サーバーを再起動してもリセットされません。
デフォルト:
ウィンドウ | DigiKey | Mouser |
1 秒あたり | 2 | 1 |
1 分あたり | 60 | 25 |
1 日あたり | 1000 | 1000 |
バースト | 5 | 3 |
最大待機時間 | 10 秒 | 10 秒 |
すべての値は、環境変数または TOML ファイルによってプロバイダーごとに設定できます。ウィンドウを無効にするには none、off、unlimited、または 0 を使用します:
export DIGIKEY_RATE_PER_DAY=250
export DIGIKEY_RATE_PER_MINUTE=30
export MOUSER_RATE_PER_SECOND=none
export MOUSER_RATE_BURST=5
export MOUSER_RATE_MAX_WAIT=30または DMS_CONFIG をファイルに指定します。config.example.toml を参照してください。環境変数はファイルより優先されるため、クライアントの起動コマンドでディスク上の設定を編集せずに制限を調整できます。
キャッシュされた応答は予算を消費せずに提供されます。source_status はその日の残りを報告します。
その他の設定
変数 | デフォルト | 意味 |
| 未設定 | TOML 設定ファイルへのパス |
|
| キャッシュおよび使用状況データベース |
| 3600 | キャッシュされた応答の有効期間(秒) |
| 30 | HTTP タイムアウト(秒) |
| false | 合成データを返す DigiKey サンドボックスホストを使用 |
| US | 検索する DigiKey サイト |
| USD | DigiKey の価格表示通貨 |
| en | DigiKey の結果の言語 |
アーキテクチャ
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 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 <|-- 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 number1 つのプロバイダー呼び出しのリクエストフロー:
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 errors2 つの API に関する注意事項
DigiKey は OAuth2 クライアント認証情報を使用します。トークンの有効期間は 10 分で、メモリにキャッシュされます。リクエストにはベアラートークンとともにクライアント ID ヘッダーが必要です。フィルターは不透明な ID で表現されるため、メーカー名は最初に manufacturers エンドポイントを通じて解決されます。
Mouser はクエリパラメータとして渡される API キーを使用し、リクエストが失敗した場合でも HTTP 200 で応答し、失敗を Errors 配列に入れます。アダプターはその配列を信頼できる情報として扱います。価格は数値ではなく、ローカライズされた表示文字列として届きます。
パラメトリック仕様は 2 つの販売代理店間で共通の語彙がないため、共通のスキーマに正規化するのではなく、名前/値のマップとしてそのまま渡されます。
このツールの作成には Claude Code が使用されました。
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/digikey-search-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server