Spree Commerce developer docs for AI agents
Spree Commerce docs for AI coding agents: build headless B2B and marketplace ecommerce on its APIs.
คำอธิบายจากผู้ทำ (ภาษาอังกฤษตามต้นฉบับ)
Unofficial MCP server for ordering Yandex Lavka groceries: search, cart, checkout.
สามเรื่องนี้ไม่รวมเป็นคะแนนเดียว เพราะความเห็น การวัด และความนิยม เป็นคนละเรื่องกัน
ตัวนี้ยังไม่ได้เรียบเรียงเป็นภาษาไทย ด้านล่างคือข้อเท็จจริงที่เราอ่านจาก registry
เลือกโปรแกรม AI ที่คุณใช้ แล้วคัดลอกค่าตั้งไปวาง
ต้องเตรียมก่อน
คุณใช้แอปไหน
เลือกแอปด้านบน เราจำไว้ให้ ครั้งหน้าปุ่มจะขึ้นว่า “ติดตั้งลง …”
เปิด Claude Desktop → Settings → Developer → Edit Config แล้ววางค่านี้ในไฟล์ claude_desktop_config.json
{
"mcpServers": {
"yandex-lavka": {
"command": "uvx",
"args": [
"yandex-lavka-mcp"
]
}
}
}พิมพ์คำสั่งนี้ใน Terminal
claude mcp add yandex-lavka -- uvx yandex-lavka-mcpวางในไฟล์ .cursor/mcp.json ของโปรเจกต์ หรือ ~/.cursor/mcp.json
{
"mcpServers": {
"yandex-lavka": {
"command": "uvx",
"args": [
"yandex-lavka-mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
วางในไฟล์ .vscode/mcp.json ของโปรเจกต์
{
"servers": {
"yandex-lavka": {
"type": "stdio",
"command": "uvx",
"args": [
"yandex-lavka-mcp"
]
}
}
}เบราว์เซอร์จะถามก่อนเปิดแอป จากนั้นแอปแสดงค่าตั้งให้ตรวจแล้วกดยืนยัน ช่อง key เว้นว่างไว้ให้คุณใส่เอง
ตัวนี้รันในเครื่องคุณ แต่ ChatGPT ต่อได้เฉพาะ server บนอินเทอร์เน็ต ลองเลือกแอปอื่น
ตัวเลือกเก็บในคุกกี้บนเครื่องนี้ ไม่ต้องมีบัญชี
ค่าตั้งนี้สร้างจากข้อมูลใน registry ของผู้ทำ ถ้าไม่ตรงกับ README ให้เชื่อ README
รันในเครื่องคุณ รายการเครื่องมือจะขึ้นในแอป AI หลังติดตั้ง
เราตรวจจากข้อมูลที่ใครก็เปิดดูได้ ยังไม่ได้อ่านโค้ด ข้อที่ไม่เกี่ยวกับตัวนี้ไม่นับในตัวหาร · ตรวจเมื่อ 10 พ.ย. 2569
ชื่อใน registry ยืนยันด้วยบัญชี GitHub Dudude-bit ซึ่งเป็นเจ้าของ repo
มีการแก้โค้ดล่าสุด 36 วันที่ผ่านมา
ยังไม่ได้อ่านข้อมูล repo จาก GitHub
ตัวนี้รันบนเครื่องคุณ ไม่มี endpoint บนอินเทอร์เน็ต
ตัวนี้รันบนเครื่อง ใช้ค่าที่ตั้งในเครื่องแทน
รันในเครื่องคุณ เราอ่านรายการเครื่องมือได้เฉพาะตัวที่มี endpoint บนอินเทอร์เน็ต
เทียบกับทุก server ที่ยังใช้งานในหมวดนี้ทั้งทะเบียน ดาวนับเฉพาะเมื่อผู้ลงทะเบียนเป็นเจ้าของ repo
จากการตรวจเบื้องต้นของเรา ผ่าน 2 จาก 2 ข้อที่ตรวจได้ เรายังไม่ได้อ่านโค้ด ก่อนใส่กุญแจหรือ token ให้ดูว่า server ขอสิทธิ์อะไร และเลือกกุญแจที่ทำได้เท่าที่จำเป็น
registry ไม่ได้ระบุว่าต้องใช้กุญแจ แต่บางตัวจะขอให้ล็อกอินตอนใช้ครั้งแรก
รันบนเครื่องของคุณ โปรแกรม AI จะเปิด server ขึ้นมาเองเมื่อใช้ ข้อมูลไม่ต้องผ่านเซิร์ฟเวอร์ของผู้ทำ (ยกเว้นตัวที่ไปเรียกบริการออนไลน์ต่อ)
repo บน GitHub มีการแก้โค้ดล่าสุด 36 วันที่ผ่านมา และส่งรุ่นล่าสุด (0.1.6) เข้า registry 36 วันที่ผ่านมา
โปรแกรมที่รองรับ MCP เช่น Claude Desktop, Claude Code, Cursor และ VS Code ตัวนี้ต้องมี Python (uv) ในเครื่องด้วย
ในหมวดเดียวกันมี Spree Commerce developer docs for AI agents, Spree Commerce: open-source B2B and marketplace ecommerce, Stripe MCP
server หมวดเดียวกันจากผู้ทำคนอื่น เรียงตามดาว
อ่านการ์ด:↓ ดาวน์โหลดต่อสัปดาห์i★ ดาว GitHubiสามเสา: รีวิว · ผลตรวจ · การใช้งานiอัปเดต = วันที่ส่งรุ่นล่าสุดเข้า registryi
Spree Commerce docs for AI coding agents: build headless B2B and marketplace ecommerce on its APIs.
Open-source B2B and marketplace ecommerce; new stores include an MCP server for AI agents.
server ทางการของ Stripe ให้ AI ดูและจัดการลูกค้า สินค้า การชำระเงิน และใบแจ้งหนี้ ต่อผ่านคลาวด์ของ Stripe และล็อกอินแบบ OAuth
ส่วนนี้คัดจาก repo ของผู้ทำตามต้นฉบับ PopNx MCP ไม่ได้ตรวจหรือรับรองเนื้อหา ตัด HTML รูปภาพ และสคริปต์ออกแล้ว ลิงก์จะพาออกนอกเว็บ
An MCP server that lets an AI assistant order groceries from Yandex Lavka — search products, build a cart, and place a real order — with an explicit human confirmation before any money is charged.
[!WARNING]
Unofficial. Yandex Lavka has no public API. This project talks to the same
private web API that
lavka.yandex.ruuses, authenticated with your own
Yandex session cookies. It automates your own account, for your own shopping.
- Not affiliated with or endorsed by Yandex. Using it may violate Yandex's
Terms of Service, and the private API can change or be blocked at any time.
-
confirm_orderspends real money on your card. Use at your own risk.
- Provided as is, without warranty (see LICENSE).
| Tool | Charges? | What it does |
|---|---|---|
lavka_status | — | Is the session + location set up? |
list_addresses | — | Your saved Lavka addresses, by name. |
use_address | — | Switch delivery to a saved address by name. |
set_delivery_address | — | Set delivery to any address by text (any city). |
set_location | — | Set delivery point by raw lat/lon. |
search_products | — | Search the catalog at the current location. |
get_product | — | Product detail by id, slug or Lavka link, incl. nutrition (КБЖУ per 100 g / per portion, as the card shows it). |
list_categories | — | Catalog menu: category groups with their categories (per storefront). |
get_category_group | — | Categories inside one catalog group, by group id. |
get_category_products | — | Products in a category + its subcategory shelf counts; optional subcategory filter. |
view_cart | — | Show cart + total. |
add_to_cart | — | Add an item. |
update_cart_item | — | Set exact quantity (0 removes). |
clear_cart | — | Empty the cart. |
checkout_preview | no | Full summary: items, subtotal, discount, delivery, ETA, payment, total. |
list_payment_methods | — | Your saved cards and which is the default. |
set_payment_method | — | Choose which card orders charge. |
confirm_order | YES | Places the order and charges the default card (or the one set above). |
cancel_order | — | Cancel an order by id. |
active_orders | — | Currently tracked orders with status/ETA. |
order_history | — | Past orders (total, items count, date), paged. |
get_order | — | One order in full: items, totals, address, status. |
Money safety. Placing an order is a deliberate two-step flow: checkout_preview returns the full summary and charges nothing; confirm_order(confirmed_total) refuses unless a preview was just run and you pass back the exact total it showed. Change the cart and the preview is invalidated — you must preview again.
3-D Secure. confirm_order submits the order and charges the on-file card, then polls payment status. If your bank requires 3-D Secure, payment_status comes back wait_user_action and a redirect_url is returned — open it to finish paying (a headless charge cannot complete 3DS). cancel_order(order_id) cancels.
Multiple locations / cities. Catalog, prices and cart are location-scoped. use_address("Дача") switches to a saved address; set_delivery_address("Казань, улица Баумана, 1", flat="12") works for any address in any city (it geocodes via Lavka's own address search).
httpx.client.py — the async API client (session auth, CSRF, request building, trims huge payloads).endpoints.py — every API path in one place (overridable from config, no code change).server.py — the MCP tools the assistant sees.The API sits under https://lavka.yandex.ru/api/v1/providers/* (plus /api/v1/orders/submit for placing orders). Requests need the CSRF token from the homepage HTML plus X-Lavka-Web-* headers — the client handles this.
uv venv && uv pip install -e .
Log into Lavka in your browser first, then get the session cookies into ~/.config/yandex-lavka-mcp/config.json.
macOS — pull cookies straight from Chrome (one Keychain prompt → Allow):
uv pip install -e '.[browser]'
python scripts/extract_chrome_cookies.py # auto-detects your profile
Any OS — paste the Cookie header from DevTools (Network → any lavka.yandex.ru request → Request Headers → Cookie):
python scripts/import_cookies.py --header "Session_id=...; yandexuid=...; L=..."
Session cookies expire — re-run when calls start failing with "Lavka session is not authorized".
Copy config.example.json to ~/.config/yandex-lavka-mcp/config.json and edit, or set it from the assistant with use_address / set_delivery_address. The catalog only works once a location is set. Smoke-test:
python scripts/smoke.py "молоко"
Claude Code:
claude mcp add yandex-lavka -- uv run --directory /path/to/yandex-lavka-mcp yandex-lavka-mcp
Claude Desktop (mcpServers):
{
"yandex-lavka": { "command": "uv", "args": ["run", "--directory", "/path/to/yandex-lavka-mcp", "yandex-lavka-mcp"] } }
By default the server speaks stdio (local clients). Set YANDEX_LAVKA_MCP_TRANSPORT=streamable-http to expose it over HTTP so a hosted instance can back a claude.ai custom connector (phone / web).
A prebuilt Dockerfile is included. Secrets are injected at runtime — never baked into the image:
docker build -t yandex-lavka-mcp .
docker run -p 8000:8000 \ -e YANDEX_LAVKA_MCP_TRANSPORT=streamable-http \ -e YANDEX_LAVKA_MCP_CONFIG_JSON="$(cat ~/.config/yandex-lavka-mcp/config.json)" \ yandex-lavka-mcp
(The image defaults to stdio; the TRANSPORT env above switches it to HTTP.)
| Var | Purpose |
|---|---|
YANDEX_LAVKA_MCP_TRANSPORT | stdio (default) or streamable-http. |
YANDEX_LAVKA_MCP_HOST / _PORT | Bind address for HTTP (default 0.0.0.0:8000 in Docker). |
YANDEX_LAVKA_MCP_CONFIG_JSON | The whole config.json as one secret (instead of a file). |
YANDEX_LAVKA_MCP_SPRAVKA | Captcha pass for the server's IP, if Yandex demands one (see Captcha). |
A public endpoint spends real money, so protect it. claude.ai's custom connector UI only supports OAuth (no static bearer / custom header — that works only in Claude Code/Desktop). This server is a provider-agnostic OAuth 2.1 resource server: point it at *any* OpenID-Connect provider (Zitadel, Keycloak, Auth0, Google, …) and it validates JWT access tokens against that provider's JWKS and advertises it via OAuth protected-resource metadata.
Enable it by installing the server extra (pip install '.[server]', already in the Docker image) and setting:
| Var | Purpose |
|---|---|
YANDEX_LAVKA_MCP_OAUTH_ISSUER | Your provider's issuer URL (enables OAuth). |
YANDEX_LAVKA_MCP_SERVER_URL | Public URL of this MCP server (the resource). |
YANDEX_LAVKA_MCP_OAUTH_AUDIENCE | Expected token audience (optional but recommended). |
YANDEX_LAVKA_MCP_OAUTH_SCOPES | Space-separated required scopes (optional). |
YANDEX_LAVKA_MCP_OAUTH_SUBJECTS | Allow-list of token subs that may call the server (optional; strongest lock — every request spends *your* Lavka session). |
YANDEX_LAVKA_MCP_OAUTH_JWKS_URL | Override JWKS URL (optional; else discovered). |
A network-exposed HTTP transport refuses to start unless OAuth is configured (it spends real money). Set YANDEX_LAVKA_MCP_ALLOW_INSECURE=1 only if you front it with your own auth. Leaving OAuth unset is allowed for loopback/local use.
Session cookies expire; when calls start failing, re-capture them and update
the
YANDEX_LAVKA_MCP_CONFIG_JSONsecret. There is no headless Yandex login.
The captcha pass (below) is a separate secret, so it survives this.
Yandex may start answering a hosted instance with a captcha — decided by the server's IP, not the session (the same cookies keep working from home). Tools then fail with *"Yandex anti-bot returned a captcha"*. Solve it once through that IP:
ssh -f -N -D 1080 <your-server> # SOCKS proxy out of the server's IP
uv run --with playwright python scripts/solve_captcha.py --proxy socks5://127.0.0.1:1080
A throwaway Chrome window opens on the captcha; solve it. The script prints the spravka cookie to stdout — set it as the YANDEX_LAVKA_MCP_SPRAVKA secret (pipe it straight in) and restart. It lasts about 30 days; repeat when the captcha error comes back.
uv pip install -e ".[dev]"
pytest
Lavka keeps a single server-side cart per account, guarded by an optimistic cartVersion. This server serializes its own cart writes and retries on version conflicts, so parallel tool calls in one session are safe. But don't drive the same Yandex account from two places at once (e.g. this server *and* a second MCP session, *and* the Lavka app): they all write the one shared cart, and you'll see items from the other writer appear in yours. Use a single client at a time.
~/.config/yandex-lavka-mcp/config.json (chmod 600), git-ignored. Never commit them.MIT. Unofficial project, not affiliated with Yandex.