Dicker Data

io.github.WYRE-AI由 GitHub 帳號 WYRE-AI 發布v1.0.5更新於 Nov 5, 2026

MCP server for Dicker Data's B2B partner/reseller REST API — pricing, orders, and invoices.

已驗證STDIO僅桌面金融商業與電商

概覽

AI 產生的概覽

面向 Dicker Data B2B 合作夥伴 API 的 MCP 伺服器,讓助理查詢經銷價格與庫存、下單並追蹤訂單、讀取發票。

可以做什麼
  • 依一個或多個產品編號查詢價目表價格與現貨庫存
  • 建立採購訂單,並列出或檢視訂單及其已出貨序號
  • 查詢貨運單的出貨與物流追蹤狀態
  • 依日期區間列出發票並檢視發票明細項目
適用情境
適合已持有 Dicker Data API 憑證的經銷商與合作夥伴,希望讓助理在對話中查詢經銷價格與庫存、下單或追蹤採購訂單、取得發票資料。
執行需求
以本機程序執行(Docker 映像或從原始碼建置的 Node.js 版本)。需要 Dicker Data 合作夥伴帳戶代碼與長期存取權杖,因無自助註冊須向 Dicker Data 支援申請;透過 DICKERDATA_ACCOUNT_CODE 與 DICKERDATA_ACCESS_TOKEN 提供,或在閘道模式下以每次請求的標頭傳入。HTTP 模式另需 CONDUIT_S2S_SECRET 及簽章的 X-Gateway-S2S 請求。需能連線至 Dicker Data 的 API。
安裝前請注意
需要可存取真實合作夥伴帳戶的長期 Dicker Data 憑證(DICKERDATA_ACCESS_TOKEN、DICKERDATA_ACCOUNT_CODE),請勿寫入日誌或提交至版本庫。建立訂單工具會送出真實採購訂單,可能產生費用。價格來自資料來源,可能落後於帳戶即時價格與庫存;在 Dicker 確認驗證方式前,建立訂單可能回傳授權錯誤。HTTP 模式需設定高強度的 CONDUIT_S2S_SECRET,不安全開發繞過僅限本機使用。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Dicker Data,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Dicker Data MCP Server

MCP server for Dicker Data's B2B partner/reseller REST API - pricing and stock lookup, order placement and tracking, and invoices, for AI assistants and the WYRE Conduit gateway.

Authentication

Dicker Data does not offer self-serve API signup. Request access from [email protected] or [email protected] to receive a long-lived AccountCode + AccessToken pair.

Every real API call additionally requires a short-lived AccessKey, obtained by exchanging the AccountCode/AccessToken via POST /api/AccessKeyRequest. This server handles that exchange (and its refresh, on expiry) internally - callers only ever need to supply the long-lived credentials.

Configuration

Copy .env.example and set the variables below.

VariableRequiredDescription
DICKERDATA_ACCOUNT_CODEFor stdio and AUTH_MODE=envLong-lived account code issued by Dicker Data. Gateway mode does not read this.
DICKERDATA_ACCESS_TOKENFor stdio and AUTH_MODE=envLong-lived access token issued by Dicker Data. Gateway mode does not read this.
MCP_TRANSPORTNostdio (default) or http.
AUTH_MODENogateway (Docker image and Compose default) or env. Gateway mode requires X-DickerData-Account-Code and X-DickerData-Access-Token on each /mcp request and never falls back to DICKERDATA_*. env uses those variables after S2S auth succeeds.
CONDUIT_S2S_SECRETYes for HTTPService-to-service secret. The HTTP server logs an error and exits non-zero when this is empty or a known placeholder. Compose will not start without it. Never commit a real value.
MCP_ALLOW_INSECURE_DEVNoSet to exactly 1 only for local development to start HTTP without CONDUIT_S2S_SECRET. The process logs a warning, does not enforce X-Gateway-S2S, and binds 127.0.0.1 only. A non-loopback MCP_HTTP_HOST is overridden and logged. A placeholder secret still refuses to start.
MCP_HTTP_HOSTNoBind address when a secret is configured. Unset means 0.0.0.0. The container image sets 0.0.0.0. Ignored in favor of 127.0.0.1 when the insecure-dev bypass is on.
MCP_HTTP_PORTNoHTTP port. Defaults to 8080.
LOG_LEVELNodebug, info (default), warn, or error.

/health stays unauthenticated, does not require X-Gateway-S2S, and does not read vendor credentials. The stdio transport does not use CONDUIT_S2S_SECRET.

HTTP authentication

With MCP_TRANSPORT=http and CONDUIT_S2S_SECRET set, every /mcp request must include X-Gateway-S2S. The value is t=<unix seconds>,v1=<hex hmac-sha256>. The hex digest is HMAC-SHA256 over the exact ASCII string t=<unix seconds> (the same prefix that appears in the header), keyed with CONDUIT_S2S_SECRET, encoded as 64 lowercase hex characters. The timestamp must be within 300 seconds of the server clock. A missing or invalid header returns 401. The secret is never written to logs or the response.

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

Known placeholders are rejected at startup and do not count as a configured secret: changeme, change-me, secret, example, placeholder, replace-me, your-secret, your-s2s-secret, s2s-secret, replace-with-a-real-secret. Generate a value with openssl rand -hex 32.

In AUTH_MODE=gateway, /mcp also requires X-DickerData-Account-Code and X-DickerData-Access-Token. Those headers are the only Dicker Data credentials for that request. A request missing either returns 401 and does not fall back to DICKERDATA_ACCOUNT_CODE / DICKERDATA_ACCESS_TOKEN.

Tools

Pricing

  • dickerdata_get_pricing - PricingRequest price-list (datafeed) pricing + stock-on-hand for one or more product codes. May lag your live account price and stock; dimensions may be null.
  • dickerdata_get_price - PricingRequest price-list (datafeed) pricing + stock for a single product code. Same feed as dickerdata_get_pricing, may lag your live account price and stock; no quantity-based pricing.

Orders

  • dickerdata_create_order - place a purchase order.
  • dickerdata_get_order_details - look up a single order.
  • dickerdata_list_orders - list orders matching account code / order / backorder / PO number.
  • dickerdata_get_order_serials - shipped serial numbers for an order.
  • dickerdata_get_consignment_status - shipping/tracking status for a consignment.

Account

  • dickerdata_list_invoices - invoices within a date range.
  • dickerdata_get_invoice_details - line-item detail for a sales order/invoice.

Known issues

WYREAI-592: Dicker Data's POST /api/DickerData/GetPrice requires an undocumented HTTP Authorization header, so dickerdata_get_price uses GET /api/PricingRequest instead (a price-list feed that may lag the live account price and stock; no quantity-based pricing). The live endpoint is not used until the Authorization scheme is known. dickerdata_create_order may hit the same "Missing Request Header/Authorization" 401 until Dicker confirms the auth scheme.

Scope

This is a v1 / MVP surface covering the core distributor workflow (pricing, ordering, tracking, invoicing). Explicitly out of scope for now: Microsoft CSP/ESD subscription management, Autodesk subscriptions, and annuity-order endpoints - these are much larger, vendor-specific surfaces distinct from core distribution. They can be added as a follow-up if there's demand.

Development

bash
npm installnpm run buildnpm testnpm run lint   # tsc --noEmit

Docker

The image listens on 0.0.0.0 inside the container (MCP_HTTP_HOST) and defaults to AUTH_MODE=gateway. Publish the port on loopback and pass the S2S secret. In gateway mode the account code and access token arrive on each request as X-DickerData-Account-Code and X-DickerData-Access-Token; they are not read from the environment.

bash
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

Do not pass a known placeholder such as your-s2s-secret or changeme. Startup treats those as unset and exits. Compose refuses to start when CONDUIT_S2S_SECRET is unset, sets AUTH_MODE=gateway, does not pass DICKERDATA_ACCOUNT_CODE or DICKERDATA_ACCESS_TOKEN, and publishes 127.0.0.1:8080:8080. A project .env is interpolation only — do not add env_file to the gateway service.

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

Single-tenant HTTP (AUTH_MODE=env) still requires the S2S secret, then uses DICKERDATA_ACCOUNT_CODE and DICKERDATA_ACCESS_TOKEN:

bash
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

Local HTTP without a secret is development-only. It binds 127.0.0.1 and logs a warning. A non-loopback MCP_HTTP_HOST (including 0.0.0.0) is overridden and that override is logged:

bash
MCP_ALLOW_INSECURE_DEV=1 npm run start:http

A signed gateway request:

bash
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"}'

來源:README.md,提交 03c65eb

工具

0
SourceWeft 曾在隔離沙箱中以無憑證方式啟動該軟體包一次,以列出其工具,但未能完成:該軟體包類型無法在沙箱中執行。

版本歷史

4
  1. v1.0.5最新Nov 5, 2026
  2. v1.0.4Oct 29, 2026
  3. v1.0.3Oct 14, 2026
  4. v1.0.2Sep 20, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。