DigiKey产品搜索MCP服务器

基于FastMCP构建的DigiKey产品搜索API服务,提供组件搜索、定价、订购和订单状态查询功能,支持Docker MCP工具包集成。

  • by simon-77
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 simon-77/digikey-mcp

使用说明

DigiKey MCP服务器

A. 模型上下文协议 DigiKey产品搜索API v4的服务器,使用 FastMCP首先是Docker,专为 Docker MCP工具包.

最初灵感来自 bengineer19/digike_mcp.

先决条件

  • DigiKey API证书 --注册地址: developer.digikey.com,创建一个应用程序 client_credentials 授权类型
  • DigiKey客户编号 --订购工具所需。在你的 DigiKey帐户设置.
  • 码头工人 (推荐)或Python 3.10+
  • Docker MCP工具包 --包含在 Docker 桌面版 (需要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 <<EOF
CLIENT_ID=your_client_id
CLIENT_SECRET=your_client_secret
DIGIKEY_ACCOUNT_ID=your_customer_number
USE_SANDBOX=false
DIGIKEY_LOCALE_SITE=US
DIGIKEY_LOCALE_LANGUAGE=en
DIGIKEY_LOCALE_CURRENCY=USD
EOF

python digikey_mcp_server.py

.mcp.json 对于MCP客户:

{
  "mcpServers": {
    "digikey": {
      "command": "python",
      "args": ["digikey_mcp_server.py"],
      "cwd": "/path/to/digikey-mcp",
      "env": {
        "CLIENT_ID": "your_client_id",
        "CLIENT_SECRET": "your_client_secret",
        "DIGIKEY_ACCOUNT_ID": "your_customer_number",
        "USE_SANDBOX": "false",
        "DIGIKEY_LOCALE_SITE": "US",
        "DIGIKEY_LOCALE_LANGUAGE": "en",
        "DIGIKEY_LOCALE_CURRENCY": "USD"
      }
    }
  }
}

Locale环境变量是可选的——默认值为 US/en/USD (参见 配置).

工具

搜索

工具 说明
keyword_search 按关键字搜索产品,具有排序、过滤、制造商/类别限制
search_manufacturers 列出所有制造商
search_categories 列出所有产品类别
search_product_substitutions 寻找替代产品

产品详情

工具 说明
product_details 零件号的完整产品信息
get_category_by_id 按ID分类的详细信息
get_product_media 产品的图像、文档、视频
get_product_pricing 详细定价,含数量折扣
get_digi_reel_pricing DigiReel特定定价

写入/推送

工具 说明
generate_cart_url 构建FastAdd URL以填充DigiKey购物车
create_mylist_link 创建一次性URL以将零件导入DigiKey MyLists

支持区域设置的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注册表

此回购的结构是为了提交给 docker/mcp注册表The 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客户号,可以在您的 账户设置.

API调用运行一段时间后失败,401: 服务器在启动时获取一次OAuth令牌,不会刷新它。DigiKey令牌将在约30分钟后过期。重新启动MCP客户端(或容器)以获取新令牌。

目录更改未生效: 重新运行 docker mcp catalog import ~/.docker/mcp/catalogs/custom.yaml 编辑目录文件后。之后重新启动MCP客户端。

许可证

MIT许可证——见 许可证.