mcp-server-airbnb: an MCP server for searching Airbnb from Claude or Cursor
Search Airbnb using your AI Agent
At a glance
- What is it?
- The openbnb-org MCP server exposes Airbnb search and listing details as two tools an AI client can call. It ships as an MCPB bundle for Claude Desktop and as an npm package for Cursor, and it geocodes locations client-side by default.
- Who is it for?
- Adopt it if you already run an MCP client and want Airbnb search results inside the conversation, without standing up your own scraping layer. Skip it if you need booking, payments or any write action, since the server only reads search results and listing details.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository last received commits 56 days ago.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
What mcp-server-airbnb actually does for an MCP client
The project packages Airbnb search behind the Model Context Protocol, so an AI application that speaks MCP can call Airbnb as a tool instead of the user opening a browser tab. The README describes it as a server "packaged in the MCP Bundle (MCPB) format for easy installation and use with compatible AI applications." The audience is narrow and specific: people who already have an MCP client such as Claude Desktop or Cursor and want listing data to appear inside a conversation. It is not a booking tool, not a price-tracking service and not a general travel API. The repository's package.json lists the npm name as @openbnb/mcp-server-airbnb, version 0.3.0, under the MIT license, with a bin entry of mcp-server-airbnb pointing at dist/index.js. The top-level layout is small: index.ts, util.ts, manifest.json, a Dockerfile, and two test scripts, test-extension.js and test-amenities.js. That footprint matters, because it tells you what you are trusting: a thin TypeScript wrapper over HTTP requests to airbnb.com, with cheerio for parsing and robots-parser for the robots.txt check.
Two tools, one geocoding step, and where the requests go
The server exposes exactly two tools. airbnb_search takes a required location plus optional checkin, checkout, adults, children, infants, pets, minPrice, maxPrice, cursor, propertyType and ignoreRobotsText. airbnb_listing_details takes a required id and the same date and guest parameters. The mechanism worth understanding is the location step. When you supply location without placeId, the README states the server geocodes the string client-side through Photon/Nominatim before querying Airbnb. Supplying a Google Maps Place ID instead overrides location and skips client-side geocoding entirely, which the README frames as meaning no third-party calls. That is the design trade-off in one sentence: the geocoding step is what makes queries like "Paris, France" or "Copenhagen, Denmark" resolve to the right city, and it is also the only reason the server talks to anyone other than airbnb.com. The README says it added international support "via client-side geocoding, so non-US queries ... return results in the right city." If you disable that step, you are back to whatever Airbnb does with a bare location string. Property type filtering is a closed set: entire_home, private_room, shared_room or hotel_room. Pagination runs through a cursor parameter, and the search response returns pagination information plus the search URL for reference. Listing details return coordinates, amenities, house rules and policies, and a direct link to the Airbnb listing.
Installing mcp-server-airbnb in Claude Desktop or Cursor
There are two installation paths and they behave differently. For Claude Desktop, the README says to download the .mcpb file from the latest release, open it, and let Claude Desktop show an installation dialog, then configure the extension settings. There is no command line in that path. For Cursor and similar clients, Node.js has to be installed on the desktop so that npx works, then you add a server entry under Cursor Settings > Tools & Integrations > New MCP Server. The README gives this configuration for mcp.json:
{
"mcpServers": {
"airbnb": {
"command": "npx",
"args": [
"-y",
"@openbnb/mcp-server-airbnb"
]
}
}
}After saving, restart the client. The README notes a second variant that appends --ignore-robots-txt to the args array, which bypasses robots.txt restrictions for all requests. A first real use is a prompt that maps onto airbnb_search: ask for listings in a city with dates, a guest count and a price ceiling, and the client should call the tool with location, checkin, checkout, adults, minPrice and maxPrice. If you want to avoid the geocoding hop, pass a Google Maps Place ID in the prompt so the server uses placeId and skips that step. The Dockerfile in the repository is generated by Smithery and runs node dist/index.js over stdio, so the server is a stdio process rather than an HTTP listener.
Robots.txt, rate limits, and the parts the README leaves open
The honest limitation is that this server reads Airbnb by scraping, and the README says so indirectly through its robots.txt controls. There is a global Ignore robots.txt setting, default false, described as something to keep disabled "unless needed for testing purposes," plus a per-request ignoreRobotsText parameter. The README does not document what happens when Airbnb returns a block, a captcha or a changed page structure. It does not document rollback or a fallback when cheerio selectors stop matching, and it does not state a retry policy beyond "request timeout management to prevent hanging requests" and "rate limiting awareness." Those are real operational gaps for anyone planning to run this on a schedule. The second limitation is scope: there is no booking, no availability guarantee, and no write action of any kind. If your goal is to hold a reservation or sync a calendar, this is the wrong tool and no amount of prompt engineering changes that. The third is the geocoding dependency. The DISABLE_GEOCODING environment variable exists, and the README warns that with it enabled, non-US searches could return incorrect results. So the choice is third-party outbound traffic or degraded international accuracy, not both good outcomes at once.
openbnb.ai versus the self-hosted server
The README's own alternative is openbnb.ai, a hosted MCP server from the same organization that solves the same problem of searching Airbnb listings. The difference in approach is operational, not conceptual. The hosted version requires no Node, no npx and no config file, and the README says it adds richer search filters, MCP UI components for browsing results rather than plain text, and managed upkeep. The self-hosted server gives you the source, the MIT license, the Dockerfile and the ability to inspect exactly which requests leave your machine, including the Photon/Nominatim geocoding call. If your constraint is that no third party beyond Airbnb should see your queries, the self-hosted path with placeId or DISABLE_GEOCODING is the one you can actually audit. If your constraint is that nobody on the team wants to maintain an MCP process, the hosted option is the shorter path. Note that the README presents openbnb.ai as a separate product, so it is not covered by this repository's license.
Maintenance, upgrades and what the MIT license covers
The repository is not archived, and the last push was on 2026-08-06, the same day as the v0.3.0 release. The release history shows v0.1.4 on 2026-04-06, v0.2.0 on 2026-04-10 and v0.3.0 on 2026-08-06, so the cadence is measured in months rather than weeks. Upgrade cost is low for the npm path: npx pulls the published package, and a version bump is a client restart. The MCPB path is manual, since the README describes downloading a .mcpb file from the latest release and opening it, with no documented auto-update. The build scripts are worth knowing before you fork: npm run build runs sync-version.js, then tsc, then shx chmod +x dist/*.js, and npm run pack produces the .mcpb artifact. The package.json declares MIT, and the repository has a LICENSE file at the top level, so the license identifier is consistent with the file's presence. Anything about redistribution terms or attribution obligations belongs with the LICENSE text itself, not with a summary. The dependencies you inherit are @modelcontextprotocol/sdk, cheerio, node-fetch and robots-parser.
Editorial conclusion
Adopt it if you already run an MCP client and want Airbnb search results inside the conversation, without standing up your own scraping layer. Skip it if you need booking, payments or any write action, since the server only reads search results and listing details. Before installing, check the LICENSE file in the repository, read the External Services section of the README to decide whether client-side geocoding through Photon/Nominatim is acceptable for your queries, and confirm that the Ignore robots.txt toggle is off unless you are testing.
Frequently asked questions
Is there an API for Airbnb that mcp-server-airbnb uses?
The README does not describe an official Airbnb API. The server fetches Airbnb pages and parses them with cheerio, which is why robots.txt handling and rate limiting appear as configuration options.
Where can I host an mcp-server-airbnb instance?
The repository includes a Dockerfile generated by Smithery that runs node dist/index.js, and the Dockerfile comment says the MCP server is exposed on stdio. That means it runs as a local process attached to the client rather than as a network service.
Does mcp-server-airbnb work with Claude Desktop?
Yes. The README says the extension is packaged as an .mcpb file, and that opening the downloaded file makes Claude Desktop show an installation dialog where you configure the extension settings.
Why do non-US searches return the wrong city in mcp-server-airbnb?
The README attributes correct international results to client-side geocoding through Photon/Nominatim, and warns that enabling DISABLE_GEOCODING skips that step and could return incorrect results for non-US searches.
What property types can mcp-server-airbnb filter on?
The airbnb_search tool accepts a propertyType parameter limited to entire_home, private_room, shared_room or hotel_room, alongside date, guest and price range filters.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/openbnb-org-mcp-server-airbnb)