Grades are a hygiene check, not a security guarantee.

MCP, MCP server

Ru Marketplace Mcp

MCP-серверы для российских и китайских маркетплейсов. Цены, наличие, рейтинги, отзывы и реквизиты продавцов с Wildberries, Ozon, Яндекс Маркета, Детского мира, Авито, AliExpress, Taobao, Мегамаркета, Lamoda, DNS и Ситилинка.

Compatibility: Not stated.

Grade C

One Medium finding. Read the findings before installing.

Graded by PlugVetRubric v2

Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.

Rescanned at commit cc89f2d87f59, unchanged since the check below.

NETWORK_HOST_FROM_INPUT

Why this grade

  • NETWORK_HOST_FROM_INPUT Medium

    A file takes a URL or endpoint as input and has no fixed host list.

    packages/avito-connector/src/avito_connector/server.py, line 226 const res = await fetch(args.url, {

Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.

If you think this grade is wrong, email [email protected] with the entry link and your evidence. We aim to acknowledge within two working days and decide within seven. If we confirm an error, we aim to correct it within 24 hours of confirming it. These are aims, not guarantees.

Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.

What was checked

Plain notes from the hygiene checks.

  • Permissions

    Concern

    can delete files.

    PERMISSION_DELETE_FILES

    packages/mcp-core/src/mcp_core/domtest.py, line 116

    probe = subprocess.run(

    packages/mcp-core/src/mcp_core/domtest.py, line 179

    result = subprocess.run(

    packages/mcp-core/src/mcp_core/process.py, line 174

    def terminate_process_tree(proc: subprocess.Popen) -> None:

    Show more

    packages/mcp-core/src/mcp_core/process.py, line 183

    subprocess.run(

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 284

    subprocess.Popen(args, creationflags=0x00000008 | 0x00000200, close_fds=True)

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 286

    subprocess.Popen(

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 341

    proc = subprocess.run(

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 372

    proc = subprocess.run(

    packages/ozon-connector/src/ozon_connector/server.py, line 252

    os.remove(out_path)

  • Install and update

    Pass

    No install-time script found, and dependencies are pinned or absent.

  • Network

    Serious

    accepts a host from input, with no fixed list in this file.

    NETWORK_HOST_FROM_INPUT

    packages/avito-connector/src/avito_connector/server.py, line 226

    const res = await fetch(args.url, {

    packages/cian-connector/src/cian_connector/server.py, line 173

    const res = await fetch(args.url, {

    packages/cian-connector/src/cian_connector/server.py, line 1013

    status, body, tier = await fetch()

    Show more

    packages/detmir-connector/src/detmir_connector/server.py, line 152

    async def fetch() -> Any:

    packages/lamoda-connector/src/lamoda_connector/server.py, line 284

    const res = await fetch(args.url, {

    packages/mcp-core/src/mcp_core/transport/browser_handoff.py, line 250

    return await lease.requests.get()

    packages/mcp-core/src/mcp_core/transport/browser_handoff.py, line 260

    current = await lease.requests.get()

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 224

    with socket.create_connection((CDP_HOST, CDP_PORT), timeout=0.5):

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 594

    with urllib.request.urlopen(f"{CDP_URL}{path}", timeout=timeout_s) as resp:

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 613

    with urllib.request.urlopen(f"{CDP_URL}/json/version", timeout=3) as resp:

    packages/mcp-core/src/mcp_core/transport/chrome_cdp.py, line 934

    with urllib.request.urlopen(f"{CDP_URL}/json", timeout=3) as resp:

    packages/megamarket-connector/src/megamarket_connector/server.py, line 177

    const res = await fetch(args.url, {

    packages/ozon-connector/src/ozon_connector/server.py, line 10

    SECURITY: Tier-2 fetch() runs INSIDE the operator's authenticated ozon.ru session.

    packages/ozon-connector/src/ozon_connector/server.py, line 103

    # raw upstream nextButton string) before it reaches fetch() in the operator's session.

    packages/mcp-core/src/mcp_core/transport/browser_handoff.py, line 327

    pending = lease.requests.get_nowait()

    packages/mcp-core/src/mcp_core/transport/browser_handoff.py, line 360

    pending = lease.requests.get_nowait()

    packages/mcp-core/src/mcp_core/transport/browser_handoff.py, line 445

    found.requests.put_nowait(_Request(chrome_cdp.capture_owned_viewport, lambda _: None, found.hosts, result, True))

    packages/mcp-core/src/mcp_core/transport/browser_handoff.py, line 512

    lease.requests.put_nowait(_Request(read, challenge, hosts, result))

  • Secrets

    Concern

    reads a credential or environment file.

    SECRETS_PATH_DOTENV

    packages/aliexpress-connector/src/aliexpress_connector/settings.py, line 16

    env_file=".env",

    packages/avito-connector/src/avito_connector/settings.py, line 29

    env_file=".env",

    packages/cian-connector/src/cian_connector/settings.py, line 31

    env_file=".env",

    Show more

    packages/citilink-connector/src/citilink_connector/settings.py, line 16

    env_file=".env",

    packages/detmir-connector/src/detmir_connector/settings.py, line 19

    env_file=".env",

    packages/dns-connector/src/dns_connector/settings.py, line 16

    env_file=".env",

    packages/lamoda-connector/src/lamoda_connector/settings.py, line 16

    env_file=".env",

    packages/megamarket-connector/src/megamarket_connector/settings.py, line 16

    env_file=".env",

  • Agent instructions

    Pass

    No instruction to ignore earlier instructions or to hide a step.

  • Obfuscation

    Note

    a file was over the read cap and was not fully read. the file cap was reached before every file was read.

    OBFUSCATION_FILE_OVER_READ_CAP OBFUSCATION_FILE_CAP_REACHED

    uv.lock, line 1

    version = 1

    packages/yandex-connector/src/yandex_connector/settings.py, line 1

    """Yandex Market connector settings (env prefix ``YANDEX_``).

  • Licence

    Pass

    A licence file is present (LICENSE).

  • Maintainer activity

    Pass

    The latest commit is within the last 365 days.

Note

Hygiene check of commit cc89f2d87f59. can delete files. accepts a host from input, with no fixed list in this file. reads a credential or environment file. a file was over the read cap and was not fully read. the file cap was reached before every file was read.

Date and source

Date checked:

View source

github.com

Commit graded: cc89f2d87f59b8e2f2858db30a63208d439a7c3f

This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.

Read how this letter is chosen