# ru-marketplace-mcp

> DSH 插件包，向宿主注入 14 个技能和 2 个按需启用的 MCP 客户端行，用于查询俄罗斯与中国电商平台的价格、库存、评论和跨平台比价。

## 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-19T00:00:00.000Z

## Install

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

## Wiki

## 一句话定位
这是 ru-marketplace-mcp 仓库针对 DeepSeek Harness 的插件包。它把 14 个 AI 技能和 2 个 MCP 客户端行注入到 DSH，让 AI 助手能够查询 Wildberries、Ozon、Yandex Market、Detsky Mir、Avito、Taobao、Megamarket、Lamoda、DNS、Citilink、AliExpress、MPStats 这 12 个俄罗斯/中国电商平台的价格、库存、评论和卖家资质，并支持一键跨平台比价。

## 核心能力
- 注入 14 个技能（按平台拆分 + 跨平台比价 + 统一服务），每个技能都是人话写成的"使用说明"，让 AI 自动判断该调哪个工具
- 默认就挂载"轻量比价"模式（2 个工具，每个请求约 0.9k token），一句话问"哪里买更便宜"就能用
- 可选切换到"完整统一服务"模式（36 个工具，每个请求约 13.6k token），覆盖查询、详情、评论、卖家资质、销量分析等
- 提供跨平台比价工具：一次调用同时查询 Wildberries、Ozon、Yandex Market 等 10 个可搜索平台，按价格排序并给出价差
- 让 AI 无需登录就能查询 Wildberries、Yandex Market、Detsky Mir 和 Lamoda 商品卡（匿名 HTTP 通道）
- 通过本地 Chrome（CDP 协议）读取 Ozon、Avito、Taobao、Megamarket、Lamoda 搜索、DNS、Citilink、AliExpress 等有反爬封锁的平台
- 提供 MPStats 付费插件接口（可选），拉取 Ozon/WB 商品的近 30 天销量曲线、库存拆分和卖家身份

## 技术实现
- **语言**: Python 3.12+（服务端运行时），通过 uv 启动进程
- **关键依赖**: fastmcp（实现 MCP 协议）、pydantic（数据模型）、uv 包管理器（依赖解析与进程启动）、Playwright（CDP 回落通道）
- **架构模式**: DSH 插件通过 `dsh/cordis.patch.yml` 注入 3 行配置——1 个 `@deepseek-ai/dsh-skill-filesystem`（挂载 14 个技能目录）+ 2 个 `@deepseek-ai/dsh-mcp-client`（互斥的 compare 与 full 客户端行），MCP 服务通过 `uv run --frozen --directory <path>` 启动 Python 进程
- **入口文件**: `dsh/package.json` 声明 bundle patch，`dsh/cordis.patch.yml` 包含完整注入逻辑，`dsh/skills/` 下 14 个 SKILL.md 文件提供技能描述

## 适用场景
普通用户在 DSH 里需要查俄罗斯或中国电商平台的价格、库存、评价，或者要对比多家平台谁更便宜、想查某个卖家是否正规——这一切都不需要手动打开网页。DSH 的 AI 助手可以根据用户的自然语言提问自动判断调哪个平台的工具。例如做代购、海淘或价格监控时，可以用比价工具一次拿到 10 个平台的报价；做电商分析时，可以挂 full 模式获取评论、卖家资质和销量数据。

## 前置依赖与兼容性
| 依赖 | 最低版本 | 说明 |
|---|---|---|
| DSH | 未声明 | `dsh/package.json` 未声明 engines 字段 |
| Python | 3.12+ | 父仓库 `pyproject.toml:6` 声明 requires-python |
| uv | 最新版 | 用于 `uv run --frozen --directory <克隆路径>` 启动 MCP 服务 |
| 平台 | 跨平台 | macOS / Windows / Linux 均可启动 Python 进程 |
| 原生模块 | 无 | 纯 Python 包，依赖通过 uv 解析；Playwright/curl_cffi 为 Python 依赖，不属于 Node.js 原生模块 |

## 安装方式
```bash
dsh plugin --profile web add github:Vladimir-Human/ru-marketplace-mcp/dsh
```

安装完后还需要：
1. 把仓库克隆到本机：`git clone https://github.com/Vladimir-Human/ru-marketplace-mcp.git && cd ru-marketplace-mcp && uv sync --frozen`
2. 设置环境变量 `RU_MARKETPLACE_MCP_DIR` 指向克隆目录
3. 重启 DSH profile

想启用完整 36 工具服务（而非默认的 2 个比价工具），再设置 `RU_MARKETPLACE_MCP_FULL=1` 即可。

## 配置项
| 配置 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| `RU_MARKETPLACE_MCP_DIR` | 路径环境变量 | 指向本地克隆的 ru-marketplace-mcp 目录，同时充当是否启用 MCP 服务的开关 | 未设置 |
| `RU_MARKETPLACE_MCP_FULL` | 开关环境变量 | 设为 1 切换为完整 36 工具模式；未设置走轻量比价模式（2 个工具） | 未设置 |
| `MPSTATS_MP_AUTH` | JWT 字符串 | MPStats 付费账号的 `mp_auth` cookie 值（原始 JWT，不带 `mp_auth=` 前缀）；未设置时 MPStats 工具返回 `auth_missing`，其他平台不受影响 | 未设置 |
| `CHROME_CDP_HOST` | 主机地址 | CDP 客户端Chrome 远程调试监听地址，Ozon/Avito 等需要 CDP 的平台用 | 127.0.0.1 |
| `CHROME_CDP_PORT` | 端口号 | Chrome 远程调试端口号 | 9222 |
| `CHROME_STEALTH` | 0 或 1 | 是否启用 Chrome 反检测模式（Windows 上把窗口藏到屏幕外） | 1 |
| `CHROME_HEADLESS` | 0 或 1 | 是否以无头模式启动 Chrome（反爬系统能识别无头模式，谨慎开启） | 0 |
| `CHROME_BINARY` | 路径 | Chrome/Chromium 可执行文件路径 | 自动按平台探测 |
| `CHROME_SCRAPING_PROFILE` | 路径 | 专门的 Chrome 配置文件目录（避免污染日常 profile） | 按平台默认 |
| `COMPARE_SOURCE_TIMEOUT` | 秒数 | 跨平台比价时单个平台的最长等待时间 | 45 |

## 常见问题

**Q: 安装后只看到 14 个技能，没看到比价工具，怎么办？**

A: 这是正常状态。2 个 MCP 客户端行默认关闭，只在设置了 `RU_MARKETPLACE_MCP_DIR` 之后才启用其中之一。设置后重启 DSH profile，技能列表里会再出现 `compare_prices`（轻量模式）或 `wb_*` / `ozon_*` 等 36 个工具（完整模式）。

**Q: compare 模式和 full 模式能同时开吗？**

A: 不能。两个客户端行互斥——`disabled` 条件里一头是 `!process.env.RU_MARKETPLACE_MCP_FULL`、另一头是 `!!process.env.RU_MARKETPLACE_MCP_FULL`，所以同一时刻只会激活一个。需要切换时改环境变量后重启 profile。

**Q: 报 "uv: command not found" 怎么办？**

A: 系统里没装 uv 包管理器。按 https://docs.astral.sh/uv/ 指引安装最新版即可。

**Q: 一定要克隆仓库吗？能不能用 pip 装？**

A: DSH 的 patch 通过 `uv run --frozen --directory <路径>` 启动服务，必须有本地克隆路径。仓库文档也发布过 GHCR 镜像（ghcr.io/vladimir-human/ru-marketplace-mcp），可以替换 patch 里的命令改用 Docker 镜像。

**Q: 比价结果出现 `price_rub: null`，是 bug 吗？**

A: 不是。null 表示"该平台没有这个商品的价格数据"——它可能已经下架、库存为空，或者卖家没填价格。不会是 0 元。想知道是哪个平台"缺席"，可以调用 `marketplace_sources` 工具，它会列出哪些平台加载成功、哪些因依赖缺失被跳过。

**Q: 部分平台返回 blocked 怎么办？**

A: Avito、Ozon、Megamarket 等平台会按 IP 屏蔽数据中心 IP。需要从俄罗斯住宅 IP 访问，并放慢请求节奏（Avi­to 在短时间内多次查询会被直接拉黑）。`marketplace-mcp doctor` 自检脚本会告诉你当前环境被哪些平台屏蔽。

**Q: 怎么卸载？**

A: 执行 `dsh plugin --profile web remove ru-marketplace-mcp-dsh`，然后重启 profile。本地克隆的 ru-marketplace-mcp 仓库可以保留也可以删除，不影响 DSH。

**Q: 用 full 模式时 AI 提示里的 token 占用很大？**

A: 是的。每个请求约 13.6k token，因为 DSH 会把 36 个工具的 schema 全部塞进会话上下文。如果只是偶尔比价，建议用 `RU_MARKETPLACE_MCP_FULL=1` 临时切换后再切回。

## 上手难度
入门 — 14 个技能本身就是"使用说明"，AI 助手能直接判断该调哪个工具；普通用户只需要会配置环境变量即可。日常使用够用，但要在 CDN 封装或容器中部署 CDP 通道需要进阶水平。

## 已知问题与限制
- Wildberries 搜索结果的价格比商品卡片实际价格略高（2026-07-28 测量：60 571 vs 60 275），如果两个候选商品的价差在 1% 以内，需要用 `wb_card` 再确认一次
- Wildberries 搜索翻到末尾会循环返回第一页（HTTP 200，无报错），分页时按 `nm_id` 去重
- complete 模式每次请求约 13.6k token（36 个工具 schema），建议按需启用；compare 模式仅 0.9k token
- Avito、Megamarket、Taobao、AliExpress、DNS、Citilink 平台需要外部 Chrome 通过 CDP 协调；Chrome 没启动时这些功能完全不可用
- 俄罗斯以外或数据中心的 IP 上，Ozon/Avito 等平台会直接拒绝请求，必须从俄罗斯住宅 IP 访问
- Detsky Mir 没有文本搜索 API，比价结果会跳过它，需要单独用 `detmir_category` 按分类浏览
- Yandex Market 的 Plus 会员价（比日常价低 25-30%）永远不会参与比价排序，避免"虚构便宜"
- Taobao 价格以人民币（CNY）报出，`price_rub` 字段为 `null`，不会进入卢布价排序——CNY 转 RUB 需要手动按当日汇率换算，插件不会硬编码汇率
- WB 评论和提问按 `imt_id`（聚合商品 ID）索引而非 `nmId`（单 SKU ID），必须先用 `wb_root_info(nmId)` 拿到 `imt_id` 再查评论

---

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/dsh)
Wiki generated by AI (model: `MiniMax-M3`)
