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.
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.
Типичный сценарий:
set_address→ «домой» (или «Москва, Тверская 1»)search_restaurants→ «пицца»get_menu→ выбранный ресторанadd_to_cart→ нужные блюдаview_cart→ проверить состав и суммуplace_order(dry-run) → убедиться, что всё готово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.ts → SELECTORS и API.
Если что-то перестало работать:
- Вызовите
debug_snapshot— получите текст и скриншот текущей страницы. - Подправьте нужные селекторы/паттерны в
src/eda.ts. npm run build.
Дисклеймер
Проект автоматизирует ваш собственный аккаунт для личного использования. Соблюдайте условия использования Яндекс Еды. Автор не несёт ответственности за списания и заказы, совершённые автоматизацией.
Recommended Servers
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.
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.
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.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
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.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.