Wildberries MCP Server
About
Wildberries Seller API: 202 tools for product cards, prices, orders, supplies, advertising, reviews, finance and analytics across multiple seller accounts.
Details
- Author
- deviceingineering
- Categories
- Other, Finance
Jump to
Setup
Install Wildberries MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/deviceingineering/wb-mcp-server
Follow the installation instructions in the repository README, then restart your MCP client.
Управляйте магазинами Wildberries из чата с ИИ-ассистентом.202 инструмента Seller API — карточки, цены, реклама, поставки, отзывы, финансы, аналитика — доступны Claude, Cursor, Copilot, Gemini CLI и любому другому MCP-клиенту. Для продавцов WB, у которых один или несколько кабинетов и нет желания кликать в личном кабинете то, что можно спросить словами.
Торгуете ещё и на Ozon? Естьтакой же сервер для Ozon.
Сервер в ежедневной работе больше пяти месяцев, на порядка двадцати кабинетах WB, 202 инструмента. Это личный рабочий инструмент автора, и обновляется он по мере собственной необходимости —как именно.
Ты: Какие мои карточки заблокированы и почему? Ты: Покажи ДРР по всем кампаниям за неделю и выключи те, где он выше 15%. Ты: На каких складах коэффициент приёмки сейчас 0 или 1? Ты: Ответь на все новые отзывы с оценкой 5 благодарностью.
202 инструмента, сгруппированные по разделам Wildberries Seller API. Полный нумерованный список с описанием каждого — вdocs/tools.md.
Три вещи, которых обычно нет у похожих серверов:
- Мульти-магазин.Каждый вызов принимаетshop_id, поэтому два кабинета WB живут в одном диалоге. Если магазин один —shop_idможно не указывать.
- Диагностика WB API.Сервер сам пингует хосты WB, делает лёгкие пробные запросы по каждой категории, разбирает срок действия и права токена и подсвечивает «деградации»: инструмент раньше работал, а теперь стабильно падает — верный признак, что WB изменил API.
- Шифрование токенов.Токены WB лежат зашифрованными (Fernet), а не в конфиге клиента.
Сервер работает по stdio — так его подключают Claude Desktop, Cursor, VS Code и другие MCP-клиенты. Ничего собирать не нужно:
Конфигурация клиента (например,claude_desktop_config.json):
{ "mcpServers": { "wildberries": { "command": "uvx", "args": ["wb-mcp-server"], "env": { "WB_API_TOKEN": "ваш токен Wildberries API", "DATA_DIR": "~/.wb-mcp" } } } }
DATA_DIRукажите на любой доступный для записи каталог — там хранятся магазины, ключи и статистика. По умолчанию используется/data(путь для Docker).
Нужен, если хотите дашборд, диагностику WB API и удобное добавление магазинов через браузер. Понадобится Docker (Docker Desktop или OrbStack) и токен Wildberries Seller API.
git clone https://github.com/DeviceIngineering/wb-mcp-server.git cd wb-mcp-server cp .env.example .env # для локального запуска можно оставить как есть docker compose up -d --build
curl -s http://localhost:8001/api/health # {"status":"ok","auth_enabled":false,"health_check_interval_min":30,...}
Остановить:docker compose down(данные останутся в томеwb_data). Логи:docker compose logs -f.
git clone https://github.com/DeviceIngineering/wb-mcp-server.git cd wb-mcp-server python3 -m venv .venv && source .venv/bin/activate pip install . DATA_DIR=./data PORT=8001 python -m wb_mcp.app
DATA_DIRуказывать обязательно: по умолчанию сервер пишет в/data— путь внутри контейнера.
Сервер отдаёт MCP поSSE:GET /sse— поток событий,POST /messages— сообщения клиента. Поддержка SSE у клиентов разная, поэтому под каждый есть отдельная инструкция — с путями к конфигу на macOS, Linux и Windows, готовым JSON и вариантами с токеном и без.
Общий обзор и таблица совместимости —docs/README.md.
Где у клиента есть команда, настраивающая подключение самостоятельно, инструкция начинается с неё, а правка JSON идёт вторым способом. Самый короткий вариант — Claude Code:
claude mcp add --transport sse wildberries http://localhost:8001/sse claude mcp list # ожидается: wildberries ... ✔ Connected
Несколько кабинетов.Магазины добавляются на/shops, каждый получает свойshop_id. Инструментwb_list_shopsвозвращает список; 200 из 202 инструментов принимаютshop_idпервым параметром (исключения —wb_list_shopsиwb_degradations). Если магазин один, параметр можно опустить: сервер подставит единственный доступный.
Смысл не в том, чтобы «уметь два аккаунта», а в том, чтостратегия пишется один раз и раскатывается на все кабинеты: правило по ценам, шаблон ответов на отзывы, потолок ставки в рекламе применяются ко всем магазинам в одном диалоге — без переключения аккаунтов и без раскладывания ключей по конфигам разных клиентов.Сколько кабинетов можно подключить.Ограничения в коде нет:shops.json— обычный словарь, добавляйте сколько угодно. Потолок задаёт не сервер, аWildberries: все кабинеты ходят в WBс одного IP-адреса— того, где стоит этот сервер, — а лимиты считаются в том числе по адресу. Оценка автора: порядка двух десятков кабинетов на один адрес держатся в безопасной зоне. Дальше — разносить по нескольким серверам с разными адресами.
Почему это важнее, чем кажется, видно излимитов WB: у ряда методов3 запроса в минуту, алюбой ответ 4XX засчитывается как 10 запросов. При десятке кабинетов на одном сервере несколько неверных запросов подряд съедают лимит в десять раз быстрее — и упрутся в неговсе магазины сразу, а не тот, где ошиблись.
- Фоновая диагностикашлёт по одному/pingна хост за прогон (лимит — 3 запроса за 30 секунд на хост) и складывает неудачные проверки и предупреждения в историю. Приближение к лимиту видно заранее, а не по факту блокировки.
- Детектор деградацийразличает два случая: одновременная деградация многих инструментов — это троттлинг по адресу, деградация одного — сломался конкретный эндпоинт WB. По дашборду это видно с одного взгляда.
Где лежат токены.В томеwb_data(внутри контейнера —/data):
- shops.json— магазины, токены зашифрованы Fernet;
- .encryption_key— ключ шифрования, генерируется при первом запуске;
- stats.db— SQLite со статистикой вызовов и историей диагностики.
Ключ лежит рядом с зашифрованными данными, поэтому шифрование защищает от случайной утечки одного файлаshops.json(бэкап, копипаста), но не от того, кто получил доступ ко всему тому. Переносить данные нужно томом целиком — см.DEPLOY.md.
Авторизация MCP.ПеременнаяMCP_AUTH_TOKENв.env:
openssl rand -hex 32 # значение вписать в .env → MCP_AUTH_TOKEN= docker compose up -d
- пусто (по умолчанию) —/sseоткрыт всем, у кого есть сетевой доступ к порту;
- задан — клиент обязан передатьAuthorization: Bearer <токен>или?token=<токен>в URL. Второй вариант выручает клиенты, которые не умеют произвольные заголовки.
Токен проверяется на обоих MCP-эндпоинтах — и наGET /sse, и наPOST /messages.
- Веб-интерфейс (/,/shops,/diagnostics) токеномне закрыт— он доступен всем, у кого есть сетевой доступ к порту.
- Порт 8001 не рассчитан на проброс в интернет. Для доступа извне — Tailscale или VPN.
- HTTPS сервер не терминирует. Нужен внешний доступ по TLS — ставьте reverse proxy.
У обычного MCP-сервера вызовы уходят в никуда: что именно ассистент сделал, сколько это заняло и что ответил маркетплейс — не видно, а о проблеме узнаёшь, когда что-то не сработало. Здесь на каждый вызов есть запись, а на каждый магазин — состояние. Для инструмента, которым управляют реальными деньгами в магазине, это условие доверия, а не украшение. За пять месяцев ежедневной работы на двух десятках кабинетов эти страницы и накопили то, что перечислено в разделе про лимиты WB.
Сводка по всем вызовам инструментов (stats.get_summary()):
- всего вызовов, вызовов за сегодня, число ошибок, средняя длительность вызова;
- топ-10 инструментов: сколько раз вызван, среднее время, сколько ошибок;
- лента последних 50 вызовов: время, магазин, инструмент, длительность в миллисекундах, успех или ошибка, текст ошибки;
- фильтр по магазину— переключатель «Все / конкретный кабинет» над сводкой.
Кабинеты добавляются и удаляются прямо в браузере, без правки файлов и перезапуска контейнера. У каждого магазина есть кнопка«Проверить»: она делает лёгкий реальный запрос к WB и сразу говорит, живой ли токен, — а не оставляет выяснять это в момент первого рабочего вызова. В списке токены показываются замаскированными (abcxyz).
Токены шифруются Fernet и лежат вshops.jsonвнутри тома с данными; ключ — в.encryption_keyтам же. Пул HTTP-клиентов сбрасывается при сохранении и удалении магазина, так что новый токен подхватывается сразу.
(на скриншоте — демо-магазин с вымышленным токеном: WB отвечает401на каждый ping и на каждую пробу, поэтому вся страница красная. Так и выглядит неудачная проверка — сервер при этом исправен. С рабочим токеном строка «Проверка …» показываетping 13/13, пробы 20/20, а статус магазина — «✅ Здоров».)
Фоновая проверка каждыеHEALTH_CHECK_INTERVAL_MINминут (по умолчанию 30), по каждому магазину:
- токен— срок действия, категории доступа, флаги «только чтение» и «песочница»;
- ping 13 хостов WB API— доступность и задержка каждого;
- 20 проб— по одному лёгкому реальному GET на категорию API. Именно они ловят ситуацию «эндпоинт отдаёт 404, потому что WB его переименовал»;
- предупреждениячеловеческим языком: «токен истекает через N дней», «Контент: 404 на /content/v2/... — возможно, WB изменил API»;
- история проверокс автоматической ротацией (хранятся последние 1000 записей);
- кнопка«Проверить сейчас»— прогнать всё немедленно.
Самое полезное, что даёт накопленная статистика. Сервер сам находит инструменты, которыераньше работали, а теперь стабильно падают: последние три вызова — ошибки, при этом успешные вызовы в истории были. По каждому такому инструменту показываются время последнего успешного вызова, число подряд идущих ошибок, текст последней ошибки и момент, когда всё сломалось.
То есть сервер по собственной статистике обнаруживает, что Wildberries сломал или отключил эндпоинт, — и говорит об этом до того, как вы упрётесь в это в работе. Рядом сразделом про лимиты и сроки отключения эндпоинтовэто его практическое продолжение: там перечислено то, что WB уже анонсировал, здесь — то, что он сделал молча.
Смотреть можно на дашборде или инструментомwb_degradations— прямо из чата.
Всё, что видно глазами, снимается и машиной:
Так что сервер можно повесить в Uptime Kuma, Zabbix или любой другой мониторинг и узнавать о сломанном токене раньше, чем о нём расскажет ассистент.
Один Docker-контейнер, внутри FastAPI-приложение, которое совмещает две роли: MCP-сервер по SSE и небольшой веб-интерфейс. По файлу на абзац:
- wb_mcp/server.py— сам MCP-сервер. СписокTOOLSиз 202 объектовTool(имя, описание, JSON-схема аргументов) — это то, что клиент получает в ответ наtools/list. Вызовы разводятся тремя словарями:NO_CLIENT_DISPATCH(доступ к WB не нужен),CLIENT_DISPATCH(нужен HTTP-клиент магазина),SHOP_DISPATCH(нужен ещё иshop_id). Тут же живёт stdio-точка входаmain()— на случай клиента, который умеет только stdio.
- wb_mcp/client.py— HTTP-клиенты 14 хостов Wildberries. ОдинWBClientна магазин, внутриhttpx.AsyncClientс токеном; клиенты кэшируются в пуле поshop_id.
- wb_mcp/app.py— FastAPI:GET /sseиPOST /messagesдля MCP, страницы дашборда, магазинов и диагностики, JSON-API/api/, проверкаMCP_AUTH_TOKEN, фоновый цикл health-проверок.
- wb_mcp/settings.py— магазины и ключи: чтение и записьshops.json, шифрование Fernet, миграция старого однокабинетногоsettings.json, маскирование токенов для UI. Есть fallback: если задана переменнаяWB_API_TOKEN, появляется магазинdefault.
- wb_mcp/diagnostics.py— ping хостов WB, декодер JWT-токена (срок, права, sandbox), «пробы» — по одному лёгкому реальному запросу на категорию API, новости WB.
- wb_mcp/stats.py— SQLite через aiosqlite: каждый вызов инструмента пишется с временем, успехом иshop_id; отсюда берутся детектор деградаций и история health-проверок.
- wb_mcp/templates/— три страницы на PicoCSS, без сборки фронтенда.
- shop_idподставляется сам, пока магазин один.Удобно в быту, но при добавлении второго кабинета запросы безshop_idначнут возвращать «Укажите shop_id».
- В статистику пишется каждый вызов, включая упавшие. Отсюда работает детектор деградаций: «раньше работало, теперь стабильно падает» — сигнал изменения WB API, а не вашей ошибки. Смотреть: инструментwb_degradationsили дашборд.
- Фоновая диагностика раз в 30 минутделает реальные запросы к WB и расходует лимиты. Мешает — поставьтеHEALTH_CHECK_INTERVAL_MIN=0в.env.
- Ответы возвращаются как есть, сырым JSON от WB, без переупаковки. Инструменты от этого предсказуемы, но крупные отчёты стоит запрашивать с фильтрами, иначе ответ съест контекст.
- POST /messagesсмонтирован как отдельное ASGI-приложение(Mount), а не как обычный маршрут FastAPI:handle_post_messageсам отправляет ASGI-ответ, и внутри маршрута фреймворк отправлял бы его второй раз — соединение рвалось бы на каждом POST. Поэтому авторизация для этого эндпоинта проверяется вручную внутри приложения.
- Версия библиотекиmcpзафиксирована как>=1.0.0,<2.Сервер написан под декораторное APImcp1.x (@app.list_tools()), вmcp2.0 его убрали. Не снимайте верхнюю границу вpyproject.toml: сmcp2.x сервер падает на старте сAttributeError: 'Server' object has no attribute 'list_tools'.
Это ограничения самого WB, а не сервера, — но ассистент будет натыкаться на них регулярно, и знать о них лучше заранее. Список собран не переписыванием справки: это пять месяцев ежедневных вызовов на двух десятках кабинетов плюс журнал диагностики.
- GET /adv/v3/fullstats(статистика рекламы) —3 запроса в минуту, период не больше 31 дня.
- Воронка продаж v3 —3 запроса в минуту; история по дням доступна максимум за последнюю неделю.
- /ping— 3 запроса за 30 секунд на хост (фоновая диагностика это учитывает).
- Любой ответ 4XX засчитывается WB как 10 запросовк лимиту (правило с 04.06.2026). Один неверный параметр в цикле — и вы упёрлись в лимит.
- reportDetailByPeriodудаляется 15.07.2026; сервер уже ходит в finance-api с fallback на старый эндпоинт.
- Создание поставок FBW через API невозможно — только в личном кабинете. Инструментыwb_fbw_информационные.
- Токен WB живёт 180 дней. Остаток показываютwb_token_infoи страница/diagnostics.
- Ответ429от WB — это лимит, а не поломка. Повторите через минуту.
Сверено с документацией dev.wildberries.ru по состоянию на июнь 2026.
- Страница/diagnostics— по каждому магазину: срок действия токена и его права, ping всех хостов WB API, пробы по категориям, история проверок, кнопка «Проверить сейчас».
- Фоновая автопроверкакаждыеHEALTH_CHECK_INTERVAL_MINминут.
- Детектор деградаций— подсвечивает на дашборде инструменты, которые перестали работать.
- MCP-инструменты:wb_diagnostics,wb_token_info,wb_degradations,wb_api_news.
- GET /api/health— JSON-сводка для мониторинга извне.
- POST /api/diagnostics/run— прогнать проверку всех магазинов прямо сейчас.
- GET /api/diagnostics/<shop_id>— полная диагностика одного магазина.
wb-mcp-server/ ├── docker-compose.yml # порт 8001, том wb_data ├── Dockerfile # python:3.12-slim ├── pyproject.toml ├── DEPLOY.md # деплой на отдельную машину, перенос данных ├── docs/ # подключение клиентов + справочник инструментов └── wb_mcp/ ├── server.py # MCP-сервер: 202 инструмента, диспетчеризация, stdio-режим ├── client.py # HTTP-клиенты 14 API Wildberries ├── app.py # FastAPI: SSE + веб-интерфейс + авторизация + health-loop ├── diagnostics.py # ping, JWT-декодер, пробы, новости API ├── settings.py # магазины и ключи (Fernet) ├── stats.py # статистика вызовов и история проверок (SQLite) └── templates/ # PicoCSS: dashboard, diagnostics, shops
Вынести сервер на отдельную машину, перенести магазины, настроить автозапуск — см.DEPLOY.md.
Их можно держать одновременно на одной машине: порты разные, данные в разных Docker-томах, конфликта нет.
Соседство на одном сервере не мешает и по лимитам: наружу оба ходят с одного IP, но Wildberries и Ozon считают лимиты каждый у себя — это разные площадки. Ограничение по числу кабинетов, о котором сказано в разделе про мульти-магазин, действует внутри каждой площадки отдельно.
Wildberries меняет API постоянно: эндпоинты добавляются, переименовываются и отключаются — в разделе про ограничения перечислено то, что уже поймано на практике. Этот сервер — рабочий инструмент автора: больше пяти месяцев ежедневной работы на порядка двадцати кабинетах. Обновляется онпо мере собственной необходимости: когда очередное изменение ломает что-то в его магазинах, а не по расписанию. Поэтому промежутки между коммитами бывают долгими — это значит, что WB за это время ничего не сломал. Обязательств по срокам нет.
Если исправление нужно срочно — напишите наd0371153@gmail.com*. Issues и pull request'ы тоже приветствуются и разбираются.
Ozon Seller API + Performance API: 151 tools for prices, promotions, advertising, orders, returns, finance and analytics across multiple seller accounts.
Analyse SEO, PPC, E-Commerce from 30+ marketing sources
Connect Amazon Seller Central to Claude or ChatGPT via Two Minute Reports MCP and get accurate insights on orders, sales, inventory, and revenue performance.
Hosted Amazon Seller Central and Amazon Ads MCP server for Claude, ChatGPT, Cursor, Claude Code, OpenClaw, and HTTP-capable MCP clients.
Brandlio MCP is a remote Model Context Protocol server that connects your advertising, analytics, e‑commerce, and revenue accounts to Claude, ChatGPT, Gemini, Cursor, and any other MCP‑compatible client
Hosted MCP server that gives AI agents read and write access to your full marketing & ecommerce stack — Google Analytics, Search Console, Google & Meta Ads, Shopify, WooCommerce, Shopware, Slack and LinkedIn. 100+ tools across 10 connectors. BYOK, OAuth 2.1 with dynamic client registration.
Agent-native Ops OS for ecommerce and retail — CRM, orders, inventory, fulfillment, shipping, omnichannel messaging, and AI analytics. All through a single MCP connection.
ProfitLee MCP is an MCP server for analyzing ecommerce and marketplace profitability. It helps users calculate net profit, profit margin, ROI, breakeven price, and fee-adjusted outcomes from product cost, selling price, shipping, ads, platform fees, and tax inputs. It also supports reusable profit scenarios so users can compare pricing and cost assumptions more easily.
D2C eCommerce fulfillment platform: manage orders, inventory, shipments, campaigns, and billing via AI agents
Kochava for Advertisers — Official MCP Server
MCP connector providing comprehensive access to Kochava's mobile measurement and attribution platform for advertisers. Includes analytics, attribution, campaign management, tracker creation, fraud detection, and reporting capabilities.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



