mcp-brazil-marketplaces
MCP server to search and retrieve public ads from OLX Brasil and Mercado Livre Brasil with automatic anti-bot bypass.
README
mcp-brazil-marketplaces
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=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. -
Mercado Livre — Googlebot UA: o scraper do ML usa
User-Agent: Googlebot/2.1para contornar a página de challenge anti-bot. ML pode banir IPs que detectem o spoof; use moderadamente. Para desabilitar o spoof, definaMCP_BR_ML_USER_AGENTcom 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
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。
mcp-server-qdrant
这个仓库展示了如何为向量搜索引擎 Qdrant 创建一个 MCP (Managed Control Plane) 服务器的示例。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。