Marktplaats & 2dehands
Buscar anuncios de segunda mano en Marktplaats.nl y 2dehands.be: filtros de precio/estado/distancia, verificación de vendedores y monitoreo de nuevos anuncios.
Documentación
English | Nederlands | Français
marktplaats-mcp: el servidor MCP para Marktplaats y 2dehands
marktplaats-mcp es un servidor MCP para Marktplaats.nl (Países Bajos) y 2dehands.be (Bélgica), los clasificados de segunda mano neerlandeses y belgas (tweedehands, petites annonces d'occasion). Busca anuncios, filtra por atributos de categoría, evalúa vendedores, compara precios y vigila nuevos anuncios desde Claude, ChatGPT, Cursor, Codex, Gemini o cualquier otro cliente MCP. Con tu propio inicio de sesión también lee y envía mensajes, hace ofertas y gestiona tus favoritos y anuncios. Sin clave de API.
🚀 Comienza
Sin instalación: pega una URL. El servidor alojado, de solo lectura, se ejecuta en https://marktplaats-mcp.jaspnerd.dev/mcp. Añádelo como conector personalizado en claude.ai (Configuración → Conectores, funciona en el plan gratuito y en móvil), ChatGPT, Mistral Le Chat, Perplexity o la app de Gemini.
Claude Code: un solo comando.
claude mcp add --scope user marktplaats -- uvx marktplaats-mcp
Cualquier otro cliente. Instala uv (brew install uv, o winget install --id=astral-sh.uv -e en Windows) y luego añade la configuración MCP estándar:
{ "mcpServers": { "marktplaats": { "command": "uvx", "args": ["marktplaats-mcp"] } } }
Instrucciones paso a paso para 40 clientes (Cursor, VS Code, Codex, Gemini CLI, Cline, Windsurf, JetBrains, Zed, opencode, Goose, ...), con la ruta de configuración por sistema operativo y un enlace a la guía oficial de cada cliente: docs/clients.md.
Luego pregunta: "Encuentra una bicicleta de carreras por menos de 500 € a menos de 25 km de 1011 AB, cuadro de 57-61 cm, y dime si los vendedores parecen legítimos."
👤 Usa tu propia cuenta (mensajes, favoritos, ofertas, tus anuncios)
Marktplaats no tiene API pública y su inicio de sesión usa autenticación de dos factores por SMS, por lo que este servidor nunca pide tu contraseña. Copia la sesión de un navegador en el que ya hayas iniciado sesión:
uvx --from 'marktplaats-mcp[login]' marktplaats-mcp login
La sesión se guarda en ~/.config/marktplaats-mcp/session.json, legible solo por tu usuario. Reinicia tu cliente MCP y aparecerán las herramientas de cuenta.
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
Si el inicio de sesión dice que no pudo leer las cookies de tu navegador
- macOS: el sistema bloquea que las herramientas de línea de comandos lean los datos del navegador y no lo pregunta. Una vez, abre Ajustes del Sistema → Privacidad y seguridad → Acceso total al disco, añade la aplicación de terminal que uses (Terminal, iTerm, Warp o VS Code), luego ciérrala y vuelve a abrirla. Después ejecuta de nuevo el comando de inicio de sesión.
- Windows: Chrome y Edge bloquean su archivo de cookies mientras se ejecutan; la herramienta lo copia primero, así que normalmente funciona. Si no, cierra el navegador y ejecuta el inicio de sesión de nuevo, o usa
--paste. - Linux: los navegadores Chromium guardan la clave de cookies en tu llavero (GNOME Keyring o KWallet), que debe estar desbloqueado; Firefox no necesita nada. Los navegadores Snap o Flatpak guardan su perfil en otro lugar, así que usa
--pasteallí. - En todas partes:
marktplaats-mcp login --pastenunca necesita permisos. En tu navegador en marktplaats.nl pulsa F12 → Red, haz clic en cualquier solicitud, copia el encabezado de solicitudCookiey pégalo.
O establece MARKTPLAATS_COOKIE / TWEEDEHANDS_COOKIE (el encabezado de solicitud Cookie) en la configuración de tu cliente. Las sesiones duran semanas; cuando una expira, las herramientas te indican que inicies sesión de nuevo.
Enviar, contactar a un vendedor y ofertar devuelven primero una vista previa y solo actúan cuando se llama de nuevo con confirm=true. Las ofertas son vinculantes en Marktplaats; la herramienta rechaza ofertas por debajo del mínimo. La publicación automatizada de anuncios está prohibida por los términos de Marktplaats y deliberadamente no está implementada. Consulta Modelo de seguridad.
🧰 Herramientas
| Herramienta | Qué hace | Cuenta | Escritura |
|---|---|---|---|
search_listings | Busca con consulta, categoría, subcategoría, atributos específicos de categoría, rango de precios, condición, entrega (recogida/envío), distancia desde un código postal, actualidad, palabras clave negativas, ordenación y paginación | ||
get_listing_details | Anuncio completo: descripción, atributos, estado (activo/cerrado), hora exacta de publicación, recuento de vistas y favoritos, estado de oferta y oferta mínima, envío, imágenes, tasa de respuesta del vendedor y antigüedad de la cuenta. Acepta URLs pegadas | ||
get_seller_profile | Señales de confianza: cuenta bancaria verificada, identidad, teléfono, verificación empresarial, método de pago, puntuación y recuento de reseñas, oferta mínima que acepta el vendedor | ||
list_seller_listings | Todo lo que un vendedor tiene en oferta: detecta comerciantes que se hacen pasar por particulares y anuncios duplicados | ||
list_categories | El árbol de categorías (nombres e ids) usado para filtrar, también disponible como recurso MCP | ||
list_category_filters | Descubre los filtros de una categoría (marca, altura de cuadro, kilometraje, combustible, RAM, ...) con sus valores válidos y recuentos | ||
check_new_listings | Monitoreo de más recientes primero con un cursor sin estado: devuelve solo anuncios publicados después de since, nunca omite uno | ||
analyze_prices | Mediana, cuartiles, mínimo, máximo y media de precios de venta para una búsqueda, además de las coincidencias más baratas | ||
get_my_account | Verificación de sesión, mensajes no leídos y notificaciones | ✅ | |
list_conversations, get_conversation | Tu bandeja de entrada y hilos de mensajes completos | ✅ | |
list_my_listings, list_favorites, list_my_bids, list_saved_searches | Tus anuncios (vistas, favoritos, oferta más alta, caducidad), favoritos, ofertas y búsquedas guardadas | ✅ | |
send_message, contact_seller | Responder en un hilo, o hacer una pregunta a un vendedor o hacer una oferta no vinculante. Vista previa primero, confirm=true para enviar | ✅ | ✅ |
place_bid | Ofertar en un anuncio. Vista previa primero, rechaza ofertas por debajo del mínimo, marcada como destructiva | ✅ | ✅ |
set_favorite, extend_my_listing | Guardar/quitar de guardados un anuncio; renovar uno de tus anuncios que caducan | ✅ | ✅ |
Las herramientas de solo lectura llevan las anotaciones MCP correspondientes, por lo que los clientes omiten las confirmaciones para ellas y las piden para las herramientas de escritura. Cada herramienta devuelve salida estructurada con un esquema real. Dos prompts, bargain_hunt y vet_listing, codifican los flujos de trabajo comunes.
Qué puedes decir y qué ocurre
| Tú dices | El agente llama |
|---|---|
| "¿Es 450 € un precio justo por un iPhone 15 de 128 GB en buen estado?" | analyze_prices → mediana, cuartiles y los tres anuncios más baratos |
| "Encuentra un Golf usado, 2018-2022, menos de 100.000 km, gasolina, de un vendedor particular" | list_category_filters("Auto's") → search_listings(attributes={"Bouwjaar": "2018-2022", "Kilometerstand": "-100000", "Brandstof": "Benzine", "Adverteerder": "Particulier"}) |
| "¿Es de fiar este vendedor? ¿Qué más vende?" | get_listing_details → get_seller_profile → list_seller_listings |
| "Avísame cuando aparezcan anuncios nuevos de bakfiets cerca de Amberes" | check_new_listings(site="2dehands", postcode="2000", distance_km=25) con el cursor devuelto en cada consulta |
| "Pregunta al vendedor si sigue disponible y ofrece 120 €" | contact_seller(..., offer_euros=120) vista previa → confirmas → enviado |
| "Responde a Piet que puedo recogerlo el sábado" | list_conversations → send_message vista previa → confirmas → enviado |
🔒 Modelo de seguridad
- Sin credenciales por defecto. Buscar, detalles, verificación de vendedores, filtros, estadísticas de precios y monitoreo no necesitan cuenta.
- Tu sesión sigue siendo tuya. El servidor local lee la cookie de tu navegador o de un archivo que solo tú puedes leer, la envía solo a marktplaats.nl / 2dehands.be y nunca la registra. El endpoint alojado se niega a iniciar con credenciales de cuenta configuradas.
- Las escrituras son explícitas. Enviar y ofertar muestran vista previa primero y requieren
confirm=true; las ofertas por debajo del mínimo se rechazan;login --read-onlyoMARKTPLAATS_READ_ONLY=1desactiva las escrituras por completo; cada escritura confirmada se registra localmente. - El contenido no confiable está etiquetado. El texto de los anuncios y los mensajes están escritos por otros usuarios; el servidor le dice al modelo que los trate como datos, nunca como instrucciones.
- Respetuoso con el mercado. Las solicitudes se espacian (
MARKTPLAATS_MIN_INTERVAL_MS, por defecto 200), se reintentan con retroceso yRetry-After, y las páginas de búsqueda se almacenan en caché durante un minuto. El endpoint alojado tiene límite de velocidad por cliente y global. - Sin enlaces de afiliado, sin seguimiento. Las URLs de los anuncios se devuelven exactamente como las publican los mercados.
❓ Preguntas frecuentes
¿Hay un servidor MCP para Marktplaats?
Sí, este. Gratuito, de código abierto (MIT), sin clave de API. Pega la URL alojada en claude.ai o ejecuta uvx marktplaats-mcp.
¿Funciona con 2dehands.be y Bélgica?
Sí. Cada herramienta acepta site="2dehands", y language="nl" o "fr" limita los resultados belgas a un idioma.
¿Necesito una cuenta de Marktplaats o una clave de API?
No. Solo las herramientas de cuenta necesitan tu propio inicio de sesión, y usan tu sesión de navegador existente en lugar de una contraseña.
¿Puede la IA leer y enviar mis mensajes de Marktplaats, o hacer ofertas?
Sí, con el servidor local después de marktplaats-mcp login. Enviar y ofertar muestran una vista previa y solo actúan después de que confirmes.
¿Dónde se guardan mis credenciales de inicio de sesión?
En ~/.config/marktplaats-mcp/session.json en tu máquina, legible solo por tu usuario, o en las variables de entorno que establezcas tú mismo. Solo se envían a marktplaats.nl / 2dehands.be. marktplaats-mcp logout las elimina.
¿Puedo usarlo sin instalar nada?
Sí: el endpoint alojado https://marktplaats-mcp.jaspnerd.dev/mcp funciona en claude.ai, incluido el plan gratuito y las aplicaciones móviles. Ofrece las herramientas de solo lectura.
¿Funciona con ChatGPT, Cursor, Gemini, VS Code y Cline?
Sí. Consulta docs/clients.md para instrucciones paso a paso por cliente. Cualquier cliente que ejecute servidores stdio puede usar uvx marktplaats-mcp; los clientes que admiten servidores remotos pueden usar la URL alojada.
¿Es oficial o está afiliado a Marktplaats?
No. Es un proyecto independiente de código abierto sin vínculos con Marktplaats, 2dehands o Adevinta. Usa los mismos endpoints JSON públicos que usan los sitios web; esa API no está documentada y puede cambiar, por lo que un canario en vivo se ejecuta todos los días.
¿Por qué a veces veo menos resultados que el límite, o total_count parece alto?
Las promociones de pago (DAGTOPPER, TOPADVERTENTIE) se filtran por defecto; pasa include_sponsored=true para verlas. total_count es el recuento bruto del mercado antes de ese filtrado.
¿Qué versiones de Python se admiten?
3.10 y superiores. CI prueba 3.11 a 3.13 en Linux, macOS y Windows.
📚 Documentación
- Instalar en tu cliente: paso a paso para 40 clientes
- Configuración: variables de entorno para el servidor local y alojado
- Cómo se compara con los otros servidores MCP de Marktplaats
- Registro de cambios
🗺️ Hoja de ruta
- Búsqueda entre sitios (NL y BE en una sola llamada)
- Creación de búsquedas guardadas desde el agente
- Paquete de extensión de Claude Desktop (MCPB)
🤝 Contribuciones
Se aceptan pull requests. Consulta CONTRIBUTING.md para la configuración de desarrollo: uv sync --all-groups, luego uv run pytest. uv run python scripts/e2e_smoke.py ejecuta el canario en vivo.
Este proyecto reutiliza ideas probadas de marktplaats-py, marktplaats-monitor, marktplaats-2dehands-mcp y PonClick/marktplaats-mcp. Detalles en THIRD_PARTY_NOTICES.md.
Si esto te ahorró un viaje a Marktplaats, una estrella ayuda a que otras personas lo encuentren.
📄 Licencia
MIT © 2026 jasp-nerd
mcp-name: io.github.jasp-nerd/marktplaats-mcp