Yandex Lavka MCP vs Postals MCP

A side-by-side look at the Yandex Lavka MCP and Postals MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.

Yandex Lavka MCP logoYandex Lavka MCPDelivery · Local subprocess (stdio)Order groceries from Yandex Lavka (Russia): search the catalog, build a cart, and place an order with a two-step confirmation before any charge. Unofficial (reverse-engineered private web API); local stdio or remote HTTP with OAuth. uvx yandex-lavka-mcp.63GoodAuth: otherPostals MCP logoPostals MCPDelivery · Local subprocess (stdio)Send physical handwritten postcards from any AI agent. Real pen & ink, USPS, $4.99/card.55GoodAuth: not declared

Verdict: choose Yandex Lavka MCP for delivery work as a local process; choose Postals MCP for delivery as a local process. You can also run both side by side in one mcpServers block.

Which MCP server should you choose?

Yandex Lavka MCP logoChoose Yandex Lavka MCP when

  • You need dedicated capabilities in the Delivery domain.
  • You prefer a local stdio subprocess transport.
  • Its auth model fits you: other.
  • You want tools like lavka_status, set_location, list_addresses.
Explore Yandex Lavka MCP

Postals MCP logoChoose Postals MCP when

  • You need dedicated capabilities in the Delivery domain.
  • You prefer a local stdio subprocess transport.
  • You have the keys it needs: POSTALS_API_KEY, POSTALS_SENDER_NAME, POSTALS_SENDER_ADDRESS, POSTALS_SENDER_CITY, POSTALS_SENDER_STATE, POSTALS_SENDER_ZIP, POSTALS_DEFAULT_CARD_IMAGE, POSTALS_TEST_MODE.
  • You want tools like send_postcard, generate_message.
Explore Postals MCP

Feature & specification comparison

Rows where the two servers differ are marked.

SpecYandex Lavka MCP logoYandex Lavka MCPPostals MCP logoPostals MCP
CategoryDeliveryDelivery
Quality signal63/100 · Good55/100 · Good
Install commandConfirmedConfirmed
TransportLocal subprocess (stdio)Local subprocess (stdio)
AuthotherNot declared
PricingFreeNot declared
Required env varsNone listedPOSTALS_API_KEYPOSTALS_SENDER_NAMEPOSTALS_SENDER_ADDRESSPOSTALS_SENDER_CITYPOSTALS_SENDER_STATEPOSTALS_SENDER_ZIPPOSTALS_DEFAULT_CARD_IMAGEPOSTALS_TEST_MODE
Verified ownerCommunity listingCommunity listing
GitHub stars242
Directory activity 3 views 0 installs 0 upvotes 1 views 0 installs 0 upvotes
Tools172

Tools & capabilities

Yandex Lavka MCP tools 17

  • lavka_statusShow whether the Lavka session and delivery location are configured. Read-only. Call this first to check setup before other tools.
  • set_locationSet the delivery location (required before catalog/cart calls). Provide either lat+lon coordinates or a saved address_id. Persists to config.
  • list_addressesList your saved Lavka delivery addresses (by name). Read-only. Use a returned `label` with use_address to switch delivery to that place.
  • use_addressSwitch delivery to one of your saved addresses, matched by name. Catalog, cart and prices are location-scoped, so this re-points everything. A saved address carries city/street/house; pass flat/entrance/comment if the order needs them.
  • set_delivery_addressSet delivery to ANY address by free text — works for a new city. Resolves the address to coordinates + city/street/house via Lavka's own geo search. Example: set_delivery_address("Казань, улица Баумана, 1", flat="12").
  • search_productsSearch the Lavka catalog at the current delivery location. Read-only. Each result has an `id` (use it with add_to_cart) and a `slug`; get_product takes either.
  • get_productGet one product: price, size, stock, description, nutrition. Read-only. `product` is an `id` or `slug` from a search result, or a Lavka link (a lavka.yandex.ru/good/... page or a shared ...?item=<id> link). `nutrition` is the КБЖУ block exactly as the product card shows it, numbers as Lavka gives them (nothing recomputed), or null when the card has none (non-food items): - `per_100g`: {kcal, protein, fat, carbs} per 100 g, or null. - `per_portion`: the same per the card's other tab, with its `label` ("Всё блюдо", "На упаковку", "На 50 г", ...), or null if the card has only one tab. - `default_basis`: the only tab ("per_100g" / "per_portion") when the card has one; null when it has both (Lavka doesn't say which one opens). - `portion_grams`: the portion's weight when the card states it (from the label, or the item's weight for a whole dish/pack), else null. - `warning`: null, or a note that per_portion doesn't follow from per_100g for that weight — Lavka's own data is wrong then; don't log it blindly.
  • view_cartShow the current cart contents and running total. Read-only. The cart also reports order-readiness. Watch these: - `warning`: a plain-language problem to fix (or null). If set, act on it. - each item's `unavailable_on_depot`: true = it's in the cart but CANNOT be ordered from the current store (only in «Большая Лавка», or sold out here). - `available_for_checkout`: false = the order can't be placed as-is. Remove/replace flagged items with update_cart_item(product_id, 0) before checkout.
  • add_to_cartAdd a product to the cart (increments if already present). No charge. `product_id` is the `id` from a search result. Pass `price` from the same search result when available (Lavka validates it on cart writes). IMPORTANT: search can return items that are only stocked in «Большая Лавка» (a different store) — they add fine but can't be ordered from the current one. After adding, check the returned cart's `warning` and each item's `unavailable_on_depot`; drop any flagged item with update_cart_item(id, 0).
  • update_cart_itemSet the exact quantity of a cart item. quantity=0 removes it. No charge.
  • clear_cartRemove everything from the cart. No charge.
  • checkout_previewPreview the order: items, delivery fee, ETA, address, payment, TOTAL. Charges NOTHING. Show the returned total to the user and ask them to confirm it out loud before calling confirm_order. Always run this before confirming. If the summary has a `warning`, or `available_for_checkout` is false, or any item has `unavailable_on_depot: true`, the order will be REFUSED — fix the cart (remove/replace those items) and preview again before confirming.
  • +5 more on the listing page

Postals MCP tools 2

  • send_postcardSend a physical handwritten postcard to a US mailing address. Postals prints it with real robotic handwriting (pen and ink) and mails it via USPS. Delivery in 3-5 business days. Cost: $4.99 per card. Provide the recipient's address, a message (max 400 chars), and optionally an image URL for the card front. If no image is provided, uses the configured default card.
  • generate_messageGenerate a personalized handwritten message for a postcard based on context about the recipient. Returns a ready-to-use message you can pass directly to send_postcard. Uses AI if Cloudflare credentials are configured (CLOUDFLARE_ACCOUNT_ID + CLOUDFLARE_API_TOKEN); otherwise returns a structured prompt you can use to compose the message yourself.

Ready-to-paste client configs

Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.

Yandex Lavka MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "dudude-bit-yandex-lavka-mcp": {
      "command": "uvx",
      "args": [
        "yandex-lavka-mcp"
      ]
    }
  }
}

Postals MCP

mcpServers (Claude Desktop / Cursor)
{
  "mcpServers": {
    "postals-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "postals-mcp"
      ],
      "env": {
        "POSTALS_API_KEY": "YOUR_POSTALS_API_KEY_HERE",
        "POSTALS_SENDER_NAME": "YOUR_POSTALS_SENDER_NAME_HERE",
        "POSTALS_SENDER_ADDRESS": "YOUR_POSTALS_SENDER_ADDRESS_HERE",
        "POSTALS_SENDER_CITY": "YOUR_POSTALS_SENDER_CITY_HERE",
        "POSTALS_SENDER_STATE": "YOUR_POSTALS_SENDER_STATE_HERE",
        "POSTALS_SENDER_ZIP": "YOUR_POSTALS_SENDER_ZIP_HERE",
        "POSTALS_DEFAULT_CARD_IMAGE": "YOUR_POSTALS_DEFAULT_CARD_IMAGE_HERE",
        "POSTALS_TEST_MODE": "YOUR_POSTALS_TEST_MODE_HERE"
      }
    }
  }
}

Frequently asked questions

Yandex Lavka MCP is categorized under Delivery and uses a local stdio subprocess. Postals MCP belongs to Delivery and uses a local stdio subprocess. Pick Yandex Lavka MCP for delivery work and Postals MCP for delivery.

Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.

Yandex Lavka MCP is listed as free. Auth: other. Postals MCP has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.

Yes. MCP clients support multiple servers: add dudude-bit-yandex-lavka-mcp and postals-mcp as separate keys in the same mcpServers object, and your assistant will call tools from either one.

On AllMCPs, Yandex Lavka MCP has a quality signal of 63/100 (Good) with 3 views, 0 installs and 24 GitHub stars. Postals MCP has 55/100 (Good) with 1 views, 0 installs and 2 GitHub stars.