@openbnb/mcp-server-airbnb
Airbnb Search & Listings — MCP Bundle (MCPB)
Комплексный MCP Bundle для поиска объявлений Airbnb с расширенными возможностями фильтрации и получения подробной информации об объектах. Реализован как сервер Model Context Protocol (MCP), упакованный в формат MCP Bundle (MCPB) для лёгкой установки и использования с совместимыми AI‑приложениями.
🚀 Не хотите запускать локальный сервер? Попробуйте openbnb.ai
👉 openbnb.ai — это размещённый MCP‑сервер, который решает ту же задачу — поиск объявлений Airbnb — без локальной настройки.
Если вы не хотите сами устанавливать и запускать этот сервер, openbnb.ai — это отдельная полностью размещённая альтернатива, к которой можно подключаться напрямую из вашего MCP‑клиента. Он идёт дальше, чем этот open‑source проект:
✅ Ноль настройки — не нужен Node, не нужен
npx, не нужно конфигурационных файлов и обновлений✅ Расширенные фильтры — более богатые средства управления поиском, чем в базовых инструментах здесь
✅ MCP UI — интерактивные UI‑компоненты для просмотра результатов, а не только текст
✅ Полностью управляемый и поддерживаемый — работает за вас
Переходите на openbnb.ai для получения инструкций по настройке и параметров подключения для вашего MCP‑клиента.
Если вы предпочитаете запускать open‑source‑сервер самостоятельно, читайте дальше.
Related MCP server: Airbnb MCP Server
Возможности
🔍 Расширенные возможности поиска
Поиск по местоположению с поддержкой городов, штатов и регионов
Поддержка международных адресов через клиентское геокодирование: запросы за пределами США (например, «Париж, Франция», «Копенгаген, Дания») возвращают результаты в правильном городе
Интеграция Google Maps Place ID для точного указания местоположения
Фильтр по типу объекта — целые дома, отдельные комнаты, общие комнаты или гостиничные номера
Фильтры по датам с поддержкой дат заезда и выезда
Настройка гостей: взрослые, дети, младенцы и домашние животные
Фильтр по цене с ограничениями минимума и максимума
Пагинация для просмотра больших наборов результатов
🏠 Подробная информация об объекте
Полные данные объявления, включая удобства, правила и особенности
Информация о местоположении с координатами и описанием района
Правила дома и политики для осознанного бронирования
Описания объектов и основные характеристики
Прямые ссылки на объявления Airbnb для быстрого бронирования
🛡️ Безопасность и соответствие
Соблюдение Robots.txt с настраиваемым переопределением для тестирования
Управление таймаутами запросов для предотвращения зависших запросов
Расширенная обработка ошибок с подробным журналированием
Учёт ограничений частоты запросов и вежливое использование API
Безопасная настройка через пользовательские параметры MCPB
Установка
Для Claude Desktop
Это расширение упаковано в файл MCP Bundle (.mcpb). Чтобы установить:
Скачайте файл
.mcpbиз последнего релизаОткройте файл — Claude Desktop покажет диалог установки
Настройте параметры расширения по необходимости
Чтобы игнорировать robots.txt, откройте настройки Claude Desktop, найдите расширение и включите переключатель Ignore robots.txt.
Для Cursor и др.
Перед началом убедитесь, что на вашем компьютере установлен Node.js, чтобы работал npx.
Перейдите в: Cursor Settings > Tools & Integrations > New MCP Server
Добавьте одну из следующих настроек в
mcp.json:{ "mcpServers": { "airbnb": { "command": "npx", "args": [ "-y", "@openbnb/mcp-server-airbnb" ] } } }Чтобы игнорировать robots.txt для всех запросов, используйте эту версию с аргументом
--ignore-robots-txt{ "mcpServers": { "airbnb": { "command": "npx", "args": [ "-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt" ] } } }Перезапустите.
Конфигурация
Расширение предоставляет следующие настраиваемые пользователем параметры:
Игнорировать robots.txt
Тип: Boolean (checkbox)
По умолчанию:
falseОписание: Пропускать ограничения robots.txt при запросах к Airbnb
Рекомендация: Держите выключенным, если только это не нужно для тестирования
Отключить стороннее геокодирование
Тип: Boolean (checkbox)
Переменная окружения:
DISABLE_GEOCODINGПо умолчанию:
falseОписание: Пропустить шаг геокодирования Photon/Nominatim и позволить Airbnb самостоятельно обработать строку местоположения. Включение восстанавливает поведение до PR — каждый поиск идёт только на
airbnb.com, без сторонних вызовов.Рекомендация: Держите выключенным, если вам не нужен полный отсутствие исходящих сторонних запросов. При включении поиск за пределами США может возвращать неправильные результаты. См. Внешние сервисы.
Инструменты
airbnb_search
Поиск объявлений Airbnb с расширенными параметрами фильтрации.
Параметры:
location(обязательный): Местоположение для поиска (например, «San Francisco, CA»). При передаче безplaceIdсервер геокодирует эту строку клиентской библиотекой Photon/Nominatim — см. Внешние сервисы.placeId(необязательный): Google Maps Place ID. Переопределяетlocationи полностью пропускает клиентское геокодирование (без сторонних вызовов).checkin(необязательный): Дата заезда в форматеYYYY-MM-DDcheckout(необязательный): Дата выезда в форматеYYYY-MM-DDadults(необязательный): Количество взрослых (по умолчанию: 1)children(необязательный): Количество детей (по умолчанию: 0)infants(необязательный): Количество младенцев (по умолчанию: 0)pets(необязательный): Количество домашних животных (по умолчанию: 0)minPrice(необязательный): Минимальная цена за ночьmaxPrice(необязательный): Максимальная цена за ночьcursor(необязательный): Пагинация для просмотра результатовpropertyType(необязательный): Фильтр по типу —entire_home,private_room,shared_roomилиhotel_roomignoreRobotsText(необязательный): Переопределить robots.txt для этого запроса
Возвращает:
Результаты поиска с деталями объектов, ценами и прямыми ссылками
Информацию для пагинации по дополнительным результатам
URL поиска для справки
airbnb_listing_details
Получить подробную информацию о конкретном объявлении Airbnb.
Параметры:
id(обязательно): Идентификатор объявления Airbnbcheckin(необязательный): Дата заезда в форматеYYYY-MM-DDcheckout(необязательный): Дата выезда в форматеYYYY-MM-DDadults(необязательный): Количество взрослых (по умолчанию: 1)children(необязательный): Количество детей (по умолчанию: 0)infants(необязательный): Количество младенцев (по умолчанию: 0)pets(необязательный): Количество домашних животных (по умолчанию: 0)ignoreRobotsText(необязательный): Переопределить robots.txt для этого запроса
Возвращает:
Детальную информацию об объекте, включая:
Данные о местоположении с координатами
Удобства и сервисы, как
seeAllAmenitiesGroups— объект, сгруппированный по категориям удобств, для прямого доступа к категории. Удобства, которые Airbnb отображает зачёркнутыми, попадают в отдельную категорию"Not included":{ "seeAllAmenitiesGroups": { "Bathroom": "Hair dryer", "Heating and cooling": "AC - split type ductless system, Heating", "Not included": "Dryer, Hot water" } }Правила дома и политику
Особенности и описания объекта
Прямую ссылку на объявление
Технические детали
Архитектура
Время работы: Node.js 18+
Протокол: Model Context Protocol (MCP) через stdio транспорт
Формат: MCP Bundle (MCPB) v0.3
Зависимости: минимальные внешние зависимости для безопасности и надёжности
Внешние сервисы
Помимо airbnb.com, сервер отправляет запросы на геокодирование двум сторонним сервисам для преобразования запросов местоположения в точные ограничивающие рамки (bounding boxes). Это обходит собственный серверный геокодер Airbnb, который даёт неверные результаты для многих запросов за пределами США (например, «Париж, Франция» попадает в Вандею, «Копенгаген, Дания» — в Висконсин).
Сервис | Эндпоинт | Используется | Примечания |
| Основной геокодер, вызывается при каждом поиске без | Бесплатный сервис на основе OSM, хостится Komoot. Один запрос на поиск. | |
| Запасной геокодер, вызывается только когда Photon не возвращает bounding box | Соблюдайте политику использования OSMF (макс. ~1 запрос/сек). |
Каждый поиск отправляет геокодеру только строку location из запроса — никаких других полей, никакой IP‑геолокации, никаких tracking‑идентификаторов. Сама строка местоположения, разумеется, это та же строка, которую ввёл пользователь.
Отказ от геокодирования — есть два способа пропустить геокодеры:
На уровне запроса: укажите явный
placeId. КогдаplaceIdесть, сервер использует собственный поиск местоположения Airbnb напрямую, без сторонних вызовов.Глобально: установите
DISABLE_GEOCODING=true. Сервер полностью пропустит Photon/Nominatim и передаст необработанную строку местоположения в Airbnb. Это восстанавливает поведение до PR для каждого поиска и гарантирует полное отсутствие стороннего исходящего трафика — за счёт неверных результатов для адресов за пределами США, которые собственный геокодер Airbnb обрабатывает неверно. По умолчаниюfalse.
Если геокодер недоступен или не возвращает результат, сервер переходит к прямой передаче строки местоположения в Airbnb, как это было раньше — то есть худший вариант при сбое — это то, что международные запросы деградируют к прежнему (неверному) поведению, а не полностью перестают работать.
Обработка ошибок
Подробное журналирование ошибок с временными метками
Плавное ухудшение при изменении структуры страниц Airbnb
Защита сетевых запросов по таймеру
Детальные сообщения об ошибках для устранения неполадок
Меры безопасности
Соблюдение Robots.txt по умолчанию
Ограничение таймаутов запросов
Проверка и очистка входных данных
Безопасная работа с переменными окружения
Без хранения чувствительных данных
Производительность
Эффективный разбор HTML через Cheerio
Кэширование запросов где применимо
Минимальное использование памяти
Быстрый запуск и время ответа
Совместимость
Платформы: macOS, Windows, Linux
Node.js: 18.0.0 или выше
Claude Desktop: 0.10.0 или выше
Другие MCP‑клиенты: любой сервис, поддерживающий MCP
Разработка
Сборка из исходного кода
# Install dependencies
npm install
# Build the project
npm run build
# Watch for changes during development
npm run watchТестирование
# Build, then run both suites
npm testnpm test запускает собранный сервер через stdio и реально вызывает инструменты:
test-extension.js— MCP‑рукопожатие, список инструментов, поиск, детали объявления, пути геокодирования (Photon, запасной Nominatim)test-amenities.js— извлечение удобств из нескольких живых объявлений, проверка, что удобства, зачёркнутые Airbnb, никогда не показываются как доступные
Оба обращаются к airbnb.com и геокодерам по сети, поэтому нуждаются в подключении и могут не работать, если Airbnb изменит структуру страниц — в этом их цель, но значит, они непригодны для полностью автоматического применения в CI.
Сервер также можно запустить напрямую:
# Run with robots.txt compliance (default)
node dist/index.js
# Run with robots.txt ignored (for testing)
node dist/index.js --ignore-robots-txtПравовые и этические аспекты
Уважайте условия использования Airbnb: это расширение создано для законного поиска и помощи в бронировании
Соблюдение robots.txt: по умолчанию расширение соблюдает robots.txt
Ограничение частоты запросов: следите за частотой, чтобы не создавать лишнюю нагрузку на серверы Airbnb
Использование данных: извлекайте только публичную информацию и только для законных целей
Поддержка
Issues: Сообщения об ошибках и запросы на улучшение — на GitHub Issues
Документация: Дополнительная документация доступна в репозитории
Сообщество: Обсуждения по развитию MCP и MCPB
Лицензия
MIT License — подробнее в файле LICENSE.
Участие в разработке
Вклад приветствуется! Пожалуйста, прочтите руководство по внесению вклада и отправляйте пул-реквесты для любых улучшений.
Примечание: Это расширение не связано с Airbnb, Inc. Это независимый инструмент, разработанный для поиска и анализа общедоступных объявлений Airbnb.
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