mcpField
D
Dicker Data

Dicker Data

本地服务
github.com商业与营销03 天前更新

关于 Dicker Data

Dicker Data 是面向 AI 助手和 WYRE Conduit 网关的 MCP 服务,可访问分销商的 B2B API。它覆盖经销商核心流程,包括实时价格与库存查询、下单、物流跟踪和发票处理。

主要功能

  1. 01实时查询价格与库存
  2. 02按数量查询产品价格
  3. 03创建并跟踪订单
  4. 04查询物流与产品序列号
  5. 05列出发票并查看明细

适用场景

  1. 01核对产品价格和库存
  2. 02创建并查看经销商订单
  3. 03跟踪货件及已发货序列号
  4. 04按日期范围检索发票

MCP 相关

向 MCP 客户端提供 Dicker Data 的定价、订单、物流和发票工具。支持 stdio 与 HTTP 传输,以及网关或环境变量凭据模式。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"wyre-ai-dicker-data": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"DICKERDATA_ACCOUNT_CODE",
"-e",
"DICKERDATA_ACCESS_TOKEN",
"-e",
"MCP_TRANSPORT",
"-e",
"AUTH_MODE",
"-e",
"LOG_LEVEL",
"ghcr.io/wyre-ai/dicker-data-mcp:v1.0.4"
],
"env": {
"DICKERDATA_ACCOUNT_CODE": "<DICKERDATA_ACCOUNT_CODE>",
"DICKERDATA_ACCESS_TOKEN": "<DICKERDATA_ACCESS_TOKEN>",
"MCP_TRANSPORT": "<MCP_TRANSPORT>",
"AUTH_MODE": "<AUTH_MODE>",
"LOG_LEVEL": "<LOG_LEVEL>"
}
}
}
}
启动命令docker run -i --rm -e DICKERDATA_ACCOUNT_CODE -e DICKERDATA_ACCESS_TOKEN -e MCP_TRANSPORT -e AUTH_MODE -e LOG_LEVEL ghcr.io/wyre-ai/dicker-data-mcp:v1.0.4
需要配置的环境变量
DICKERDATA_ACCOUNT_CODEDicker Data partner account code
DICKERDATA_ACCESS_TOKEN密钥Dicker Data long-lived API access token (obtained from Dicker Data integration support)
MCP_TRANSPORTTransport mode for the server. Set to 'stdio' for local CLI use; the image defaults to 'http' for gateway hosting.
AUTH_MODE密钥Credential source: 'env' reads vars locally, 'gateway' expects header injection from the WYRE MCP Gateway.
LOG_LEVELLog verbosity: debug, info, warn, error

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/wyre-ai/dicker-data-mcp:v1.0.4

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Dicker Data MCP 服务

面向 AI 助手和 WYRE Conduit 网关的 MCP 服务,用于访问 Dicker Data 的 B2B 合作伙伴/经销商 REST API,查询价格和库存、下单和跟踪订单,以及查询发票。

身份验证

Dicker Data 不提供自助 API 注册。请联系 [email protected] 或 [email protected] 申请访问权限,以获取一组长期有效的 AccountCode 和 AccessToken。

每次实际 API 调用还需要一个短期有效的 AccessKey,通过 POST /api/AccessKeyRequest 交换 AccountCode/AccessToken 获取。此服务会在内部处理该交换(并在密钥过期时刷新),调用方只需提供长期有效的凭据。

配置

复制 .env.example,并设置以下变量。

变量必填描述
DICKERDATA_ACCOUNT_CODE用于 stdio 和 AUTH_MODE=envDicker Data 签发的长期有效账户代码。网关模式不会读取此变量。
DICKERDATA_ACCESS_TOKEN用于 stdio 和 AUTH_MODE=envDicker Data 签发的长期有效访问令牌。网关模式不会读取此变量。
MCP_TRANSPORT否stdio(默认)或 http。
AUTH_MODE否gateway(Docker 镜像和 Compose 的默认值)或 env。网关模式要求每个 /mcp 请求都包含 X-DickerData-Account-Code 和 X-DickerData-Access-Token,且绝不会回退到 DICKERDATA_*。env 模式会在 S2S 身份验证成功后使用这些变量。
CONDUIT_S2S_SECRETHTTP 模式下必填服务间密钥。若此变量为空或为已知占位值,HTTP 服务会记录错误并以非零状态码退出。未设置此变量时,Compose 不会启动。切勿提交真实密钥。
MCP_ALLOW_INSECURE_DEV否仅用于本地开发,必须精确设为 1,以便在未设置 CONDUIT_S2S_SECRET 时启动 HTTP。进程会记录警告,不会强制要求 X-Gateway-S2S,且只绑定到 127.0.0.1。若设置了非环回地址的 MCP_HTTP_HOST,该值会被覆盖并记录日志。即使设置了占位密钥,服务仍会拒绝启动。
MCP_HTTP_HOST否已配置密钥时的绑定地址。未设置时为 0.0.0.0。容器镜像会将其设为 0.0.0.0。启用不安全开发绕过选项时,此变量会被忽略,绑定地址改为 127.0.0.1。
MCP_HTTP_PORT否HTTP 端口。默认为 8080。
LOG_LEVEL否debug、info(默认)、warn 或 error。

/health 无需身份验证,也不要求 X-Gateway-S2S,且不会读取供应商凭据。stdio 传输不使用 CONDUIT_S2S_SECRET。

HTTP 身份验证

设置 MCP_TRANSPORT=http 和 CONDUIT_S2S_SECRET 后,每个 /mcp 请求都必须包含 X-Gateway-S2S。其值为 t=<unix seconds>,v1=<hex hmac-sha256>。十六进制摘要是使用 CONDUIT_S2S_SECRET 作为密钥,对精确的 ASCII 字符串 t=<unix seconds>(即标头中出现的相同前缀)计算 HMAC-SHA256 得到的,并编码为 64 个小写十六进制字符。时间戳与服务器时钟的偏差必须在 300 秒以内。缺少或无效的标头会返回 401。密钥绝不会写入日志或响应中。

X-Gateway-S2S: t=1710000000,v1=<64 lowercase hex chars>

已知占位值会在启动时被拒绝,且不视为已配置密钥:changeme、change-me、secret、example、placeholder、replace-me、your-secret、your-s2s-secret、s2s-secret、replace-with-a-real-secret。使用 openssl rand -hex 32 生成密钥。

在 AUTH_MODE=gateway 模式下,/mcp 还要求包含 X-DickerData-Account-Code 和 X-DickerData-Access-Token。这些标头是该请求唯一使用的 Dicker Data 凭据。缺少任一标头的请求会返回 401,且不会回退到 DICKERDATA_ACCOUNT_CODE/DICKERDATA_ACCESS_TOKEN。

工具

价格
  • dickerdata_get_pricing - 实时查询一个或多个产品代码的价格和现有库存。
  • dickerdata_get_price - 按指定数量查询单个产品代码的详细价格。
订单
  • dickerdata_create_order - 下达采购订单。
  • dickerdata_get_order_details - 查询单个订单。
  • dickerdata_list_orders - 列出与账户代码 / 订单 / 预购订单 / PO 编号匹配的订单。
  • dickerdata_get_order_serials - 获取订单已发货商品的序列号。
  • dickerdata_get_consignment_status - 查询货运的配送 / 跟踪状态。
账户
  • dickerdata_list_invoices - 查询指定日期范围内的发票。
  • dickerdata_get_invoice_details - 获取销售订单 / 发票的行项目详情。

范围

这是一个 v1 / MVP 功能范围,涵盖分销商的核心工作流(定价、下单、跟踪、开票)。目前明确不在范围内的功能:Microsoft CSP/ESD 订阅管理、Autodesk 订阅和年金订单端点——这些功能面向特定供应商,与核心分销业务不同,规模也大得多。如有需求,可在后续添加。

开发

npm install
npm run build
npm test
npm run lint   # tsc --noEmit

Docker

镜像在容器内通过 MCP_HTTP_HOST 监听 0.0.0.0,并默认使用 AUTH_MODE=gateway。将端口发布到环回地址,并传入 S2S 密钥。在网关模式下,账户代码和访问令牌会随每个请求通过 X-DickerData-Account-Code 和 X-DickerData-Access-Token 传入;不会从环境中读取这些值。

docker build -t dicker-data-mcp .
docker run \
  -e CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" \
  -p 127.0.0.1:8080:8080 \
  dicker-data-mcp

不要传入 your-s2s-secret 或 changeme 等已知占位值。启动时会将这些值视为未设置并退出。若未设置 CONDUIT_S2S_SECRET,Compose 将拒绝启动;它会设置 AUTH_MODE=gateway,不会传入 DICKERDATA_ACCOUNT_CODE 或 DICKERDATA_ACCESS_TOKEN,并发布 127.0.0.1:8080:8080。项目 .env 仅用于变量插值——不要为网关服务添加 env_file。

CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" docker compose up

单租户 HTTP(AUTH_MODE=env)仍需要 S2S 密钥,然后使用 DICKERDATA_ACCOUNT_CODE 和 DICKERDATA_ACCESS_TOKEN:

docker run \
  -e CONDUIT_S2S_SECRET="$(openssl rand -hex 32)" \
  -e AUTH_MODE=env \
  -e DICKERDATA_ACCOUNT_CODE=your-account-code \
  -e DICKERDATA_ACCESS_TOKEN=your-access-token \
  -e MCP_HTTP_HOST=0.0.0.0 \
  -p 127.0.0.1:8080:8080 \
  dicker-data-mcp

不使用密钥的本地 HTTP 仅限开发环境。它会绑定到 127.0.0.1 并记录警告。若 MCP_HTTP_HOST 不是环回地址(包括 0.0.0.0),该值会被覆盖,且会记录此次覆盖:

MCP_ALLOW_INSECURE_DEV=1 npm run start:http

已签名的网关请求:

curl -sS http://127.0.0.1:8080/mcp \
  -H 'content-type: application/json' \
  -H 'accept: application/json, text/event-stream' \
  -H "x-gateway-s2s: $X_GATEWAY_S2S" \
  -H "x-dickerdata-account-code: $DICKERDATA_ACCOUNT_CODE" \
  -H "x-dickerdata-access-token: $DICKERDATA_ACCESS_TOKEN" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。