Olx Mcp — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Olx Mcp (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
MCP server para buscar anúncios públicos da OLX Brasil e do Mercado Livre Brasil — com bypass automático de bloqueios anti-bot (rotação de User-Agent, warm-up de cookies, retry com backoff, fallback via r.jina.ai, Googlebot UA para o Mercado Livre).
Use uv — instale uma vez:
curl -LsSf https://astral.sh/uv/install.sh | shDepois rode direto:
uvx mcp-brazil-marketplacesOu via pip tradicional:
pip install mcp-brazil-marketplaces
mcp-brazil-marketplacesCole o bloco abaixo em claude_desktop_config.json:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.json{
"mcpServers": {
"marketplaces-br": {
"command": "uvx",
"args": ["mcp-brazil-marketplaces"]
}
}
}Se preferir pip em vez de uvx:
{
"mcpServers": {
"marketplaces-br": {
"command": "mcp-brazil-marketplaces"
}
}
}Reinicie o Claude Desktop. As ferramentas olx_buscar_anuncios, olx_detalhe_anuncio e ml_buscar_anuncios ficam disponíveis.
Claude Code (CLI):
claude mcp add olx -- uvx mcp-brazil-marketplacesCursor (~/.cursor/mcp.json) e Continue (~/.continue/config.json) usam o mesmo bloco JSON do Claude Desktop.
olx_buscar_anunciosBusca anúncios na OLX com filtros.
| Parâmetro | Tipo | Obrigatório | Descrição | ||
|---|---|---|---|---|---|
query | string | Sim | Termo de busca | ||
estado | string | Não | Sigla do estado (sp, rj, go…) | ||
categoria | string | Não | Slug de categoria (celulares, imoveis…) | ||
preco_min | int | Não | Preço mínimo em reais | ||
preco_max | int | Não | Preço máximo em reais | ||
ordenar | string | Não | relevance \ | price \ | date |
pagina | int | Não | Página (1–50) |
olx_detalhe_anuncioRetorna detalhes completos de um anúncio da OLX pela URL.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
url | string | Sim | URL completa do anúncio na OLX |
ml_buscar_anunciosBusca anúncios no Mercado Livre Brasil.
| Parâmetro | Tipo | Obrigatório | Descrição | |
|---|---|---|---|---|
query | string | Sim | Termo de busca | |
preco_min | int | Não | Preço mínimo em reais | |
preco_max | int | Não | Preço máximo em reais | |
condicao | string | Não | novo \ | usado |
estado | string | Não | Sigla UF para filtragem pós-scraping (ver avisos) | |
pagina | int | Não | Página (1–20, 50 itens cada) |
ml_detalhe_anuncioRetorna detalhes de um anúncio do Mercado Livre.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
url | string | Sim | URL completa do anúncio (*.mercadolivre.com.br ou *.mercadolibre.com) |
| Aspecto | OLX | Mercado Livre | ||
|---|---|---|---|---|
| Páginas máx. | 50 | 20 | ||
| Ordenação | relevance \ | price \ | date | Não suportada (ML não aceita via URL pública) |
Filtro condicao | N/A | Heurística pós-scraping no título | ||
Filtro estado | Nativo na URL | Heurística pós-scraping (frequentemente vazio) | ||
| Detalhe de anúncio | olx_detalhe_anuncio | ml_detalhe_anuncio |
Os limites de página diferem porque cada site retorna ~50 itens por página por padrão e a profundidade útil é menor no ML (resultados ficam ruins após a página 20).
Busque iPhones usados em São Paulo por até R$ 2000, ordenados por menor preço.
Procure Google Pixel 10 Pro XL na OLX e no Mercado Livre. Monte uma tabela comparativa.
Me dê os detalhes do anúncio: https://sp.olx.com.br/...
git clone https://github.com/rodrigopg/mcp-brazil-marketplaces
cd mcp-brazil-marketplaces
python -m venv .venv
.venv/bin/pip install -e .Rodar o servidor localmente:
.venv/bin/mcp-brazil-marketplaces
# ou
.venv/bin/python -m mcp_brazil_marketplacesTodas as tools devolvem anúncios com os mesmos campos básicos. Campos específicos por fonte são adicionais.
Comum a OLX e ML:
| Campo | Tipo | Descrição | ||
|---|---|---|---|---|
fonte | string | olx \ | olx_jina \ | ml |
id | int \ | string | ID do anúncio | |
titulo | string | Título | ||
preco | string | Preço formatado (R$ X) | ||
localizacao | string \ | null | Cidade/bairro/UF (pode ser null no ML) | |
data | string \ | null | Data legível (null no ML — não exposta nos cards) | |
url | string | URL canônica do anúncio | ||
imagem | string \ | null | URL da imagem principal |
Específicos da OLX: categoria, bairro, profissional, entrega_olx, propriedades. Específicos do ML: frete, vendedor, atributos.
Envelope da resposta: fonte, total, pagina, por_pagina, url_busca, anuncios, avisos (opcional).
fonte na respostaToda resposta inclui um campo fonte no envelope (e em cada anúncio) indicando a origem dos dados:
| Valor | Significado |
|---|---|
olx | Scraping direto da OLX via httpx (caminho preferido) |
olx_jina | Fallback: a OLX bloqueou e usamos r.jina.ai como proxy reader |
ml | Scraping direto do Mercado Livre via UA Googlebot |
Verifique sempre fonte antes de tomar decisão crítica — payloads olx_jina vêm de markdown reduzido, com menos campos (sem propriedades, sem entrega_olx, sem timestamps precisos). Para desabilitar o fallback Jina, defina MCP_BR_DISABLE_JINA=1 (ver abaixo).
Todos os parâmetros operacionais podem ser ajustados via env (com clamp seguro):
| Variável | Default | Faixa | Descrição |
|---|---|---|---|
MCP_BR_REQUEST_TIMEOUT | 25.0 | 1.0–300.0 | Timeout HTTP em segundos |
MCP_BR_MAX_RETRIES | 4 | 0–20 | Tentativas no fetcher OLX (retry + troca de perfil) |
MCP_BR_WARMUP_PROBABILITY | 0.7 | 0.0–1.0 | Chance de warm-up da homepage antes do search |
MCP_BR_DISABLE_JINA | 0 | 0/1 | Desabilita fallback via r.jina.ai |
MCP_BR_LOG_LEVEL | WARNING | DEBUG/INFO/WARNING/ERROR | Nível do logger mcp_brazil_marketplaces |
MCP_BR_ML_USER_AGENT | (Googlebot) | qualquer string | Sobrescreve UA usado no Mercado Livre. Use se o spoof de Googlebot for inaceitável — ML geralmente devolverá a página anti-bot e a tool retornará lista vazia. |
MCP_BR_RATE_LIMIT_CONCURRENCY | 2 | 1–16 | Máx. de requests HTTP simultâneos |
MCP_BR_RATE_LIMIT_MIN_GAP | 0.5 | 0.0–30.0 | Gap mínimo em segundos entre requests ao mesmo host. 0 desabilita |
export MCP_BR_DISABLE_JINA=1Com a flag ativa, falhas de bypass retornam erro em vez de consultar terceiros. Toda resposta inclui o campo fonte (olx, olx_jina, ml) para que você saiba a origem dos dados.
User-Agent: Googlebot/2.1 para contornar a página de challenge anti-bot. ML pode banir IPs que detectem o spoof; use moderadamente. Para desabilitar o spoof, defina MCP_BR_ML_USER_AGENT com um UA real (esperado: ML retornará challenge e a tool dará lista vazia).Próximos passos rastreados em ROADMAP.md + milestones do GitHub. Há 31 itens organizados em 5 milestones (v0.4 → v1.0 + future).
Releases para o PyPI são automatizados via Trusted Publishing (OIDC) — sem tokens armazenados. Workflow .github/workflows/release.yml dispara em tags v*.
Para cortar uma release:
# bump em pyproject.toml + olx_mcp/__init__.py
git commit -am "release v0.4.0"
git tag v0.4.0
git push && git push --tagsO GitHub Actions builda wheel/sdist, valida que a tag bate com pyproject.toml, e publica via OIDC no PyPI.
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.