Unofficial Model Context Protocol server for Alza.cz — gives AI agents a read-only interface to browse products, reviews, and pickup points.
Alza MCP has well-structured tool definitions with consistent naming (verb_noun pattern), comprehensive parameter schemas with types and descriptions, and clear tool purposes. All 5 tools follow the search/get/list/find pattern. However, descriptions are concise but lack depth on WHEN to use each tool vs. alternatives, error recovery guidance is minimal, and output schemas are not explicitly documented. Tool descriptions average ~120 chars (below the 194-char baseline), and parameter descriptions are present but terse. No tool annotations (readOnlyHint, etc.) despite all being read-only. Error handling wraps exceptions into friendly messages but doesn't guide LLM recovery paths.
Find nearby Alza pickup points (AlzaShop showrooms and AlzaBox lockers) by postal code with optional radius and type filtering.
Retrieve full product details including specifications, pricing, availability, and ratings for a specific product by code.
Retrieve customer reviews and ratings for a product, including review text, author, date, and individual ratings.
List all top-level product categories available on Alza.cz, optionally filtered by parent category ID.
Search for products on Alza.cz by query string with optional filtering by price range, category, stock status, and sorting.
Output schemas not documented. Tool descriptions state what is returned (e.g., 'product details including specifications, pricing, availability, and ratings') but do not specify the JSON structure, field names, or types. LLMs cannot plan downstream tool calls or extract data reliably without knowing response shape.
No tool annotations despite all tools being read-only. The MCP spec supports readOnlyHint, destructiveHint, and idempotentHint annotations. All 5 tools should declare readOnlyHint=true to signal safety to agents.
Error handling lacks recovery guidance. The friendlyError() function in src/server.ts converts exceptions to user-friendly messages but does not tell the LLM what to do next. E.g., 'Alza upstream error (HTTP 404)' should suggest 'Try a different product code or search_products() first.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Tool descriptions lack WHEN-to-use guidance. 'Search for products on Alza.cz by query string' is clear but does not explain when to call search_products vs. get_product, or when to use list_categories first. LLMs benefit from explicit disambiguation.
Parameter descriptions are minimal. E.g., 'sort' param lists enum values but does not explain what 'relevance' means vs. 'rating', or when an agent should prefer one. 'limit' says '1-50, default 20' but does not explain why 20 is the default or when to increase it.