Marktplaats & 2dehands
Pesquise anúncios de segunda mão no Marktplaats.nl e 2dehands.be: filtros de preço/condição/distância, verificação de vendedores e monitoramento de novos anúncios.
Documentação
English | Nederlands | Français
marktplaats-mcp: o servidor MCP da Marktplaats & 2dehands
marktplaats-mcp é um servidor MCP para Marktplaats.nl (Países Baixos) e 2dehands.be (Bélgica), os classificados de segunda mão holandeses e belgas (tweedehands, petites annonces d'occasion). Pesquise anúncios, filtre por atributos de categoria, avalie vendedores, compare preços e acompanhe novos anúncios a partir do Claude, ChatGPT, Cursor, Codex, Gemini ou qualquer outro cliente MCP. Com seu próprio login, também lê e envia mensagens, faz lances e gerencia seus favoritos e anúncios. Sem chave de API.
🚀 Comece agora
Sem instalação: cole uma URL. O servidor hospedado, somente leitura, roda em https://marktplaats-mcp.jaspnerd.dev/mcp. Adicione-o como conector personalizado no claude.ai (Configurações → Conectores, funciona no plano gratuito e no celular), ChatGPT, Mistral Le Chat, Perplexity ou no aplicativo Gemini.
Claude Code: um comando.
claude mcp add --scope user marktplaats -- uvx marktplaats-mcp
Qualquer outro cliente. Instale o uv (brew install uv, ou winget install --id=astral-sh.uv -e no Windows) e adicione a configuração MCP padrão:
{ "mcpServers": { "marktplaats": { "command": "uvx", "args": ["marktplaats-mcp"] } } }
Instruções passo a passo para 40 clientes (Cursor, VS Code, Codex, Gemini CLI, Cline, Windsurf, JetBrains, Zed, opencode, Goose, ...), com o caminho de configuração por sistema operacional e um link para o guia oficial de cada cliente: docs/clients.md.
Depois, pergunte: "Encontre uma bicicleta de corrida por menos de €500 a 25 km de 1011 AB, quadro de 57-61 cm, e me diga se os vendedores parecem legítimos."
👤 Use sua própria conta (mensagens, favoritos, lances, seus anúncios)
A Marktplaats não tem API pública e seu login usa autenticação de dois fatores por SMS, então este servidor nunca pede sua senha. Ele copia a sessão de um navegador no qual você já está logado:
uvx --from 'marktplaats-mcp[login]' marktplaats-mcp login
A sessão é armazenada em ~/.config/marktplaats-mcp/session.json, legível apenas pelo seu usuário. Reinicie seu cliente MCP e as ferramentas de conta aparecerão.
marktplaats-mcp login --site 2dehands # also import your 2dehands.be session
marktplaats-mcp login --read-only # never send, bid or change favorites
marktplaats-mcp login --window # open a browser window and log in there instead
marktplaats-mcp login --paste # paste a Cookie header from DevTools instead
marktplaats-mcp status # is the stored session still valid?
marktplaats-mcp logout # delete it
Se o login disser que não foi possível ler os cookies do seu navegador
- macOS: o sistema bloqueia ferramentas de linha de comando de ler dados do navegador e não pergunta. Uma vez, abra Ajustes do Sistema → Privacidade e Segurança → Acesso Total ao Disco, adicione o aplicativo de terminal que você usa (Terminal, iTerm, Warp ou VS Code), depois saia e reabra. Em seguida, execute o comando de login novamente.
- Windows: Chrome e Edge bloqueiam o arquivo de cookies enquanto estão em execução; a ferramenta o copia primeiro, então isso normalmente funciona. Se não funcionar, feche o navegador e execute o login novamente, ou use
--paste. - Linux: navegadores Chromium armazenam a chave de cookies no seu chaveiro (GNOME Keyring ou KWallet), que deve estar desbloqueado; o Firefox não precisa de nada. Navegadores Snap ou Flatpak armazenam o perfil em outro lugar, então use
--pastelá. - Em todos os lugares:
marktplaats-mcp login --pastenunca precisa de permissões. No seu navegador em marktplaats.nl, pressione F12 → Rede, clique em qualquer requisição, copie o cabeçalho de requisiçãoCookiee cole-o.
Ou defina MARKTPLAATS_COOKIE / TWEEDEHANDS_COOKIE (o cabeçalho de requisição Cookie) na configuração do seu cliente. As sessões duram semanas; quando uma expira, as ferramentas avisam para você fazer login novamente.
Enviar, contatar um vendedor e dar lances retornam uma prévia primeiro e só agem quando chamados novamente com confirm=true. Lances são vinculativos na Marktplaats; a ferramenta recusa lances abaixo do mínimo. A publicação automatizada de anúncios é proibida pelos termos da Marktplaats e deliberadamente não implementada. Veja Modelo de segurança.
🧰 Ferramentas
| Ferramenta | O que faz | Conta | Grava |
|---|---|---|---|
search_listings | Pesquisa com consulta, categoria, subcategoria, atributos específicos da categoria, faixa de preço, condição, entrega (retirada/entrega), distância de um CEP, recência, palavras-chave negativas, ordenação e paginação | ||
get_listing_details | Anúncio completo: descrição, atributos, status (ativo/encerrado), horário exato da publicação, contagens de visualizações e favoritos, estado do lance e lance mínimo, envio, imagens, taxa de resposta do vendedor e idade da conta. Aceita URLs coladas | ||
get_seller_profile | Sinais de confiança: conta bancária verificada, identidade, telefone, verificação comercial, método de pagamento, pontuação e quantidade de avaliações, lance mínimo que o vendedor aceita | ||
list_seller_listings | Tudo o que um vendedor tem à venda: detecte revendedores se passando por vendedores particulares e anúncios duplicados | ||
list_categories | A árvore de categorias (nomes e ids) usada para filtragem, também disponível como recurso MCP | ||
list_category_filters | Descubra os filtros de uma categoria (marca, altura do quadro, quilometragem, combustível, RAM, ...) com seus valores válidos e contagens | ||
check_new_listings | Monitoramento do mais recente primeiro com cursor sem estado: retorna apenas anúncios publicados após since, nunca pula nenhum | ||
analyze_prices | Mediana, quartis, mínimo, máximo e média dos preços pedidos para uma pesquisa, além dos resultados mais baratos | ||
get_my_account | Verificação de sessão, mensagens não lidas e notificações | ✅ | |
list_conversations, get_conversation | Sua caixa de entrada e conversas completas | ✅ | |
list_my_listings, list_favorites, list_my_bids, list_saved_searches | Seus anúncios (visualizações, favoritos, lance mais alto, validade), favoritos, lances e pesquisas salvas | ✅ | |
send_message, contact_seller | Responder em uma conversa, ou fazer uma pergunta ao vendedor ou uma oferta não vinculante. Prévia primeiro, confirm=true para enviar | ✅ | ✅ |
place_bid | Dar lance em um anúncio. Prévia primeiro, recusa lances abaixo do mínimo, marcado como destrutivo | ✅ | ✅ |
set_favorite, extend_my_listing | Salvar/remover um anúncio; renovar um dos seus anúncios que expiram | ✅ | ✅ |
Ferramentas somente leitura carregam as anotações MCP correspondentes, então os clientes pulam prompts de confirmação para elas e pedem confirmação apenas para ferramentas de gravação. Cada ferramenta retorna saída estruturada com um esquema real. Dois prompts, bargain_hunt e vet_listing, codificam os fluxos de trabalho comuns.
O que você pode dizer e o que acontece
| Você diz | O agente chama |
|---|---|
| "€450 é um preço justo por um iPhone 15 128 GB em bom estado?" | analyze_prices → mediana, quartis e os três anúncios mais baratos |
| "Encontre um Golf usado, 2018-2022, abaixo de 100.000 km, a gasolina, de vendedor particular" | list_category_filters("Auto's") → search_listings(attributes={"Bouwjaar": "2018-2022", "Kilometerstand": "-100000", "Brandstof": "Benzine", "Adverteerder": "Particulier"}) |
| "Este vendedor é confiável? O que mais ele vende?" | get_listing_details → get_seller_profile → list_seller_listings |
| "Me avise quando novos anúncios de bakfiets aparecerem perto de Antuérpia" | check_new_listings(site="2dehands", postcode="2000", distance_km=25) com o cursor retornado a cada consulta |
| "Pergunte ao vendedor se ainda está disponível e ofereça €120" | contact_seller(..., offer_euros=120) prévia → você confirma → enviado |
| "Responda ao Piet que posso retirar no sábado" | list_conversations → send_message prévia → você confirma → enviado |
🔒 Modelo de segurança
- Sem credenciais por padrão. Pesquisa, detalhes, verificação de vendedores, filtros, estatísticas de preço e monitoramento não precisam de conta.
- Sua sessão continua sua. O servidor local lê o cookie do seu navegador ou de um arquivo que só você pode ler, envia-o apenas para marktplaats.nl / 2dehands.be e nunca o registra. O endpoint hospedado recusa iniciar com credenciais de conta configuradas.
- Gravações são explícitas. Envio e lances mostram prévia primeiro e exigem
confirm=true; lances abaixo do mínimo são recusados;login --read-onlyouMARKTPLAATS_READ_ONLY=1desativa gravações completamente; cada gravação confirmada é registrada localmente. - Conteúdo não confiável é rotulado. Texto de anúncios e mensagens são escritos por outros usuários; o servidor instrui o modelo a tratá-los como dados, nunca como instruções.
- Educado com o marketplace. Requisições são espaçadas (
MARKTPLAATS_MIN_INTERVAL_MS, padrão 200), repetidas com backoff eRetry-After, e páginas de pesquisa são armazenadas em cache por um minuto. O endpoint hospedado tem limite de taxa por cliente e global. - Sem links de afiliado, sem rastreamento. URLs de anúncios são retornadas exatamente como os marketplaces as publicam.
❓ Perguntas frequentes
Existe um servidor MCP para Marktplaats?
Sim, este. Gratuito, código aberto (MIT), sem chave de API. Cole a URL hospedada no claude.ai ou execute uvx marktplaats-mcp.
Funciona com 2dehands.be e Bélgica?
Sim. Cada ferramenta aceita site="2dehands", e language="nl" ou "fr" restringe resultados belgas a um idioma.
Preciso de uma conta Marktplaats ou chave de API?
Não. Apenas as ferramentas de conta precisam do seu próprio login, e elas usam sua sessão de navegador existente em vez de senha.
A IA pode ler e enviar minhas mensagens da Marktplaats, ou dar lances?
Sim, com o servidor local após marktplaats-mcp login. Envio e lances mostram uma prévia e só agem após sua confirmação.
Onde minhas credenciais de login são armazenadas?
Em ~/.config/marktplaats-mcp/session.json na sua máquina, legível apenas pelo seu usuário, ou nas variáveis de ambiente que você mesmo define. Elas só são enviadas para marktplaats.nl / 2dehands.be. marktplaats-mcp logout as remove.
Posso usar sem instalar nada?
Sim: o endpoint hospedado https://marktplaats-mcp.jaspnerd.dev/mcp funciona no claude.ai, incluindo o plano gratuito e aplicativos móveis. Ele oferece as ferramentas somente leitura.
Funciona com ChatGPT, Cursor, Gemini, VS Code e Cline?
Sim. Veja docs/clients.md para instruções passo a passo por cliente. Qualquer cliente que execute servidores stdio pode usar uvx marktplaats-mcp; clientes que suportam servidores remotos podem usar a URL hospedada.
Isso é oficial ou afiliado à Marktplaats?
Não. É um projeto independente de código aberto, sem vínculos com Marktplaats, 2dehands ou Adevinta. Ele usa os mesmos endpoints JSON públicos que os sites usam; essa API não é documentada e pode mudar, por isso um canário ao vivo roda todos os dias.
Por que às vezes vejo menos resultados que o limite, ou total_count parece alto?
Promoções pagas (DAGTOPPER, TOPADVERTENTIE) são filtradas por padrão; passe include_sponsored=true para vê-las. total_count é a contagem bruta do marketplace antes desse filtro.
Quais versões do Python são suportadas?
3.10 e superiores. CI testa 3.11 a 3.13 em Linux, macOS e Windows.
📚 Documentação
- Instale no seu cliente: passo a passo para 40 clientes
- Configuração: variáveis de ambiente para o servidor local e hospedado
- Como isso se compara aos outros servidores MCP da Marktplaats
- Changelog
🗺️ Roteiro
- Pesquisa entre sites (NL e BE em uma chamada)
- Criação de pesquisa salva a partir do agente
- Pacote de extensão Claude Desktop (MCPB)
🤝 Contribuindo
PRs são bem-vindos. Veja CONTRIBUTING.md para a configuração de desenvolvimento: uv sync --all-groups, depois uv run pytest. uv run python scripts/e2e_smoke.py executa o canário ao vivo.
Este projeto reutiliza ideias comprovadas de marktplaats-py, marktplaats-monitor, marktplaats-2dehands-mcp e PonClick/marktplaats-mcp. Detalhes em THIRD_PARTY_NOTICES.md.
Se isso poupou uma ida à Marktplaats, uma estrela ajuda outras pessoas a encontrar o projeto.
📄 Licença
MIT © 2026 jasp-nerd
mcp-name: io.github.jasp-nerd/marktplaats-mcp