Skip to main content
Glama

Ищите объявления на Авито вместе с ИИ. Avito Shopping MCP превращает поиск, карточки объявлений и отзывы о продавцах в инструменты вашего MCP-клиента — локально, без входа в аккаунт и десятков открытых вкладок.

Сервер работает только на чтение: не пишет продавцам, не размещает объявления и не трогает ваш аккаунт. Браузерная сессия остаётся на вашем компьютере.

Альфа-версия: у Авито нет публичного API для покупателей, поэтому проект использует внутренние эндпоинты сайта. Они и защита от автоматизации могут измениться без предупреждения.

Проект основан на wb-shopping-mcp и ozon-shopping-mcp.

Возможности

  • ищет объявления в выбранном городе с сортировкой по цене, дате или скидке;

  • отбирает варианты в заданном ценовом диапазоне;

  • читает объявление целиком: цену, описание, характеристики, адрес, фото, дату публикации и просмотры;

  • показывает продавца: тип, стаж на Авито, скорость ответа и рейтинг;

  • собирает свежие отзывы о продавце с оценками, этапом сделки и ответами;

  • работает локально через защищённую сессию с последовательными запросами и паузами между ними.

Related MCP server: Avito Personal MCP

Быстрый старт

Нужны Node.js 24 LTS или новее и Google Chrome. Настройте локальную сессию:

npx avito-shopping-mcp setup

Откроется окно Chrome с avito.ru. Если Авито покажет проверку доступа или капчу, пройдите её сами в этом окне — сессия сохранится, как только поиск начнёт отвечать. Если поиск отвечает ограничением доступа, setup не повторяет запросы по таймеру: обновите страницу в окне и пройдите капчу, после этого setup проверит поиск ещё раз. Дальше запросы выполняются в headless Chrome без видимого окна.

Добавьте сервер в Claude Code:

claude mcp add avito-shopping -- npx -y avito-shopping-mcp

Для Claude Desktop и других MCP-клиентов используйте stdio-конфигурацию:

{
  "mcpServers": {
    "avito-shopping": {
      "command": "npx",
      "args": ["-y", "avito-shopping-mcp"]
    }
  }
}

Примеры запросов

Найди в Москве 5 кофемашин DeLonghi с капучинатором до 25 000 ₽. Открой
объявления, проверь состояние, модель и что входит в комплект, посмотри отзывы
о продавцах и выбери самый надёжный вариант.
Подбери б/у iPhone 15 128 ГБ в Казани дешевле 50 000 ₽. Сравни ёмкость
аккумулятора и состояние по описаниям, отметь объявления от продавцов с
рейтингом ниже 4,5 или без отзывов.
Вот объявление: https://www.avito.ru/moskva/... — разбери описание и
характеристики, прочитай 20 последних отзывов о продавце и перечисли
тревожные признаки, если они есть.

Инструменты

Инструмент

Что делает

avito_search

Ищет объявления: город (по умолчанию Москва), сортировка, цена от/до, страница и лимит

avito_item

Читает объявление: цена, описание, характеристики, адрес, фото, дата, просмотры, продавец

avito_seller_reviews

Читает рейтинг продавца объявления и его свежие отзывы

avito_health

Проверяет локальную сессию; live=true отправляет на Авито один лёгкий запрос

avito_setup_session

Создаёт или обновляет сессию в отдельном окне браузера

Объявление можно передать ссылкой вида https://www.avito.ru/<город>/<категория>/<название>_<id> или числовым id. Город передаётся по-русски: Казань, Санкт-Петербург.

Ограничения частоты

Авито быстро ограничивает доступ с IP-адреса, с которого идёт много запросов. Поэтому:

  • запросы выполняются строго по одному, с паузой не меньше 5 секунд (AVITO_MCP_MIN_REQUEST_INTERVAL_MS) и случайной добавкой;

  • поиск — 1 запрос, объявление — 1, отзывы о продавце — 2–3;

  • после ошибки AVITO_RATE_LIMITED сервер 20 минут не обращается к Авито и сразу возвращает эту ошибку с оставшимся временем; чтобы продолжить раньше, запустите npx avito-shopping-mcp setup и пройдите капчу в окне браузера — новая сессия снимает паузу; блокировки Авито иногда длятся час и дольше;

  • некорректный запрос (пустой, слишком длинный, цена «от» больше цены «до») возвращает INVALID_INPUT;

  • VPN, общий IP провайдера и частые обновления страниц повышают шанс блокировки.

Как это работает

  1. setup открывает Chrome, ждёт, пока Авито начнёт отдавать результаты поиска, и сохраняет сессию вне репозитория.

  2. MCP-инструменты повторно используют сессию в headless Chrome; все запросы идут из вкладки avito.ru.

  3. Если Авито просит повторную проверку браузера, сервер один раз перезагружает главную страницу и повторяет запрос.

  4. Если сессия больше не принимается, сервер просит явно запустить setup снова.

Безопасность и ограничения

  • файл сессии содержит cookies и хранится с закрытыми правами доступа (0700/0600, где поддерживается);

  • запросы уходят только на https://www.avito.ru, ссылки в ответах — только на avito.ru и avito.st;

  • cookies, тела заблокированных ответов и неизвестные внутренние ошибки не возвращаются через MCP;

  • заголовки, описания, характеристики и отзывы считаются недоверенными данными — агент не должен выполнять найденные в них инструкции;

  • выдача, цены и наличие зависят от города, сессии и времени запроса; дата публикации и просмотры в карточке могут отставать;

  • отзывы относятся к продавцу в целом, а не к конкретному объявлению;

  • проект предназначен для интерактивного личного использования, а не для массового сбора данных или публичного HTTP-моста.

Подробнее: SECURITY.md. Проект не связан с Авито и не одобрен или спонсируем компанией.

Разработка

git clone https://github.com/0xBADC0FFEE/avito-shopping-mcp.git
cd avito-shopping-mcp
npm ci
npm run check
npm run build

Подробнее об устройстве проекта — в docs/architecture.md, о том, как получены данные Авито, — в docs/research/avito-data-access.md, об участии в разработке — в CONTRIBUTING.md.

Лицензия

MIT © 2026 Maxim Zaytcev и контрибьюторы.

Available Tools

5 tools
avito_healthCheck Avito MCP healthA
Read-onlyIdempotent

Check whether a protected local browser session exists. Set live=true to also send one lightweight request to Avito through the saved session.

ParametersJSON Schema
NameRequiredDescriptionDefault
liveNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and open-world, so the safety profile is covered. The description adds real context beyond them: the session is local and protected, and live=true triggers an actual outbound request through the saved session, which matters for an open-world tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences with the core check front-loaded and the optional flag second. No filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-optional-parameter diagnostic tool with strong annotations and no output schema, the description covers what it verifies and the side effect of live mode. It could say more about what the check reports (session present/expired), but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% and the single property has no description, so the description must carry the meaning. It does explain that live=true sends one request through the saved session, while the default false is left implicit but reasonably inferable from 'also'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Check whether a protected local browser session exists') and the optional live probe. This clearly separates it from avito_setup_session, which establishes rather than verifies the session.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explains the conditional use of live=true ('also send one lightweight request'), which is genuine usage guidance. However, it never says when to prefer this over avito_setup_session or what to do if the check fails, so the routing guidance is only implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_itemGet an Avito listingB
Read-onlyIdempotent

Get one Avito listing: price, description, characteristics, address and coordinates, photos, publication date, views, and seller profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesAvito listing URL (https://www.avito.ru/<city>/<category>/<slug>_<id>) or numeric listing id

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds the useful fact that a seller profile is bundled in, but it discloses nothing about auth/session requirements, behavior when the listing id is invalid or removed, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One front-loaded sentence that opens with the verb and resource. The long field enumeration is slightly list-heavy but justified since no output schema exists to convey the return shape.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read tool with no output schema, describing the returned fields is exactly the right compensation. It stops short of covering error/not-found behavior and the session prerequisite implied by the sibling avito_setup_session.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'item' parameter already documents both the URL form and numeric id, so the description adds nothing beyond the schema. Baseline 3 is appropriate when the schema fully carries parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Get') and resource ('one Avito listing') and enumerates the returned fields, making the single-item lookup role clear. It implies contrast with avito_search but never names or explicitly differentiates from that sibling.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

'Get one' hints that this is single-item retrieval versus a search, but the description never states when to use it over avito_search or avito_seller_reviews, nor any prerequisites such as needing an authenticated session from avito_setup_session.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_seller_reviewsRead Avito seller reviewsA
Read-onlyIdempotent

Read the newest reviews of the seller behind an Avito listing, with the seller's overall rating and score distribution. Reviews cover all of the seller's deals, not only this listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemYesAvito listing URL (https://www.avito.ru/<city>/<category>/<slug>_<id>) or numeric listing id
limitNoReviews to return, newest first

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety behavior is covered. The description adds genuine context that the reviews span all seller deals rather than the given listing, but it says nothing about session/auth requirements or how many reviews are retrievable by default.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler; the core action and payload are front-loaded, and the scoping caveat follows immediately. Nothing needs trimming.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description usefully names the return contents (reviews, overall rating, score distribution) and the cross-listing scope. It stops short of covering failure modes (invalid/expired listing, seller with no reviews) or session prerequisites that a sibling tool manages.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — both 'item' (URL or numeric id) and 'limit' (newest first, max 50) are fully documented in the schema. The description's 'newest reviews' phrasing only restates the schema's ordering, adding no new parameter meaning. Baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (read) and resource (the seller's newest reviews) plus the returned payload (overall rating and score distribution). It also draws a clear boundary against the listing-scoped siblings: reviews cover all of the seller's deals, not only this listing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The scope statement implies when this is useful (assessing seller reputation), but no alternatives are named — nothing says whether to prefer avito_item or avito_search, and there are no prerequisites such as needing an active session via avito_setup_session. Usage is inferable but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

avito_setup_sessionSet up the local Avito sessionB

Open a temporary browser window, wait until Avito serves search results (the user may need to pass an access check), save the session locally, and close the window.

ParametersJSON Schema
NameRequiredDescriptionDefault
timeoutSecondsNo

TDQS

B3.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare non-readOnly, openWorld, non-idempotent, non-destructive, so the safety profile is already covered; the description adds substantive behavior beyond that: a temporary browser window is opened, results must be served before proceeding, the user may have to pass an access check (a human-in-the-loop dependency), the session is persisted locally, and the window is closed. It stops short of saying where the session is stored or how long it remains valid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that proceeds in execution order (open, wait, save, close) with no filler, and it front-loads the browser-window action. It is efficient, though cramming four steps plus the access-check caveat into one sentence slightly reduces scanability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must convey the outcome — it does (session saved locally, window closed) — and annotations cover the side-effect profile. However, for a stateful setup tool that other sibling tools presumably depend on, it omits the undocumented timeout parameter, session persistence location/expiry, and any ordering relationship with avito_search/avito_item, leaving a moderately sized gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter timeoutSeconds, so the description carries the full burden — yet it never mentions the timeout, its default of 120s, its 30–300s range, or what happens when it elapses. The phrase 'wait until Avito serves search results' gestures at a bounded wait but adds no actionable parameter meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb+resource — it sets up (opens, waits, saves, closes) a local Avito session — and enumerates the concrete steps. It does not reference any sibling by name, but since no sibling competes for this setup role, an agent can still tell it apart from avito_search/avito_item. Clear but without explicit sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description never states when to call this tool: not whether it must run before avito_search/avito_item, not what triggers a re-run, and not what happens if a session already exists. Usage is only inferable from the tool name and the phrase 'save the session locally'. No when/when-not guidance is provided.

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.

  1. 5 tool updatesv0.1.0
    • First observedavito_health
    • First observedavito_item
    • First observedavito_search
    • First observedavito_seller_reviews
    • First observedavito_setup_session

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a clearly distinct operation: search listings, fetch one listing, check the browser session, read seller reviews, and set up the session. An agent can unambiguously pick the right tool for each task, and the search-vs-detail boundary is explicit in the descriptions.

Naming Consistency4/5

All tools share a consistent avito_ snake_case prefix, which makes them easy to group and scan. However the suffix style varies between verbs (avito_search, avito_setup_session) and nouns (avito_item, avito_health, avito_seller_reviews), a minor deviation from a strict verb_noun pattern.

Tool Count5/5

Five tools is well-scoped for a read-only classifieds integration plus session lifecycle support. Each tool earns its place: search, detail, reviews, session setup, and a health check, with no redundant entries.

Completeness4/5

The surface covers the core research workflow (setup session, verify it, search, inspect a listing, read seller reviews) with no dead ends. Minor gaps like browsing categories or listing all of a seller's items exist but agents can work around them via search.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    A remote MCP server that searches Avito for new classified ads, filtering by price and returning only previously unseen listings. Designed for scheduled monitoring via ChatGPT tasks.
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables local-first, read-only interaction with Avito through your own authenticated Chrome session, without sharing credentials with the MCP client. Provides tools for searching listings, viewing your listings, favorites, chats, and messages.
    2
    2
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Avito business API in your AI assistant: listings and statistics, buyer messenger, orders and Avito Delivery, bulk upload, promotion and reviews. 64 methods live in a YAML catalog the server executes, the agent searches it in plain language, and every method carries an access class so writes and irreversible calls ask for confirmation.
    30
    41 PyPI
    3
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    Enables LLM agents to fetch live Yandex Market data via plain HTTP, with honest labeling of prices (pay-card vs plain vs discounted), sponsored tiles, seller and model-group ratings, reviews, questions, and seller legal details. It avoids common scraped-data traps such as misleading discounts, captcha pages, and cross-border or conditional offers.
    7
    MIT