Yandex Merchants MCP

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

MCP server for the Yandex Merchants partner API: feeds, offer prices, discounts, hide/unhide.

已驗證STDIO僅桌面效率與工作流商業與電商

概覽

AI 產生的概覽

面向 Yandex Merchants 合作夥伴 API 的本機 MCP 伺服器:修改已上傳 YML 商品來源中的價格、折扣,並隱藏或恢復商品。

可以做什麼
  • 檢查連線狀態並列出可用商品來源及其 feedId 與網址
  • 修改單一商品價格(含特殊價格),或一次批次更新最多 2000 個商品的價格
  • 設定折扣,同時提供折後價與劃線原價
  • 隱藏單一或最多 500 個商品(可設定最長 720 小時),並恢復最多 500 個已隱藏商品
  • 透過原始請求工具直接呼叫其他合作夥伴 API 方法
  • 在對話中完成 Yandex OAuth 登入、查看授權狀態並刪除已儲存的權杖
適用情境
適合在 Yandex Merchants 上銷售、希望直接請助理修改現有商品來源中的價格、設定折扣或隱藏缺貨商品,而不必編輯並重新上傳整個 YML 檔案的情境。
執行需求
透過 npx 在本機執行,需要 Node.js 20 或更新版本,以及支援本機 MCP 的桌面應用程式、命令列或編輯器。需要已上傳至 Yandex Merchants 的 YML 商品來源,以及上傳該商品來源的 Yandex 帳號。可透過對話內 OAuth 登入,或提供具備 products:partner-api 權限的 YANDEX_MERCHANTS_OAUTH_TOKEN。選用變數:YANDEX_MERCHANTS_BASE_URL、YANDEX_MERCHANTS_TIMEOUT_MS、YANDEX_MERCHANTS_MAX_RETRIES。
安裝前請注意
多數工具會寫入真實帳號:改價、折扣、隱藏與恢復,raw_request 也可能修改真實資料。API 無法讀取目前價格、商品來源內容或已隱藏商品,需自行記錄變更;遇到 5xx 或連線中斷時結果未知且不會自動重試。OAuth 權杖保存在本機憑證檔案中,須視為機密。預設會向第三方主機傳送匿名技術遙測,可用 ASKADS_TELEMETRY=0 關閉。

安裝

在 SourceWeft 中

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

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

其他 MCP 客戶端

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

README

[A1] Яндекс Товары MCP

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

A1 Яндекс Товары MCP подключает AI-приложение к партнёрскому API Яндекс Товаров. Можно обычными словами менять цены, скидки и видимость отдельных товаров — без редактирования и повторной загрузки всего YML-фида. Подключение начинается прямо в диалоге: не нужно заранее создавать токен или редактировать конфигурацию.

  • 13 готовых действий. Подключение аккаунта прямо из диалога, проверка доступа, список фидов, цены, скидки, скрытие и возврат товаров, а также прямой вызов остальных методов API.
  • Для одного товара и больших списков. За один запрос можно изменить цены у 2 000 товаров или скрыть и вернуть до 500 товаров.
  • Точечные изменения. Сервер работает с уже загруженным YML-фидом и не создаёт фиды заново.
  • Проверяемый результат. Запись считается успешной только при status: "OK" в ответе Яндекс Товаров.
  • Работает локально. Сервер запускается через npx; OAuth-токен остаётся на вашем компьютере.

Попробуйте первым сообщением:

Проверь подключение к Яндекс Товарам и покажи доступные фиды.

Подключить сервер · Посмотреть сценарии · Открыть техническую документацию


Увидеть работу за минуту

Вы: Проверь подключение и покажи мои фиды.

Ассистент: Проверяет токен и показывает feedId и адрес каждого доступного фида.

Вы: В фиде 1069 подготовь новую цену для SKU-123: 1 490 ₽ вместо 1 990 ₽. Сначала покажи изменение.

Ассистент: Подготовлено: фид 1069, товар SKU-123, новая цена 1 490 ₽, зачёркнутая цена 1 990 ₽. Отправить изменение?

Вы: Да, обнови.

Ассистент: Отправляет изменение и проверяет поле status в ответе. Операция завершена, если Яндекс Товары вернули status: "OK".

Содержание

Быстрый старт

Понадобятся Node.js 20 или новее, загруженный в Яндекс Товары YML-фид и логин Яндекса, под которым этот фид загружен. Сервер запускается через npx, поэтому отдельно устанавливать пакет не требуется.

  1. Добавьте сервер в AI-приложение — ниже открыт пример для Codex, остальные приложения собраны в сворачиваемые инструкции.
  2. Напишите: «Подключи Яндекс Товары». Ассистент даст ссылку на вход в Яндекс и попросит прислать код подтверждения. Если вы задали YANDEX_MERCHANTS_OAUTH_TOKEN в конфигурации, этот шаг не нужен.
  3. Проверьте подключение: «Проверь подключение к Яндекс Товарам и покажи доступные фиды». Если сервер вернул список фидов, можно переходить к ценам и видимости товаров.
Codex

Через интерфейс приложения:

  1. Откройте Settings → MCP servers.

  2. Нажмите Add server.

  3. Выберите STDIO, затем укажите команду запуска npx -y mcp-yandex-merchants@latest.

  4. Нажмите Save, затем Restart.

Через командную строку:

bash
codex mcp add yandex-merchants -- npx -y mcp-yandex-merchants@latest

Проверьте подключение:

bash
codex mcp list

Затем в чате Codex попросите: «Подключи Яндекс Товары».

Официальная инструкция Codex

Claude Code
bash
claude mcp add --transport stdio --scope user yandex-merchants -- npx -y mcp-yandex-merchants@latest

Проверьте сервер командой:

bash
claude mcp list

Затем начните диалог с просьбы подключить Яндекс Товары.

Документация Claude Code

Claude Desktop

Актуальный официальный путь — Settings → Extensions. Для пользовательского desktop extension откройте Advanced settings → Extension Developer → Install Extension…, выберите файл .mcpb и следуйте подсказкам.

Этот репозиторий сейчас публикует npm-пакет со stdio и пока не содержит .mcpb. Поэтому используйте приведённый ниже JSON stdio-конфиг как fallback только в сборках Claude Desktop, где ещё поддерживается локальная конфигурация:

json
{  "mcpServers": {    "yandex-merchants": {      "command": "npx",      "args": ["-y", "mcp-yandex-merchants@latest"]    }  }}

В таких сборках сохраните его в ~/Library/Application Support/Claude/claude_desktop_config.json на macOS или %APPDATA%\Claude\claude_desktop_config.json на Windows.

После сохранения перезапустите Claude Desktop, откройте новый диалог и попросите подключить Яндекс Товары.

Документация Claude Desktop

Cursor

Для всех проектов создайте ~/.cursor/mcp.json (Windows: %USERPROFILE%\.cursor\mcp.json); только для текущего проекта — .cursor/mcp.json:

json
{  "mcpServers": {    "yandex-merchants": {      "type": "stdio",      "command": "npx",      "args": ["-y", "mcp-yandex-merchants@latest"]    }  }}

В чате Cursor сервер появится среди доступных инструментов. Попросите подключить Яндекс Товары и пройдите вход через Яндекс.

Документация Cursor

VS Code

Откройте палитру команд и выполните MCP: Open User Configuration. Добавьте в mcp.json:

json
{  "servers": {    "yandex-merchants": {      "type": "stdio",      "command": "npx",      "args": ["-y", "mcp-yandex-merchants@latest"]    }  }}

Проверьте запуск командой MCP: List Servers, затем откройте чат и попросите подключить Яндекс Товары.

Документация VS Code

Это локальный MCP-сервер: приложение запускает npx на вашем компьютере. Веб-версии ChatGPT и Claude сами по себе не могут запустить такой процесс — используйте настольное приложение, CLI или редактор с поддержкой локальных MCP-серверов.

Что можно поручить

Проверить подключение и выбрать фид

  • Проверить токен. Убедиться, что сервер видит аккаунт, — check_access.
  • Показать доступные фиды. Получить feedId и адрес каждого фида — list_feeds.

feedId понадобится для любого изменения. API не показывает состав фида, его статус и текущие значения товаров.

Изменить цены и скидки

  • Поменять цену одного товара — set_offer_price.
  • Обновить цены списком до 2 000 товаров за один запрос — update_offer_prices.
  • Задать скидку с новой и зачёркнутой ценой — set_offer_discount.
  • Добавить специальную цену для Яндекс Пэй, СБП или карты Ozon — set_offer_price.

Цены передаются только в рублях. Если в одном фиде несколько предложений с одинаковым id, API изменит только первое.

Скрыть или вернуть товары

  • Скрыть один товар — hide_offer.
  • Скрыть до 500 товаров одной командой — hide_offers.
  • Вернуть до 500 товаров в показ — show_offers.

Товар можно скрыть бессрочно или на срок до 720 часов. При бессрочном скрытии он останется невидимым до отдельной команды на возврат.

Вызвать остальные методы API

raw_request позволяет обратиться к методу партнёрского API, для которого нет отдельного готового действия. Он поддерживает GET, POST и DELETE и принимает данные в исходном формате API.

raw_request может изменить реальные данные. Если нужное действие уже есть среди готовых инструментов, безопаснее использовать его.

Полные названия полей, форматы ответов и коды ошибок собраны в справочнике инструментов.

Как это работает

Сервер не создаёт, не удаляет и не загружает фиды. Он берёт feedId уже существующего YML-фида и отправляет в Яндекс Товары точечные изменения для указанных товаров.

Это удобно, когда нужно быстро:

  • исправить одну или несколько цен;
  • поставить скидку;
  • скрыть закончившийся товар;
  • вернуть товар в показ.

Сам YML-фид по-прежнему управляется через кабинет Яндекс Товаров или Вебмастер. Содержимое фида сервер прочитать не может, поэтому id товаров и журнал изменений нужно хранить на своей стороне.

Что может изменить данные

ДействиеЧто происходитМеняет данные
check_access, list_feedsПроверяет токен и показывает id и адреса фидовНет
set_offer_price, set_offer_discountМеняет цену одного товараДа
update_offer_pricesМеняет цены у 1–2 000 товаровДа
hide_offer, hide_offersСкрывает один или несколько товаровДа
show_offersВозвращает скрытые товары в показДа
raw_requestВыполняет выбранный вызов APIЗависит от метода

Сервер снижает риск ошибок следующим образом:

  • проверяет обязательные поля, размеры списков, длину id, положительные цены и диапазон скидки до отправки запроса;
  • проверяет status в теле ответа, потому что HTTP 200 ещё не означает успешную запись;
  • не повторяет запись автоматически после ошибки сервера или обрыва связи;
  • не позволяет raw_request отправить OAuth-токен на посторонний адрес;
  • сообщает AI-приложению, какие действия читают данные, а какие их изменяют.

Подтверждение перед записью зависит от AI-приложения. Если хотите сначала проверить значения, попросите ассистента подготовить изменение, показать feedId, id товара и новые значения, а выполнить его — только после следующей команды.

Подключение и настройка

Для обычного использования токен заранее не нужен:

  1. В чате попросите подключить Яндекс Товары.
  2. Откройте ссылку на Яндекс OAuth строго под тем логином Яндекса, под которым загружен YML-фид — токен другого логина не увидит ни одного фида.
  3. Подтвердите доступ и пришлите код ассистенту. Код одноразовый и действует 10 минут.

Сервер использует PKCE: код из чата сам по себе нельзя обменять на токен — это может сделать только ваш запущенный сервер. Он запрашивает единственное право — products:partner-api («API поиска по товарам»). Полученный токен хранится локально в ~/.config/mcp-yandex-merchants/credentials.json с правами только для владельца и продлевается автоматически. Перезапускать AI-приложение после входа не нужно.

Проверить состояние — попросите «покажи статус подключения», отключить — «отключи Яндекс Товары». Выданный доступ отзывается в Яндекс ID.

Для CI и нестандартных установок доступна настройка через переменные окружения:

ПеременнаяНазначение
YANDEX_MERCHANTS_OAUTH_TOKENГотовый OAuth-токен с доступом products:partner-api — для CI и установок без диалога. Имеет приоритет над входом из диалога; сервер такой токен не обновляет и не удаляет.
YANDEX_MERCHANTS_OAUTH_CLIENT_IDClientID собственного OAuth-приложения для входа из диалога вместо приложения A1 по умолчанию.
YANDEX_MERCHANTS_BASE_URLКорневой адрес API; по умолчанию https://yandex.ru/products/api/ext/partner.
YANDEX_MERCHANTS_TIMEOUT_MSТаймаут одного запроса; по умолчанию 60 000 мс.
YANDEX_MERCHANTS_MAX_RETRIESЧисло повторов при 429; по умолчанию 3. При 5xx и сетевых ошибках повторяются только запросы на чтение.

Если используете собственное OAuth-приложение, зарегистрируйте его на oauth.yandex.ru/client/new (платформа «Веб-сервисы», Redirect URI https://oauth.yandex.ru/verification_code) и добавьте доступ products:partner-api — «API поиска по товарам». Готовый токен для YANDEX_MERCHANTS_OAUTH_TOKEN выдаёт страница https://oauth.yandex.ru/authorize?response_type=token&client_id=<ClientID>, открытая под логином, который загрузил YML-фид. Храните токен как пароль: не добавляйте конфигурацию с реальным токеном в Git и не отправляйте её посторонним.

Данные и телеметрия

Сервер запускается на вашем компьютере и напрямую обращается к https://yandex.ru/products/api/ext/partner. OAuth-токен добавляется только к запросам этого API: даже raw_request принимает относительный путь и не может отправить токен на другой сайт. При входе из диалога сервер дополнительно обращается к oauth.yandex.ru — только чтобы обменять код подтверждения на токен и продлевать его.

По умолчанию сервер отправляет на usage.gistrec.cloud анонимную техническую телеметрию: случайный идентификатор установки, имя события или инструмента, версию пакета, версию Node.js, ОС и сведения о подключившемся AI-клиенте. В неё не попадают OAuth-токен, данные аккаунта, id фидов и товаров, цены, аргументы инструментов и тексты запросов. При вызове инструмента сервер также отправляет его исход, а при ошибке - фрагмент её текста: код и сообщение, в которых e-mail, адреса, токены, числа от 4 цифр и текст в кавычках заменены на «#». Если в тексте ошибки есть значение из запроса, оно тоже может попасть во фрагмент. Отправка выполняется в фоне и не влияет на работу сервера.

Чтобы отключить телеметрию для MCP-серверов A1, задайте переменную окружения:

bash
ASKADS_TELEMETRY=0

Ограничения

  • Нельзя прочитать текущее состояние товаров. API не возвращает текущие цены, список скрытых товаров, содержимое или статус фида. Храните журнал изменений на своей стороне.
  • Нельзя управлять самими фидами. Создать, удалить или перезагрузить YML-фид можно только в кабинете или Вебмастере.
  • Только рубли. Другие валюты API не принимает.
  • Id товара — до 50 символов. Более длинный идентификатор API не примет.
  • До 2 000 цен за запрос. Для скрытия и возврата — до 500 товаров за запрос.
  • До 50 000 операций в минуту. Отдельно считаются изменения цен и общая сумма скрытий с возвратами.
  • Нет автоматического отката. После обрыва связи результат записи может остаться неизвестным, а прочитать состояние через этот API нельзя. Не повторяйте такую операцию автоматически.
  • Нет постоянного наблюдения. Сервер работает только тогда, когда AI-приложение вызывает его. Если приложение поддерживает задания по расписанию, можно попросить его периодически проверять доступ или выполнять заранее заданный сценарий.

Техническая документация

Поддержка

Нашли ошибку или не хватает сценария? Создайте issue или напишите в Telegram.

來源:README.md,提交 2ecec3c

工具

13

auth_status

Статус подключения к Яндекс Товарам

Показывает, подключены ли Яндекс Товары: есть ли токен, откуда он взят (переменная окружения YANDEX_MERCHANTS_OAUTH_TOKEN или сохранённый вход), когда истекает и где лежит файл с сохранёнными данными. Ничего не отправляет в сеть и не показывает сам токен. Вызовите это, если инструменты отвечают, что подключение не настроено; живую проверку доступа к API делает check_access.

無需輸入參數。

start_login

Начать подключение Яндекс Товаров

Первый шаг подключения Яндекс Товаров без правки конфигурации и без перезапуска клиента. Возвращает ссылку на страницу Яндекс OAuth. Покажите ссылку пользователю целиком и попросите: открыть её в браузере строго под тем логином Яндекса, под которым загружен YML-фид (токен другого логина не увидит ни одного фида), подтвердить доступ и прислать показанный код подтверждения. Токен выдаётся со scope products:partner-api. Полученный код передайте в finish_login. Код действует 10 минут. Сам по себе код бесполезен для постороннего: обменять его может только этот сервер.

無需輸入參數。

finish_login

Завершить подключение Яндекс Товаров

Второй шаг подключения: обменивает код подтверждения из start_login на токен доступа, сохраняет его в файл только для владельца (0600) и сразу проверяет живым запросом к списку фидов. После успеха остальные инструменты работают немедленно — перезапускать клиент не нужно. Если фидов не видно, вход, скорее всего, выполнен не под тем логином (нужен тот, что загрузил YML-фид). Код одноразовый и живёт 10 минут: если он не принят, вызовите start_login заново и попросите свежий.

輸入參數code必填

logout

Отключить Яндекс Товары

Удаляет сохранённый токен Яндекс Товаров с диска. Токен, заданный переменной окружения YANDEX_MERCHANTS_OAUTH_TOKEN, не трогает — его нужно убирать из конфигурации клиента вручную. Доступ, выданный приложению, остаётся активным на стороне Яндекса: отозвать его можно в Яндекс ID.

無需輸入參數。

list_feeds

Список товарных фидов

Возвращает список товарных фидов, доступных текущему OAuth-логину: { status, feeds: [{ feedId, feedUrl }] }. Точка входа для всех остальных инструментов — их параметр feed_id берётся из feedId этого ответа. Больше API про фиды ничего не отдаёт: ни статуса фида, ни списка предложений (создание/удаление фида — только через кабинет или Вебмастер).

無需輸入參數。

check_access

Проверка токена и доступа

Диагностика подключения: выполняет тот же GET /feeds-info и возвращает { ok, feedsCount } либо { ok: false, error }. Отдельного ping-эндпоинта в API нет. Если ok: false — проверьте, что OAuth-токен выдан со scope products:partner-api под тем логином, который загружал фид, и что права на сайт подтверждены в Вебмастере (API открывается через несколько часов после подтверждения).

無需輸入參數。

set_offer_price

Изменить цену предложения

Изменяет цену одного товарного предложения (POST /offer-prices/updates c одним элементом). Валюта всегда RUR — подставляется автоматически. Опционально: discount_base — цена до скидки (покажется зачёркнутой; скидка должна попадать в 5–95%, иначе API вернёт 400), pay_by_price + pay_by_condition (только парой, вместе) — спеццена при условии оплаты. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [{ code, message }] } — проверяйте status. Если в фиде несколько предложений с одинаковым id, цена обновится только у первого. Лимит: 50 000 изменений цен в минуту.

輸入參數price必填feed_id必填offer_id必填pay_by_pricediscount_basepay_by_condition

update_offer_prices

Массовое обновление цен

Массово обновляет цены: от 1 до 2000 предложений одним запросом (POST /offer-prices/updates). Валюта всегда RUR. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [{ code, message }] }; возможные коды: DUPLICATE_OFFER, INVALID_FEED_ID, INVALID_OFFER_ID, LIMIT_EXCEEDED, REQUEST_LIMIT_EXCEEDED (больше 2000 в запросе). Лимит: 50 000 изменений цен в минуту. Для больших объёмов разбивайте на несколько вызовов.

輸入參數offers必填

set_offer_discount

Установить скидку на товар

Устанавливает скидку: price — цена со скидкой, discount_base — старая цена, которая покажется зачёркнутой (тот же POST /offer-prices/updates, но discount_base обязателен). Скидка должна быть не меньше 5% и не больше 95% — проверяется до запроса, иначе API вернёт 400 Bad Request. Валюта всегда RUR. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [...] }.

輸入參數price必填feed_id必填offer_id必填discount_base必填

hide_offer

Скрыть предложение из Поиска

Скрывает одно предложение из Поиска по товарам (POST /hidden-offers), например когда товар закончился. ttl_in_hours — необязательный срок скрытия в часах (максимум 720 = 30 дней, иначе ошибка INVALID_TTL); что делает повторное скрытие с новым ttl, дока API не описывает. Без ttl предложение скрыто до явного show_offers. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [{ code, message }] }. Прочитать список уже скрытых предложений через API нельзя. Лимит: 50 000 операций скрытия/показа в минуту.

輸入參數feed_id必填offer_id必填ttl_in_hours

hide_offers

Массовое скрытие предложений

Массово скрывает предложения из Поиска: от 1 до 500 за запрос (POST /hidden-offers). Общий ttl_in_hours (максимум 720 часов) применяется ко всем предложениям запроса. Ответ API: { status: "OK" } либо { status: "ERROR", errors: [...] }; коды: DUPLICATE_OFFER, INVALID_FEED_ID, INVALID_OFFER_ID, INVALID_TTL, LIMIT_EXCEEDED, REQUEST_LIMIT_EXCEEDED (больше 500 в запросе). Лимит: 50 000 операций скрытия/показа в минуту (общий с show_offers).

輸入參數offers必填ttl_in_hours

show_offers

Возобновить показ предложений

Возобновляет показ ранее скрытых предложений: от 1 до 500 за запрос (DELETE /hidden-offers с JSON-телом). Ответ API: { status: "OK" } либо { status: "ERROR", errors: [...] }; коды: DUPLICATE_OFFER, INVALID_FEED_ID, INVALID_OFFER_ID, REQUEST_LIMIT_EXCEEDED. Лимит: 50 000 операций скрытия/показа в минуту (общий с hide_offers).

輸入參數offers必填

raw_request

Прямой вызов Merchants API

Запасной выход: прямой вызов любого пути партнёрского API Яндекс Товаров относительно базового URL (https://yandex.ru/products/api/ext/partner), например "feeds-info" или "offer-prices/updates". Методы API: GET (feeds-info), POST (offer-prices/updates, hidden-offers), DELETE (hidden-offers). body отправляется как JSON в готовом wire-формате API (например { offers: [...] } или { hiddenOffers: [...] }) — без преобразований.

輸入參數bodypath必填method

版本歷史

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

評分

已滿足適用檢查項的 90%

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

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

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

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