@openbnb/mcp-server-airbnb
Airbnb Search & Listings - MCP Bundle (MCPB)
Ein umfassendes MCP Bundle zum Durchsuchen von Airbnb-Inseraten mit erweiterten Filtermöglichkeiten und dem detaillierten Abruf von Unterkunftsinformationen. Es wurde als Model Context Protocol (MCP)-Server umgesetzt und im MCP Bundle (MCPB)-Format gebündelt, damit es einfach mit kompatiblen KI-Anwendungen installiert und genutzt werden kann.
🚀 Lieber keinen lokalen Server betreiben? Teste openbnb.ai
👉 openbnb.ai ist ein gehosteter MCP-Server, der dasselbe Problem löst – das Durchsuchen von Airbnb-Inseraten – ganz ohne lokale Einrichtung.
Wenn du diesen Server nicht selbst installieren und betreiben möchtest, ist openbnb.ai eine separate, vollständig gehostete Alternative, die du direkt mit deinem MCP-Client verbinden kannst. Sie geht über das hinaus, was dieser Open-Source-Server bietet:
✅ Keine Einrichtung – kein Node, kein
npx, keine Konfigurationsdateien, keine Updates zu verwalten✅ Erweiterte Filter – umfangreichere Suchsteuerung als die hier enthaltenen Basis-Werkzeuge
✅ MCP-UI – interaktive UI-Komponenten zum Durchstöbern der Ergebnisse, nicht nur einfacher Text
✅ Gehostet und gepflegt – läuft für dich
Wechsle zu openbnb.ai, um die Einrichtungsanleitung und die Verbindungsdetails für deinen MCP-Client zu erhalten.
Wenn du den Open-Source-Server lieber selbst hosten möchtest, lies weiter.
Related MCP server: Airbnb MCP Server
Features
🔍 Erweiterte Suchfunktionen
Standortbasierte Suche mit Unterstützung für Städte, Bundesstaaten und Regionen
Internationale Standortunterstützung über clientseitiges Geocoding, sodass Abfragen außerhalb der USA (z. B. „Paris, France“, „Copenhagen, Denmark") auch in der richtigen Stadt Ergebnisse liefern
Google-Maps-Place-ID-Integration für präzise Standortziele
Filterung nach Unterkunftstyp für ganze Unterkünfte, private Zimmer, gemeinsame Zimmer oder Hotelzimmer
Datumsfilter mit Unterstützung für Check-in- und Check-out-Datum
Gästekonfiguration einschließlich Erwachsene, Kinder, Kleinkinder und Haustiere
Preisspannen-Filter mit Mindest- und Höchstpreis-Grenzen
Paginierung zum Durchblättern großer Ergebnismengen
🏠 Detaillierte Unterkunftinformationen
Umfassende Inseratdetails einschließlich Ausstattung, Richtlinien und Highlights
Standortdaten mit Koordinaten und Nachbarschaftsdetails
Hausregeln und Richtlinien für eine fundierte Buchungsentscheidung
Unterkunftsbeschreibungen und wichtige Leistungsmerkmale
Direktlinks zu den Airbnb-Inseraten für eine schnelle Buchung
🛡️ Sicherheit und Compliance
Einhaltung von robots.txt mit konfigurierbarer Ausnahme für Tests
Request-Time-Over-Management, um keine Anfragendauer zu vermeiden
Verbesserte Fehlerbehandlung mit detaillierter Protokollierung
Bewusstsein für Rate-Limiting – respektvolle API-Nutzung
Sichere Konfiguration über MCPB-Benutzereinstellungen
Installation
Für Claude Desktop
Diese Erweiterung wird als MCP Bundle-Format-Datei (.mcpb) ausgeliefert. So installierst du sie:
Lade die
.mcpb-Dateiystem neuesten Release herunterÖffne die Datei – Claude Desktop zeigt einen Installationsdialog an
Konfiguriere die Erweiterungseinstellungen nach Bedarf
Um robots.txt zu ignorieren, öffne die Einstellungen von Claude Desktop, navigiere zur Erweiterung und aktiviere den Schalter robots.txt ignorieren.
Für Cursor usw.
Achte vorher darauf, dass Node.js auf deinem Rechner installiert ist, damit npx funktioniert.
Navigiere zu: Cursor Settings > Tools & Integrations > New MCP Server
Füge eine der folgenden Optionen zu deiner
mcp.jsonhinzu:{ "mcpServers": { "airbnb": { "command": "npx", "args": [ "-y", "@openbnb/mcp-server-airbnb" ] } } }Um robots.txt für alle Anfragen zu ignorieren, verwende diese Version mit
--ignore-robots-txtals Argument:{ "mcpServers": { "airbnb": { "command": "npx", "args": [ "-y", "@openbnb/mcp-server-airbnb", "--ignore-robots-txt" ] } } }Starte neu.
Konfiguration
Die Erweiterung bietet die folgenden benutzerkonfigurierbaren Optionen:
robots.txt ignorieren
Typ: Boolescher Wert (Kontrollkästchen)
Standard:
falseBeschreibung: Hebt die robots.txt-Einschränkungen bei Anfragen an Airbnb auf.
Empfehlung: Deaktiviert lassen, außer du benötigst es für Tests.
Drittanbieter-Geocoding deaktivieren
Typ: Boolescher Wert (Kontrollkästchen)
Umgebungsvariable:
DISABLE_GEOCODINGStandard:
falseBeschreibung: Überspringt den Photon/Nominatim-Geocoding-Schritt und überlässt es Airbnb, die Ort-Angabe selbst aufzulösen. Die Aktivierung stellt das Verhalten vor dem PR wieder her – jede Suche geht nur an
airbnb.com, ohne Drittanbieter-Aufrufe.Empfehlung: Deaktiviert lassen, es sei denn, du benötigst keinerlei ausgehenden Drittanbieter-Datenverkehr. Mit aktivierter Option können Suchen außerhalb der USA falsche Ergebnisse liefern. Siehe Externe Dienste.
Tools
airbnb_search
Suche nach Airbnb-Inseraten mit umfassenden Filtermöglichkeiten.
Parameter:
location(erforderlich): Ort, der durchsucht werden soll (z. B. „San Francisco, CA"). Ohne angegebenesplaceIdgeokodiert der Server diese Zeichenkette clientseitig über Photon/Nominatim – siehe Externe Dienste.placeId(optional): Google-Maps-Place-ID. Überschreibtlocationund überspringt das clientseitige Geocoding vollständig (keine Drittanbieter-Aufrufe).checkin(optional): Check-in-Datum im Format YYYY-MM-DDcheckout(optional): Check-out-Datum im Format YYYY-MM-DDadults(optional): Anzahl der Erwachsenen (Standard: 1)children(optional): Anzahl der Kinder (Standard: 0)infants(optional): Anzahl der Kleinkinder (Standard: 0)pets(optional): Anzahl der Haustiere (Standard: 0)minPrice(optional): Mindestpreis pro NachtmaxPrice(optional): Maximale Preis pro Nachtcursor(optional): Paginierungs-Cursor zum Durchblättern der ErgebnissepropertyType(optional): Filterung nach Unterkunftstyp –entire_home,private_room,shared_roomoderhotel_roomignoreRobotsText(optional): Überschreibt robots.txt für diese Anfrage.
Rückgabe:
Suchergebnisse mit Unterkunftsdetails, Preisen und direkte Links
Paginierungsinformationen für weitere Sekundäre
Die Such-URL als Referenz
airbnb_listing_details
Ruft detaillierte Informationen für ein bestimmtes Airbnb-Inseraten ab.
Parameter:
id(required): Airbnb-Inserats-IDcheckin(optional): Check-in-Datum im Format YYYY-MM-DDcheckout(optional): Check-out-Datum im Format YYYY-MM-DDadults(optional): Anzahl der Erwachsenen (Standard: 1)children(optional): Anzahl der Kinder (Standard: 0)infants(optional): Anzahl der Kleinkinder (Standard: 0)pets(optional): Anzahl der Haustiere (Standard: 0)ignoreRobotsText(optional): Überschreibt robots.txt für diese Anfrage.
Rückgabe:
Detaillierte Unterkunftsinformationen, einschließlich:
Standortdetails mit Koordinaten
Ausstattung und Einrichtungen, dargestellt als
seeAllAmenitiesGroups– ein-Objekt, das nach Ausstattungskategorie gegliedert ist, sodass eine Kategorie direkt angesprochen werden kann. Ausstattungen, die Airbnb durchgestrichen darstellt, erscheinen unter einer eigenen Kategorie"Not included":{ "seeAllAmenitiesGroups": { "Bathroom": "Hair dryer", "Heating and cooling": "AC - split type ductless system, Heating", "Not included": "Dryer, Hot water" } }Hausregeln und Richtlinien
Eigenschaften, Highlights und Unterkunftsbeschreibungen
Direktlink zum Inserat
Technische Details
Architektur
Laufzeit: Node.js 18+
Protokoll: Model Context Protocol (MCP) über stdio
Format: MCP Bundle (MCPB) v0.3
Abhängigkeiten: Minimale externe Abhängigkeiten für Sicherheit und Zuverlässigkeit
Externe Dienste
Zusätzlich zu airbnb.com sendet der Server Geocoding-Anfragen an zwei Drittanbieter-Dienste, um Standortanfragen in präzise geografische Bounding-Boxen umzuwandeln. Das umgeht das eigene serverseitige Geocoding von Airbnb, das für viele Anfragen außerhalb der USA falsche Ergebnisse liefert (z. B. wird in „Paris, France" in Vendée und nach „Copenhagen, Denmark" nach Wisconsin verschoben).
Dienst | Endpunkt | Verwendet für | Anmerkungen |
| Primärer Geocoder, wird bei jeder Suche ohne | Kostenloser, auf OSM basierender Dienst, gehostet von Komoot. Eine Anfrage pro Suche. | |
| Fallback-Geocoder, wird nur aufgerufen, wenn Photon keine Bounding-Box zurückgibt | Unterliegt der OSMF-Nutzungsrichtlinie (max. ~1 Anfrage/Sek.). |
Jede Suche sendet nur den location-String aus der Anfrage an den Geocoder – keine anderen Anfragefelder, keine IP-Geolokalisierung, keine Tracking-Identifier. Der location-String ist natürlich derselbe,is den der Nutzer eingegeben hat.
Ausoptional aus: Es gibt zwei Möglichkeiten, die Geocoder zu überspringen:
Pro Anfrage: sgehst eine eindeutige
placeIdan. WennplaceIdvorhanden ist, verwendet den Server direkt die Ortsauflösung von Airbnb ohne Drittanfragen.Global: Umgebungsvariable
DISABLE_GEOCODING=truesetzen. Der Server überspringt das Photon/Nominatim-Geocoding vollständig Anderussia zeichenkette vonairbnb.comdurch. Das stellt für jede Suche ein Verhalten vor dem PR wieder her und garantiert keine Drittanbieter-Datenverkehr – aber falsche Ergebnisse transfer international, deren „reconfirm" nicht behandelt, die die Obi-Eigener Geocoding fehlerhaft. Standardwert istfalse.
Falls ein Geocoder nicht erreichbar ist oder „keine Ergebnis" liefert, wechselt der Server zurück dazu, den location-String direkt an Airbnb zu schicken, wie einstach zuvor – der schlimmste Fall bei einem Ausfall ist also, dass internationale Suchen auf das bisherige (fehlerhafte) Verhalten zurückfallen, und nicht state die Suche vollständig fehlschlägt.
Fehlerbehandlung
Umfassende Fehlerprotokollierung mit Zeitstempeln
Sauberes Absinken (Graceful Degradation), wenn sich die Seitenstruktur von Airbnb ändert
Timeout-Schutz für Netzwerkanfragen
Detaillierte Fehlermeldungen zur Unterstützung der Fehlersuche
Security–maßnahmen
Standardmäßige Einhaltung der robots.txt
Timeout-Limiten für Anfragen
Validierung und Bereinigung von Eingaben
Sicherer Umgang dabei mit Umgebungsvariablen
Keine Speicherung sensibler Daten
Leistung
Hocheffizientes HTML-Parsing mit Cheerio
Wann sinnvolles Anfragen-Caching
Kleiner Speicherbedarf
Schneller Start und kurze Reaktionszeiten
Kompatibilität
Plattformen: macOS, Windows, Linux
Node.js: 18.0.0 oder höher
Claude Desktop: 0.10.0 oder höher
Andere MCP-Clients: Kompatibel mit jeder MCP-unterstützten Anwendung
Entwicklung
Erstellung aus dem Quellcode
# Install dependencies
npm install
# Build the project
npm run build
# Watch for changes during development
npm run watchTests
# Build, then run both suites
npm testnpm test startet den gebaut den Server den serverseitig über stdio und ruft die Werkzeuge real auf:
test-extension.js– MCP-Handshake, ist eine Liste der Werkzeuge, eine Suche, Inseratdetails und die Geocoding-Pfade (Photon, Nominatim-Fallback)test-amenities.js– Auszug der Austattung aus mehreren Live-Inseraten und prüft, dass von Airbnb durchgestrichene Ausstattungen nie als vorhandenangezeigt haben.
Beide treffen airbnb.com und die Geocoder über das Netzwerk – hierfür ist also eine Internetverbindung erforderlich, und sie können fehlschlagen, wenn Airbnb die Seitenstruktur ändert. Das ist eben Zweck: Sie zeigen Regression, aber dadurch eignen sie sich auch nicht vor unbemannt als CI-Gate.
Der Server kann auch direkt ausgeführt werden:
# Run with robots.txt compliance (default)
node dist/index.js
# Run with robots.txt ignored (for testing)
node dist/index.js --ignore-robots-txtRechtliche und ethische Hinweise
Airbnb-NBC einhalten: Diese Erweiterung dient der legitimen Recherche zur Buchungsunterstützung.
Einhaltung von robots.txt: Die Erweiterung respektiert robots.txt standardmäßig.
Rate-Limiting: Achte auf die Frequenz der Anfragen, um die Server von Airbnb nicht übermäßig zu belasten.
Datennutzung: Nur öffentlich verfügbare Informationen und nur für legitime Zwecke extrahieren.
Support
Issues: Einzugs von Bugs und Feature Requests unter GitHub Issues
Dokumentation: Weitere Dokumentation ist im Repository
Community: Beteilige dich an Diskussionen zur MCP- und MCPB-Entwicklung
Lizenz
MIT-Lizenz – siehe Datei LICENSE für Details.
Mitwirken
Beiträge sind willkommen! Bitte lesen Sie die Richtlinien für Beiträge und reichen Sie Pull-Requests für etwaige Verbesserungen ein.
Hinweis: Diese Erweiterung ist nicht mit Airbnb, Inc. verbunden. Sie ist ein unabhängiges Tool, das Nutzer dabei unterstützt, öffentlich verfügbare Airbnb-Angebote zu durchsuchen und zu analysieren.
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