Yango Tech Retail MCP

io.github.A1-x-Tech由 GitHub 帳號 A1-x-Tech 發布v1.2.1更新於 Nov 1, 2026

MCP server for the Yango Tech Retail B2B API: orders, products, prices, discounts, stocks.

發布方自己的服務:Tech.eu Funding Explorer

概覽

AI 產生的概覽

將助理連接到 Yango Tech Retail B2B 零售帳戶,用來查看與修改門市、訂單、商品、價格、折扣和庫存。

可以做什麼
  • 讀取門市、商品目錄、價格表與價格、庫存、訂單詳情與狀態、訂單事件流以及稅務收據
  • 建立與取消訂單,並追蹤訂單狀態變化
  • 建立或更新商品、設定價格、建立門市專屬折扣
  • 讀取並更新或初始化某門市的庫存數量
  • 透過原始請求入口呼叫其他任意 B2B 端點
適用情境
適合使用 Yango Tech 的雜貨零售或暗店商家,以自然語言查詢商品目錄、價格、庫存和訂單,或進行改價、改庫存等日常作業,而不必另開管理後台。
執行需求
透過 npx 在本機執行,需要 Node.js 20 以上版本。需要 Yango Tech Retail 帳戶,以及由 Yango Tech 整合經理核發的零售商 Bearer 權杖,透過 YANGO_RETAIL_TOKEN 提供。選用設定包含 API 根位址、逾時與重試次數。需要能連線到 Yango Tech Retail API 主機的網路。
安裝前請注意
寫入會立即變更真實帳戶資料:訂單、商品紀錄、顧客可見價格、折扣和庫存,且沒有自動回復機制。raw_request 可對任何端點寫入。權杖屬於機密,不應提交到版本控制。匿名遙測預設開啟,失敗時可能附上錯誤摘錄,其中可能含有請求中的值;可用 ASKADS_TELEMETRY 關閉。折扣請求的欄位結構上游並未公開。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

[A1] Yango Tech Retail MCP

English | Русский

[npm] [Glama] [CI] [License: MIT]

A1 Yango Tech Retail MCP connects an AI app to a retailer account in Yango Tech Retail. Use ordinary language to check stores, orders, products, prices and stock, or to create orders and update account data when needed.

The server works with the retailer-facing B2B API for grocery retail and darkstores. It is not a marketplace seller portal, a taxi service or Yango Delivery.

  • 16 tools. Nine read-only tools, five write tools and two potentially destructive tools cover stores, catalog, pricing, stock, orders and receipts.
  • A safe read-only start. Check connected data before changing anything in the account.
  • Clear write boundaries. Order creation and cancellation, product upserts, price changes, discount creation and stock updates are separated from reads.
  • Additional API coverage. Technical users can reach methods without a dedicated tool through raw_request.

Start with:

List our stores and show the stock of product [product ID] in each.

Connect the server · Explore use cases · Open technical documentation


See it work in a minute

You: List our stores and show the stock of product [product ID] in each.

Assistant: I will return the stores, their ids and the current stock of this product in each one.

You: Show the price of this product in every price list.

Assistant: I will return the price lists and the current product price in each one. No account data will be changed.

You: Change the price to 99.90 in price list [price-list ID].

Assistant: This will change a real customer-facing price. I will show the product, price list, current value and new value before asking for confirmation.

You: Confirm.

Assistant: The price has been updated. I will read the price list again and return the current value.

Stores, products, prices, stock and order states always come from the connected retailer account and the current API response.

Contents

Quick start

You need Node.js 20+, a Yango Tech Retail account and a retailer Bearer token.

  1. Get a token from your Yango Tech integration manager.

  2. Add the server to your AI app using one of the instructions below.

  3. Start with a read-only request:

    List our stores and show the stock of product [product ID] in each.

Codex

In the app:

  1. Open Settings → MCP servers.

  2. Select Add server.

  3. Choose STDIO, then enter the launch command npx -y mcp-yango-retail@latest and the YANGO_RETAIL_TOKEN environment variable with your token.

  4. Select Save, then Restart.

From the command line:

bash
codex mcp add yango-retail \  --env YANGO_RETAIL_TOKEN=your_token \  -- npx -y mcp-yango-retail@latest

Check the connection:

bash
codex mcp list

Codex MCP documentation

Claude Code
bash
claude mcp add \  --env YANGO_RETAIL_TOKEN=your_token \  --transport stdio \  --scope user \  yango-retail \  -- npx -y mcp-yango-retail@latest

Check the connection:

bash
claude mcp list

Claude Code MCP documentation

Claude Desktop

The current official path is Settings → Extensions. For a custom desktop extension, open Advanced settings → Extension Developer → Install Extension…, select a .mcpb file and follow the prompts.

This repository currently publishes an npm stdio package and does not contain a .mcpb bundle. For Claude Desktop builds that still support local configuration, use the following JSON stdio configuration as a fallback:

json
{  "mcpServers": {    "yango-retail": {      "command": "npx",      "args": ["-y", "mcp-yango-retail@latest"],      "env": {        "YANGO_RETAIL_TOKEN": "your_token"      }    }  }}

In those builds, save it to ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows.

Claude Desktop MCP documentation

Cursor

Add a user-level server to ~/.cursor/mcp.json on macOS/Linux or %USERPROFILE%\.cursor\mcp.json on Windows:

json
{  "mcpServers": {    "yango-retail": {      "type": "stdio",      "command": "npx",      "args": ["-y", "mcp-yango-retail@latest"],      "env": {        "YANGO_RETAIL_TOKEN": "your_token"      }    }  }}

Cursor MCP documentation

VS Code

Run MCP: Open User Configuration from the Command Palette and add:

json
{  "servers": {    "yango-retail": {      "type": "stdio",      "command": "npx",      "args": ["-y", "mcp-yango-retail@latest"],      "env": {        "YANGO_RETAIL_TOKEN": "${input:yango_retail_token}"      }    }  },  "inputs": [    {      "type": "promptString",      "id": "yango_retail_token",      "description": "Yango Tech Retail Bearer token",      "password": true    }  ]}

Check the server with MCP: List Servers.

VS Code MCP documentation

What you can ask it to do

Check stores and the product catalog

  • List stores with their ids, status, location, address and name when available.
  • Browse products by cursor and inspect their status, category, localized names, barcodes and custom attributes.
  • Create or update up to 100 products in one request. Product records are upserted rather than added as duplicates.

Check and update prices

  • List price lists and read product prices from one or more lists.
  • Compare the same product across price lists.
  • Set up to 100 prices in one request using decimal strings such as "150.00".
  • Create up to 100 store-specific discounts after confirming the expected field structure with Yango Tech.

Check and update stock

  • Read stock across stores, including the product, quantity and shelf type.
  • Update up to 1,000 stock lines for one store.
  • Use initialize for the first stock load and modify for regular updates.

Work with orders and receipts

  • Create an order after collecting its store, products, quantities, prices, delivery details and payment type.
  • Read order details and check the current states of several orders at once.
  • Follow the order event feed for new orders, state changes and issued receipts.
  • Read a fiscal receipt by order id or receipt id.
  • Cancel an order after checking its current state and the cancellation reason.

Use additional API methods

raw_request covers /b2b/v1/* methods without a dedicated tool, including order updates, VAT data, price-list links, picking, logistics and 3PL delivery operations. It can change real account data and is intended for technical users who understand the upstream API.

Complete schemas, response fields and API gaps are available in the tool reference.

How retail data is connected

EntityHow it is used
StoreIdentifies the location whose stock and discounts are read or changed
ProductThe same product_id connects catalog data, prices, stock and order items
Price listHolds product prices separately from a store; store-to-list links use another API method
Stock lineConnects a product, store, quantity and shelf type; sellable stock normally uses store
OrderUses a retailer-supplied order_id; order details and current state are read separately
ReceiptCan be requested by order_id or receipt_id when it is available

Feeds use cursor pagination. A page with fewer items than the requested limit means the current product, price-list or stock feed is exhausted. The order event feed is continuous: keep its last cursor and request the next page later.

What changes in the account

The server exposes MCP annotations for read-only, write and destructive actions. The AI client decides when and how to ask for confirmation.

ActionResultChanges the account
Read stores, products, price lists, prices, stock, orders or receiptsReturns current account dataNo
Create or update productsUpserts real catalog recordsYes
Set pricesOverwrites customer-facing pricesYes
Create discountsAdds real store-specific discountsYes
Update or initialize stockOverwrites stock quantities for a storeYes
Create an orderAdds a real order with the supplied order_idYes
Cancel an orderChanges the order to a cancellation stateYes
raw_requestCalls another API method, including possible writesDepends on the method

Before a write, ask the assistant to show the target store, product ids, price list, quantities, current values and proposed values. Write responses are not fully documented upstream, so after a successful price or stock update the server can read the corresponding data again and show the current value.

Getting access

Yango Tech issues a Bearer token for a retailer account through an integration manager. This repository does not describe a self-service token portal.

  1. Contact your Yango Tech integration manager and request a retailer Bearer token.
  2. Add it to the AI client as YANGO_RETAIL_TOKEN.
  3. Keep it out of Git and share it only through the AI client's secret or environment-variable configuration.

The production API host is https://api.retailtech.yango.com. Every API call is a POST with a JSON body under /b2b/v1/*, including read operations.

The token is stored in the AI client's local configuration. Treat it like a password and never commit a configuration containing a real token.

Configuration

VariableRequiredDefaultDescription
YANGO_RETAIL_TOKENyes—Bearer token issued by Yango Tech; YANGO_AUTH_TOKEN is accepted as an alias
YANGO_RETAIL_API_BASE_URLnohttps://api.retailtech.yango.comAPI root override; YANGO_API_BASE_URL and YANGO_DOMAIN are accepted as aliases
YANGO_RETAIL_TIMEOUT_MSno60000Timeout for one request, in milliseconds
YANGO_RETAIL_MAX_RETRIESno3Maximum retries for temporary failures; writes are not replayed after network or 5xx errors
ASKADS_TELEMETRYnoenabled0, false, off or no disables anonymous telemetry

Data and telemetry

Requests to Yango Tech Retail

The server runs on your machine and sends retailer data directly to the configured Yango Tech Retail API host. The Bearer token is attached only to requests resolved against that host. Even raw_request accepts a relative path and rejects a path that resolves to another origin.

Anonymous telemetry

By default, the server sends technical events to usage.gistrec.cloud: server start, called tool name and a fixed reason code when startup fails.

Events contain a random installation id, package version, AI client name and version, Node.js version and operating system. The Bearer token, retailer data, tool arguments and prompts are not read or sent. For each tool call it also sends the outcome and, on failure, an excerpt of the error text with e-mails, addresses, tokens, numbers of 4+ digits and quoted text replaced by #; a value from your request can appear in it if the error text contains it. Telemetry has a two-second timeout and does not block tool calls.

To disable telemetry, add:

text
ASKADS_TELEMETRY=0

The implementation is in src/telemetry.ts.

Limits and background work

  • The public API quota is not documented. The official Python client keeps to 5 requests per second for one token and endpoint; use that as an operating guideline, not as a published API limit. This server does not proactively throttle every call.
  • 429 responses are retried. The server follows Retry-After when present and makes no more retries than YANGO_RETAIL_MAX_RETRIES allows.
  • Writes are not replayed after uncertain failures. Network and 5xx retries apply only to side-effect-free reads. After an uncertain write, read the current order, price or stock before trying again.
  • Batch limits apply. Products, prices and discounts accept up to 100 entries per request; stock updates accept up to 1,000 lines.
  • There is no background monitoring. The server works only when called from the AI app. If the app supports scheduled tasks, it can check order states or stock periodically.
  • There is no automatic rollback. A successful update changes the retailer account immediately.
  • Deletion is limited by the upstream API. Products and prices are upserted; there are no known delete methods for products, prices or discounts.
  • Discount support is incomplete upstream. The exact keys for the activity period and discount value are undocumented, and there is no known method to list or delete discounts. Confirm the payload with Yango Tech before using it.

Technical documentation

Support

Found a bug or missing a use case? Create an issue or message us on Telegram.


[Две Моны дают пять]

You made it to the end!

來源:README.md,提交 976a424

工具

16

create_order

Create an order

Creates an order on the Yango Tech platform (POST /b2b/v1/orders/create). You supply the order_id; the same body shape is used by the platform for order updates. All money fields are decimal STRINGS (e.g. "150.00"), never numbers. The response body is not documented upstream and is returned verbatim. After creation, track progress with get_orders_state (get_order does NOT return the state).

輸入參數cartorder_id必填store_idcourier_pinpayment_typehuman_order_iddelivery_addressclient_phone_numberdelivery_propertiesuse_external_logistics

cancel_order

Cancel an order

Cancels an existing order (POST /b2b/v1/orders/cancel). Optionally pass a reason. The response body is not documented upstream and is returned verbatim; verify the outcome with get_orders_state (expect canceled or pending_cancel).

輸入參數reasonorder_id必填

get_order

Get order details

Details of a single order (POST /b2b/v1/orders/get): every field the order was created with (cart, delivery_address, payment_type, store_id, …) plus create_time. NOTE: the response does NOT include the order state — use get_orders_state for tracking.

輸入參數order_id必填

get_orders_state

Get order states (batch)

Batch order tracking (POST /b2b/v1/orders/state). Returns {query_results: [{order_id, query_result, state?}]} — query_result reports per-order lookup success (an unknown id is reported here, not as an HTTP error). Known states: draft, checked_out, reserving, reserved, postpone_reserving, postponed, assembling, assembled, courier_assigned, delivering, closed, pending_cancel, canceled (the list is open-ended).

輸入參數orders必填

query_order_events

Poll the order event feed

Cursor-based order event feed (POST /b2b/v1/orders/events/query): new orders, state changes and issued receipts. Returns {cursor, orders_events: [{order_id, occurred, data: {type, …}}]} where data.type is state_change (with current_state), new_order, or receipt_issued (with receipt_id). Omit cursor for the first call, then keep passing the returned cursor — the feed is continuous, so poll again later with the last cursor.

輸入參數cursor

get_receipt

Get fiscal receipts

Fiscal receipt(s) by receipt id OR order id (POST /b2b/v1/receipts/get) — pass exactly one of the two. Returns {receipts: [{receipt_id, order, create_time, store, receipt_type (payment|refund), payment_methods, items, client?}]}; items is a map keyed by item id, and all amounts are decimal strings. Client PII (full_name, phone_number, email, delivery_address) is included only for the fields you list in client_fields.

輸入參數order_idreceipt_idclient_fields

get_stores

List stores

All stores (darkstores) of the retailer (POST /b2b/v1/stores/get, no parameters). Returns {stores: [{id, status, location: {lat, lon}, address?, name?}]}. The store id is the WMS store id used by create_order, update_stocks and create_discounts; status values are not enumerated upstream.

無需輸入參數。

query_products

Query the product catalog

Cursor-based product catalog / product-updates feed (POST /b2b/v1/products/query). Returns {products, cursor}; iterate until a page has fewer items than limit to build a full snapshot. Each product: {product_id, master_category, status (active|disabled|archived), is_meta, custom_attributes}. custom_attributes carries localized maps (longName, shortNameLoc, descriptionLoc: {lang: text}), markCount + markCountUnitList (unit/gram/kilogram/liter/millilitre — open-ended), barcode[], images[], typeAccounting (byUnit|byWeight|byTrueWeight) and arbitrary extra attributes.

輸入參數limitcursor

create_products

Create or update products

Creates (or upserts) products in the catalog (POST /b2b/v1/products/create), at most 100 per request. Each product uses the same shape query_products returns: {product_id, master_category, status, is_meta, custom_attributes}. custom_attributes must include longName ({lang: text}), shortNameLoc, markCount and markCountUnitList; extra keys are passed through. The response body is not documented upstream (2xx = success) and is returned verbatim.

輸入參數products必填

query_price_lists

Query price lists

Cursor-based price-list feed (POST /b2b/v1/pricelists/query) — the API's only way to list price lists, so a full snapshot means iterating until a page has fewer items than limit. Returns {pricelists: [{id, name, status (active|removed)}], cursor}. Price-list ids feed get_prices and set_prices. Related endpoints without a dedicated tool (pricelists/get, pricelists/create, store-pricelist-links/*) are reachable via raw_request.

輸入參數limitcursor

get_prices

Get prices

Product prices for one or more price lists (POST /b2b/v1/prices/get). Returns {results: [{pricelist_id, prices_data: [{product_id, price, price_per_quantity?}]}]}. price may arrive as a number or a string — treat it as a decimal either way.

輸入參數pricelist_ids必填

set_prices

Set prices

Sets product prices in price lists (POST /b2b/v1/prices/set), at most 100 per request. Prices are decimal STRINGS (e.g. "150.00"); price_per_quantity (pack size the price applies to) defaults to 1 when omitted. The response body is not documented upstream (2xx = success) and is returned verbatim. There is no delete endpoint for prices.

輸入參數prices必填

create_discounts

Create discounts

Creates per-store product discounts (POST /b2b/v1/discounts/create), at most 100 per request. CAUTION: the exact key names inside discount_activity_period and discount_value are NOT documented (the official client types them as plain string→string maps with no example) — confirm the expected keys with Yango Tech before relying on this tool, and note there is no endpoint to list or delete discounts. The response body is not documented upstream (2xx = success) and is returned verbatim.

輸入參數discounts必填

query_stocks

Query stock levels

Cursor-based stock feed across stores (POST /b2b/v1/stocks/query). Returns {stocks: [{product_id, quantity, shelf_type, store_id}], cursor}; iterate until a page has fewer items than limit for a full snapshot. Known shelf_type values (open-ended): store, markdown, incoming, out, trash, lost, found, office, parcel, parcel_returned, collection, cargo, repacking, review, kitchen_on_demand, kitchen_components, kitchen_trash, kitchen_lost, kitchen_found. Sellable stock normally lives on shelf_type "store".

輸入參數limitcursor

update_stocks

Update stock quantities

Writes stock quantities for one store. mode=modify (default) POSTs /b2b/v1/stocks/update with update_mode "modify" (at most 1000 items per request); mode=initialize POSTs /b2b/v1/stocks/initialize for the first-time stock load of a store. The response body is not documented upstream (2xx = success) and is returned verbatim. Verify the result with query_stocks.

輸入參數modestocks必填store_id必填

raw_request

Raw Yango Tech Retail API call

Escape hatch: direct call to any Yango Tech Retail B2B endpoint — for paths without a dedicated tool (orders/update, receipts/documents/upload, wms/picking/set-state, logistics/delivery/set-state, products-vat/*, pricelists/get|create, store-pricelist-links/*, 3pl/deliveries/*). Every endpoint of this API is a POST with a JSON body; pass a relative path like "b2b/v1/pricelists/get" and the body object. CAUTION: this tool can perform writes; 5xx/network errors are never retried for it.

輸入參數bodypath必填

版本歷史

3
  1. v1.2.1最新Oct 31, 2026
  2. v1.2.0Oct 31, 2026
  3. v1.1.0Sep 16, 2026

評分

已滿足適用檢查項的 90%

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

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

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

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

其他 Tech 整合