DigiKey MCP服务器
最初灵感来自 bengineer19/digike_mcp.
先决条件
- DigiKey API证书 --注册地址: developer.digikey.com,创建一个应用程序
client_credentials授权类型 - DigiKey客户编号 --订购工具所需。在你的 DigiKey帐户设置.
- 码头工人 (推荐)或Python 3.10+
- Docker MCP工具包 --包含在 (需要MCP工具包支持)
项目结构
digikey-mcp/
├── mcp_app.py # Shared FastMCP instance
├── digikey_mcp_server.py # Main server — authenticated tools (OAuth2)
├── digikey_noauth_tools.py # No-auth tools (cart URL, MyList link)
├── Dockerfile # Docker image with embedded metadata
├── server.yaml # Registry entry for docker/mcp-registry
└── tests/ # Unit tests快速入门——Docker MCP工具包
运行此服务器的推荐方式。Docker MCP网关管理容器生命周期,注入机密,并向MCP客户端(如Claude Code或Claude Desktop)公开工具。
1.构建Docker镜像
git clone https://github.com/simon-77/digikey-mcp.git
cd digikey-mcp
docker build -t digikey-mcp:latest .2.创建自定义目录
网关通过目录文件发现服务器。创建一个 ~/.docker/mcp/catalogs/custom.yaml:
version: 3
name: custom
displayName: Custom MCP Servers
registry:
digikey:
description: DigiKey component search, pricing, ordering, and order status
title: DigiKey
type: server
image: digikey-mcp:latest
secrets:
- name: digikey.CLIENT_ID
env: CLIENT_ID
- name: digikey.CLIENT_SECRET
env: CLIENT_SECRET
- name: digikey.DIGIKEY_ACCOUNT_ID
env: DIGIKEY_ACCOUNT_ID
env:
- name: USE_SANDBOX
value: "false"
- name: DIGIKEY_LOCALE_SITE
value: "US"
- name: DIGIKEY_LOCALE_LANGUAGE
value: "en"
- name: DIGIKEY_LOCALE_CURRENCY
value: "USD"
tools:
- name: keyword_search
- name: product_details
- name: search_manufacturers
- name: search_categories
- name: get_category_by_id
- name: search_product_substitutions
- name: get_product_media
- name: get_product_pricing
- name: get_digi_reel_pricing
- name: generate_cart_url
- name: create_mylist_link
- name: list_orders
- name: get_order_status
prompts: 0
resources: {}更改 env 值以匹配您的区域设置(例如。, AT/en/EUR 奥地利)。
注: 这tools列表必须与服务器中定义的工具匹配。网关使用此列表向MCP客户端注册工具。prompts: 0和resources: {}表示服务器不公开MCP提示或资源。
3.注册目录并启用服务器
docker mcp catalog import ~/.docker/mcp/catalogs/custom.yaml
docker mcp server enable digikey重新运行 catalog import 无论何时修改 custom.yaml.
4.设定秘密
docker mcp secret set digikey.CLIENT_ID
docker mcp secret set digikey.CLIENT_SECRET
docker mcp secret set digikey.DIGIKEY_ACCOUNT_ID系统将提示您输入每个值。秘密姓名 必须 以服务器名称作为前缀(digikey.).
帐户ID是您的DigiKey客户编号,订购工具需要此编号(list_orders, get_order_status).
5.连接MCP客户端
docker mcp client connect claude-code这将为您的项目添加网关 .mcp.json:
{
"mcpServers": {
"MCP_DOCKER": {
"command": "docker",
"args": ["mcp", "gateway", "run"],
"type": "stdio"
}
}
}当MCP客户端启动时,网关启动 digikey-mcp:latest 容器,将机密作为环境变量注入,并代理工具调用。
变更后重建
docker build -t digikey-mcp:latest .
# Restart your MCP client to pick up the new image无需重新导入目录或重新设置机密,只需重建并重新启动即可。
替代方案:Docker独立版
不使用MCP工具包直接运行容器。你自己管理秘密和生命周期。
docker build -t digikey-mcp .
docker run --rm -i \
-e CLIENT_ID=your_client_id \
-e CLIENT_SECRET=your_client_secret \
-e DIGIKEY_ACCOUNT_ID=your_customer_number \
-e USE_SANDBOX=false \
-e DIGIKEY_LOCALE_SITE=US \
-e DIGIKEY_LOCALE_LANGUAGE=en \
-e DIGIKEY_LOCALE_CURRENCY=USD \
digikey-mcp.mcp.json 对于MCP客户:
{
"mcpServers": {
"digikey": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "CLIENT_ID=your_client_id",
"-e", "CLIENT_SECRET=your_client_secret",
"-e", "DIGIKEY_ACCOUNT_ID=your_customer_number",
"-e", "USE_SANDBOX=false",
"-e", "DIGIKEY_LOCALE_SITE=US",
"-e", "DIGIKEY_LOCALE_LANGUAGE=en",
"-e", "DIGIKEY_LOCALE_CURRENCY=USD",
"digikey-mcp"
]
}
}
}Locale环境变量是可选的——默认值为 US/en/USD (参见 配置).
替代方案:独立(pip)
不使用Docker运行。需要Python 3.10+。
git clone https://github.com/simon-77/digikey-mcp.git
cd digikey-mcp
pip install .
cat > .env **支持区域设置的URL:** 这两个工具都使用从中派生的域生成URL `DIGIKEY_LOCALE_SITE` (例如。, `AT` → `www.digikey.at`, `DE` → `www.digikey.de`).这确保了链接在正确的区域DigiKey网站上打开。默认为 `www.digikey.com` (美国)。
### 订单状态
|工具|说明|
|------|-------------|
| `list_orders` |列出日期范围内的订单(默认为最近30天)|
| `get_order_status` |获取特定销售订单的完整详细信息|
> **注:** 订购工具需要 `DIGIKEY_ACCOUNT_ID` (您的DigiKey客户编号)。如果没有它,这些工具将返回400个错误请求。
### 搜索选项
过滤器(逗号分隔) `search_options`): `LeadFree`, `RoHSCompliant`, `InStock`, `HasDatasheet`, `HasProductPhoto`, `Has3DModel`, `NewProduct`
排序字段: `Packaging`, `ProductStatus`, `DigiKeyProductNumber`, `ManufacturerProductNumber`, `Manufacturer`, `MinimumQuantity`, `QuantityAvailable`, `Price`, `Supplier`, `PriceManufacturerStandardPackage`
## 配置
所有设置均通过环境变量进行控制。在Docker MCP Toolkit模式下,这些在目录中设置 `env` 封锁或作为秘密。在独立模式下,使用 `.env` 文件。
|变量|默认值|描述|
|----------|---------|-------------|
| `CLIENT_ID` | *(必填)* |DigiKey API客户ID|
| `CLIENT_SECRET` | *(必填)* |DigiKey API客户机密|
| `DIGIKEY_ACCOUNT_ID` | *(可选)* |DigiKey客户编号。订购工具所需(`list_orders`, `get_order_status`). |
| `USE_SANDBOX` | `true` |使用沙箱API(`true`)或生产(`false`).Dockerfile和目录示例将其重写为 `false`. |
| `DIGIKEY_LOCALE_SITE` | `US` |DigiKey网站(例如。, `AT`, `DE`, `UK`).还为购物车和MyList URL设置网站域(见下文)。 |
| `DIGIKEY_LOCALE_LANGUAGE` | `en` |响应语言|
| `DIGIKEY_LOCALE_CURRENCY` | `USD` |定价货币(例如。, `EUR`) |
## Docker MCP注册表
此回购的结构是为了提交给 The [server.yaml](server.yaml) 文件包含注册表项引用——这是 **不** 与上面的本地目录相同。当服务器发布到注册表时,用户不需要创建自定义目录;他们将直接通过安装 `docker mcp server enable digikey`.
## 故障排除
**Gateway显示0个工具:** 服务器使用惰性OAuth初始化——在第一次工具调用之前,它不会进行身份验证。如果网关仍然没有显示任何工具,请验证 `tools` 目录中的列表与上面的工具名称匹配。
**第一次工具调用时出现OAuth错误:** 使用验证您的凭据 `docker mcp secret list`。机密名称必须加前缀: `digikey.CLIENT_ID`,不 `CLIENT_ID`.
**订购工具返回400错误请求:** 订单端点需要 `DIGIKEY_ACCOUNT_ID`.设置它 `docker mcp secret set digikey.DIGIKEY_ACCOUNT_ID`。该值是您的DigiKey客户号,可以在您的 [账户设置](https://www.digikey.com/account/myaccount/).
**API调用运行一段时间后失败,401:** 服务器在启动时获取一次OAuth令牌,不会刷新它。DigiKey令牌将在约30分钟后过期。重新启动MCP客户端(或容器)以获取新令牌。
**目录更改未生效:** 重新运行 `docker mcp catalog import ~/.docker/mcp/catalogs/custom.yaml` 编辑目录文件后。之后重新启动MCP客户端。
## 许可证
MIT许可证——见 [许可证](LICENSE).