loading…
Search for a command to run...
loading…
Provides tools to search Airbnb and get listing details.
Provides tools to search Airbnb and get listing details.
A comprehensive MCP Bundle for searching Airbnb listings with advanced filtering capabilities and detailed property information retrieval. Built as a Model Context Protocol (MCP) server packaged in the MCP Bundle (MCPB) format for easy installation and use with compatible AI applications.
👉 openbnb.ai is a hosted MCP server that solves the same problem — searching Airbnb listings — without any local setup.
If you don't want to deal with installing and running this server yourself, openbnb.ai is a separate, fully-hosted alternative you can connect to directly from your MCP client. It goes beyond what this open-source server offers:
npx, no config files, no updates to manageHead to openbnb.ai for setup instructions and the connection details for your MCP client.
If you'd rather self-host the open-source server, read on.
This extension is packaged as an MCP Bundle (.mcpb) file. To install:
.mcpb file from the latest releaseTo ignore robots.txt, open Claude Desktop settings, navigate to the extension, and enable the Ignore robots.txt toggle.
Before starting make sure Node.js is installed on your desktop for npx to work.
Go to: Cursor Settings > Tools & Integrations > New MCP Server
Add one the following to your mcp.json:
{
"mcpServers": {
"airbnb": {
"command": "npx",
"args": [
"-y",
"@openbnb/mcp-server-airbnb"
]
}
}
}
To ignore robots.txt for all requests, use this version with --ignore-robots-txt args
{
"mcpServers": {
"airbnb": {
"command": "npx",
"args": [
"-y",
"@openbnb/mcp-server-airbnb",
"--ignore-robots-txt"
]
}
}
}
Restart.
The extension provides the following user-configurable options:
falseDISABLE_GEOCODINGfalseairbnb.com, no third-party calls.airbnb_searchSearch for Airbnb listings with comprehensive filtering options.
Parameters:
location (required): Location to search (e.g., "San Francisco, CA"). When supplied without placeId, the server geocodes this string client-side via Photon/Nominatim — see External Services.placeId (optional): Google Maps Place ID. Overrides location and skips client-side geocoding entirely (no third-party calls).checkin (optional): Check-in date in YYYY-MM-DD formatcheckout (optional): Check-out date in YYYY-MM-DD formatadults (optional): Number of adults (default: 1)children (optional): Number of children (default: 0)infants (optional): Number of infants (default: 0)pets (optional): Number of pets (default: 0)minPrice (optional): Minimum price per nightmaxPrice (optional): Maximum price per nightcursor (optional): Pagination cursor for browsing resultspropertyType (optional): Filter by property type — entire_home, private_room, shared_room, or hotel_roomignoreRobotsText (optional): Override robots.txt for this requestReturns:
airbnb_listing_detailsGet detailed information about a specific Airbnb listing.
Parameters:
id (required): Airbnb listing IDcheckin (optional): Check-in date in YYYY-MM-DD formatcheckout (optional): Check-out date in YYYY-MM-DD formatadults (optional): Number of adults (default: 1)children (optional): Number of children (default: 0)infants (optional): Number of infants (default: 0)pets (optional): Number of pets (default: 0)ignoreRobotsText (optional): Override robots.txt for this requestReturns:
In addition to airbnb.com, the server makes geocoding requests to two third-party services to translate location queries into accurate map bounding boxes. This bypasses Airbnb's own server-side geocoder, which produces incorrect results for many non-US queries (e.g. "Paris, France" lands in Vendée; "Copenhagen, Denmark" lands in Wisconsin).
| Service | Endpoint | Used for | Notes |
|---|---|---|---|
| Photon | photon.komoot.io |
Primary geocoder, called on every search without placeId |
Free OSM-based service hosted by Komoot. One request per search. |
| Nominatim | nominatim.openstreetmap.org |
Fallback geocoder, called only when Photon does not return a bounding box | Subject to the OSMF usage policy (max ~1 req/sec). |
Each search sends only the location string from the request to the geocoder — no other request fields, no IP geolocation, no tracking identifiers. The location string itself is, of course, the same string the user typed.
Opting out: there are two ways to skip the geocoders:
placeId. When placeId is present, the server uses Airbnb's own place lookup directly with no third-party calls.DISABLE_GEOCODING=true. The server will skip Photon/Nominatim entirely and pass the raw location string to Airbnb. This restores the pre-PR behavior for every search and guarantees zero third-party outbound traffic — at the cost of broken results for non-US locations that Airbnb's own geocoder mishandles. Defaults to false.If a geocoder is unreachable or returns no result, the server falls back to sending the location string to Airbnb directly, exactly as it did before — so the worst case for an outage is that international searches degrade to the previous (broken) behavior, not that the search fails entirely.
# Install dependencies
npm install
# Build the project
npm run build
# Watch for changes during development
npm run watch
The extension can be tested by running the MCP server directly:
# Run with robots.txt compliance (default)
node dist/index.js
# Run with robots.txt ignored (for testing)
node dist/index.js --ignore-robots-txt
MIT License - see LICENSE file for details.
Contributions are welcome! Please read the contributing guidelines and submit pull requests for any improvements.
Note: This extension is not affiliated with Airbnb, Inc. It is an independent tool designed to help users search and analyze publicly available Airbnb listings.
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"openbnb-org-mcp-server-airbnb": {
"command": "npx",
"args": []
}
}
}