lamoda-mcp-ru
by ilyautov
README.md
> ## Проект в архиве
>
> Разработка остановлена, репозиторий переведён в режим только для чтения. Код рабочий
> и остаётся под MIT: форкайте, если пригодится.
>
> Живая линейка MCP-серверов для российских кабинетов продавца лежит в
> [**marketplaces-mcp-ru**](https://github.com/ilyautov/marketplaces-mcp-ru): Wildberries,
> Ozon, Яндекс Маркет и Авито, 1022 метода, гейт безопасности перед записью.
# Lamoda MCP — кабинет продавца Lamoda прямо в Claude, ChatGPT, Cursor и Codex
> Спрашивайте про свой магазин на Lamoda обычными словами — «сколько заказов застряло», «что лежит мёртвым грузом», «где я дороже рынка» — и получайте ответ из **настоящего Seller API**, а не из скриншотов. **155 методов** каталога, **гейт безопасности** перед каждой записью, **без парсинга страниц и капчи**.
[](LICENSE)
[](https://github.com/ilyautov/lamoda-mcp-ru/releases)
[](lamoda_mcp/endpoints.yaml)
[](#установка)
[](tests/)
> [!WARNING]
> **Альфа, и граница честности проведена прямо здесь.** Каталог методов собран из
> официальной спецификации Lamoda — это твёрдый факт. Но **ни один запрос ещё не
> выполнялся на живом кабинете**: у автора нет доступа к кабинету Lamoda. Формы
> параметров и расположение данных в ответах выведены из схем, то есть являются
> обоснованным предположением, а не проверенной истиной. Каждый метод в каталоге
> помечен `live_verified: false`, а перед любой записью сервер об этом
> предупреждает. Подробности — в разделе [Что проверено, а что нет](#что-проверено-а-что-нет).
---
## Зачем это нужно
Продавец на Lamoda живёт в браузере: остатки на одной вкладке, заказы на второй,
цены на третьей, выгрузки в Excel на четвёртой. ИИ-помощники этого не видят —
максимум просят прислать скриншот.
Этот сервер даёт ИИ прямой доступ к Lamoda Seller Partner API. Не через
эмуляцию браузера, не через парсинг, а через официальный интерфейс с вашим
собственным ключом. Ассистент сам находит нужный метод, вызывает его и считает
ответ.
Ключи лежат локально на вашей машине в файле с правами `600` и не покидают её.
## Что внутри
**Каталог на 155 методов**, собранный из официальной спецификации Lamoda и
разложенный по 16 бизнес-разделам:
| Раздел | Что закрывает |
|---|---|
| Товары, Номенклатура | карточки, атрибуты, категории, бренды, справочники |
| Цены | ценовой индекс, сравнение с конкурентами, история цен |
| Заказы | список, статусы, состав, счётчики по статусам |
| Отгрузки | отгрузки, позиции, статусы, события |
| Остатки | сводка, позиции, неликвид, отчёты |
| Акции | акции, товары в акциях, рекомендованные товары |
| Возвраты | возвраты поставщику, FBS-возвраты, короба, склады возвратов |
| Ярлыки, Файлы | этикетки, упаковка, импорт и экспорт |
**Три уровня доступа и гейт перед записью.** Чтение выполняется сразу. Изменение
цен, остатков или заказов требует явного `confirm_write`. Необратимые операции —
двух подтверждений. Гейт срабатывает **до отправки запроса**, локально.
**Режим `dry_run`.** Показывает точное тело запроса, которое ушло бы в Lamoda,
ничего не отправляя. Поскольку каталог не подтверждён боем, для пишущих методов
это разумный первый шаг.
**Поиск на русском.** «остатки», «застрявшие заказы», «цены конкурентов» — ищет
по описаниям, разделам и двуязычным ключевым словам, а не по точному имени метода.
**Готовые рецепты.** Покрытие остатков, неликвид, воронка заказов, пульс
возвратов, ценовой индекс, отдача от акций — с формулами и предупреждениями о
типичных ошибках интерпретации.
## Установка
Нужен Python 3.10+. Зависимости сервер ставит себе сам при первом запуске.
```bash
git clone https://github.com/ilyautov/lamoda-mcp-ru
cd lamoda-mcp-ru
python3 install.py --client claude-desktop
```
Клиенты: `claude-desktop`, `claude-code`, `codex`, `opencode`.
Для Claude Code и Codex скрипт печатает готовую команду `mcp add` — их конфигами
управляет собственная CLI.
Посмотреть, где лежат конфиги на вашей машине:
```bash
python3 install.py --list
```
### Ключи Lamoda
Ключи (`client_id` и `client_secret`) берутся в кабинете продавца Lamoda в
разделе интеграций. Три способа задать:
```bash
# при установке
python3 install.py --client claude-desktop --client-id XXX --client-secret YYY
# через окружение
export LAMODA_CLIENT_ID=XXX
export LAMODA_CLIENT_SECRET=YYY
```
Либо просто попросите ассистента: «сохрани кабинет Lamoda» — он вызовет
`lamoda_add_cabinet`. Ключи запишутся в `~/.lamoda-mcp/cabinets.json` с правами
`600` и никогда не вернутся обратно в чат.
Несколько магазинов поддерживаются: `lamoda_list_cabinets` и `lamoda_use_cabinet`
переключают активный.
## Что можно спросить
- «Проверь доступ к Lamoda и покажи, какие права у ключа»
- «На сколько дней хватит остатков по ходовым позициям?»
- «Что лежит неликвидом и сколько денег в этом заморожено?»
- «Сколько заказов в каждом статусе и где затык?»
- «Покажи товары, где я сильно дороже рынка»
- «Сколько возвращают по сравнению с продажами?»
- «Какие товары участвуют в текущих акциях?»
## Инструменты
| Тул | Назначение |
|---|---|
| `lamoda_search_methods` | найти метод по запросу на русском |
| `lamoda_describe_method` | параметры, уровень доступа, предупреждения |
| `lamoda_list_sections` / `lamoda_get_section` | обзор каталога по разделам |
| `lamoda_call_method` | вызвать метод из каталога |
| `lamoda_call_raw` | вызвать любой метод, даже которого нет в каталоге |
| `lamoda_fetch_all` | собрать все страницы списка |
| `lamoda_check_auth` | проверить ключ и увидеть выданные права |
| `lamoda_add_cabinet` / `lamoda_list_cabinets` / `lamoda_use_cabinet` | кабинеты |
| `lamoda_list_workflows` / `lamoda_get_workflow` | готовые бизнес-рецепты |
## Что проверено, а что нет
Раздел важнее, чем список возможностей.
**Твёрдый факт — проверено прямыми запросами:**
- Спецификация открыта без авторизации: `public-api-seller.lamoda.ru/swagger.json`
(Swagger 2.0, 155 операций, 424 определения схем).
- Протокол — JSON-RPC 2.0 поверх HTTP, публичный хост
`public-api-seller.lamoda.ru`, базовый путь `/jsonrpc`.
- Контракт авторизации: `v1.tokens.create` принимает
`{clientId, clientSecret, grantType}` и возвращает
`{accessToken, expiresIn, refreshToken, scope, tokenType}`.
- Ошибка приходит с **HTTP 200** в поле `error` — сервер это учитывает
и не принимает такой ответ за успех.
**Обоснованный вывод, а не гарантия:**
- Расположение массивов в ответах (`items_path`) и стиль пагинации выведены из
схем. У 14 постраничных методов схема массив не раскрывает — это записано в
каталоге списком `items_path_unresolved`, а не замолчано.
- Разметка `read` / `write` / `destructive` сделана вручную по описаниям
операций. У 77 методов из 155 описания в спеке нет вовсе — для них выбран
более строгий уровень.
**Не проверено вообще:**
- Ни один запрос не выполнялся на живом кабинете Lamoda.
**Известные противоречия в самой спецификации Lamoda** (23 серьёзных, все
записаны в каталоге в поле `spec_conflict`). Самый показательный: у пути
`/v1/nomenclature.validate-price` поле `method` закреплено значением
`v1.nomenclature.set-price` — «проверить цену» и «установить цену» в спеке
перепутаны. Такие методы помечены как пишущие независимо от того, что обещает имя.
Когда появится доступ к кабинету, всё это закрывается одним прогоном:
```bash
export LAMODA_CLIENT_ID=... LAMODA_CLIENT_SECRET=...
python3 scripts/validate_items_path.py --fix
```
Скрипт дёргает read-методы, чинит `items_path` по фактическим ответам и
проставляет `live_verified: true` тем, что реально ответили.
## Разработка
```bash
python3 scripts/ingest_lamoda.py # пересобрать каталог из спеки
python3 scripts/audit_safety.py # проверить: ноль мутаций в read
python3 -m pytest -q # 53 офлайн-теста, сеть не нужна
python3 serve.py --selfcheck # проверить, что каталог читается
```
Разметка безопасности правится в `lamoda_mcp/safety_overrides.yaml` — это
источник истины, а `endpoints.yaml` генерируется.
## Безопасность
- Ключи только из локального хранилища или окружения, никогда из кода и аргументов.
- Запросы уходят только на хосты `*.lamoda.ru` и `*.lamoda.tech`: белый список
не даёт агенту, уведённому промпт-инъекцией, отправить заголовок авторизации
на чужой хост.
- Гейт на запись работает локально, до отправки.
- Автоповтор при таймауте разрешён только методам чтения — иначе повтор мог бы
применить изменение дважды.
Нашли уязвимость — напишите в Issues без публикации деталей эксплуатации.
## Часто ищут
**Как подключить ИИ к API Lamoda?** Поставьте этот сервер и добавьте ключ из
кабинета продавца — ассистент получит доступ к 155 методам Seller API.
**Есть ли MCP-сервер для Lamoda?** Да, этот. На момент публикации других
открытых MCP-серверов для Lamoda найти не удалось.
**Как дать Claude или ChatGPT доступ к кабинету Lamoda?** Через MCP: сервер
работает с Claude Desktop, Claude Code, Codex CLI и OpenCode.
**Чем Lamoda Seller API отличается от B2B Platform API?** Seller Partner API —
это JSON-RPC (товары, цены, остатки, номенклатура), B2B Platform API — REST
(заказы, отгрузки, ярлыки, вебхуки). Этот сервер закрывает первый; второй
отложен, потому что публичной машиночитаемой спецификации у него нет.
**Можно ли менять цены и остатки через ИИ?** Технически да, но каждая такая
операция требует явного подтверждения, а сейчас ещё и не проверена на живом
кабинете — начинайте с `dry_run`.
---
MCP сервер Lamoda · Lamoda Seller API · Ламода для продавцов · API маркетплейса
Ламода · автоматизация кабинета Lamoda · ИИ для селлеров · Claude MCP Lamoda ·
остатки Lamoda через API · цены Lamoda API · заказы Lamoda API
This server cannot be deployed
Maintenance
ActivityMaintained
ResponsivenessNo issues