Ozon商品搜索服务

提供Ozon商品搜索、详情查看和评论阅读功能的服务器,通过无头浏览器获取结构化数据。

  • by eduard256
  • TypeScript
  • 本地部署
  • 81 星标
  • 更新于
在 GitHub 查看 eduard256/ozon-mcp-server

使用说明

Ozon MCP Server

MCP-сервер для поиска товаров на Ozon (ozon.ru). Даёт ИИ три инструмента: искать товары, читать карточку и читать отзывы.

Публичного API для покупателей у Ozon нет, а сайт закрыт антиботом Variti. Поэтому сервер держит один headless-браузер Chromium, который проходит проверку один раз, а дальше забирает данные JSON-ом из внутреннего composer-api прямо со страницы. HTML не парсится — данные приходят структурированными.

Инструменты

  1. ozon_search — поиск товаров. Возвращает название, цену (в рублях, числом), старую цену, скидку, рейтинг, число отзывов, бренд, картинку и чистую ссылку.
  2. ozon_product_details — карточка товара по SKU, ссылке или slug. Цена (с картой / без карты / старая), наличие, рейтинг, продавец, фото, характеристики, описание.
  3. ozon_product_reviews — отзывы покупателей: текст, оценка, плюсы, минусы, дата.

Запуск через Docker

Образ опубликован в Docker Hub.

docker run -i --rm --init --shm-size=1g eduard256/ozon-mcp-server:latest

Флаги обязательны: -i — stdin для stdio, --init — корректное завершение Chromium, --shm-size=1g — память для браузера.

Установка в ваш клиент

Инструкция под каждую систему — отдельным файлом:

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

  • src/browser.js — один Chromium. Проходит антибот на главной странице и держит её открытой; все fetch идут с неё. При HTTP 403/307 (сессия протухла) или падении браузера перезапускается сам. Через 10 минут простоя браузер закрывается, чтобы освободить память.
  • src/parse.js — чистые парсеры JSON из composer-api (widgetStates). Без сети.
  • src/ozon.js — строит пути API, забирает данные, парсит.
  • src/index.js — MCP-сервер по stdio. Логи идут только в stderr (stdout занят протоколом JSON-RPC).

Важно:

  1. Нельзя блокировать загрузку картинок, шрифтов и стилей — антибот грузит свои скрипты через них. Заблокируешь — Ozon вернёт 403.
  2. fetch должен идти со страницы на домене ozon.ru, а не с пустой — иначе CORS и 403.
  3. Первый запрос платит за прохождение антибота (~12 секунд). Дальше — 0.3–1 секунда.

Локальная разработка

npm install
npx playwright install chromium
node src/index.js          # MCP-сервер по stdio
npm run test:parse         # офлайн-тесты парсеров на samples/