---
name: digikey
description: Search DigiKey for components, pricing, stock, and part numbers. Use when the user asks to find components on DigiKey, check DigiKey pricing, look up a DigiKey part number, search for in-stock parts, get price breaks, compare alternatives, or find a datasheet or product page for a specific part.
---

# DigiKey Component Search

Search DigiKey's catalog of millions of electronic components from thousands of manufacturers. Real-time pricing, stock, lead times, and product links.

## Architecture

The DigiKey search runs as a **shared remote service** on a dedicated container. User containers access it via the `adom-digikey` MCP server, which proxies requests to the shared service over HTTP.

```
Dedicated Service Container (john/service-digikey)
  DigiKey Products API v4 proxy (port 8777, OAuth 2.0, 10-min LRU cache)
    ↓ (proxied via Coder)
  HTTP API: https://coder.john-service-digikey-5fe3ed11d045380c.containers.adom.inc/proxy/8777
  MCP:      https://coder.john-service-digikey-5fe3ed11d045380c.containers.adom.inc/proxy/8778/mcp

User Containers (any Gallia-enabled container)
  MCP Tools (adom-digikey) ──→ HTTP fetch to shared service URL
    ↓
  pushToViewer() ──→ Viewer API (port 8771) ──→ WebSocket ──→ Gallia Viewer
```

The service URL is hardcoded in `digikey/mcp/tools.js` — no `DIGIKEY_CLIENT_ID` / `DIGIKEY_CLIENT_SECRET` env vars needed on user containers. OAuth credentials live only on the service container.

### Service Container Details

- **Container:** `john/service-digikey` on Adom (`john-service-digikey-5fe3ed11d045380c`)
- **Hydrogen:** https://hydrogen.adom.inc/john/service-digikey/edit
- **Port 8777:** HTTP API — `GET /health`, `GET /search?keyword=...`, `GET /part?partNumber=...`, or `POST /` with JSON body
- **Port 8778:** Streamable HTTP MCP endpoint at `/mcp` — add to `.mcp.json` as `{ "type": "streamable-http", "url": "...proxy/8778/mcp" }`
- **Bootstrap:** `bash <(curl -fsSL https://coder.john-gallia-f280e93ffec7e79d.containers.adom.inc/proxy/9999/bootstrap.sh) --service digikey`
- **Update:** `cd ~/gallia && git pull && pkill -f 'node.*services/digikey/server.js'; bash services/digikey/start-digikey.sh`

## Available MCP Tools

### `digikey_search` — Keyword / Part Number Search

Search by keyword, description, manufacturer part number (MPN), or DigiKey part number.

**Parameters:**
| Parameter | Type | Default | Description |
|-----------|------|---------|-------------|
| `keyword` | string | required | Part number, keyword, description, or category + specs |
| `limit` | number | 10 | Max results (1–50) |
| `inStockOnly` | boolean | false | Only return parts currently in stock |

**Example uses:**
- `keyword: "STM32F103RBT6"` — find by MPN
- `keyword: "497-STM32F103RBT6-ND"` — find by DigiKey PN
- `keyword: "ESP32 WiFi Bluetooth"` — keyword search
- `keyword: "LDO 3.3V 500mA SOT-23"` — parametric-style search
- `keyword: "STM32F4 microcontroller"`, `inStockOnly: true` — in-stock only

### `digikey_part` — Exact Part Lookup

Get full details for a specific part by DigiKey PN or MPN. Returns complete price break table, packaging options, RoHS status, lifecycle, datasheet URL, and product page.

**Parameters:**
| Parameter | Type | Description |
|-----------|------|-------------|
| `partNumber` | string | DigiKey PN (e.g. `497-STM32F103RBT6-ND`) or MPN (e.g. `STM32F103RBT6`) |

Use `digikey_search` first to discover parts, then `digikey_part` to get full details.

### `digikey_health` — Health Check

Verify the API credentials are set and DigiKey API is reachable. No parameters.

## What's in a Result

Each part includes:
- **DigiKey part number** — use this for BOM ordering
- **Manufacturer part number (MPN)** — use this in schematics/footprints
- **Manufacturer name**
- **Description and category**
- **Stock** — in-stock quantity at DigiKey (live)
- **Lead time** — estimated delivery in weeks if ordering from factory
- **Price breaks** — quantity pricing tiers (1+, 10+, 25+, 100+, etc.)
- **Min order qty**
- **RoHS status** — compliance flag
- **Lifecycle status** — e.g. Active, Last Time Buy, Obsolete
- **Product page URL** — direct link to DigiKey product listing
- **Datasheet URL** — direct PDF link if available

## Workflow

### Finding a part from scratch
1. Use `digikey_search` with a keyword or description
2. Scan results for the right part (check stock, price, lifecycle)
3. Use `digikey_part` to get full pricing and product details
4. Copy the **DigiKey PN** for BOM and the **MPN** for schematic/footprint use

### Checking price for a known MPN
Use `digikey_search` with the MPN as the keyword — typically returns exact or near-exact matches as the first results.

### Checking in-stock alternatives
Use `digikey_search` with `inStockOnly: true` and a descriptive keyword (e.g. `"32-bit ARM Cortex-M3 flash 128KB LQFP-48"`).

## Files

| File | Purpose |
|------|---------|
| `services/digikey/server.js` | HTTP API server (port 8777), DigiKey OAuth 2.0 proxy, landing page |
| `services/digikey/start-digikey.sh` | Idempotent start script (used by container boot) |
| `services/digikey/test.js` | 14-test integration suite with GV output |
| `digikey/mcp/server.js` | MCP stdio transport entry point |
| `digikey/mcp/tools.js` | 3 MCP tools + fire-and-forget push to Gallia Viewer (hardcoded service URL) |
| `digikey/mcp/remote.js` | MCP streamable-http transport (port 8778) |

## Notes

- Results are sorted by DigiKey's internal relevance algorithm (not necessarily by stock)
- DigiKey prices are in USD and do not include shipping
- Stock levels are live at time of query (10-minute cache on the service)
- OAuth credentials live only on the service container — user containers don't need them
- Authentication uses OAuth 2.0 client_credentials flow (tokens cached with 80% TTL safety margin)
