Using the Google Flights MCP in Cursor
Published September 1, 2026
Short answer: One block in .cursor/mcp.json and a Google sign-in gives Cursor's
agent four tools: live Google Flights pricing, Booking.com hotel search, plus date-range
and destination-list expansion that turn a single prompt into a multi-day scan. No REST
code, and no key in the file.
Cursor's agent can write and test your travel features against real flight and hotel
data when you connect the FlightPowers MCP servers. One block in .cursor/mcp.json
unlocks four tools: live Google Flights pricing, Booking.com hotel searches, and the
date-range and destination-list expansions that turn a single prompt into a
multi-day scan.
What you need
- Cursor (download from cursor.com)
- A RapidAPI key for the
Google Flights Live API
and theBooking Live API
. One key covers both once you subscribe to each listing. The free tier (10 requests/month) verifies your config works; the $10 PRO plan (2,500 requests/month) is the realistic floor for a development workflow.
How do you set up the MCP servers?
Add this block to .cursor/mcp.json (create the file in your project root if it does
not exist yet):
{
"mcpServers": {
"flights": { "url": "https://flights.flightpowers.com/mcp" },
"hotels": { "url": "https://hotels.flightpowers.com/mcp" }
}
}
Restart Cursor. It hits the 401, registers itself, and offers you the sign-in: sign in
with Google and paste your RapidAPI key once on the page that opens. Then the tools
appear in the agent toolbox. Both servers sit behind the same sign-in, and one key covers
both once you subscribe to each listing on RapidAPI. Nothing secret goes in the file, so
you can commit it.
Second option: the key, for scripts, CI and clients without a sign-in button
Keep the same URL and put the key in a header instead. This is the form to use for anything headless, because a CI runner has no browser to complete a sign-in:
{
"mcpServers": {
"flights": {
"url": "https://flights.flightpowers.com/mcp",
"headers": { "x-rapidapi-key": "YOUR_RAPIDAPI_KEY" }
},
"hotels": {
"url": "https://hotels.flightpowers.com/mcp",
"headers": { "x-rapidapi-key": "YOUR_RAPIDAPI_KEY" }
}
}
}
Replace YOUR_RAPIDAPI_KEY with your actual key and keep that copy of the file out of a
shared repository.
The four tools
search_oneway_flights: Live one-way flight prices from Google Flights. Pass a
single date or a date range (departure_date_from / departure_date_to) and the
server expands it internally. Each result includes price, price_as_number,
price_range_in_relation_to_other_periods (the context field), and a buy_link that
opens the itinerary on Google Flights ready to book.
search_roundtrip_flights: Paired round-trip itineraries with both legs already
matched. One object per option with a combined total_price, not two lists to
cross-join. Takes a return_date or a trip length in nights.
search_hotels: Live Booking.com destination search. Returns ranked properties with
price_string, price_as_number, review_score, room_type, and a booking_link.
Accepts the same filters the site offers: review_score_8, free_cancellation, and
the rest.
find_hotel_by_name: Availability and price for one named hotel. Takes the name a
human would type (add the city to disambiguate a chain) and resolves the property
internally. Supports price_as_seen_from, a two-letter country code that prices the
stay as a shopper in that market would see it, the field rate-parity checks are built
on.
Example prompts
Generate types from a live response. "Call search_oneway_flights for LHR to JFK on October 13 and show me the raw JSON so we can write a parser for it."
Build test fixtures. "Fetch live prices for LIS to JFK across November and build a test fixture from the five cheapest days."
Test parsing logic. "Add a priceContext helper that maps price_range_in_relation_to_other_periods to a badge color, then check it against a live JFK to LHR search."
Multi-market pricing. "Run find_hotel_by_name for the Rixos Sungate with price_as_seen_from de and jp, three times each, and print the range you saw per market." (Ask each market more than once: a rate can move between identical requests, so a single reading per market is not a comparison.)
How it works
The servers are hosted at https://flights.flightpowers.com/mcp and
https://hotels.flightpowers.com/mcp. Nothing runs on your machine. On the sign-in
path your RapidAPI key is stored on our side, encrypted, and used on each call; on the
key path Cursor sends it in the x-rapidapi-key header. Either way usage meters
against your own subscription, and Disconnect on the connect page deletes a stored key. The free BASIC tier (10 requests/month, hard cap, no card)
verifies the config works. A scheduled agent that scans routes daily fits the cheapest
paid plan.
Date ranges and destination lists
Both flight tools accept a date range (departure_date_from / departure_date_to) and
a list of airports in from_airport and to_airport (comma-separated strings like
"JFK,EWR,LGA"). The server expands them internally, so a flexible search is one call
where the REST API would be a client-side fan-out of one request per date and
destination combination.
When to use this
Use the MCP servers when your agent is writing or testing travel features and needs real data to validate against. The response shape it codes against is the one production will see. Use the REST API for production traffic and scheduled scans outside Cursor.
Related
- FlightPowers on Cursor: the full integration overview
- MCP Servers: setup for Claude, ChatGPT, and other MCP clients
- Open-source agent skills: the same workflows as MIT-licensed skills
Test it on your own routes
Add the URL, sign in with Google, and ask the agent to fetch a live price. The free tier verifies your key works; the paid tiers are sized for daily development.
Free tier: 10 requests/month. No card to try.