Alza MCP server
io.github.lukabudik/alza-mcp·v0.5.0·79 starsUnofficial MCP server for Alza.cz: catalog search plus token-guarded account and checkout.
79 stars481 downloads/wk
Reviews
Write oneNobody has reviewed Alza yet.
If you have run it, two minutes of your experience saves the next person an afternoon.
Alza tools (65, 22 write)
write = sends, deletes, buys or postsRead from the package source without running it. The installed server may list more.
account_statusReport whether a mobile API access token is loaded in this server process, and when it expires (`expiresAt`, `expired`) if that is known. An expired token is refreshed automatically before the next account call when a refresh token is loaded.
add_to_cartAdd one product to the mobile-API cart (`restservice.svc/v2/basket/add`) by its Alza product code (the `code` from `search_products`/`get_product`, e.g. `RI054b1` — not the numeric id).
address_deletewrite actionDelete a delivery address from the Alza account by executing the per-address delete action from the `profile` response.
address_searchSearch Alza's zip/city database. Use to suggest a valid address before `address_upsert`, or to verify a zip/city combination.
address_upsertwrite actionCreate or edit a delivery address on the Alza account by executing the server-provided address form action from `profile` (createAddressAction for create, the address's editAction for edit) with typed fields.
after_order_paymentswrite actionList the after-order payment options for an unpaid order part (mobile API getafterorderpayments). An `err:1` answer (e.g. the order does not exist) is returned as an error carrying Alza's message.
auth_discoveryRead the live OpenID Connect discovery document that the Alza mobile app uses (issuer, authorization endpoint, token endpoint).
auth_exchangeComplete the OAuth 2.0 PKCE sign-in: exchange the authorization code for mobile API tokens and load them into this server.
auth_startStart an OAuth 2.0 PKCE sign-in for the Alza mobile API: returns an authorization URL plus a state value.
autocompleteCheap search-box suggestions (plain HTTP, no page render): suggested query phrases plus matching categories, brands and products with ids/codes. Use it to refine a messy Czech query before a full `search_products` — pass a category `id` as `category_id`, or a product code to `get_product`.
cancel_orderwrite actionCancel an order part via Alza's HATEOAS cancel flow (OR11): reads the `cancelForm` (validating the order/part/hash are cancellable), then commits the cancellation with the given `reason`.
cartRead the authenticated user's Alza shopping cart: item lines with quantities and prices, applied discounts, vouchers, and the basket/order identifiers later checkout steps need.
change_passwordChange the Alza account password (row A14, `POST /v2/account/password`): submit the current password and the new password twice (new + confirm).
chat_navigationRead the live chatbotapi.alza.cz navigation for the current visitor (row W18): chatbotInitializeChatAction / chatbotReinitializeChatAction / metadata / rating actions with their server-provided hrefs and parameters.
chat_sendwrite actionOpen or continue an Alza chatbot session via chatbotapi.alza.cz /v1/chat (row W18): returns the chat configuration (configId, teamName, welcomeText, messages, allowTextInput) and showChat.
checkout_previewwrite actionRun the read-side of the mobile checkout (sendOrder1 + delivery/payment-group reads) and return a one-time checkout token plus totals.
claim_detailRead the detail of a single warranty claim/complaint (row K2) by following that claim's `detailAction`, copied verbatim from a `complaint_claims` list response.
compare_productsFetch 2–6 products by their Alza codes (the `code` from `search_products`) and return one aligned comparison table: a column per product,
complaint_claimsList the account's warranty claims (row K1): `GET /api/users/{user_id}/v1/warrantyClaims/{scope}` — `scope` `active` (default) or `archive`.
contactsRead the authenticated user's Alza contact list (mobile API v4/contacts endpoint).
delete_accountwrite actionDelete the Alza account and its personal data (row A18, `DELETE /v1/account` with `acknowledgeAndDelete`).
delivery_optionsList the delivery and payment option groups for the current Alza account cart (AlzaShop pickup, AlzaBox lockers, courier, payment methods) from the mobile API.
email_changewrite actionChange the account's contact email (row A16 bonus, `PATCH /v1/account` → `/email`): the address that receives invoices and order/claim notifications.
find_pickup_pointsFind AlzaBox parcel lockers and AlzaShop showrooms near a Czech/Slovak postal code: name, address, GPS, distance and opening hours, sorted nearest first.
gdpr_infoRead the account's GDPR section (row A17, APK `PersonalGdprDetails`): the `gdprInfoAction` (export request), the `deleteAccountAction`, and the export dialog (`AccountGdprDialog`: title, description, `emailInfo` with the login email the export is sent to, and the `sendGdprInfoForm`).
get_dealsFind currently discounted products on Alza.cz, with current price, original price, savings and a discount % COMPUTED from the observed prices (never from marketing badges).
get_productFetch details for a single product by its Alza code (the `code` from `search_products`, e.g. 'WEXOA002B0' — not the numeric id): name, price (with the original price when discounted), availability, rating, brand, category, primary image, URL, and the spec table when the product page carries one (up to 30 rows, merged from both the DOM spec table and the JSON-LD `additionalProperty` list some page
get_product_reviewsFetch reviews for a single product by its Alza code: the aggregate rating and review count plus up to `limit` individual reviews (author as Alza displays it, date, rating, body, pros/cons) from Alza's reviews API, newest first.
list_categoriesBrowse the Alza category tree one level at a time. Useful for narrowing a product search — find the right category id, then pass it to `search_products` as `category_id`. Without arguments, returns top-level categories.
list_category_filtersList the brands and attribute filters (facets) Alza defines for a category, with real ids and product counts.
list_toolsetsList every toolset this server groups its tools into: id, title, description, member tool names, and whether it's currently enabled.
mobile_readRead-only escape hatch for Alza mobile API operations that have no dedicated tool.
mutate_listwrite actionExecute one low-risk, APK-confirmed mutation using a one-time token from `prepare_mutation`.
orderwrite actionRead an authenticated user's Alza order: lines, parts, milestones/tracking, and invoice document references; with `part_id`, the part detail as well.
order_archivewrite actionRead the authenticated user's archived orders (row OR7 — the `archiveOrders` section of the orders navigation): returns `{self, paging, value[]}` — the same order shape as `order_search` results (status, phase, price, created, invoice `documents[]` for `order_document`).
order_documentwrite actionDownload an order invoice or document (row OR10) by following the server-provided `self.href` of a `Document`/`Attachment` object copied verbatim from a prior MCP response (e.g. the `documents[]` entries of `order_search` results or an order detail).
order_searchwrite actionSearch the authenticated user's Alza orders by term (row OR6 — the `userOrdersSearch` form from the orders navigation): order number/fragment or product term; returns matching `orders[]` (status, phase, price, created, and `documents[]` invoice refs) plus `commodities[]`.
pay_after_orderwrite actionExecute an after-order payment on an unpaid mobile-API order (AfterOrderRequestBody: order id, invoice number, payment id from `after_order_payments`, optional stored-card id and device fingerprint).
payment_methodsList the payment-method groups available for the current Alza account cart (mobile API getDeliveryPaymentGroups payment projection).
pc_build_suggestCheck whether a list of Alza PC parts works together. Fetches each part's spec table (one product-page load per part, roughly 5–20 s each when not cached; cached 15 min), detects its role (cpu, motherboard, ram, gpu, storage, case, cooler, psu) unless given, and runs every compatibility rule: CPU socket ↔ motherboard, RAM generation / DIMM type / slot count ↔ motherboard, RAM ↔ CPU memory controll
phone_changeChange the account's contact phone number (row A16, `PATCH /v1/account` → `/phone`): the number that receives pickup codes and 2FA SMS.
place_orderwrite actionSubmit an order through the mobile API's multi-step sequence using a checkout token from `checkout_preview` plus the three explicit payloads (`delivery_payment`, `user_info`, `complete_order`) copied from the preview/delivery responses.
prepare_mutationStart a two-step mutation by returning a one-time confirmation token bound to exactly one action. This call itself sends nothing to Alza.
product_by_eanLook up Alza catalog products by EAN/barcode (row AT3 — the app's camera barcode-scan API, APK `cz.alza.base.{api,lib,android}.vision`): `POST /services/restservice.svc/v1/getProductByEANlist` with `{eanList}`.
profileRead the authenticated user's Alza profile: personal data, the delivery-address book with per-address HATEOAS actions (create/edit/delete/search), and account sections.
recommend_alternativesFind alternatives to one product ("something like this but cheaper / better / same brand"). Candidate pool = Alza's own alternatives list for the product (mobile API, keyed by the numeric commodity id taken from the product URL); if that list is empty, or nothing in it survives the mode filter, falls back to a same-category `search_products` (`poolSource` says which was used).
registerRegister a new Alza account (mobile API CreateUser): submit email, phone, and password plus an optional verification code.
report_issueDraft a bug report or feature request for the alza-mcp project (github.com/…).
review_submitwrite actionSubmit a product review (1–5 rating plus optional text) by executing the server-provided review form action from the product detail (writeReviewAction/onSubmitReview or the rating form).
search_productsselect_pickup_pointDespite the name, this tool does not select an AlzaBox or pickup point. It POSTs a delivery selection to the mobile `getDeliveryAssociations` route and returns the payment methods that work with that delivery, each with the resulting delivery price (`data[]`: payment `id` such as 103/143/144/203, `price`, `paymentPrice`, `isLowCredit`, `isHidden`).
set_toolsetEnable or disable every tool in one toolset (or `all` for every toolset) at once, so only the tools relevant to the current task are visible.
subscription_activateActivate AlzaSubscription by executing the server-provided activateAction form.
subscription_overviewRead the account's subscription section — the resource Alza's authenticated navigation links as `userSubscription` (`GET https://webapi.alza.cz/api/users/{user_id}/v1/subscription?country=CZ`).
subscription_update_installmentwrite actionChange the AlzaSubscription installment plan by executing the server-provided updateInstallmentAction form.
two_factor_setTurn SMS two-factor on or off (row A15, `PATCH /v1/account` → `/2faEnabled`): `enabled=true` to activate, `false` to deactivate.
upload_attachmentwrite actionUpload 1–5 image attachments (base64 data URLs, whitelisted image MIME types, max 10 MiB each) by executing the server-provided multipart action (uploadImageAction / complaint attachment actions) — typically for a warranty claim from `complaint_claims`.
watchdog_deletewrite actionDelete one Alza watchdog (row B9b). Pass `watchdog_id` (from `watchdog_list`), or pass `commodity_id` and the tool looks up the watchdog on that product through Alza's own delete action.
watchdog_listList the price/stock watchdogs set on the user's Alza account. Alza calls the feature "Hlídací pes" (row B9a). Each entry has `watchdog_id`, `commodity_id`, name, current price, availability, `is_tracking_stock`, and `max_price` (the alert fires when the price drops below this; null means price is not watched).
watchdog_setwrite actionCreate an Alza watchdog for one product (row B9). Alza emails the account's login address when the product is back in stock (`track_stock`) and/or when its price drops below `max_price` (CZK incl. VAT, must be below the current price). Alza stores and runs the watchdog, so nothing is kept on the MCP side.
web_add_to_cartAdd a product to the anonymous (visitor-keyed) Alza HATEOAS web cart via the live m.alza.cz basket/v1 API, using the numeric `commodity_id` (e.g. 7229946) from `search_products`/`get_product`.
web_cartRead the anonymous (visitor) Alza web checkout cart by `basket_id` (obtained from `web_add_to_cart`): the HATEOAS cart state (maxStep, itemsAction, emptyCartAction) plus item lines (productId, count, basketItemId, updateQuantityAction).
web_pay_after_orderwrite actionExecute the after-order payment for an unpaid legacy-web order through the live-verified EShopService.svc CreateAfterPayment chain (the recorded real-payment path: e.g. MojePlatba 144 → KB SSO gateway).
web_pickup_placesList Alza pickup places from the live m.alza.cz personalPickup/v1 API: the type-availability form (AlzaBox/branches/24-7/showroom counts), a paginated place list, and — with `place_id` — a single place's detail (deliveryId, parcelShopId, isFree, typeText, opening hours).
web_place_orderwrite actionPlace an order through the live-verified legacy web WCF checkout pipeline (EShopService.svc: SaveOrder2 → SaveOrder3 → SaveAndConfirmOrder2 with the documented AlzaPlus 113-gate retry → CheckOrder4 → SendOrder4).
Public scan report
scanner v0.1.10 · 2026-10-13 · same rubric, same numbers if you re-run it
- Code scan107 source files scanned15/25
- –Live reliabilityno gateway calls yet and no remote to proben/a
- –Tool poisoningtools not inspected (local package is not executed); not countedn/a
- Auth qualitylocal package, no credentials required12/15
- Maintenancelast push 2 days ago15/15
- Maintainer identityregistry namespace matches repository owner; GitHub account older than a year8/10
Findings (2)
- mediumnpm install lifecycle script present
install.script - mediumnpm install lifecycle script present
install.scriptpackage.json: …on3 scripts/live-user-journeys.py", "postinstall": "node scripts/postinstall.cjs", "se…
How Alza compares
Against every graded Web search MCP server, from our own scans and uptime checks. Updated after each scan run.
- Safety score
- 77/100
- higher than 55% of 3,259 Web search servers
- Tools
- 65
- the typical Web search server has 5
- Tools that change things
- 34%
- typical: 0%. Fewer write tools means less an agent can break
- GitHub stars
- 79
- more than 94% of 1,720 Web search servers
- Downloads a week
- 481
- more than 87% of 734 Web search servers with a package
What its tools let an agent do: 38 read · 6 create · 18 change · 2 delete · 1 send or post
Install Alza in Claude Code, Cursor or VS Code
Runs npx -y alza-mcp on your machine. Read the scan report first; the gateway never runs local packages.
claude mcp add alza-mcp -- npx -y alza-mcp
What the publisher says
From the Alza repository's README, as published. We do not edit it. Read it on GitHub
alza-mcp-community
Let your AI agent shop on Alza.cz — Central Europe's largest e-commerce store.
Unofficial, community-built project. Not made, endorsed or supported by Alza.cz a.s.
alza-mcp-community is an unofficial Model Context Protocol server that gives Claude (or any MCP-aware agent) an interface to Alza through browser-based catalog scraping and reverse-engineered mobile/web APIs: search products, pull full detail, read reviews, use anonymous/account data, manage a cart, select delivery/AlzaBox pickup, preview checkout, and submit an order only with an explicit one-time confirmation token.
Real session, catalog toolset only, no account. Re-record: docs/demo-recording.md. Static version: docs/demo.svg.
Ask: "Find me the best pro-grade wheel cleaner under 600 Kč and tell me where I can pick it up in Prague." The agent calls searchproducts → getproduct → findpickuppoints and gives you a real answer with real prices and a real address.
[!IMPORTANT]
This project is unofficial — not affiliated with, endorsed by, or sponsored by Alza.cz a.s. It's a community wrapper for personal/research use. Read the disclaimer before deploying or sharing widely.
Quick install
[!NOTE]
Renamed from alza-mcp. At Alza's request, the project is now alza-mcp-community, so it's clear it isn't an official Alza product. If you installed the old package, replace alza-mcp with alza-mcp-community in your MCP config. Your saved login in ~/.alza-mcp/ keeps working.
One-click install
Both buttons install the same thing as the manual config below: npx -y alza-mcp-community, no environment variables, no secrets. With npx/npm, install runs a postinstall step that downloads Playwright's headless Chromium (~92 MB) and sets up the optional curl_cffi venv, so the first install takes a while and later starts take a few seconds. The .mcpb bundle and --ignore-scripts installs skip postinstall: Chromium is then downloaded on the first browser-backed call (~30 s) and the venv is not created (see Install paths). For Claude Desktop, download the one-click alza-mcp-community-.mcpb bundle from the latest release and open it, or use the JSON config below.
Claude Code
Shortened. The full README is on GitHub.
Nothing above is checked by us. What we check is on the safety report.
Alza: common questions
- Is Alza MCP server safe?
- Mostly: it is graded B (77/100). Read the Alza safety report
- How do I install Alza?
- It runs on your machine. Copy the Claude Code, Cursor, VS Code or Claude Desktop config from the install section.
- Does Alza need an API key?
- Not as far as the registry entry and our scan can tell: no credentials are declared or required.
- Is Alza maintained?
- The last commit was 14 days ago (2026-10-11). The latest release is v0.5.0.
- What can I use instead of Alza?
- Servers from other publishers that do the same job: Chatroost — unofficial Telegram MCP server, LetsFG — Flights & Hotels MCP server and searxNcrawl MCP server.
- How does Alza compare with other Web search MCP servers?
- safety score 77/100 (higher than 55% of 3,259 Web search servers); tools 65 (the typical Web search server has 5); tools that change things 34% (typical: 0%. Fewer write tools means less an agent can break). Full comparison.
Alternatives to Alza
Same job from other publishers: the closest match first, then the best rated.
- Chatroost — unofficial Telegram MCP serverUnofficial Telegram MCP server — read, search, reply and react in your own Telegram account.not reviewedEstablishedA
- LetsFG — Flights & HotelsSearch and book flights and hotels: hundreds of airlines, plus bookable hotel rates.not reviewedEstablishedA
- searxNcrawlWeb search via SearXNG and/or You.com, plus clean Markdown crawling via Crawl4AI. Self-hosted.not reviewedEstablishedA
- Ref ToolsToken-efficient search for coding agents over public and private documentation.not reviewedEstablishedA
- CrgToken-efficient code review knowledge graph: semantic search and call-graph resolution.not reviewedEstablishedB