dns-customer-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DNS_GEOIP | No | Camoufox geoip enabled | false |
| DNS_ORIGIN | No | Base URL of the DNS shop site | https://www.dns-shop.ru |
| DNS_PYTHON | No | Python interpreter for the bridge | python3 |
| DNS_WARMUP | No | Background warmup enabled (set '0' to disable) | on |
| HTTP_PROXY | No | HTTP proxy (use a RU IP when banned by Qrator) | |
| DNS_PACE_MS | No | Pause between requests | 600 |
| DNS_RESTAPI | No | REST API base URL for reviews | https://restapi.dns-shop.ru |
| HTTPS_PROXY | No | HTTPS proxy (use a RU IP when banned by Qrator) | |
| DNS_HEADLESS | No | Camoufox headless mode | true |
| DNS_META_TTL_MS | No | TTL for product meta cache | 300000 |
| DNS_EXIT_IDLE_MS | No | Node idle timeout before exit | 1800000 |
| DNS_ALLOWED_HOSTS | No | Allowlist of hosts for fetch_url (SSRF protection) | www.dns-shop.ru,... |
| DNS_NAV_TIMEOUT_MS | No | Navigation timeout | 90000 |
| DNS_IDLE_TIMEOUT_MS | No | Browser idle timeout in Python bridge | 1800000 |
| DNS_TOOL_TIMEOUT_MS | No | Default MCP tool timeout | 55000 |
| DNS_BRIDGE_RETRY_MAX | No | Maximum restarts of the Python bridge | 3 |
| DNS_TOOL_CONCURRENCY | No | Parallel MCP handlers | 1 |
| DNS_CHALLENGE_WAIT_MS | No | Wait time for Qrator challenge | 25000 |
| DNS_SEARCH_TIMEOUT_MS | No | Timeout for dns_search | 180000 |
| DNS_RATE_LIMIT_PER_MIN | No | Token bucket rate limit for tool calls (0 disables) | 20 |
| DNS_TOOL_SESSION_RETRIES | No | Auto-retry count for session drops and warmup | 1 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| dns_searchA | Search products on dns-shop.ru. Returns id (16-hex), name, price, rating, stock (in_stock|tomorrow|order|out_of_stock|unknown), url. Prices and stock depend on session city (dns_get_location / dns_set_city). sort=price_desc ranks only the current query results (DNS order=price-desc), not the entire DNS catalog. For 3+ queries use dns_search_multi (one round-trip, shared session — avoids burst SESSION_DROP). Default compact=true. Prefer limit 5–8. Next: dns_product_details / dns_compare_products / dns_products_batch. |
| dns_search_multiA | PREFERRED for PC builds / price scans: run 1–10 search queries in one call (shared browser session). Avoids parallel dns_search bursts that cause SESSION_DROP. Each result block has query, count, items with stock enum. |
| dns_product_detailsA | Product card: price, oldPrice, rating, article, availability, stock enum, images, imageDataUri, delivery hints, location. Product id is 16-hex. For full specs use dns_product_specs. For 2+ cards prefer dns_products_batch. |
| dns_products_batchA | Fetch 1–40 product cards in one call (preferred over parallel dns_product_details). Each row includes location and stock. |
| dns_product_reviewsA | Buyer reviews via restapi opinions (product GUID). score, comment, pros, cons, date. Falls back to opinion page HTML; does not hang on product scrape. |
| dns_product_specsA | Technical characteristics from /product/characteristics/{id}/. When parser_drift or sparse, do not invent values. Default compact=true. |
| dns_product_variantsA | Configuration options on the product card (color, memory, etc.). Each variant has its own 16-hex id. Default compact=true. |
| dns_product_availabilityA | Stock / pickup availability for the current city (dns_get_location). DNS is a single retailer — use this instead of marketplace offers. Returns stock enum: in_stock|tomorrow|order|out_of_stock|unknown. When SKU-level store list is empty, returns city shop addresses (storesSource=city_shops). Set includeStores=false to skip city shops fallback. |
| dns_list_storesA | Physical stores for a city (/shops/{city}/). Pass city name or slug; defaults to session city. |
| dns_related_productsB | Analogs or accessories for a product (/product/analog/ or /accessories/). kind=analog|accessories. |
| dns_compare_productsA | Compare 2–8 products: matrix of shared characteristics + slim product rows. Prefer this over parallel dns_product_specs. Prices follow session city. |
| dns_category_browseA | Products inside a category. Prefer slug from dns_list_categories ({uuid}/name); short aliases (videokarty, noutbuki, processory) resolve via search fallback. sort=price_desc works within the category (not the whole catalog). |
| dns_list_categoriesA | Live category directory from dns-shop.ru. No args → top-level. parent=slug → children. query=text → related cats. |
| dns_brand_catalogB | Products for a brand name (brand page or search fallback). |
| dns_search_filtersA | Available filters and sort options for a search query or category. Does not return products. Pass query or category (one required). |
| dns_search_citiesA | City lookup for delivery/store region. Show options to user, then dns_set_city. |
| dns_get_locationA | Current city for this browser session (from current_path cookie). Anonymous default ≈ Москва. Affects prices and availability. |
| dns_set_cityA | Change city for the session (cookie / UI). Call dns_search_cities first. Affects prices and stock in all subsequent tools. May take 15–40s. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 18 tools
Most tools map cleanly to separate resources or actions—search, product details, specs, reviews, variants, availability, stores, categories, brands, and city state—and the descriptions call out intended use cases. A few pairs require careful reading, especially product_details vs products_batch and product_availability vs list_stores, but the boundaries are drawable.
All names share the dns_ prefix and snake_case, but the internal convention is mixed: verb-first names like list_stores and get_location coexist with noun-first names like product_details and category_browse, plus adjective-noun forms like related_products. There is also singular/plural inconsistency between product_details and products_batch, making the scheme readable but not uniform.
18 tools sits within the 16–25 range that starts to feel heavy for a single server, even though the domain is fairly broad. The count is somewhat justified by purpose-built batching tools like search_multi, products_batch, and compare_products, but several product-data tools could potentially be consolidated.
The read-only shopping surface is nearly comprehensive: city selection, search, category and brand browsing, product cards, specs, reviews, variants, availability, stores, related products, and comparison are all covered. The main gap is that dns_search_filters exposes filters but no tool clearly documents how to apply those filters back into a search or category query.