Ozon MCP Server
About
Ozon Seller API + Performance API: 151 tools for prices, promotions, advertising, orders, returns, finance and analytics across multiple seller accounts.
Details
- Author
- deviceingineering
- Categories
- Other, Finance, Marketing
Jump to
Setup
Install Ozon MCP Server in your MCP client (Claude Desktop, Cursor, Windsurf, and others).
Repository: https://github.com/deviceingineering/ozon-mcp-server
Follow the installation instructions in the repository README, then restart your MCP client.
Управляйте магазинами Ozon прямо из чата с ИИ-ассистентом: цены, акции, реклама, заказы, возвраты, отзывы, финансы — 151 инструмент поверх Ozon Seller API и Performance API. Для продавцов, у которыхнесколько магазинов: каждый вызов принимаетshop_id, ключи хранятся зашифрованными на вашем сервере, наружу ничего не уходит. Отличие от прочих Ozon-MCP: покрыт не только Seller API, но и реклама, а встроенная диагностика показывает, какие методы Ozon сломались, до того как это заметит ассистент.
Торгуете ещё и на Wildberries? Есть такой же сервер для WB —wb-mcp-server.
Это личный рабочий инструмент автора: больше пяти месяцев ежедневной работы, порядка двадцати кабинетов, 151 инструмент. Обновляется он по мере собственной необходимости автора — подробности в разделе«Обновления и поддержка».
Ты: Какие мои товары Ozon планирует затянуть в акцию? Ты: Покажи расход по рекламным кампаниям за неделю и останови те, что тратят впустую. Ты: У каких товаров индекс цены хуже, чем у конкурентов? Ты: Ответь благодарностью на все новые отзывы с оценкой 5.
Полный нумерованный список с описанием каждого инструмента и его параметров — вdocs/tools.md. Он сгенерирован изozon_mcp/server.py(константаTOOLS) — то же самое отдаётtools/listлюбому MCP-клиенту.
Сервер работает по stdio — так его подключают Claude Desktop, Cursor, VS Code и другие MCP-клиенты. Ничего собирать не нужно:
Конфигурация клиента (например,claude_desktop_config.json):
{ "mcpServers": { "ozon": { "command": "uvx", "args": ["ozon-mcp-server"], "env": { "OZON_CLIENT_ID": "ваш Client-Id", "OZON_API_KEY": "ваш API-ключ", "DATA_DIR": "~/.ozon-mcp" } } } }
DATA_DIRукажите на любой доступный для записи каталог — там хранятся магазины, ключи и статистика. По умолчанию используется/data(путь для Docker).
Нужен, если хотите дашборд, диагностику Ozon API и удобное добавление магазинов через браузер. Пять команд:
git clone https://github.com/DeviceIngineering/ozon-mcp-server.git cd ozon-mcp-server cp .env.example .env # для локальной сети можно оставить как есть docker compose up -d --build # соберёт образ и поднимет сервер на порту 8000 open http://localhost:8000/shops # добавить магазин и ключи Ozon
- .env— все переменные необязательные. Ключи магазинов удобнее вводить в веб-интерфейсе, а не здесь. Единственное, что стоит задать сразу, если сервер виден не только вам, —MCP_AUTH_TOKEN(сгенерировать:openssl rand -hex 32).
- docker compose up -d --build— собирает образ изDockerfile, пробрасывает порт8000:8000и создаёт томozon_dataдля магазинов, ключей, статистики и истории диагностики.restart: unless-stoppedподнимет контейнер после перезагрузки машины.
- /shops— форма добавления магазина:shop_id(латиницей, им вы будете оперировать в чате), название, Client-Id + Api-Key от Seller API и Client-Id + Client-Secret от Performance API. Кнопка «Проверить» делает живой запрос к Ozon и говорит, приняты ли ключи.
Остановить:docker compose down(данные останутся в томеozon_data). Логи:docker compose logs -f.
python3 -m venv .venv && source .venv/bin/activate pip install . DATA_DIR=./data PORT=8000 ozon-mcp-web
DATA_DIRпо умолчанию/data— при локальном запуске обязательно переопределите его на доступный каталог.
Транспорт — SSE, адресhttp://<host>:8000/sse. Поддержка SSE у клиентов разная: часть понимает его напрямую, части нужен мостmcp-remote. По файлу-инструкции на каждый клиент, с путями к конфигам под macOS, Linux, Windows и готовым JSON:
claude mcp add --transport sse ozon http://localhost:8000/sse \ --header "Authorization: Bearer <MCP_AUTH_TOKEN>"
Сводка по клиентам и справочник по мосту —docs/README.md.
Кабинеты добавляются в веб-интерфейсе, каждый инструмент принимает обязательный параметрshop_id; узнать доступные — инструментомozon_list_shops. В чате это выглядит так: «покажи остатки в магазинеalpha».
Главная выгода не в самом переключении, а в том, чтостратегия пишется один раз и раскатывается на все кабинеты: правило по ценам, по ответам на отзывы или по ставкам применяется ко всем магазинам сразу — без перелогинивания в кабинеты и без копирования ключей по конфигам разных клиентов.
Цена такого подхода — общий IP. Все кабинеты ходят в Ozon с одного адреса: с того сервера, где стоит MCP. Лимиты Ozon считаются в том числе по адресу, и чем больше кабинетов и чем активнее по ним работают стратегии, тем ближе суммарный поток к порогу, за которым начинается throttling или блокировка.
- ограничения на число магазинов в коденет;
- реальный потолок задаёт не сервер, а лимиты Ozon на один IP;
- порядка двадцати кабинетов — оценка автора, при которой поток остаётся в безопасной зоне;
- дальше — разносить магазины по нескольким серверам с разными адресами.
Приближение к лимиту видно заранее, и как раз в веб-интерфейсе: растёт число неудачных ping и предупреждений в диагностике, в статистике вызовов подскакивает доля ошибок. Отличить одно от другого тоже можно по дашборду: массовый throttling выглядит как одновременная деградация многих инструментов, поломка эндпоинта — как деградация одного.
- при первом обращении вDATA_DIRсоздаётся.encryption_key— ключ Fernet;
- ключи магазинов шифруются им и лежат вDATA_DIR/shops.json;
- в веб-интерфейсе ключи показываются замаскированными (abcxyz), при сохранении маскированное значение не перезаписывает настоящее;
- в Docker всё это лежит в томеozon_data; перенос на другую машину — копирование тома целиком, иначе потеряется ключ шифрования (см.DEPLOY.md).
- MCP_AUTH_TOKENзащищаеттолько/sse. Токен передаётся заголовкомAuthorization: Bearer …либо параметром?token=….
- ПустойMCP_AUTH_TOKEN= авторизация выключена. Так можно только в доверенной сети.
- Веб-интерфейс (/,/shops,/diagnostics) и/api/токеном не закрыты: кто имеет сетевой доступ к порту, тот видит дашборд и может добавлять магазины.
- Не пробрасывайте порт 8000 в интернет напрямую. Для доступа извне — Tailscale или VPN.
- HTTPS сервер не терминирует. Нужен внешний доступ по TLS — ставьте reverse proxy.
У обычного MCP-сервера вызовы уходят в никуда: ассистент что-то сделал, а что именно, за сколько и с какой ошибкой — известно только ему. Здесь на каждый вызов есть строчка в журнале, а на каждый сломавшийся инструмент — отметка на дашборде. Для инструмента, который управляет реальными деньгами в магазине, это не украшение, а условие доверия.
Статистика вызовов и история проверок собраны не на синтетике: больше пяти месяцев ежедневной работы примерно на двадцати кабинетах. Оттуда же и список пойманных изменений Ozon API в разделе про ограничения — он не выписан из документации, а взят из журнала деградаций.
- Четыре счётчика сверху: всего вызовов, за сегодня, ошибок, средняя длительность вызова в миллисекундах.
- Топ-10 инструментов: сколько раз вызывали, среднее время, сколько из них завершились ошибкой.
- Лента последних 50 вызовов: время,shop_id, имя инструмента, длительность, успех или ошибка и текст ошибки.
- Фильтр по магазину (/?shop=alpha) — те же цифры по одному кабинету.
- Сверху всплывают два предупреждения: о деградировавших инструментах и о том, что последняя проверка Ozon API нашла проблемы.
Кабинеты добавляются и удаляются прямо в браузере, без правки файлов и перезапуска контейнера. Кнопка «Проверить» делает живой запрос к обоим API (POST /api/shops/{shop_id}/test) — ключи проверяются сразу при добавлении, а не в момент первого рабочего вызова посреди задачи. Токены шифруются Fernet, ключ шифрования лежит вDATA_DIR/.encryption_key, в интерфейсе ключи показываются замаскированными.
(на скриншоте — демо-магазин с заведомо неверными ключами, поэтому все пробы красные)
- По каждому магазину: заданы ли ключи, доступность хостов Ozon, 12 проб категорий Seller API, проверка ключей Performance API.
- Фоновая проверка каждыеHEALTH_CHECK_INTERVAL_MINминут (по умолчанию 30,0— выключить) и кнопка «Проверить сейчас» для немедленного прогона (POST /api/diagnostics/run).
- История проверок: время, магазин, статус, число неудачных ping, число неудачных проб и текст предупреждений. В интерфейсе показываются последние 30 записей, в базе хранится до 1000 с автоматической ротацией.
- Те же данные доступны из чата инструментомozon_diagnostics.
Сервер сам замечает, что Ozon сломал или отключил эндпоинт, — не по документации и не по факту сорванной работы, а по собственной статистике. Инструмент, у которого последние три вызова подряд завершились ошибкой, но раньше были успешные, попадает в список деградаций: там видно имя инструмента, время последнего успешного вызова, число ошибок подряд и текст последней. На дашборде это красная плашка, на странице диагностики — таблица.
Практический смысл: изменение на стороне Ozon видно в тот день, когда оно произошло, а не через неделю, когда обнаружится, что цены не обновлялись. Из чата тот же список отдаёт инструментozon_degradations.
Всё перечисленное снимается программно, а не только глазами:
Так сервер заводится в Zabbix, Uptime Kuma или в обычныйcurlпо cron.
Один Docker-контейнер, внутри FastAPI-приложение, которое совмещает MCP-сервер и веб-интерфейс.
- ozon_mcp/server.py— сам MCP-сервер. СписокTOOLSописывает 151 инструмент (имя, описание, JSON-схема аргументов), обработчикcall_toolмаршрутизирует вызов в нужный метод клиента Ozon. Клиенты кешируются в пуле поshop_id, так что переключение между магазинами ничего не переподключает.
- ozon_mcp/client.py— два HTTP-клиента:OzonSellerClient(заголовкиClient-Id/Api-Key) иOzonPerformanceClient(токенclient_credentials, живёт 30 минут и обновляется сам).
- ozon_mcp/app.py— FastAPI: эндпоинт/sseповерхSseServerTransport, проверка Bearer-токена, страницы дашборда, магазинов и диагностики, фоновая задача health-проверки.
- ozon_mcp/settings.py— магазины и ключи: шифрование Fernet, маскирование для UI, подхват ключей из переменных окружения как магазинаdefault, миграция старого однобазовогоsettings.jsonвshops.json.
- ozon_mcp/diagnostics.py— пробы: пинг хостов Ozon плюс лёгкие реальные запросы по 12 категориям Seller API и проверка ключей Performance API.
- ozon_mcp/stats.py— SQLite черезaiosqlite: каждый вызов инструмента с временем и результатом, история health-проверок, расчёт деградаций.
- Ставки и бюджеты рекламы Ozon отдаёт вмикрорублях:1000000= 1 ₽. Не удивляйтесь семизначным числам.
- 403на отзывах и вопросах — это не поломка, а отсутствие подписки Premium Plus. Диагностика такие ответы ошибкой не считает.
- Ozon-ключи не содержат срока действия: истечение видно только по401в пробах.
- Асинхронная статистика рекламы — один отчёт одновременно, ≤10 кампаний, ≤62 дня; инструмент ждёт готовности отчёта до ~2 минут.
- Статусы заявок на поставку в API v3 — целые числа 1–8, а не строки.
Известные ограничения Ozon API (актуально на июнь 2026)
- Реклама: создание кампаний через API — только «Трафареты» (CPC); бюджеты и ставки в микрорублях; официального метода узнать баланс рекламного кабинета нет.
- «Оплата за заказ»: ставки фиксированные (с февраля 2025), доступны только включение и выключение.
- Отзывы, вопросы и часть аналитики требуют подписку Premium Plus (ошибка code 7).
- Метрики воронки вozon_analyticsпомечены Ozon как deprecated — для позиций в поиске используйтеozon_product_queries.
- /v3/finance/transaction/отключаются 06.07.2026; замена уже встроена (ozon_finance_cash_flow,ozon_finance_accruals).
- ozon_product_stocks_by_warehouseиспользует v2, потому что v1 отключается 07.04.2026.
- Цифровые акты приёма-передачи FBS удалены Ozon 22.03.2026 — используется обычный акт.
- Метода «обновить ответ на отзыв» в Ozon API нет: ответ удаляется и создаётся заново.
Список собран не переписыванием справки: это журнал деградаций и пять месяцев ежедневных вызовов, сверенные с документацией docs.ozon.ru по состоянию на июнь 2026.
Полная ревизия под Ozon API июня 2026 со сверкой живыми запросами: единый список возвратов, отмены v2, реализация v2, ship v4, supply-order v3, реальные ценовые стратегии и «Хочу скидку», собственные акции продавца, новая модель рекламы (трафареты CPC + «Оплата за заказ»), диагностика и детектор деградаций, авторизация MCP-эндпоинта.
ozon-mcp-server/ ├── docker-compose.yml # порт 8000, том ozon_data ├── Dockerfile # python:3.12-slim, uvicorn ├── DEPLOY.md # деплой на отдельную машину, перенос данных ├── docs/ # подключение клиентов + справочник инструментов └── ozon_mcp/ ├── server.py # MCP-сервер: 151 инструмент, мульти-магазин ├── client.py # Seller API + Performance API ├── app.py # FastAPI: SSE, веб, авторизация, health-loop ├── diagnostics.py # пробы категорий, детектор деградаций ├── settings.py # магазины и ключи (Fernet) ├── stats.py # статистика вызовов и история проверок (SQLite) └── templates/ # dashboard, diagnostics, shops
Деплой на отдельную машину и перенос магазинов —DEPLOY.md.
- Второй сервер ставится без нового обучения.Разобрались с одним — второй запускается по этой же инструкции; отличаются порт (8001 против 8000) и набор инструментов.
- Держать оба на одной машине можно.Порты разные, данные лежат в разных Docker-томах, конфликта нет. В клиенте это просто два MCP-сервера:ozonнаhttp://localhost:8000/sseиwbнаhttp://localhost:8001/sse.
Соседство на одном сервере не мешает и по лимитам: наружу оба ходят с одного IP, но Ozon и Wildberries считают лимиты каждый у себя — это разные площадки. Ограничение по числу кабинетов из раздела про мульти-магазин действует внутри каждой площадки отдельно.
Ozon меняет API постоянно: эндпоинты добавляются, переименовываются и отключаются (в разделе про ограничения перечислено то, что уже поймано). Этот сервер — рабочий инструмент автора, и обновляется онпо мере собственной необходимости: когда очередное изменение ломает что-то в его магазинах. Больше пяти месяцев ежедневной работы — и коммиты появляются тогда, когда Ozon что-то ломает, а не по расписанию. Пауза между коммитами обычно означает, что всё работает. Плюс такого подхода в том, что код проверяется реальной работой каждый день, а не выложен и забыт; минус — расписания и обязательств по срокам нет.
Если исправление нужно срочно — напишите наd0371153@gmail.com*. Issues и pull request'ы тоже приветствуются и разбираются.
Analyse SEO, PPC, E-Commerce from 30+ marketing sources
Wildberries Seller API: 202 tools for product cards, prices, orders, supplies, advertising, reviews, finance and analytics across multiple seller accounts.
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.
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.
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.
Collective intelligence for AI shopping agents — 23 MCP tools for buyer intelligence, seller analytics, price alerts, and trend tracking.
Connect Apple Search Ads to Claude or ChatGPT via Two Minute Reports MCP and get accurate insights on top-performing campaigns, keywords, installs, TTR, CPA, and conversions.
Connect Facebook Ads to Claude or ChatGPT via Two Minute Reports MCP and get accurate answers about campaigns, creatives, and spend.
Manage WhatsApp digital catalogs for LATAM sellers — 30 tools for products, orders, discounts, reviews, customers, shipping, and analytics.
Sign in to leave a review
Use Google, GitHub, or an email account so ratings stay tied to real people.
No reviews posted yet.



