Skip to main content
Glama
yandex-eats-mcp
by yasmanmesa

yandex-eats-mcp

MCP server for the Yandex Eats Vendor Management API.

Lets AI agents (Cursor, Claude Desktop, and other MCP hosts) manage partner operations: orders history/details, busy mode, place blocks, menu import, courier code validation, and feedback replies.

This wraps the push Vendor Management API (https://dc-partner.eda.yandex.net). It is not a consumer ordering API.

Install / run

{
  "mcpServers": {
    "yandex-eats": {
      "command": "npx",
      "args": ["-y", "yandex-eats-mcp"],
      "env": {
        "YANDEX_EATS_CLIENT_ID": "your-client-id",
        "YANDEX_EATS_CLIENT_SECRET": "your-client-secret",
        "YANDEX_EATS_PARTNER_NAME": "your-partner-name"
      }
    }
  }
}

Pin a version: "args": ["-y", "yandex-eats-mcp@0.1.0"].

Local development

npm install
npm run build
npm start

MCP config pointing at a local build:

{
  "mcpServers": {
    "yandex-eats": {
      "command": "node",
      "args": ["/absolute/path/to/yandex-eats-mcp/dist/index.js"],
      "env": {
        "YANDEX_EATS_CLIENT_ID": "...",
        "YANDEX_EATS_CLIENT_SECRET": "...",
        "YANDEX_EATS_PARTNER_NAME": "..."
      }
    }
  }
}

Related MCP server: Yandex Delivery MCP

Environment variables

Variable

Required

Description

YANDEX_EATS_CLIENT_ID

yes

OAuth client id

YANDEX_EATS_CLIENT_SECRET

yes

OAuth client secret

YANDEX_EATS_PARTNER_NAME

for several write tools

Sent as Partner-Name header

YANDEX_EATS_BASE_URL

no

Default https://dc-partner.eda.yandex.net

YANDEX_EATS_TIMEOUT_MS

no

Default 30000

YANDEX_EATS_DRY_RUN

no

If true, tools do not call the API

Credentials are never accepted as tool arguments. Access tokens are never returned to the agent.

Tools

Tool

Description

yandex_eats_auth_status

Credential / token cache status (no token value)

yandex_eats_refresh_token

Force OAuth refresh

yandex_eats_orders_history

Order history (max 1000; 180 days)

yandex_eats_orders_details

Details by eats_ids (max 100)

yandex_eats_busy_mode_status

High-demand places

yandex_eats_block_status

Current blocks

yandex_eats_block_places

Block places (confirm: true required)

yandex_eats_unblock_places

Unblock places (confirm: true required)

yandex_eats_menu_import

Force menu / stop-list import

yandex_eats_validate_courier_code

Validate courier pickup code

yandex_eats_feedback_answer

Reply to feedback (may need subscription)

Resources

  • yandex-eats://docs/overview

  • yandex-eats://config/status

Prompts

  • yandex_eats_investigate_order

  • yandex_eats_resync_menu

Tests

# Unit + MCP integration (mocked Vendor API, in-memory transport)
npm test

# E2E: spawn dist/index.js over stdio (builds first). Live API smoke only if
# YANDEX_EATS_LIVE_E2E=1 and real CLIENT_ID/SECRET are set.
npm run test:e2e

npm run test:all

Suite

Path

Network

Unit

tests/*.test.ts

mocked fetch

Integration

tests/integration/

mocked Vendor API + real MCP protocol (in-memory)

E2E stdio

tests/e2e/stdio.e2e.test.ts

dry-run MCP child process

E2E live

tests/e2e/live.e2e.test.ts

real Yandex (opt-in)

Publish to npm

npm test && npm run build
npm pack --dry-run
npm publish

Requires an npm account with publish rights for yandex-eats-mcp.

Docs

License

MIT

Available Tools

11 tools
yandex_eats_auth_statusAuth statusA

Check whether Yandex Eats Vendor Management credentials are configured and whether a cached OAuth token is valid. Never returns the access token.

Inputs: no named parameters.

yandex_eats_block_placesBlock placesA

Block restaurant(s) in Yandex Eats (POST /block). Destructive. Requires confirm=true and Partner-Name. Tags: technical_problem | too_busy. If 'to' is omitted, block is indefinite.

Inputs: tag (required), from (required), confirm (required), vendorInfo (required), +2 more.

yandex_eats_block_statusBlock statusC

Get restaurant block status from Vendor Management (POST /v2/status). Requires Partner-Name.

Inputs: vendorInfo (required), limit, offset, statuses, +1 more.

yandex_eats_busy_mode_statusBusy mode statusB

List restaurants with active high-demand (busy) status (POST /partner-integration/v1/place-info/v1/busy-mode-status). High demand adds extra cooking minutes.

Inputs: limit, cursor, service, origin_ids, +2 more.

yandex_eats_feedback_answerAnswer customer feedbackA

Reply to customer order feedback with text and optional promo percent (POST /feedback-answer). Subscription-gated — may return 403 without subscription. Promo values: 10, 15, 20, 30, 40.

Inputs: text (required), feedback_id (required), promo, order_nr.

yandex_eats_menu_importInitiate menu importA

Force Yandex to re-parse the partner menu or stop-list (POST /menu/import/initiation). Requires Partner-Name. operationType: menu (default) or menu_stop_list. Safe to retry if unsure whether import started.

Inputs: restaurantId (required), operationType.

yandex_eats_orders_detailsOrder detailsA

Fetch detailed information for orders by Yandex eats_id list (POST /v1/get-orders-details). Max 100 ids per request; history retained 180 days. eats_id format: DDDDDD-DDDDDDDD.

Inputs: eats_ids (required), include_pii.

yandex_eats_orders_historyOrders historyA

Fetch order history from Vendor Management (POST /v1/orders-history). Limits: max 1000 orders in the response; history retained for the last 180 days. Status filter values are NEW, CANCELLED, DELIVERED.

Inputs: to (required), from (required), origin_ids (required), limit, +4 more.

yandex_eats_refresh_tokenRefresh OAuth tokenA

Force-refresh the OAuth2 client-credentials token from POST /oauth2/token on dc-partner.eda.yandex.net. Does not return the token.

Inputs: no named parameters.

yandex_eats_unblock_placesUnblock placesA

Unblock restaurant(s) (POST /unblock). Destructive. Requires confirm=true, Partner-Name, and blockIds from a prior block/status response.

Inputs: confirm (required), blockIds (required), vendorInfo (required).

yandex_eats_validate_courier_codeValidate courier codeB

Validate the courier pickup code for an order (POST /platform/orders/{orderId}/codes/validate). Requires Partner-Name. Sensitive operational tool.

Inputs: code (required), orderId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.7/5.0

    Scored across 11 tools

    Disambiguation5/5

    Every tool has a clearly distinct purpose: auth management, order history versus details, restaurant block versus busy mode, menu import, courier validation, and feedback. No two tools overlap in functionality.

    Naming Consistency5/5

    All tools follow the consistent prefix 'yandex_eats_' and use a clear verb_noun pattern (e.g., refresh_token, block_places, validate_courier_code). Naming is predictable and uniform.

    Tool Count5/5

    With 11 tools, the server is well-scoped for managing Yandex Eats vendor operations. The count covers essential actions without being overwhelming or too sparse.

    Completeness3/5

    The tool set covers core vendor workflows (auth, orders, block/unblock, menu import, feedback) but lacks tools for listing all restaurants, getting restaurant details beyond block status, or managing menu items individually. Some operations require workarounds.

    Related MCP Connectors

    Related MCP Servers