wildberries-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@wildberries-mcpWhat's the best-rated laptop under 60,000 rubles on Wildberries?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
wildberries-mcp
English · Русский
An MCP server that gives LLM agents live, honestly-labelled data from Wildberries, the largest Russian marketplace: search with real pages, sorting and price windows; live product cards; per-article ratings and reviews; weekly price history; seller legal details.
Buyer side: searches the public storefront, no Wildberries account or token needed. Looking for your seller cabinet (orders, stocks, supplies via the official Seller API)? That is a different tool — theYahia/wildberries-mcp.
Why another Wildberries server
Most WB scrapers quietly return data that is not what a buyer sees. This one is built around not doing that:
Pitfall | What this server does |
Search API rejects clients without WB's anti-bot token (HTTP 403/498) | Mints the token with a short headless-Chromium visit, re-mints it when WB revokes it |
"Current price" taken from price history (a weekly average, often weeks old) | Live price from the same card API the site uses, per size, with pre-discount price and discount |
Rating/reviews of the merged product group shown as the product's own (a group can merge 16 different models) | Article rating as shown on the product page; group rating in a separate, labelled field |
New articles fail because CDN hosts are guessed from a hard-coded table | Hosts come from WB's published CDN route map |
Anti-bot "decoy" answers (unrelated products, wrong region) passed on as data | Every storefront answer is sanity-checked; implausible ones are retried and, if they persist, turned into an error |
Every response carries fetched_at and the delivery region it was computed for.
Related MCP server: wildberries-mcp
Tools
Tool | What it returns |
| 100 items per page; sort |
| Live offer per size, stock, delivery estimate; article rating + group rating with star split; seller with legal entity, address and tax id; characteristics; description; package contents; price-history summary; other articles of the merged group with their live prices |
| Weekly average prices next to the live price, with min/max and "current vs min/max" |
| Date, stars, text, pros, cons, bought variant, buyer tags, seller reply; |
| Up to 50 articles side by side in one request |
Install
Requires Python ≥ 3.10 and uv. On first use the server downloads Playwright's Chromium (~300 MB, once) for the anti-bot check.
Claude Code:
claude mcp add wildberries -- uvx --from git+https://github.com/SZhukovWork/wildberries-mcp wildberries-mcpAny MCP client (claude_desktop_config.json, .mcp.json, …):
{
"mcpServers": {
"wildberries": {
"command": "uvx",
"args": ["--from", "git+https://github.com/SZhukovWork/wildberries-mcp", "wildberries-mcp"]
}
}
}From a checkout: uv venv && uv pip install -e . && .venv/bin/wildberries-mcp.
Configuration (environment variables)
Variable | Default | Meaning |
| auto | WB delivery-region id. By default WB's own IP-based detection is used (the region is reported in every answer). To match your pickup point exactly, copy |
| — | Proxy URL for both HTTP and the browser, e.g. |
|
| Seconds between storefront API calls (search, cards). WB throttles hard; lower values get 429s |
|
| Where the anti-bot session is kept |
|
|
|
| — |
|
Account mode (optional): cart and your WB Wallet price
Off by default; enable it with WB_ACCOUNT=1. It adds:
Tool | What it does |
| Opens a browser window on this computer; you sign in to Wildberries yourself |
| Whether an account is connected, until when, its delivery region and WB Wallet discount |
| Deletes the local session and browser profile |
| Your cart with live prices, sizes, stock, totals; sold-out and removed items are marked |
| Puts an item into your real cart; |
| Removes an item (or one size) from your cart |
get_product and compare_products also get price_with_wallet_rub.
Logging in. Run wildberries-mcp login in a terminal (or call account_login).
A Chromium window opens on the WB login page; you type your phone number and the
code into the site yourself — they never pass through the MCP client or the
model. The server then copies only the access token, the device id, the delivery
region and the wallet discount out of the browser profile. The token lasts about
30 days and is renewed automatically from the saved profile.
wildberries-mcp status / wildberries-mcp logout manage the session.
What is stored. ~/.cache/wildberries-mcp/account.json (permissions 0600) and
the browser profile next to it. The token gives full access to your account;
treat the directory like a password. logout deletes both locally; to end the
session on WB's side too, use "log out on all devices" in your account.
What it does not do. No ordering, payment or address changes — by design. Cart tools are marked as write operations, so MCP clients ask before running them, and the server instructions tell the agent to change the cart only when you ask. Every cart change is verified by re-reading the cart.
About "personal prices". On the live site the base price for a logged-in
buyer was the same as for an anonymous one; the personal difference is the
WB Wallet discount (the account in testing had 3 %, an anonymous visitor about
2 %). price_with_wallet_rub applies your discount — an estimate of what the
site shows when paying with WB Wallet.
Automated actions on a personal account can attract WB's anti-fraud checks; use the cart tools for occasional, user-requested changes.
What the numbers mean
Prices are what an anonymous buyer sees in the reported region right now. With WB Wallet the site shows a few percent less; the account mode reports your own wallet price.
delivery_eta_hoursis WB's estimate for the region (the site turns the same numbers into a date).Ratings:
rating/reviewsare per article, as shown on the product page.groupfields describe the whole merged product group. The star split from the review feed can cover fewer ratings than the card counts — the server says so when it happens.Review photos: WB does not link photos to individual reviews, so no per-review photo count is reported (rather than a misleading 0).
Price history holds weekly averages; the last point is not the current price.
Limitations
Unofficial: relies on the storefront's internal endpoints, which WB can change at any time. Parsers are isolated in
parse.pyand covered by tests on recorded responses.WB blocks many foreign, VPN and datacenter IPs. Use a Russian residential IP or
WB_PROXY.Search is rate-limited by WB; the server spaces calls and reports a clear error instead of looping.
Anonymous and read-only by default; the optional account mode can change the cart but never orders or pays.
Roadmap
Delivery date for your exact pickup point in cart and product answers.
Checkout, payment and address changes are deliberately out of scope.
Development
uv venv && uv pip install -e '.[dev]'
.venv/bin/pytest # offline tests on recorded responses
.venv/bin/pytest -m live # end-to-end over MCP stdio against live WB (Russian IP)Disclaimer & credits
Not affiliated with Wildberries. Intended for personal price research; respect Wildberries' terms of use and keep request rates low. The idea of exposing WB as MCP tools was inspired by shndo1337/wildberries-mcp; this is an independent implementation.
License: MIT.
Available Tools
5 toolscompare_productsARead-onlyIdempotent
Live side-by-side offers for up to 50 articles in one request.
Per article: price, pre-discount price, discount, per-article rating and reviews, stock, seller and rating, delivery estimate. Articles WB has no offer for (removed or sold out in this region) are listed with a reason.
| Name | Required | Description | Default |
|---|---|---|---|
| articles | Yes | Article numbers to compare |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive behavior. The description adds valuable behavioral detail: results are live, up to 50 articles can be compared per request, and articles without an offer are listed with a reason, which helps set expectations for edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the first sentence states the core capability and limit, and the following list enumerates returned fields without fluff. No unnecessary repetition of schema or annotation data.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single well-documented parameter, rich annotations, and an output schema present, the description covers the core behavior, batch limit, and edge case of unavailable articles. Nothing essential for selecting or invoking the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The single parameter is fully described in the schema ('Article numbers to compare') with min/max constraints, so the description adds little about parameter syntax. It reinforces that the parameter accepts article numbers and supports up to 50, but does not need to compensate for a schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs live side-by-side comparison of offers for up to 50 articles, and enumerates the offer fields returned. This distinguishes it from single-product get_product, search, price history, and reviews siblings by emphasizing multi-article comparison in one request.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It conveys the intended use case—comparing current offers across multiple articles—by specifying batch size and included data such as price, stock, seller, and delivery estimate. It does not explicitly name alternatives or state when not to use it, but the context is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_price_historyARead-onlyIdempotent
Weekly average prices WB keeps for an article, next to the live price.
Each point is WB's average price for one week (stamped with a date); weeks
without data are absent. The last point is not the current price — use
current_price_rub. With 0–1 points no trend can be claimed.
| Name | Required | Description | Default |
|---|---|---|---|
| article | Yes | Wildberries article number (nm), e.g. 498414394 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false. The description adds meaningful behavioral details beyond those: weeks without data are absent, each point is a weekly average stamped with a date, and the last point is not the current price. This is exactly the kind of context annotations don't provide, so it earns a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and well-structured: the main purpose is stated first, followed by two clarifying sentences that add behavioral constraints. There is zero redundancy, and every sentence earns its place. It's appropriately sized for the tool's simplicity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that an output schema exists (Has output schema: true), the description needn't explain return values. It covers all essential operational aspects: data granularity (weekly), absence handling, current price distinction, and trend validity. For a read-only tool with one parameter, this is complete and leaves no ambiguity for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has full description coverage for the single parameter 'article' (100%), including an example value and type. The description doesn't add further parameter semantics, but with high coverage the baseline is 3 and there is no gap to compensate. The description's mention of 'article' is consistent, but it doesn't enrich beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: it returns weekly average prices for an article, and contrasts with the live price. This distinguishes it from siblings like get_product or get_reviews, which serve different resources. The verb 'get' and resource 'price history' are specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit usage guidance: it warns that the last point is not the current price and directs the agent to `current_price_rub` instead, and cautions that with 0–1 points no trend can be claimed. It doesn't explicitly list alternative tools for when to use it, but the context is clear enough given the sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productARead-onlyIdempotent
Full, live product card for one article.
Returns the current price (per size), stock, delivery estimate, seller with its legal entity, the article's own rating with star distribution next to the merged group rating, seller-filled characteristics, description, package contents, a weekly price-history summary and — optionally — the other articles merged into the same product group with their live prices.
| Name | Required | Description | Default |
|---|---|---|---|
| article | Yes | Wildberries article number (nm), e.g. 498414394 | |
| include_variants | No | Also price the other articles of the same product group |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that the tool is read-only, idempotent, and non-destructive. The description adds useful behavioral context by calling the data 'live' and exposing that variant inclusion is optional, which complements openWorldHint by signaling that prices and stock can change between calls. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, then delivers a dense but purposeful list of return contents in one well-structured sentence. It is longer than minimal, but nearly every clause contributes useful information for tool selection and invocation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotations, full parameter documentation, and presence of an output schema, the description is complete for calling the tool correctly. It clarifies the granularity (one article), the live nature of data, and the optional group-variant behavior, so no essential contextual gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already documents both parameters fully, including the article number format and the meaning of include_variants. The description's 'optionally — the other articles merged into the same product group' phrase mirrors include_variants but does not add new parameter-level semantics beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific operation and resource: it returns a 'Full, live product card for one article'. The detailed list of return contents (price, stock, delivery, seller, ratings, etc.) makes its purpose concrete and distinguishes it from broader tools like search_products and compare_products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly frames the tool as the single-article detail card, which is enough context for an agent to select it over search or compare tools. It also notes the optional include_variants behavior. However, it does not explicitly direct the agent to siblings such as get_price_history for full price history or get_reviews for review detail.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reviewsARead-onlyIdempotent
Buyer reviews with date, stars, text, pros, cons, bought variant and seller reply.
Also returns the star split of this article's ratings found in the review feed and the merged group's rating, so it is clear which one a headline number refers to. The feed lists reviews that have text and may hold fewer ratings than the card counts — the card rating (get_product) is the one shown on the site.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | 'worst' surfaces complaints first — useful for finding real drawbacks | newest |
| limit | No | Maximum reviews to return | |
| scope | No | 'article' = only reviews of this article; 'group' = the whole merged product group | article |
| article | Yes | Wildberries article number (nm), e.g. 498414394 | |
| max_rating | No | ||
| min_rating | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark this as read-only, idempotent, and non-destructive, so the safety profile is covered. The description adds valuable behavioral context beyond annotations by explaining that the tool returns both the star split from the feed and the merged group's rating, and that the feed may contain fewer ratings than the card counts. This nuance about potential data discrepancies is exactly the kind of behavior an agent needs to know, making it a strong supplement to the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs. The first sentence immediately states the core function and output fields. The second paragraph adds a crucial clarification about rating sources and discrepancies in a compact, front-loaded manner. Every sentence earns its place, with no redundancy or filler. This is an excellent example of concise, structured documentation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (6 parameters, enums, and a subtle rating nuance), the description is thorough. It explains the output fields, the star-split and group-rating distinction, and the difference from get_product's card rating. The output schema exists, so return format details are covered there. The only minor gap is not explicitly mentioning how pagination or limit works, but the schema's limit parameter and the tool's read-only nature make that less critical. Overall, it's complete enough for an agent to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 67% (4 of 6 parameters have descriptions). The description itself does not elaborate on any input parameters—it only lists output fields. For the two parameters lacking schema descriptions (max_rating, min_rating), the description offers no additional clarity, though their constraints are self-explanatory. Since the schema covers most parameters and the description adds no parameter-specific meaning, a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise statement of the tool's function: 'Buyer reviews with date, stars, text, pros, cons, bought variant and seller reply.' It clearly names the resource (reviews for an article) and the specific data fields returned. It also distinguishes itself from the sibling get_product by explaining that the card rating (from get_product) is the one shown on the site, which disambiguates which rating a headline refers to. This makes the purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context about when to use this tool versus get_product: it explicitly states that the feed may hold fewer ratings than card counts and that get_product provides the site-displayed rating. This gives the agent a concrete reason to choose one tool over the other for rating-related queries. However, it does not explicitly state 'use this tool when you need detailed review text' or list other exclusions, so it's slightly shy of a perfect score.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsARead-onlyIdempotent
Search Wildberries like the site does: real pages, sorting and a price window.
Each item has the live price (and pre-discount price), per-article rating
and review count, stock, seller with its rating, WB's delivery estimate in
hours for the region, and the product-group id. Fields without data are
omitted (no rating = no reviews yet); in_stock_qty 0 means sold out.
total_found is how many products WB matched; has_more tells whether
another page exists. Search prices come from the result feed — confirm
finalists with get_product.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Result page, 100 items per page | |
| sort | No | Order of results, same options as on the site | popular |
| limit | No | Return at most this many items of the page | |
| query | Yes | Search phrase, as typed on the site (Russian works best) | |
| price_max | No | Upper price bound, rubles | |
| price_min | No | Lower price bound, rubles |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already mark this as read-only, idempotent, and non-destructive, so the bar for additional disclosure is lower. The description adds meaningful behavioral detail: missing fields are omitted, in_stock_qty 0 means sold out, total_found and has_more have specific meanings, and search prices are from the result feed and should be confirmed with get_product. No contradiction with annotations exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded with the core behavior, then adds only high-value detail about result semantics and the companion get_product tool. Every sentence earns its place, and the structure makes the most important facts easy to find.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search tool, this description is complete: it explains the search behavior, the meaning of key result fields, pagination semantics, missing-data behavior, and the price-feed caveat. Together with the rich input schema and annotations, an agent has enough context to invoke the tool correctly and interpret results appropriately.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema already explains query, sort, page, limit, price_min, and price_max clearly. The description adds only a high-level mention of sorting and a price window, which does not materially enrich parameter understanding beyond the schema. This matches the baseline expected for full schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a search against Wildberries with real pages, sorting, and a price window, which distinguishes it from siblings like get_product. The return fields are enumerated, so an agent knows exactly what kind of results to expect. This goes well beyond the tool name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly positions this tool for product discovery and explicitly points to get_product for confirming finalists, which gives an agent a concrete routing cue. It does not exhaustively list when not to use it versus get_price_history, get_reviews, or compare_products, but the context is still clear and useful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.1.0- First observed
compare_products - First observed
get_price_history - First observed
get_product - First observed
get_reviews - First observed
search_products
TDQS
Scored across 5 tools
Each tool has a clear primary purpose (fetch one product, search, history, reviews, compare), but get_product and compare_products overlap for a single article, and get_reviews vs get_product both surface rating info. Descriptions clarify the differences, so ambiguity is low but not zero.
All tools follow a consistent verb_noun pattern: get_product, search_products, get_price_history, get_reviews, compare_products. The verbs (get, search, compare) and nouns are clear and uniform.
5 tools is well-scoped for a read-only product data server. Each tool addresses a distinct need—single product detail, search, price history, reviews, and multi-product comparison—without unnecessary duplication or bloat.
For a marketplace data retrieval server, the tool set covers the core workflows: finding products, deep-diving a product, checking price trends, reading reviews, and comparing offers. No obvious gaps for the stated purpose; it's read-only so CRUD operations are not expected.
Maintenance
Related MCP Connectors
Web search, page reading and structured extraction for AI agents, with strong RU coverage
Real-time Amazon product, seller, and search data for AI agents across 21 marketplaces.
Web data tools for AI agents: pages as markdown, search, maps, commerce, jobs, AI answers.
Live web access for agents: scrape, SERP search, crawl/map, 74 collectors, datasets, proxies.
Related MCP Servers
- FlicenseBqualityCmaintenanceProvides MCP tools for searching and comparing products on Wildberries (and Ozon planned), including product search, detailed card retrieval, and review fetching, normalized for LLM consumption.32-
- FlicenseNot gradedqualityCmaintenanceMCP server that turns Wildberries marketplace into a toolkit for LLM agents, enabling product search, detailed card inspection, price history, reviews, and cross-product comparison.-
- AlicenseAqualityCmaintenanceEnables AI agents to read and work with Wildberries, Ozon, and Yandex Market seller accounts through typed tools, multi-account support, unified data schemas, rate limiting, audit, and encrypted credential storage.1757 npmMIT
- FlicenseAqualityBmaintenanceEnables AI assistants to retrieve a Wildberries seller's product cards and customer reviews through the official Content and Feedbacks APIs.247 npm-