Skills

dsh

Vladimir-Human/ru-marketplace-mcp/dsh · ★ 189

Vladimir-Human

Skills and optional MCP rows for ten Russian marketplaces: price comparison across Wildberries, Detsky Mir and Yandex Market, plus per-source search, product cards and reviews. The 13 skills load on install; both MCP rows stay disabled until RU_MARKETPLACE_MCP_DIR points at a local clone, which needs Python 3.12+ and uv.

License
MIT
Added
2026-08-21
Maintenance
active
Install kind
github

No manifest check is available; listing does not imply compatibility or security review.

安装

dsh plugin --profile web add github:Vladimir-Human/ru-marketplace-mcp#path:/dsh

GitHub 源码安装:首次需按提示配置 allowBuilds 构建授权后重试

For install and environment setup, plus plugin development tutorials, see DSH community docs ↗

README

Source README · body: en · Read Chinese README

Table of contents
  1. Why off by default
  2. Requirements
  3. Install (three steps)
  4. Middle profile and native vision
  5. Enabling the full server
  6. Uninstall
  7. Docker alternative (published and CI-verified)
  8. Source

Read-only MCP servers for Russian marketplaces: prices, stock, ratings, reviews and cross-marketplace price comparison. This bundle ships 15 Agent Skills plus three mutually exclusive MCP server rows that are off by default.

Why off by default

An MCP row that is always mounted is paid on every request, because the harness registers the schema of every tool in the session context. Estimated from each server's tools/list by scripts/gen_tools_doc.py (the estimate scripts/mcp_wire.py uses; CI fails when this table is stale, details in docs/TOOLS.md):

Mode Cost while mounted Model-facing tools
Skills only (default) 15 skill catalog entries; no MCP schemas 0
compare-mcp (recommended) ~2.2k tokens per request 4
decision-mcp (shortlist inspection) ~2.4k tokens per request 5
marketplace-mcp (full) ~17.5k tokens per request 40

The 11 *_selfcheck tools that previously inflated the full server to 45 tools are now CLI-only (marketplace-mcp doctor); only model-facing tools are published over MCP.

Requirements

  • DeepSeek Harness (dsh)
  • Python ≥ 3.12
  • uv
  • A local clone of this repository (the MCP rows launch it with uv run --directory <clone>)

Install (three steps)

  1. Add the bundle to a profile (web is the profile dsh ships with a UI; use whichever profile you actually run — a bare profile that dsh auto-creates on first use carries no app and cannot be launched):

    dsh plugin --profile web add github:Vladimir-Human/ru-marketplace-mcp#path:/dsh
    

    The 15 skills appear immediately. No MCP server starts yet.

  2. Clone the server and install its locked environment once:

    git clone https://github.com/Vladimir-Human/ru-marketplace-mcp.git
    cd ru-marketplace-mcp
    uv sync --frozen
    
  3. Set the gate/path variable so the profile can find the clone and restart the profile. On Windows PowerShell:

    $env:RU_MARKETPLACE_MCP_DIR = "C:\path\to\ru-marketplace-mcp"
    

    On POSIX shells:

    export RU_MARKETPLACE_MCP_DIR=/path/to/ru-marketplace-mcp
    

    With only RU_MARKETPLACE_MCP_DIR set, the recommended compare mode activates: compare_prices, compare_sources, compare_verify_offer, and compare_browser_snapshot (under the client's rumarket namespace).

Middle profile and native vision

Set RU_MARKETPLACE_MCP_DECISION=1 to add decision_inspect without mounting every source tool. If both decision and full flags are set, full wins. Only one MCP row is active: full, otherwise decision, otherwise compare.

With CHROME_CHALLENGE_HANDOFF_S=120, supported DOM challenges can retain their owned browser tab. A client/model that accepts MCP images can call compare_browser_snapshot(handoff_id) using the handle in the error or comparison outcome. It receives a bounded JPEG viewport and capture metadata directly; no separate OCR model or service is invoked. The handle only works in the same MCP session and does not extend expiry. Text-only clients should skip this tool.

Enabling the full server

Set one more variable before starting dsh:

$env:RU_MARKETPLACE_MCP_FULL = "1"   # PowerShell
export RU_MARKETPLACE_MCP_FULL=1     # POSIX shell

The enabled row then changes from compare-mcp (4 tools) to marketplace-mcp (40 tools). All three rows share serverName: rumarket, and their disabled conditions are mutually exclusive, so exactly one server instance runs at a time.

Uninstall

Remove the bundle from the profile and restart it:

dsh plugin --profile web remove ru-marketplace-mcp-dsh

No MCP process survives profile restart without RU_MARKETPLACE_MCP_DIR.

Docker alternative (published and CI-verified)

Since v1.8.0 every release tag builds a stdio image and proves it with a real MCP session over docker run --rm -i before publishing to the MCP Registry: initialize, tools/list and a marketplace_sources call. Use the published GHCR image instead of a local clone:

- id: ru-marketplace-docker
  name: '@deepseek-ai/dsh-mcp-client'
  disabled: false
  config:
    serverName: rumarket
    transport: stdio
    command: docker
    args:
      - run
      - --rm
      - -i
      - ghcr.io/vladimir-human/ru-marketplace-mcp:2.7.0
    failOnStartupError: false

The image defaults to the unified server. Its tool set matches that release tag; unreleased tools in this source checkout are not present in older images.

Source

Main repository: https://github.com/Vladimir-Human/ru-marketplace-mcp