# ru-marketplace-mcp

> Connects DeepSeek Harness to Russian and Chinese e-commerce platforms for read-only queries of price, inventory, ratings, and seller qualifications, with cross-platform price comparison support.

## Metadata

- Author: [@Vladimir-Human](https://github.com/Vladimir-Human)
- Repo: <https://github.com/Vladimir-Human/ru-marketplace-mcp.git>
- GitHub: [Vladimir-Human/ru-marketplace-mcp](https://github.com/Vladimir-Human/ru-marketplace-mcp)
- Stars: 66
- Language: Python
- License: [MIT](https://spdx.org/licenses/MIT.html)
- Homepage: <https://github.com/Vladimir-Human/ru-marketplace-mcp/releases>
- Topics: `aliexpress`, `avito`, `citilink`, `claude`, `detsky-mir`, `dns`, `dsh-plugin`, `lamoda`, `marketplace`, `mcp`, `mcp-server`, `megamarket`, `ozon`, `price-comparison`, `python`, `russia`, `scraping`, `taobao`, `wildberries`, `yandex-market`
- Forks: 10
- Open Issues: 5
- Last push: 2026-08-20T22:03:38.000Z
- Added: 2026-08-16T00:00:00.000Z

## Install

```bash
dsh plugin --profile web add github:Vladimir-Human/ru-marketplace-mcp
```

## Wiki

## One-Sentence Positioning
This is a toolset that enables DeepSeek Harness to query read-only data from Russian and Chinese e-commerce platforms. It provides 13 operational skills (human-readable "user guides") as well as optionally-enabled MCP services. Regular users don't need technical knowledge—they just need to say "where is this cheaper" or "how much is this on WB" in DSH, and the AI will automatically call the appropriate tool.

## Core Capabilities
- **Cross-platform price comparison**: Query multiple platforms (Wildberries, Ozon, Yandex Market, etc.) simultaneously, sort by price, and show price differences
- Query product prices, inventory, and seller qualifications on Wildberries (including company name, tax ID, registered address)
- Read product details, search results, and reviews on the Ozon platform
- Pull multi-seller quotes, rating distributions, and user reviews from Yandex Market
- Product search and detail queries on Yandex Market, Detsky Mir, Avito, Taobao, and other platforms
- Query seller reputation on Avito (ratings and active product count)
- Anonymous page queries for platforms with strict anti-scraping measures like Taobao, Megamarket, Lamoda, DNS, and Citilink
- Pull nearly 30-day sales and inventory curves for Ozon/WB products via MPStats (paid)

## Technical Implementation
- **Language**: Python 3.12+
- **Key dependencies**: fastmcp (for MCP protocol implementation), pydantic (data model validation), curl_cffi (first-layer TLS obfuscation for Ozon/Avito, etc.), Playwright (fallback for headless browser), httpx (HTTP client)
- **Architecture pattern**: 12 independent MCP services split by platform, unified based on mcp-core runtime; there's also a `marketplace-mcp` merged service that dynamically mounts other services (failed dependencies only cause the corresponding platform to be absent, without affecting overall startup); DSH plugins inject 13 skills + 2 MCP client lines via `cordis.patch.yml`
- **Entry files**: Service entry is `packages/<name>-connector/src/<name>_connector/__main__.py`, CLI entry is `packages/marketplace-connector/src/marketplace_connector/cli.py`

## Use Cases
Regular users in DSH need to query prices, inventory, and reviews from Russian or Chinese e-commerce platforms, or perform cross-platform price comparisons, or check if a seller is legitimate—all without installing browser extensions or manually opening web pages. The plugin can also provide nearly 30-day sales curves for e-commerce sellers (requires paid MPStats). For developers and data analysts, this is a "read-only data gateway" that bypasses anti-scraping and authentication walls on various platforms.

## Prerequisites and Compatibility
| Dependency | Minimum Version | Description |
|---|---|---|
| Python | 3.12+ | Server runtime (declared in pyproject.toml) |
| uv | Latest version | Used to start MCP service via `uv run --frozen --directory <clone path>` |
| Platform | Cross-platform | Platform description in `dsh/README.md` states no restrictions |
| Native modules | None | Pure Python packages, dependencies resolved via uv |

## Installation
```bash
dsh plugin --profile web add github:Vladimir-Human/ru-marketplace-mcp
```

After installing the plugin, you also need to:
1. Clone this repository to your local machine: `git clone https://github.com/Vladimir-Human/ru-marketplace-mcp.git && cd ru-marketplace-mcp && uv sync --frozen`
2. Set the environment variable `RU_MARKETPLACE_MCP_DIR` to point to this cloned directory
3. Restart the DSH profile

To enable all 34 tools (instead of the basic 2 price comparison tools), also set `RU_MARKETPLACE_MCP_FULL=1`.

## Configuration Options
| Configuration | Type | Description | Default |
|---|---|---|---|
| `RU_MARKETPLACE_MCP_DIR` | Path environment variable | Points to the locally cloned `ru-marketplace-mcp` directory, also acts as the "MCP service enable" switch; when not set, 13 skills are still available but the two MCP services remain disabled | Not set |
| `RU_MARKETPLACE_MCP_FULL` | Switch environment variable | Set to 1 for full version (34 tools), not set for lite version (2 cross-platform price comparison tools) | Not set |
| `MPSTATS_MP_AUTH` | JWT string | MPStats paid account cookie value (raw JWT without `mp_auth=` prefix); when not set, MPStats tools return `auth_missing`, other platforms unaffected | Not set |
| `CHROME_CDP_PORT` | Port number | Chrome remote debugging port number, used by platforms dependent on CDP like Ozon/Avito | 9222 |
| `CHROME_CDP_HOST` | Host address | Chrome remote debugging listening address | 127.0.0.1 |
| `CHROME_STEALTH` | 0 or 1 | Whether to enable Chrome anti-detection mode | 1 |
| `CHROME_HEADLESS` | 0 or 1 | Whether to start Chrome in headless mode | 0 |

## FAQ

**Q: Nothing happened after `dsh plugin --profile web add`?**

A: This is normal. Installing the plugin only makes 13 skills appear in DSH; MCP services are disabled by default. You need to set the environment variable `RU_MARKETPLACE_MCP_DIR` to point to the cloned repository directory, then restart the DSH profile.

**Q: Getting "file not found" or "uv: command not found"?**

A: uv is not installed on your system. Please install the latest version of the uv package manager at https://docs.astral.sh/uv/.

**Q: Must I clone the repository? Can I use pip?**

A: The repository has published Docker images (ghcr.io/vladimir-human/ru-marketplace-mcp), which can be used to run without cloning the local repository; pip installation requires manually managing dependencies for 12 sub-packages. The two lines of DSH patch assume a local clone path by default.

**Q: Price comparison results are all 0 yuan or empty, what should I do?**

A: Missing prices represent "no data", never 0. Products taken down, empty inventory, or sellers who haven't set prices all result in empty values. Such results should be viewed with the `marketplace_sources` tool—if a platform is in the "unmounted" list, the missing is a dependency, not data.

**Q: I want to deeply view reviews for a certain product, but I'm told "review pool is empty"?**

A: Reviews and questions on Wildberries are indexed by `imt_id` (aggregated product ID), not `nmId` (single SKU ID). You must first use `wb_root_info(nmId)` to get `imt_id`, then use `wb_reviews(imt_id)` for queries.

**Q: How to uninstall?**

A: Execute `dsh plugin --profile web remove ru-marketplace-mcp-dsh`, then restart the profile. The locally cloned repository can be kept or deleted and won't affect DSH behavior.

**Q: Avito keeps returning "blocked"?**

A: Avito blocks data center IPs by region. You need to access from Russian residential IPs and slow down the request rate. `marketplace-mcp doctor` will tell you if your current environment is blocked.

**Q: During price comparison, I see not just ruble prices but also CNY and such?**

A: Taobao settles in RMB. In price comparison results, the `price_rub` field is `null`, and `price_native` is the original Taobao currency price. If you need to convert CNY to RUB, you need to calculate based on the current exchange rate yourself; the plugin won't hardcode exchange rates (they would expire).

## Learning Curve
Entry-level — the 13 skills themselves are "user guides," and the AI assistant can directly determine which tool to call; regular users only need to configure environment variables.

## Known Issues and Limitations
- Wildberries search results prices are slightly higher than actual product card prices (measured 2026-07-28: 60,571 vs 60,275); if the price difference between two candidate products is within 1%, use `wb_card` to confirm again
- Wildberries search results loop back to the first page when reaching the end (HTTP 200 with no error); deduplicate by `nm_id` during pagination
- Full version (marketplace-mcp) consumes approximately 13k tokens per request, much higher than the lite version (compare-mcp, 0.9k tokens), recommend enabling as needed
- Platforms like Avito, Megamarket, Taobao require external Chrome coordinated via CDP; these features are completely unavailable when Chrome isn't started
- Detsky Mir has no text search API; price comparisons skip it, need to browse by category using `detmir_category` separately
- Yandex Market Plus member prices (25-30% lower than regular prices) never participate in price comparison sorting to avoid "fabricated cheaper" prices
- `compare_prices` uses the web version for Yandex Market, consuming more tokens; disabling individual VIP prices can avoid duplication

---

This document is auto-generated by [deepseek-plugin.org](https://deepseek-plugin.org). HTML page: [ru-marketplace-mcp](https://deepseek-plugin.org/plugins/Vladimir-Human/ru-marketplace-mcp)
Wiki generated by AI (model: `MiniMax-M2.5`)
