@openbnb/mcp-server-airbnb
Airbnb Search & Listings - MCP Bundle (MCPB)
Un paquete MCP completo para buscar alojamientos en Airbnb con capacidades de filtrado avanzadas y recuperación de información detallada de las propiedades. Construido como servidor Model Context Protocol (MCP) empaquetado en el formato MCP Bundle (MCPB) para facilitar su instalación y su uso con aplicaciones de IA compatibles.
🚀 ¿Prefieres no ejecutar un servidor local? Prueba openbnb.ai
**👉 openbnb.ai es un servidor MCP alojado que resuelve el mismo problema —buscar alojamientos de Airbnb— sin necesidad de configuración local.
Si no quieres encargarte de instalar y ejecutar este servidor tú mismo, openbnb.ai es una alternativa independiente y totalmente alojada a la que puedes conectarte directamente desde tu cliente MCP. Va más allá de lo que ofrece este servidor de código abierto:
✅ Cero configuración — sin Node, sin
npx, sin archivos de configuración, sin actualizaciones que gestionar✅ Filtros avanzados — controles de búsqueda más completos que las herramientas base incluidas aquí
✅ Interfaz de usuario MCP — componentes de interfaz interactivos para explorar resultados, no solo texto plano
✅ Gestionado y mantenido — nosotros lo mantenemos en funcionamiento por ti
Ve a openbnb.ai para obtener las instrucciones de configuración y los datos de conexión para tu cliente MCP.
Si prefieres alojar tú mismo la versión de código abierto, sigue leyendo.
Related MCP server: Airbnb MCP Server
Características
🔍 Capacidades de búsqueda avanzadas
Búsqueda por ubicación con soporte para ciudades, regiones, estados y países
Soporte de ubicaciones internacionales mediante geocodificación en el lado del cliente, de modo que las búsquedas fuera de EE. UU. (p. ej., «París, Francia», «Copenhague, Dinamarca») devuelvan resultados en la ciudad correcta
Integración con Google Maps Place ID para una localización precisa
Filtro por tipo de propiedad: casas completas, habitaciones privadas, habitaciones compartidas o habitaciones de hotel
Filtro de fechas con soporte de fecha de entrada y salida
Configuración de huéspedes incluyendo adultos, niños, bebés y mascotas
Filtro de rango de precios con mínimo y máximo
Paginación para navegar por conjuntos de resultados grandes
🏠 Información detallada de la propiedad
Detalles completos del anuncio que incluyen servicios, políticas y aspectos destacados
Información de ubicación con coordenadas y detalles del vecindario
Normas y políticas de la casa para tomar decisiones informadas al reservar
Descripciones de la propiedad y características clave
Enlaces directos a los anuncios de Airbnb para reservar fácilmente
🛡️ Seguridad y cumplimiento
Cumplimiento de robots.txt con opción predeterminada configurable para pruebas
Gestión de tiempos de espera en las solicitudes para evitar peticiones bloqueadas
Manejo mejorado de errores con registro detallado
Conciencia de límite de peticiones y uso correcto de la API
Configuración segura a través de los ajustes de usuario de MCPB
Instalación
Para Claude Desktop
Esta extensión se distribuye como un archivo MCP Bundle (.mcpb). Para instalarla:
Descarga el archivo
.mcpbde la última versiónAbre el archivo — Claude Desktop mostrará un diálogo de instalación
Configura los ajustes de la extensión según sea necesario
Para ignorar robots.txt, abre los ajustes de Claude Desktop, ve a la extensión y activa el conmutador Ignore robots.txt.
Para Cursor, etc.
Antes de empezar , asegúrate de que Node.js esté instalado en tu equipo para que npx funcione.
Ve a: Cursor Settings > Tools & Integrations > New MCP Server
Añade una de las siguientes opciones a tu
mcp.json:{ "mcpServers": { "airbnb": { "command": "npx", "args": [ "-y", "@openbnb/mcp-server-airbnb" ] } } }Para ignorar robots.txt en todas las solicitudes, usa esta versión con los argumentos
--ignore-robots-txt{ "mcpServers": { "airbnb": { "command": "npx", "args": [ "-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt" ] } } }Reinicia.
Configuración
La extensión ofrece las siguientes opciones configurables:
Ignore robots.txt
Tipo: Booleano (casilla)
Valor predeterminado:
falseDescripción: Ignora las restricciones de robots.txt al realizar solicitudes a Airbnb
Recomendación: Mantenerlo desactivado salvo que sea necesario para pruebas
Disable third-party geocoding
Tipo: Booleano (casilla)
Variable de entorno:
DISABLE_GEOCODINGValor predeterminado:
falseDescripción: Omite el paso de geocodificación de Photon/Nominatim y deja que Airbnb resuelva la cadena de ubicación por sí solo. Al activarlo se restaura el comportamiento anterior al PR: cada búsqueda va únicamente a
airbnb.com, sin llamadas de terceros.Recomendación: Mantenlo desactivado salvo que realmente necesites cero tráfico saliente a terceros. Si está activado, las búsquedas fuera de EE. UU. podrían devolver resultados incorrectos. Ver Servicios externos.
Herramientas
airbnb_search
Busca alojamientos de Airbnb con opciones de filtrado exhaustivas.
Parámetros:
location(obligatorio): Ubicación a buscar (p. ej., "San Francisco, CA"). Cuando se envía sinplaceId, el servidor geocodifica esta cadena en el lado del cliente mediante Photon/Nominatim — ver Servicios externos.placeId(opcional): Google Maps Place ID. Sobrescribelocationy omite por completo la geocodificación en el cliente (sin llamadas a terceros).checkin(opcional): Fecha de entrada en formato AAAA-MM-DDcheckout(opcional): Fecha de salida en formato AAAA-MM-DDadults(opcional): Número de adultos (predeterminado: 1)children(opcional): Número de niños (predeterminado: 0)infants(opcional): Número de bebés (predeterminado: 0)pets(opcional): Número de mascotas (predeterminado: 0)minPrice(opcional): Precio mínimo por nochemaxPrice(opcional): Precio máximo por nochecursor(opcional): Cursor de paginación para explorar resultadospropertyType(opcional): Filtrar por tipo de propiedad —entire_home,private_room,shared_roomohotel_roomignoreRobotsText(opcional): Anulación de robots.txt para esta solicitud
Devuelve:
Resultados de búsqueda con de detalles de la propiedad, precios y enlaces directos
Información de paginación para explorar más resultados
URL de búsqueda para referencia
airbnb_listing_details
Obtén la información detallada de un anuncio concreto de Airbnb.
Parámetros:
id(obligatorio): Identificador del anuncio de Airbnbcheckin(opcional): Fecha de entrada en formato AAAA-MM-DDcheckout(opcional): Fecha de salida en formato AAAA-MM-DDadults(opcional): Número de adultos (predeterminado: 1)children(opcional): Número de niños (predeterminado: 0)infants(opcional): Número de bebés (predeterminado: 0)pets(opcional): Número de mascotas (predeterminado: 0)ignoreRobotsText(opcional): Anulación de robots.txt para esta solicitud
Devuelve:
Información detallada de la propiedad que incluye:
Datos de ubicación con coordenadas
Equipamiento y servicios, como
seeAllAmenitiesGroups— un objeto indexado por categorías de servicios, de modo que pueda accederse directamente a una categoría. Los servicios que Airbnb muestra tachados aparecen en su propia categoría"Not included":{ "seeAllAmenitiesGroups": { "Bathroom": "Hair dryer", "Heating and cooling": "AC - split type ductless system, Heating", "Not included": "Dryer, Hot water" } }Normas y políticas de la casa
Aspectos destacados y descripciones de la propiedad
Enlace directo al anuncio
Detalles técnicos
Arquitectura
Ejecución: Node.js 18+
Protocolo: Model Context Protocol (MCP) mediante transporte stdio
Formato: MCP Bundle (MCPB) v0.3
Dependencias: Dependencias externas mínimas para garantizar seguridad y fiabilidad
Servicios externos
Además de airbnb.com, el servidor realiza solicitudes de geocodificación a dos servicios de terceros para convertir las consultas de ubicación en cuadros delimitadores precisos. Esto evita el geocodificador propio de Airbnb, que produce resultados incorrectos en muchas búsquedas fuera de EE. UU. (p. ej., "París, Francia" cae en Vendée; "Copenhague, Dinamarca" en Wisconsin).
Servicio | Endpoint | Uso | Notas |
| Geocodificador principal, llamado en cada búsqueda sin `placeId | Servicio gratuito basado en OSM alojado por Komoot. Una solicitud por búsqueda. | |
| Geocodificador de respaldo, llamado solo cuando Photon no devuelve un cuadro delimitador | Sujeto a la política de uso de OSMF (máx. ~1 repet/seg) |
Cada búsqueda envía únicamente la cadena location de la solicitud al geocodificador — no se envían otros campos, ni geolocalización IP, ni identificadores de seguimiento. La cadena de ubicación, por supuesto, es la misma que el usuario escribió.
Exclusión voluntaria: hay dos formas de omitir los geocodificadores:
Por solicitud: proporcionar un
placeIdexplícito. CuandoplaceIdestá presente, el servidor usa directamente la propia búsqueda de lugares de Airbnb, sin llamadas a terceros.Globalmente: configurar la variable de entorno
DISABLE_GEOCODING=true. El servidor omitirá Photon/Nominatim por completo y pasará la cadena de ubicación sin procesar a Airbnb. Esto restaura el comportamiento previo al PR para cada búsqueda y garantiza cero tráfico saliente a terceros — a costa de obtener resultados incorrectos para ubicaciones no estadounidenses que el geocodificador de Airbnb maneja mal. El valor por defecto esfalse.
Si un geocodificador no está disponible o no devuelve resultados, el servidor recurre a enviar la cadena de ubicación directamente a Airbnb, exactamente como se hacía antes — por lo que el peor caso de una caída es que las búsquedas internacionales degraden al comportamiento anterior (defectuoso), pero la búsqueda no falla por completo.
Manejo de errores
Registro exhaustivo de errores con marcas de tiempo
Degradación moderada cuando Airbnb cambia la estructura de sus páginas
Protección de timeout en solicitudes red
Mensajes de error detallados para facilitar la solución de problemas
Medidas de seguridad
Cumplimiento de robots.txt de forma predeterminada
Límites de tiempo de espera para las solicitudes
Validación y saneado de entradas
Gestión segura de variables de entorno
No se almacenan datos confidenciales
Rendimiento
Análisis eficiente de HTML con Cheerio
Caché de solicitudes cuando corresponde
Mínimo consumo de memoria
Inicio rápido y tiempos de respuesta mínimos
Compatibilidad
Sistemas: macOS, Windows, Linux
Node.js: 18.0.0 o superior
Claude Desktop: 0.10.0 o superior
Otros clientes MCP: Compatible con cualquier aplicación que admita MCP
Desarrollo
Compilar desde el código fuente
# Install dependencies
npm install
# Build the project
npm run build
# Watch for changes during development
npm run watchPruebas
# Build, then run both suites
npm testnpm test prueba el servidor compilado a través de stdio y ejecuta las herramientas en real:
test-extension.js— presentación y listado de herramientas, una búsqueda, detalleçes de un anuncio y las rutas de geocodificación (Photon, Nominatim opcional)test-amenities.js— extracción de servicios en varios anuncios en vivo, verifica que las instalaciones que Airbnb muestra tachadas nunca aparecen como disponibles
Ambas pruebas acceden a airbnb.com y a los geocodificadores por red, de modo que requieren conexión y pueden fallar si Airbnb cambia la estructura de sus páginas — ese es el objetivo de las pruebas, pero también significa que no son adecuadas como puerta de CI no supervisada.
El servidor también puede ejecutarse directamente:
# Run with robots.txt compliance (default)
node dist/index.js
# Run with robots.txt ignored (for testing)
node dist/index.js --ignore-robots-txtConsideraciones legales y éticas
Versa los términos de servicio de Airbnb: esta extensión está pensada para investigación legítimas y apoyo a la reserva
Cumplimiento de robots.txt: respeta robots.txt por defecto
Límite de solicitudes: ten en cuenta la frecuencia de peticiones para no sobrecargar los servidores de Airbnb
Uso de datos: solo extraer información disponible públicamente para fines legítimos
Soporte
Incidencias: reporta los errores y pide funciones en GitHub Issues
Documentación: documentación adicional disponible en el repositorio
Comunidad: participa en las discusiones sobre MCP y pro.
Licencia
Licencia MIT - para más detalles, ver el archivo LICENSE.
Contribución
¡Contribuciones son bienvenidas! Por favor, lee las pautas de contribución y envía pull requests para cualquier mejora.
Nota: Esta extensión no está afiliada con Airbnb, Inc. Es una herramienta independiente diseñada para ayudar a los usuarios a buscar y analizar anuncios de Airbnb que están disponibles públicamente.
Available Tools
2 toolsairbnb_listing_detailsC
Get detailed information about a specific Airbnb listing. Provide direct links to the user
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The Airbnb listing ID | |
| pets | No | Number of pets | |
| adults | No | Number of adults | |
| checkin | No | Check-in date (YYYY-MM-DD) | |
| infants | No | Number of infants | |
| checkout | No | Check-out date (YYYY-MM-DD) | |
| children | No | Number of children | |
| ignoreRobotsText | No | Ignore robots.txt rules for this request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for disclosing behavior. It mentions that direct links are provided, but does not disclose side effects, whether the operation is read-only, permission requirements, error behavior, or any other behavioral traits. This is a significant gap for a tool expected to be called autonomously.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences and the primary purpose is front-loaded. The second sentence about providing direct links is an added behavior, which is useful but could be integrated more seamlessly. No wasted words, though the structure could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, no output schema, and no annotations, the description is not complete. It does not explain what 'detailed information' includes, how the optional parameters influence results, or what the expected response format looks like. An agent would have to guess many details about invocation and results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All 8 parameters have descriptions in the schema (100% coverage), so the baseline of 3 applies. The tool description itself adds no additional meaning beyond what the schema already provides; it does not explain how parameters like pets, adults, or checkin/checkout dates affect the returned details or links.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves detailed information for a specific Airbnb listing and identifies that direct links are provided. It distinguishes implicitly from the sibling airbnb_search by focusing on a specific listing rather than searching, though it does not explicitly name the sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus airbnb_search. There is no mention of prerequisites (such as having a listing ID) or scenarios that would favor this tool over the search sibling. The description leaves usage entirely to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
airbnb_searchA
Search for Airbnb listings with various filters and pagination. Provide direct links to the user
| Name | Required | Description | Default |
|---|---|---|---|
| pets | No | Number of pets | |
| adults | No | Number of adults | |
| cursor | No | Base64-encoded string used for Pagination | |
| checkin | No | Check-in date (YYYY-MM-DD) | |
| infants | No | Number of infants | |
| placeId | No | Google Maps Place ID (overrides the location parameter) | |
| checkout | No | Check-out date (YYYY-MM-DD) | |
| children | No | Number of children | |
| location | Yes | Location to search for (city, state, etc.) | |
| maxPrice | No | Maximum price for the stay | |
| minPrice | No | Minimum price for the stay | |
| propertyType | No | Filter by property type: 'entire_home' (entire homes/apartments), 'private_room' (private rooms in shared homes), 'shared_room' (shared/dorm-style rooms), 'hotel_room' (hotel rooms) | |
| ignoreRobotsText | No | Ignore robots.txt rules for this request |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose a meaningful behavior beyond the schema: the tool provides direct links to the user. However, it does not mention the notable behavior around 'ignoreRobotsText' (ignoring robots.txt rules), nor any rate limits or implications of performing these searches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loading the core action and then stating the expected output. It is efficient, though 'various filters' is somewhat vague and adds little information beyond the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 13 parameters and no output schema, the description is minimal. It covers the main purpose and the direct-link output, but it does not explain pagination behavior, the significance of the robots-related parameter, or how this tool relates to its sibling. The schema covers parameters well, so it is adequate but not complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description only says 'various filters and pagination,' which adds no meaningful parameter semantics beyond what the schema already provides for each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ('Search for Airbnb listings') and adds scope with 'various filters and pagination' and an explicit output ('Provide direct links to the user'). This clearly distinguishes it from the sibling tool airbnb_listing_details, which is about retrieving details rather than searching.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this tool is for searching listings rather than fetching details, so the intended use is partially clear from the contrast with the sibling tool. However, it never explicitly states when to use this tool versus airbnb_listing_details, nor does it mention any search-specific prerequisites or limitations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
2 tool updates
v0.3.0- First observed
airbnb_listing_details - First observed
airbnb_search
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one performs searches across listings, the other fetches details for a specific listing. There is no overlap in functionality, so an agent can easily select the appropriate tool based on the task at hand.
Both tools follow a consistent 'airbnb_' prefix followed by a descriptive noun phrase (search, listing_details). The snake_case convention is uniform, and the verb-noun structure is clear and predictable, making the naming highly coherent.
With only two tools, the server feels thin for the broad domain of Airbnb. While search and details are foundational, a typical Airbnb workflow might also require booking, reviews, or availability checks. The count is borderline, as it is minimal but not trivial.
The tool surface covers only discovery (search and details) but lacks any transactional or deeper interaction capabilities such as booking, cancellation, or managing reservations. This is a significant gap that will prevent agents from completing full user journeys, making the surface incomplete for its apparent purpose.
Maintenance
Related MCP Connectors
Airbnb stays by location and dates, and full listing details, as structured JSON.
Airbnb search, listing details, and calendar availability as clean structured data.
Searchable directory of Airbnb listings — discover properties and retrieve direct Airbnb links.
Airbnb listings by city or room link: price for dates, ratings, amenities, host, location, photos.
1
Related MCP Servers
- AlicenseAqualityCmaintenanceSearch for Airbnb listings and get detailed information about specific properties. Effortlessly plan your next trip with structured data and no API key required, while respecting Airbnb's guidelines.22,195 npm549MIT
- AlicenseBqualityDmaintenanceEnables searching for Airbnb listings and retrieving detailed accommodation information with direct links to Airbnb pages.21MIT
- AlicenseBqualityDmaintenanceEnables searching for Airbnb listings and retrieving detailed property information including pricing, amenities, and host details without requiring an API key.22,195 npmMIT
- AlicenseCqualityDmaintenanceEnables searching Airbnb listings with advanced filtering (location, dates, guests, price) and retrieval of detailed property information including amenities, policies, and booking links.42,195 npm2MIT