Игорь Градов
Игорь Градов
5 мин
ai

Claude API интеграция с Яндекс Лавкой: один разработчик собрал MCP-сервер за вечер

Яндекс Лавка не даёт публичного API, но разработчик из сообщества нашёл способ подключить Claude к этому сервису через реверс-инжиниринг приватного веб-интерфейса и протокол MCP, превратив чат с ИИ в голосовую корзину для доставки продуктов.

Claude API интеграция с Яндекс Лавкой: один разработчик собрал MCP-сервер за вечер
Почему это важно

Готовый открытый MCP-сервер позволяет управлять заказами в Яндекс Лавке прямо из диалога с Claude: написал «закажи молоко и хлеб», и заказ ушёл курьеру, без единого клика в приложении.

Проект неофициальный и использует тот же приватный веб-API, что и сайт lavka.yandex.ru. Автор опубликовал код на GitHub под лицензией MIT. Это значит, что любой разработчик может повторить интеграцию, но с оговорками: Яндекс может в любой момент изменить или закрыть доступ, а оформление заказа списывает реальные деньги.

Сам факт, что claude api интеграция с закрытым российским сервисом собрана одним человеком за вечер, показывает, насколько протокол MCP упростил подключение внешних инструментов к ИИ-ассистентам.

Что такое MCP и почему он здесь ключевой?

MCP (Model Context Protocol, протокол подключения внешних инструментов к языковой модели) работает так: вы описываете набор функций, например search_products, add_to_cart, checkout_preview, и модель сама вызывает нужную функцию по ходу диалога.

Задача автора свелась к двум вещам:

  • Научиться общаться с бэкендом Лавки, у которого нет документации
  • Завернуть это общение в аккуратные инструменты, которые не дадут модели случайно потратить ваши деньги

Что понадобится

  • Claude Desktop или другой клиент с поддержкой MCP
  • Python 3.10+ и менеджер зависимостей (pip или uv)
  • Залогиненный аккаунт Яндекса с подключённой Лавкой и сохранённым адресом доставки
  • Куки сессии из браузера (Session_id и сопутствующие)
  • Примерно 30 минут на установку и настройку
  • Готовность к тому, что заказ спишет реальные деньги с привязанной карты

Пошаговая инструкция

  1. Клонируйте репозиторий с GitHub:
git clone https://github.com/Dudude-bit/yandex-lavka-mcp.git
cd yandex-lavka-mcp
  1. Установите зависимости. Автор использует Python, достаточно стандартного pip:
pip install -r requirements.txt
  1. Извлеките куки сессии из браузера. Откройте lavka.yandex.ru в Chrome, зайдите в DevTools (F12), вкладка Application, раздел Cookies. Скопируйте значения Session_id и связанных кук.

  2. Пропишите куки в конфигурации MCP-сервера. Сервер при старте обращается к главной странице Лавки и с помощью регулярного выражения вытаскивает CSRF-токен (токен защиты от подделки запросов) из HTML:

_CSRF_RE = re.compile(r'"csrfToken"\s*:\s*"([^"]+)"')

async def _ensure_csrf(self, *, force=False):
    if self._csrf_token and not force:
        return
    resp = await self._client.get("/")
    m = _CSRF_RE.search(resp.text)
    if m:
        self._csrf_token = m.group(1)

Без этого токена и набора специальных заголовков (X-CSRF-Token, X-Lavka-Web-City, X-Lavka-Web-Locale и других) сервер Лавки возвращает ошибку 401, даже если куки корректны.

  1. Подключите MCP-сервер к Claude Desktop через стандартную конфигурацию MCP-клиента. После подключения Claude получает доступ к инструментам: поиск товаров, добавление в корзину, предпросмотр заказа, подтверждение.

  2. Проверьте работу простым запросом. Напишите Claude что-то вроде «найди молоко в Лавке». Если интеграция настроена верно, модель вызовет search_products и вернёт список товаров с ценами.

  3. Оформление заказа работает в два шага, и это принципиально. Сначала checkout_preview показывает итог (товары, скидки, стоимость доставки, время), но ничего не списывает. Затем confirm_order оформляет заказ, но только если сумма совпадает с превью. Если между двумя вызовами корзина изменилась (цена, наличие, промоакция), заказ не уйдёт:

if abs(live_total - confirmed_total) > 0.01:
    raise LavkaApiError("Сумма изменилась — переоформи.")

Разработчик сознательно ввёл этот механизм: модель может ошибиться, «нафантазировать» сумму или зациклиться, а деньги при этом реальные.

Как это выглядит на практике

Пользователь пишет в Claude Desktop: «Закажи молоко, хлеб и что-нибудь к ужину». Claude вызывает search_products с запросом «молоко», получает список с ценами и идентификаторами. Затем повторяет для «хлеб» и подбирает что-то для ужина по контексту. Добавляет товары в корзину через add_to_cart, вызывает checkout_preview, показывает пользователю итог: «Молоко 2,5% за 99 руб., хлеб за 59 руб., доставка бесплатная, итого 158 руб., привезут через 15 минут. Оформляю?». Пользователь подтверждает, Claude вызывает confirm_order, и заказ уходит курьеру.

Частые ошибки

Два идентификатора товара. У каждого товара в Лавке есть хэш (id, по нему кладут в корзину) и слаг (deepLink, по нему открывают карточку). Перепутаете, получите «товар не найден».

Гонка за общую корзину. Корзина Лавки одна на весь аккаунт. Claude умеет отправлять несколько вызовов инструментов одновременно, и параллельные добавления получают ошибку HTTP 409 (конфликт версий). Автор решил это через asyncio.Lock, сериализацию записей и автоповтор при 409.

«Фантомные» товары. Поиск может вернуть товар с другого склада, который нельзя добавить в корзину по вашему адресу. Проверяйте поле in_stock в ответе.

Протухший CSRF-токен. Если сервер долго простаивает, токен может устареть. Клиент автоматически обновляет его при получении 401, но если вы модифицируете код, не забудьте этот механизм.

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

Что делать с этим прямо сейчас?

Разработчику в РФ. Это рабочий пример claude api интеграции с закрытым российским сервисом. Тот же подход (реверс-инжиниринг веб-API плюс MCP-обёртка) применим к десяткам других сервисов без публичного API: Самокат, Вкусвилл, СберМаркет. Код открыт, берите как шаблон.

Автору Дзена. Тема «подключил ИИ к бытовому сервису» собирает просмотры, потому что понятна любому. Повторите эксперимент, запишите экран, покажите реальный заказ. Контент с живой демонстрацией работает лучше, чем пересказ чужого поста.

Предпринимателю. Если у вашего бизнеса есть веб-интерфейс, клиенты смогут подключить к нему ИИ-ассистента тем же способом, и вы это не контролируете. Стоит подумать, не лучше ли дать официальный API или MCP-сервер самим.

Мнение редакции dzen.guru

Проект красивый, но я бы пользовался им с осторожностью. Реверс-инжиниринг приватного API может нарушать пользовательское соглашение Яндекса, автор сам об этом предупреждает. Эндпоинты могут измениться без предупреждения, и утром вместо заказа вы получите ошибку.

Но как учебный материал это отличный пример. Двухшаговое оформление с проверкой суммы, сериализация записей через блокировку, автообновление CSRF: такие паттерны пригодятся в любой интеграции, не только с Лавкой. По моим наблюдениям, MCP-серверы для российских сервисов пока появляются штучно и по инициативе энтузиастов. Если Яндекс, Сбер или другие крупные игроки дадут официальные MCP-серверы, это изменит расклад быстрее любого стороннего проекта.

Пока этого не произошло, подобные неофициальные интеграции остаются единственным способом подружить Claude с российской инфраструктурой, и именно поэтому стоит разобрать код, пока он работает.

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

Запуск больших моделей ИИ на четырёх Mac Studio: 1,5 ТБ памяти за $40 000 без облака
ai

Запуск больших моделей ИИ на четырёх Mac Studio: 1,5 ТБ памяти за $40 000 без облака

Компания Apple предоставила автору кластер из четырёх Mac Studio для тестирования технологии RDMA (прямой доступ к памяти по сети, когда одна машина читает…

7 мин
Atoms Каланика привлёк $1,7 млрд: крупнейшие инвестиции в робототехнику от Uber и a16z
ai

Atoms Каланика привлёк $1,7 млрд: крупнейшие инвестиции в робототехнику от Uber и a16z

Стартап Atoms, основанный бывшим CEO Uber Трэвисом Калаником, привлёк 1,7 млрд долларов в раунде, который возглавила венчурная фирма Andreessen Horowitz, и…

4 мин
Substack первым из платформ встроил детектор ИИ: читатели проверят любой пост в один клик
ai

Substack первым из платформ встроил детектор ИИ: читатели проверят любой пост в один клик

Почему это важно Substack встроил в приложение проверку текстов на использование нейросетей, и теперь любой читатель может оценить, какую долю поста написал…

5 мин