Flights MCP
Google Flights MCP server for Claude, Cursor and ChatGPT
FlightPowers' Google Flights MCP server gives Claude, Cursor and ChatGPT live Google Flights fares with Google's own low / typical / high price band, a date range and a list of destinations in one call, and a round trip priced as one request with one booking link. Free with ads at free-trial.flightpowers.com/mcp (Google sign-in, 50 searches a day); ad-free on your own RapidAPI key, where PRO is $10 for 2,500 searches. Best for fare tracking, date scans and AI agents; it does not book.
Also called a flights MCP, a flight search MCP or a flight MCP server. It is hosted: you add a URL, nothing runs on your machine.
https://flights.flightpowers.com/mcpYour client shows a Sign in button. Sign in with Google; your first 10 searches each day run free and ad-free with nothing pasted, and you paste your RapidAPI key once on the page that opens when you want more.
Is there an MCP for flights?
Yes. FlightPowers runs a hosted flights MCP server at flights.flightpowers.com/mcp: add the URL to Claude, Cursor, ChatGPT or any MCP client, sign in with Google, and the assistant can search live fares one-way or round trip.
Is there an MCP for Google Flights?
Google has offered no public flights API since QPX Express closed in 2018, so a Google Flights MCP reads the live public results. This one hands them to the assistant with a booking link on every fare and Google's own low / typical / high price band for the route.
What is an MCP server for?
An MCP (Model Context Protocol) server gives an AI assistant tools it can call. A flights MCP lets the assistant fetch real fares when you ask, instead of guessing from what it was trained on.
One real search
Six round trips priced in one tool call
New York to Lisbon or Barcelona, leaving any day from November 10 to 12, five nights. I sent this call to flights.flightpowers.com/mcp on 2026-10-06 at 19:54 UTC; it is the call an assistant makes for that question. It came back in about 4 seconds and billed 6 requests.
{
"name": "search_roundtrip_flights",
"arguments": {
"from_airport": "JFK",
"to_airport": [
"LIS",
"BCN"
],
"departure_date_from": "2026-11-10",
"departure_date_to": "2026-11-12",
"nights": 5,
"sort_by": "price",
"limit": 5
}
}{
"search_status": "ok",
"results_total": 6,
"results": [
{
"to_airport": "Barcelona (BCN)",
"departure_date": "2026-11-11",
"return_date": "2026-11-16",
"nights": 5,
"total_price": "$564",
"total_stops": 2,
"departure_flight_airline": "Tap Air Portugal | Operated by Portugalia - Companhia Portuguesa",
"return_flight_airline": "Tap Air Portugal",
"price_insights_low": 385,
"price_insights_high": 650,
"price_range_in_relation_to_other_periods": "typical",
"buy_link": "https://www.google.com/travel/flights?tfs=Gl0SCj…"
},
{
"to_airport": "Barcelona (BCN)",
"departure_date": "2026-11-12",
"return_date": "2026-11-17",
"nights": 5,
"total_price": "$577",
"total_stops": 2,
"departure_flight_airline": "Tap Air Portugal",
"return_flight_airline": "Tap Air Portugal | Operated by Portugalia - Companhia Portuguesa",
"price_insights_low": 385,
"price_insights_high": 650,
"price_range_in_relation_to_other_periods": "typical",
"buy_link": "https://www.google.com/travel/flights?tfs=Gl0SCj…"
}
],
"search_coverage": {
"requested_combinations": 6,
"searched_combinations": 6,
"hub_requests_billed": 6
}
}| To | Out → back | Airlines | Total | Google's range | Verdict |
|---|---|---|---|---|---|
| Barcelona (BCN) | 11-11 → 11-16 | Tap Air Portugal | $564 | $385 to $650 | typical |
| Barcelona (BCN) | 11-12 → 11-17 | Tap Air Portugal | $577 | $385 to $650 | typical |
| Lisbon (LIS) | 11-11 → 11-16 | Aer Lingus | $605 | $425 to $700 | typical |
| Lisbon (LIS) | 11-12 → 11-17 | Aer Lingus | $605 | $425 to $700 | typical |
| Barcelona (BCN) | 11-10 → 11-15 | British Airways / Air Europa | $612 | $385 to $650 | typical |
| Lisbon (LIS) | 11-10 → 11-15 | British Airways | $668 | $425 to $700 | typical |
Each row is a whole round trip: both legs, one total, one buy_link. The cheapest was Barcelona (BCN) at $564, which Google marks typical for that route (its range $385 to $650). I asked for 5 rows; the server raised the limit to 6 so every date and destination it searched gets a row, and says so in search_coverage. Fares move by the minute, so read this as a captured run, not a price you can book today.
Connect it
One URL, any MCP client
The same address works for every client. A client with a sign-in button gets a Google sign-in; a script sends your key in a header instead.
Claude (claude.ai and Desktop)
Settings, Connectors, Add custom connector, paste https://flights.flightpowers.com/mcp, press Connect and sign in with Google.
Claude Code
claude mcp add --transport http flights https://flights.flightpowers.com/mcpThen open /mcp in a session and sign in.
ChatGPT
Settings, Connectors, turn on developer mode, add the URL as a connector with OAuth authentication, and sign in with Google. Step by step.
Cursor and any mcp.json client
{
"mcpServers": {
"flights": { "url": "https://flights.flightpowers.com/mcp" }
}
}Scripts, CI and clients with no sign-in button
{
"mcpServers": {
"flights": {
"url": "https://flights.flightpowers.com/mcp",
"headers": { "x-rapidapi-key": "YOUR_RAPIDAPI_KEY" }
}
}
}A client that takes only a URL can put the key on it: ?rapidapi_key=. Treat that URL as a secret.
The tools, printed raw
2 tools, read from a live tools/list
Names, titles, hints and every parameter as flights.flightpowers.com/mcp returned them on 2026-10-06. Each parameter line is the first sentence of the server's own description.
search_oneway_flights
FlightPowers: search one-way flights · required: from_airport, to_airport · readOnlyHint true · idempotentHint false
FlightPowers one-way fare search: live prices read from Google Flights.
| from_airport | Origin IATA code, e.g. "TLV". One origin per search; a second one is refused rather than searched. |
| to_airport | Destination airport. One IATA code ("BCN"), several separated by commas ("BCN,LIS,ATH"), or a list (["BCN","LIS","ATH"]) -- every shape is accepted and the destinations are compared in the same search. |
| departure_date | Single departure date, "YYYY-MM-DD". |
| departure_date_from | First date of a departure range. |
| departure_date_to | Last date of a departure range. |
| max_stops | Maximum stops per flight. 0 means non-stop only. |
| airline_codes | Restrict to these airline codes, e.g. ["LY"]. |
| exclude_airline_codes | Exclude these airline codes. |
| departure_time_min | Earliest departure hour, 0-23. |
| departure_time_max | Latest departure hour, 0-23. |
| arrival_time_min | Earliest arrival hour, 0-23. |
| arrival_time_max | Latest arrival hour, 0-23. |
| currency | ISO currency code, default "usd". |
| max_price | Only return flights at or below this price. |
| seat_type | 1 economy, 2 premium economy, 3 business, 4 first. |
| passengers | One entry per traveller, not a count: 1 adult, 2 child (aged 2-11), 3 infant on lap, 4 infant in seat, e.g. [1, 1, 2] for two adults and a child. |
| sort_by | "best", "price", or "duration". Applied across all results. |
| limit | Maximum flights to return, after merging and sorting. |
| max_searches | The billed requests this call may make, up or down. |
| use_fallback | Leave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. |
| verbose | Return every field the upstream sends on each fare, and every fare that was selected, with no row bound. |
search_roundtrip_flights
FlightPowers: search round-trip flights · required: from_airport, to_airport · readOnlyHint true · idempotentHint false
FlightPowers round-trip fare search: live prices read from Google Flights, priced as paired legs rather than two separate one-ways.
| from_airport | Origin IATA code, e.g. "TLV". One origin per search; a second one is refused rather than searched. |
| to_airport | Destination airport. One IATA code ("BCN"), several separated by commas ("BCN,LIS,ATH"), or a list (["BCN","LIS","ATH"]) -- every shape is accepted and the destinations are compared in the same search. |
| departure_date | Single outbound date, "YYYY-MM-DD". |
| departure_date_from | First date of an outbound range. |
| departure_date_to | Last date of an outbound range. |
| return_date | Fixed return date. Use this OR nights, not both. |
| nights | Trip length in nights; a number, or a list like [5, 6, 7]. |
| max_departure_stops | Maximum stops on the outbound leg. |
| max_return_stops | Maximum stops on the return leg. |
| departure_airline_codes | Restrict the outbound leg to these airlines. |
| return_airline_codes | Restrict the return leg to these airlines. |
| currency | ISO currency code, default "usd". |
| max_price | Only return trips at or below this total price. |
| seat_type | 1 economy, 2 premium economy, 3 business, 4 first. |
| passengers | One entry per traveller, not a count: 1 adult, 2 child (aged 2-11), 3 infant on lap, 4 infant in seat, e.g. [1, 1, 2] for two adults and a child. |
| sort_by | "best", "price", or "duration". Applied across all results. |
| limit | Maximum trips to return, after merging and sorting. |
| max_searches | The billed requests this call may make, up or down. |
| use_fallback | Leave unset. Switches the search to a second, independent flight data source instead of the usual Google Flights page read. |
| verbose | Return every field the upstream sends on each fare, and every fare that was selected, with no row bound. |
idempotentHint is false on purpose: a fare search is a live lookup, and a client that caches it would hand you an old price.
What it costs
Free to try, $10 for the big scans
Try it free
free-trial.flightpowers.com/mcp: Google sign-in, no key, 50 searches a day and 250 a month, one sponsored card per result.
PRO on your key
$10 a month for 2,500 searches, 150 a minute, no ads. A month at three trip lengths is 93 searches, so PRO covers about 26 of them.
Bigger plans
ULTRA $25 for 10,000, MEGA $50 for 25,000. Billing runs on RapidAPI, month to month. All plans.
More questions
- Is there a free flights MCP?
- Yes, free-trial.flightpowers.com/mcp: sign in with Google and you get the same flight and hotel tools with no key, 50 searches a day and 250 a month, with one labelled sponsored card on each result. It is the place to try the tools. For anything you ship, use the ad-free server on this page with your own RapidAPI key.
- What does a search cost on my key?
- One date and destination combination is one request on your RapidAPI plan. The run on this page covered 3 departure dates and 2 destinations, so it billed 6. PRO is $10 for 2,500 searches a month; BASIC is free with 10 a month, enough to check the setup works.
- Can it search a whole month?
- Yes, in one call. departure_date_from and departure_date_to set the range and nights takes a list of trip lengths, so a month at three trip lengths is one tool call that prices 93 combinations. The server says how many it searched in search_coverage.
- Does it book flights?
- No. Every fare carries a buy_link that opens Google Flights on that itinerary, and the booking happens there.
Keep going
Where to next
Both MCP servers
The hub: flights and hotels, every way to connect
Hotel MCP server
Live Booking.com rates for the same clients
Travel MCP servers compared
11 servers, read on the same day
Setup: Claude
Desktop, Code and claude.ai
Setup: Cursor
One block in .cursor/mcp.json
Setup: ChatGPT
Developer-mode connectors
Flights API (REST)
The same data over plain HTTP
Status
The uptime probe and nightly tests
The server code is mirrored at github.com/mtnrabi/google-flights-mcp.
Ask your assistant for a fare
Add the URL, sign in with Google, and ask for a month of fares to two cities. Google's verdict on the price comes back with the fares.
Free tier: 10 requests/month. No card to try.
Docs: the Flights API and the MCP servers.