mcp-brazil-marketplaces

mcp-brazil-marketplaces

MCP server to search and retrieve public ads from OLX Brasil and Mercado Livre Brasil with automatic anti-bot bypass.

Category
访问服务器

README

mcp-brazil-marketplaces

PyPI version Python versions PyPI downloads CI License: MIT Ruff

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).

Instalação rápida (zero clone, zero venv)

Use uv — instale uma vez:

curl -LsSf https://astral.sh/uv/install.sh | sh

Depois rode direto:

uvx mcp-brazil-marketplaces

Ou via pip tradicional:

pip install mcp-brazil-marketplaces
mcp-brazil-marketplaces

Configuração no Claude Desktop

Cole o bloco abaixo em claude_desktop_config.json:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.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.

Configuração no Claude Code / Cursor / Continue

Claude Code (CLI):

claude mcp add olx -- uvx mcp-brazil-marketplaces

Cursor (~/.cursor/mcp.json) e Continue (~/.continue/config.json) usam o mesmo bloco JSON do Claude Desktop.

Ferramentas

olx_buscar_anuncios

Busca 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_anuncio

Retorna 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_anuncios

Busca 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_anuncio

Retorna 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)

Diferenças entre as tools

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).

Exemplos de uso

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/...

Desenvolvimento

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_marketplaces

Schema unificado de anúncio

Todas 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).

Campo fonte na resposta

Toda 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).

Variáveis de ambiente

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

Privacidade e considerações

  • Fallback via r.jina.ai: quando a OLX bloqueia requisições diretas, o servidor reenvia a URL pelo serviço público r.jina.ai para obter o conteúdo em markdown. Isso significa que a Jina AI tem acesso ao log das URLs consultadas durante o fallback. Para desabilitar:

    export MCP_BR_DISABLE_JINA=1
    

    Com 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.

  • Mercado Livre — Googlebot UA: o scraper do ML usa 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).

  • Scraping de dados públicos: este servidor consulta dados públicos da OLX e do Mercado Livre. Use com responsabilidade e respeite os termos de uso de cada site.

Roadmap

Próximos passos rastreados em ROADMAP.md + milestones do GitHub. Há 31 itens organizados em 5 milestones (v0.4 → v1.0 + future).

Release

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 --tags

O GitHub Actions builda wheel/sdist, valida que a tag bate com pyproject.toml, e publica via OIDC no PyPI.

Licença

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选
mcp-server-qdrant

mcp-server-qdrant

这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。

官方
精选
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选