yandex-eda-mcp

yandex-eda-mcp

MCP server for Yandex Eda (food delivery) that allows checking authorization, setting delivery address, searching restaurants, viewing menus, managing cart, and placing orders with safety features.

Category
Visit Server

README

yandex-eda-mcp

MCP-сервер для Яндекс Еды на базе Playwright (headless). Позволяет из любого MCP-клиента (Claude Desktop, Claude Code и т.п.):

  • проверять статус авторизации;
  • задавать адрес доставки;
  • искать рестораны и смотреть меню;
  • собирать корзину;
  • оформлять заказ (с защитой от случайного подтверждения).

Работает через персистентный профиль Chromium: вы логинитесь один раз в видимом браузере, дальше сервер ходит на сайт headless в том же профиле.

Профиль хранится вне папки с кодом — в ~/.yandex-eda-mcp/profile, поэтому переживает обновления кода и работает даже при запуске через npx.


Установка

Вариант A — через npx (без клонирования, рекомендуется)

Клонировать и собирать ничего не нужно. Нужен только Node.js ≥ 20. Пропишите сервер в конфиг MCP-клиента:

{
  "mcpServers": {
    "yandex-eda": {
      "command": "npx",
      "args": ["-y", "yandex-eda-mcp"]
    }
  }
}

Или одной командой через CLI Claude Code (сразу в user-scope — сервер доступен в любой сессии, а не только в текущей папке):

claude mcp add -s user yandex-eda -- npx -y yandex-eda-mcp

При первом запуске npx сам скачает пакет и Chromium (~150 МБ, разово). Вход в аккаунт Яндекса — автоматически при первом обращении к сайту (см. ниже). Это единственная настройка: раздел «Подключение к MCP-клиенту» ниже нужен только при установке из исходников (Вариант B).

Вариант B — из исходников

git clone <repo> && cd yandex-eda-mcp
npm install          # ставит зависимости, Chromium и собирает dist/ (скрипт prepare)

Отдельный npm run build больше не нужен — сборка идёт автоматически при npm install (скрипт prepare).

Авторизация — автоматически при первом использовании

Как только вы впервые обратитесь к сайту (например, search_restaurants), сервер сам увидит, что профиль не авторизован, и откроет видимое окно браузера для входа. Войдите в свой аккаунт Яндекса (логин/пароль/SMS/капча), окно закроется само, дальше всё работает headless. Вход нужен один раз на компьютере.

Можно и явно — вызвав MCP-инструмент login (или из терминала npm run login).

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

Подключение к MCP-клиенту (только для установки из исходников, Вариант B)

Если вы поставили сервер через npx (Вариант A) — этот раздел пропустите, настройка уже готова. При установке из исходников укажите путь к собранному dist/index.js:

{
  "mcpServers": {
    "yandex-eda": {
      "command": "node",
      "args": ["/абсолютный/путь/к/yandex-eda-mcp/dist/index.js"]
    }
  }
}

Через CLI:

claude mcp add yandex-eda -- node /абсолютный/путь/к/yandex-eda-mcp/dist/index.js

Инструменты (MCP tools)

Инструмент Назначение
login_status Проверить, авторизован ли профиль
login Открыть окно входа в Яндекс (обычно вызывается сам)
get_address Текущий адрес доставки (метка «Дом» или улица)
list_saved_addresses Сохранённые в аккаунте адреса (с подъездом/квартирой)
set_address Задать адрес: сперва ищет среди сохранённых, иначе новый по карте
search_restaurants Поиск ресторанов / каталог
get_menu Меню ресторана по URL или slug
add_to_cart Добавить блюдо в корзину
view_cart Показать корзину и сумму
place_order Оформить заказ (по умолчанию dry-run)
navigate Перейти по пути/URL внутри сайта
debug_snapshot URL + текст + скриншот страницы для отладки

Сохранённые адреса

set_address по умолчанию сначала ищет совпадение среди адресов, уже сохранённых в аккаунте Яндекс Еды (по метке или улице), и выбирает его мгновенно, сохраняя квартиру/подъезд/этаж — без повторного тыканья по карте.

set_address «домой»        → выбирает сохранённый «Дом» со всеми деталями
set_address «на работу»    → выбирает сохранённый «На работу»
set_address «Казань, Баумана 10» → нет в сохранённых → вводит новый по карте

Посмотреть список — list_saved_addresses. Форсировать ввод нового адреса (минуя сохранённые) — set_address с preferSaved: false.

Безопасность оформления заказа

place_order по умолчанию работает в режиме dry-run: доходит до кнопки «Оформить заказ», но НЕ нажимает её и не списывает деньги. Чтобы реально оформить заказ, нужно явно передать confirm: true.

Типичный сценарий:

  1. set_address → «домой» (или «Москва, Тверская 1»)
  2. search_restaurants → «пицца»
  3. get_menu → выбранный ресторан
  4. add_to_cart → нужные блюда
  5. view_cart → проверить состав и сумму
  6. place_order (dry-run) → убедиться, что всё готово
  7. place_order с confirm: true → оформить

Переменные окружения

Переменная По умолчанию Описание
YANDEX_EDA_HEADLESS 1 0/false — показывать браузер
YANDEX_EDA_AUTO_LOGIN 1 0 — не открывать окно входа автоматически
YANDEX_EDA_LOGIN_TIMEOUT 180000 Сколько ждать входа в окне, мс
YANDEX_EDA_DATA_DIR ~/.yandex-eda-mcp Каталог данных (профиль + скриншоты)
YANDEX_EDA_PROFILE <DATA_DIR>/profile Каталог профиля с авторизацией
YANDEX_EDA_SCREENSHOT_DIR <DATA_DIR>/screenshots Куда сохранять скриншоты
YANDEX_EDA_BASE_URL https://eda.yandex.ru Базовый URL
YANDEX_EDA_TIMEOUT 30000 Таймаут ожиданий, мс
YANDEX_EDA_USER_AGENT Chrome 131 User-Agent

Обслуживание селекторов

Яндекс использует хешированные CSS-классы, поэтому данные читаются в первую очередь из внутреннего JSON-API сайта (перехват сетевых ответов) — это устойчиво к смене вёрстки. Действия (адрес, корзина, кнопки) выполняются по DOM-селекторам, собранным в src/eda.tsSELECTORS и API.

Если что-то перестало работать:

  1. Вызовите debug_snapshot — получите текст и скриншот текущей страницы.
  2. Подправьте нужные селекторы/паттерны в src/eda.ts.
  3. npm run build.

Дисклеймер

Проект автоматизирует ваш собственный аккаунт для личного использования. Соблюдайте условия использования Яндекс Еды. Автор не несёт ответственности за списания и заказы, совершённые автоматизацией.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured