digi-mouse-search
eparts-search-mcp
DigiKey、LCSC、Mouser の電子部品を検索する MCP サーバーです。各販売代理店を個別に、またはすべてまとめて検索でき、同じ部品番号のオファーは1つのエントリに統合されるため、価格を比較できます。
ツール
ツール | 目的 |
| 1つまたは複数の販売代理店を横断したキーワード検索 |
| メーカーまたは販売代理店の部品番号による単一部品の検索 |
| 設定されているソースと、残りのリクエスト予算の確認 |
| キャッシュされたレスポンスを破棄し、最新の在庫と価格を取得 |
search_parts は sources リストを受け取ります。省略すると設定済みのすべての販売代理店を検索し、["mouser"] を渡すとその1社だけを検索します。結果はデフォルトで部品番号ごとに統合され、cheapest_at_quantity による比較が行われます。merge=false を渡すと、各販売代理店の結果を別々のリストに保持します。
比較では、指定数量で価格が設定されているオファーのみが考慮されます。LCSC は多くの部品を10個単位で販売しているため、数量1の場合、そのようなオファーには適用可能な価格帯がなく、比較から除外されます(無料としてカウントされることはありません)。
1つの販売代理店が失敗した場合、未設定の場合、またはクォータを使い切った場合でも、他の販売代理店は結果を返し、失敗は 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/bin が PATH に含まれていることを確認してください:
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. 個人用開発者アプリではサンドボックスアクセスのみが得られ、サンドボックスは合成データを返します。実際の在庫と価格を得るには、Organization 配下にある Production アプリが必要です:
developer.digikey.com に DigiKey アカウントでサインインします。
ナビゲーションバーの Organizations を開き、まだメンバーでない場合は作成します。
Operations の下で Production Apps を選択し、Create Production App をクリックします。
アプリで Product Information を有効にします。
アプリを開いて Client ID と Client Secret をコピーします。
OAuth コールバックフィールドは、3-legged OAuth でのみ使用されます。このサーバーは2-legged のクライアント認証情報フローを使用するため、コールバックがリダイレクトされることはありません。https://localhost でフォームを満たせます。
サンドボックスと本番の認証情報は互換性がありません。サンドボックス認証情報は sandbox-api.digikey.com に対してのみ機能し、DIGIKEY_SANDBOX=true で選択されます。
LCSC. Open API はセルフサービス登録ではなくパートナー統合であるため、認証情報は呼び出し元 IP アドレスがホワイトリストに登録された後、LCSC のアカウントマネージャーから提供されます。オンボーディングは、シミュレートされたカタログデータを返す別ホスト(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": "..."
}
}
}
}レート制限
各販売代理店は1日あたり約1000回の呼び出しを許可しているため、すべてのリクエストは予算化されています。1秒あたりおよび1分あたりのウィンドウは待機によって強制されます。1日あたりのウィンドウはハードストップであり、呼び出し側が深夜にリセットされるクォータを待つことはできないため、代わりにエラーを報告します。1日あたりのカウンタは永続化されるため、サーバーを再起動してもリセットされません。
デフォルト:
ウィンドウ | DigiKey | LCSC | Mouser |
1秒あたり | 2 | 1 | 1 |
1分あたり | 60 | 45 | 25 |
1日あたり | 1000 | 1000 | 1000 |
バースト | 5 | 5 | 3 |
最大待機時間 | 10 秒 | 10 秒 | 10 秒 |
LCSC は1分あたり60回のキーワード検索と1日あたり1000回を文書化しており、成功した呼び出しのみをカウントします。1分あたりのデフォルトは文書化された上限より低く設定されています。これは、販売代理店によるスロットリングがローカルでの待機よりもコストがかかるためです。LCSC 自身のカウンタが呼び出しを拒否した場合、エラーはその旨を明示し、ローカル予算と区別します。
すべての値は、環境変数または TOML ファイルによってプロバイダーごとに設定可能です。none、off、unlimited、または 0 を使用してウィンドウを無効にします:
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 はその日の残りを報告します。
その他の設定
変数 | デフォルト | 意味 |
|
| TOML 設定ファイルのパス。未設定の場合はデフォルトの場所が読み取られる |
|
| キャッシュと使用状況データベース |
| 3600 | キャッシュされたレスポンスの有効期間(秒) |
| 30 | HTTP タイムアウト(秒) |
| false | 合成データを返す DigiKey サンドボックスホストを使用 |
| US | 検索する DigiKey サイト |
| USD | DigiKey 価格の通貨 |
| en | DigiKey 結果の言語 |
| false | シミュレートされたデータを返す LCSC テストホストを使用 |
| USD | LCSC 価格の通貨: USD、EUR、HKD、CNY |
| EN | LCSC 結果の言語: EN または CN |
ディスク上のファイル
サーバーが保持するすべてのものは XDG ベースディレクトリの下に置かれるため、インストールはホームディレクトリの外には何も所有しません:
内容 | 場所 |
実行ファイル |
|
ツール環境 |
|
認証情報と設定 |
|
キャッシュと日次使用カウンタ |
|
XDG_CONFIG_HOME と XDG_STATE_HOME は、未設定の場合それぞれ ~/.config と ~/.local/state にデフォルト設定されます。EPARTS_CONFIG と EPARTS_CACHE_PATH は最後の2つを上書きします。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 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 errors3つの API に関する注意点
DigiKey は OAuth2 クライアント認証情報を使用します。トークンは10分間有効で、メモリにキャッシュされます。リクエストにはベアラートークンとともにクライアント ID ヘッダーが必要です。フィルタは不透明な ID として表現されるため、メーカー名はまず manufacturers エンドポイントを通じて解決されます。
LCSC はトークンを保持する代わりに各リクエストに署名します。キー、nonce、タイムスタンプ、ソートされたクエリパラメータがシークレットでハッシュされ、ダイジェストがヘッダーで送信されます。Mouser と同様に、リクエストが失敗しても HTTP 200 で応答し、実際の結果はボディの code フィールドに格納されます。アダプタはこれを信頼できるものとして扱います。部品ごとのエンドポイントがないため、詳細検索はキーワード検索であり、そこから完全一致が選ばれます。完全一致のみを返すキーワード検索では、もっともらしい誤った結果ではなく、結果なしとなります。メーカーフィルタもないため、メーカーはキーワードに組み込まれ、結果は戻り際にフィルタリングされます。
Mouser はクエリパラメータとして渡される API キーを使用し、リクエストが失敗しても HTTP 200 で応答し、失敗を Errors 配列に格納します。アダプタはその配列を信頼できるものとして扱います。価格は数値ではなく、ローカライズされた表示文字列として届きます。
パラメトリック仕様は3つの販売代理店間で共通の語彙がないため、共通スキーマに正規化するのではなく、名前と値のマップとしてそのまま渡されます。LCSC のリール追加料金も同様に報告されます。これは注文ごとの手数料であり、単価ラダーでは表現できないためです。
このツールの作成には Claude Code が使用されました。
Available Tools
4 toolsclear_cacheA
Drop cached distributor responses to force fresh stock and pricing.
Cached responses do not count against the daily quota, so clearing the cache makes subsequent searches spend real request budget.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Clear one source only; omit to clear everything |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that cached responses are dropped (a destructive action) and that doing so affects the quota of subsequent searches, which is a meaningful behavioral trait. It does not mention undoability, but for a cache clear that is acceptable. No contradictions with annotations exist since none are provided.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise paragraphs, front-loaded with the primary action and then explaining the quota implication. There is no fluff or redundancy; every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one optional parameter, no required parameters) and that an output schema exists, the description adequately covers purpose, effect, and quota behavior. There is nothing missing that an agent would need to decide when and how to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the 'source' parameter with 'Clear one source only; omit to clear everything' (100% schema coverage). The description adds no extra meaning about the parameter, so it meets the baseline but does not exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (drop cached distributor responses) and the goal (force fresh stock and pricing). This is a distinct resource and action, and none of the sibling tools (search_parts, source_status, part_details) perform cache clearing, so it's easily differentiated without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context that clearing the cache forces fresh data and makes subsequent searches consume real request budget, implying the tool should be used when fresh data is required. However, it does not explicitly name alternative tools or state when not to use it, so it falls short of the full 'when/when-not' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
part_detailsA
Look up one part by part number, with full specifications and pricing.
Distributor part numbers only resolve at the distributor that issued them, so a lookup by one distributor's number will normally return a result from that source alone.
| Name | Required | Description | Default |
|---|---|---|---|
| sources | No | Which distributors to query. Omit to query all configured sources. | |
| part_number | Yes | Manufacturer part number, or a distributor part number such as 296-1234-ND for DigiKey, C22452 for LCSC or 511-LM317T for Mouser |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses a key behavioral trait: distributor part numbers only resolve at the issuing distributor, and results will normally come from that source alone. This is genuinely non-obvious and valuable. It does not mention auth, rate limits, or error handling, but for a lookup tool with an output schema, this covers the main gotcha.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, each earning its place. The first states the core purpose; the second delivers a critical behavioral caveat. No filler, no repetition, and the purpose is front-loaded. This is an efficient, well-structured description.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, 1 optional), the existence of an output schema, and the key distributor caveat being addressed, the description is functionally complete. It lacks only more explicit usage routing, which is covered under usage guidelines, but overall nothing essential is missing for safe invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, and the schema already includes detailed descriptions for both parameters, including concrete examples for part_number (e.g., '296-1234-ND' for DigiKey) and the meaning of sources. The description adds no additional parameter-specific meaning beyond what the schema provides, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('look up one part by part number'), the resource ('part'), and the scope ('full specifications and pricing'). It distinguishes from sibling tools: search_parts is for searching, source_status is for status, and clear_cache is for cache management. No ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at when to use this tool (when you have a specific part number) versus searching, but it does not explicitly name alternatives or exclusion conditions. The distributor-resolution note gives behavioral context but not direct routing. Sibling differentiation is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_partsA
Search DigiKey, LCSC and Mouser for electronic components.
Searches every configured distributor by default and merges offers for the
same part number so prices can be compared. Pass sources to query one
distributor on its own. If a distributor fails or is out of quota, results
from the others are still returned and the failure is listed under errors.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum parts per source | |
| merge | No | Group offers for the same part number into one entry with a price comparison. Set false to keep each distributor's results separate. | |
| keyword | Yes | Part number, description or search phrase | |
| sources | No | Which distributors to query: ['digikey'], ['lcsc'], ['mouser'], or any combination. Omit to search every configured source. | |
| quantity | No | Quantity used for the price comparison | |
| manufacturer | No | Restrict results to one manufacturer, by name | |
| in_stock_only | No | Exclude parts with no stock | |
| include_specs | No | Include parametric specifications |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the full burden falls on the description — and it delivers. It discloses aggregation (merges offers by part number), default scope (every configured distributor), and importantly the partial-failure semantics (a failing or quota-exhausted distributor still yields results from others, with the failure surfaced under errors). These are non-obvious behaviors not visible in the schema. No contradictions exist since no annotations were declared.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight, front-loaded sentences: purpose first, then merge behavior, then source-scoping and failure tolerance. Each sentence adds a distinct piece of information with no padding or repetition. Minor nit — 'electronic components' is slightly generic — but overall the structure is efficient and well-ordered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter multi-distributor tool with a 100%-coverage schema and an output schema present, the definition is largely complete: it covers default behaviors, the sources override, quantity/limit context, and edge-case handling. The one genuine gap is sibling routing — when the keyword is an exact part number, an agent may need guidance that part_details is the better fit. Minor given the overall richness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% — every one of the 8 parameters already carries a descriptive schema entry (limit, merge, keyword, sources, quantity, manufacturer, in_stock_only, include_specs). Baseline is therefore 3. The description adds marginal value by explaining the sources override and the merge default, but it does not compensate beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource set: 'Search DigiKey, LCSC and Mouser for electronic components.' This is precise and clearly distinguishes the tool from its siblings — source_status checks health, part_details fetches a single part, clear_cache manages cache. An agent can tell this is the multi-distributor search tool without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description thoroughly explains the tool's own operating behavior: default all-sources search, merging of same-part offers, the `sources` override, and failure tolerance. However, it never names an alternative or states when NOT to use it. Critically, since the `keyword` field accepts a part number, an agent could be torn between search_parts and part_details, and nothing here routes that choice. Context is strong, but explicit exclusions/alternatives are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
source_statusA
Report which distributors are configured and how much request budget is left.
Use this when a search reports a rate limit error, to see the configured limits and how many requests remain for the day.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden of disclosing behavior. It states the tool reports configuration and budget, which implies a read-only operation, but it does not explicitly clarify that it has no side effects or mention any caveats (e.g., caching, staleness). This is adequate but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with the primary purpose front-loaded and the usage guidance immediately following. Every sentence earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters) and the existence of an output schema (so return values need not be described), the description fully covers what the tool does and when to use it. Nothing an agent needs to know to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero parameters and 100% coverage (empty object), so the description has nothing to add for parameters. Per calibration, a tool with 0 parameters gets a baseline of 4, and the description does not detract from that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Report') followed by the precise resource ('which distributors are configured and how much request budget is left'). It uniquely distinguishes this from sibling tools like search_parts or clear_cache, which clearly have different functions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit trigger condition ('Use this when a search reports a rate limit error'), making the intended context clear. However, it does not name alternatives or explicitly state when not to use it, so it misses the full when/when-not/alternatives structure that would merit a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
4 tool updates
v0.1.0- First observed
clear_cache - First observed
part_details - First observed
search_parts - First observed
source_status
TDQS
Scored across 4 tools
Each tool serves a distinct purpose: searching across distributors, reporting status/quotas, fetching detailed part info, and clearing cache. There is no overlap or ambiguity between actions.
All tool names follow a consistent verb_noun pattern (search_parts, source_status, part_details, clear_cache), making the API predictable and easy to navigate.
With 4 tools, the server is well-scoped for its purpose of component search and comparison. Each tool earns its place, covering search, details, status, and cache management without bloat.
The core workflow is covered: search, view details, check quota, and manage cache. Minor gaps exist (e.g., no bulk operation or category browsing), but the essential lifecycle for a search-focused server is present.
Maintenance
Related MCP Connectors
Find electronic parts with live Mouser, DigiKey and JLCPCB stock and prices, check BOMs, order.
Search real parts with datasheet-provenance specs, check compatibility and compose priced BOMs.
Electronic component sourcing, BOM management, and PCB design workflows.
Electronic component datasheets for AI agents: pinouts, specs, package info and design checks.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables searching for electronic components through the Nexar Supply API, providing detailed part information including manufacturer, pricing, specifications, and datasheets.-
- FlicenseNot gradedqualityCmaintenanceEnables 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.11-
- AlicenseAqualityAmaintenanceEnables 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.11139MIT
- FlicenseAqualityBmaintenanceEnables AI assistants to search JLCPCB's 450K+ electronic component catalog with real-time stock levels and pricing, supporting keyword search, filtering, and detailed component information.440 PyPI8-