Skip to main content
Glama
danielk-am

@openbnb/mcp-server-airbnb

by danielk-am

downloads

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:

  1. Descarga el archivo .mcpb de la última versión

  2. Abre el archivo — Claude Desktop mostrará un diálogo de instalación

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

  1. Ve a: Cursor Settings > Tools & Integrations > New MCP Server

  2. 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"
          ]
        }
      }
    }
  3. Reinicia.

Configuración

La extensión ofrece las siguientes opciones configurables:

Ignore robots.txt

  • Tipo: Booleano (casilla)

  • Valor predeterminado: false

  • Descripció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_GEOCODING

  • Valor predeterminado: false

  • Descripció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

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 sin placeId, el servidor geocodifica esta cadena en el lado del cliente mediante Photon/Nominatim — ver Servicios externos.

  • placeId (opcional): Google Maps Place ID. Sobrescribe location y omite por completo la geocodificación en el cliente (sin llamadas a terceros).

  • checkin (opcional): Fecha de entrada en formato AAAA-MM-DD

  • checkout (opcional): Fecha de salida en formato AAAA-MM-DD

  • adults (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 noche

  • maxPrice (opcional): Precio máximo por noche

  • cursor (opcional): Cursor de paginación para explorar resultados

  • propertyType (opcional): Filtrar por tipo de propiedad — entire_home, private_room, shared_room o hotel_room

  • ignoreRobotsText (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 Airbnb

  • checkin (opcional): Fecha de entrada en formato AAAA-MM-DD

  • checkout (opcional): Fecha de salida en formato AAAA-MM-DD

  • adults (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

Photon

photon.komoot.dev

Geocodificador principal, llamado en cada búsqueda sin `placeId

Servicio gratuito basado en OSM alojado por Komoot. Una solicitud por búsqueda.

Nominatim

nominatim.openstreetmap.org

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 placeId explícito. Cuando placeId está 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 es false.

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 watch

Pruebas

# Build, then run both suites
npm test

npm 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-txt

Consideraciones 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 tools
airbnb_listing_detailsC

Get detailed information about a specific Airbnb listing. Provide direct links to the user

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesThe Airbnb listing ID
petsNoNumber of pets
adultsNoNumber of adults
checkinNoCheck-in date (YYYY-MM-DD)
infantsNoNumber of infants
checkoutNoCheck-out date (YYYY-MM-DD)
childrenNoNumber of children
ignoreRobotsTextNoIgnore robots.txt rules for this request

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv0.3.0
    • First observedairbnb_listing_details
    • First observedairbnb_search

TDQS

B3.3/5.0

Scored across 2 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count3/5

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.

Completeness2/5

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

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers