Google Flights MCP
Provides flight search capabilities via Google Flights, including one-way and round-trip searches, multi-city itineraries, cabin class selection, price tracking, and booking options.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Google Flights MCP Search round-trip flights from SEA to NRT in November under $1000."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Google Flights MCP
An MCP server that lets Claude search Google
Flights and track fares over time. Google has no official flights API, so this
server calls SerpAPI's google_flights
engine, which runs the search server-side and returns structured JSON.
Tools
Tool | What it does |
| Search between two airports (one-way or round-trip), with cabin class, passengers, stops, and price filters. |
| Search a multi-city itinerary (2+ legs). Returns leg-1 options; advance leg by leg with |
| Select a flight via its |
| For a chosen flight (via its |
| Save a search as a price watch, with an optional target price and label. |
| List all watches and their most recent recorded price. |
| Re-check every watch now, record prices, and report drops / target hits. |
| Show the recorded price history for a watch. |
| Delete a watch and its history. |
Cabin class
search_flights, search_multi_city, and track_price all accept
travel_class: economy (default), premium_economy, business,
first. Just ask, e.g. "business class SEA to London."
Related MCP server: flight-search-mcp-server
Setup
Get a SerpAPI key (free tier: 100 searches/month) at https://serpapi.com/manage-api-key.
Add the key:
cp .env.example .env # then edit .env and set SERPAPI_API_KEY=...Install dependencies (uv provisions an isolated Python ≥3.10):
uv syncRegister with Claude Code (user scope = available in every session):
claude mcp add google-flights -s user -- \ uv run --directory /Users/pisan/bitbucket/pisanuw/google-flights python server.pyRestart Claude Code (or run
/mcp) to pick up the tools.
Example prompts
"Nonstop round-trip SEA→NRT, Oct 3 back Oct 17, under $1200."
"Business class one-way SEA to LHR on Nov 15."
"Multi-city: SEA→NRT Oct 3, NRT→ICN Oct 10, ICN→SEA Oct 17."
"Track SEA→LAX Nov 15–20 and alert me if it drops below $120."
"Check my flight watches" / "show the price history for watch 2."
Price alerts (background checking)
check_prices runs on demand (when you ask Claude). For hands-off alerts, run
the standalone checker on a schedule; it records prices and fires a native macOS
notification on any drop or target hit:
uv run python check_watches.pySchedule it with launchd or cron (e.g. hourly). Watches and history are stored
in watches.db (gitignored) next to the server, so the scheduled checker and
the MCP tools share the same data.
Notes
Airports are IATA codes (
SEA,NRT,LHR). Multiple origins can be comma-separated (SEA,PDX).For round trips, each result's
priceis the total round-trip fare.Multi-city is leg-by-leg: the first response is leg-1 options; the shown price is the full-itinerary estimate. Use
get_return_flightswith adeparture_tokento advance.deep_search=truematches google.com/travel/flights more closely but is slower.Every search (including each watch re-check) counts against your SerpAPI quota.
Available Tools
9 toolscheck_pricesA
Re-check every price watch now, record the prices, and report any drops or target hits. Uses one SerpAPI search per watch.
Inputs: no named parameters.
get_booking_optionsA
List where to book a selected flight and the price at each provider.
Pass a booking_token from a search_flights (one-way) or get_return_flights
result.
Inputs: booking_token (required).
get_price_historyB
Return the recorded price history (timestamp, price) for a watch.
Inputs: watch_id (required).
get_return_flightsA
List the next set of options after selecting a flight.
Pass a departure_token from a round-trip search_flights result (to see
return options) or a multi-city search_multi_city result (to advance to the
next leg). Each returned option has a booking_token usable with
get_booking_options.
Inputs: departure_token (required), max_results.
list_price_watchesA
List all saved price watches with their most recent recorded price.
Inputs: no named parameters.
search_flightsA
Search Google Flights (via SerpAPI) between two airports.
Args:
departure_id: Origin IATA airport code, e.g. "SEA". Multiple origins may
be comma-separated, e.g. "SEA,PDX".
arrival_id: Destination IATA airport code, e.g. "NRT".
outbound_date: Departure date as YYYY-MM-DD.
return_date: Return date as YYYY-MM-DD. Required when trip_type is
"round_trip"; ignored for "one_way".
trip_type: "round_trip" (default) or "one_way".
travel_class: Cabin class.
adults, children, infants_in_seat, infants_on_lap: Passenger counts.
stops: Filter by number of stops.
max_price: Maximum total price in currency.
currency: ISO 4217 currency code (default USD).
max_results: Cap on options returned per bucket (best / other).
deep_search: Slower, but matches google.com/travel/flights more precisely.
For a round trip, each option's price is the total round-trip fare and its
departure_token can be passed to get_return_flights to see return options.
Inputs: arrival_id (required), departure_id (required), outbound_date (required), stops, +11 more.
search_multi_cityA
Search a multi-city Google Flights itinerary (2+ separate legs).
Args: legs: Ordered list of leg objects, each with "departure_id", "arrival_id", and "date" (YYYY-MM-DD). For example: [{"departure_id": "SEA", "arrival_id": "NRT", "date": "2026-10-03"}, {"departure_id": "NRT", "arrival_id": "ICN", "date": "2026-10-10"}, {"departure_id": "ICN", "arrival_id": "SEA", "date": "2026-10-17"}] travel_class, adults, children, infants_in_seat, infants_on_lap, stops, max_price, currency, max_results, deep_search: as in search_flights.
Each option's departure_token can be passed to get_return_flights to
advance to the next leg's options.
Inputs: legs (required), stops, adults, children, +7 more.
track_priceA
Start tracking the price of a route over time.
Saves the search as a watch and records its current lowest price. Re-check
with check_prices (or the scheduled checker) to log price history and get
alerted on drops. Set target_price to be alerted when it falls to/below
that amount. label is a friendly name shown in alerts and listings.
Inputs: arrival_id (required), departure_id (required), outbound_date (required), label, +7 more.
untrack_priceA
Delete a price watch (and its recorded history) by id.
Inputs: watch_id (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool has a clearly distinct purpose: search_flights and search_multi_city handle different search modes, get_return_flights advances itineraries, get_booking_options retrieves booking providers, and the price-tracking tools (track, list, untrack, check, get_history) cover the full watch lifecycle without overlap.
All tool names follow a consistent verb_noun snake_case pattern, such as search_flights, track_price, get_price_history, and untrack_price. Verb choices are appropriate and parallel (track/untrack, get/list/check), making the set predictable and easy to navigate.
Nine tools is well-scoped for the server's purpose of flight search and price tracking. Every tool serves a clear need, and there is no bloat or redundancy.
The tool surface covers the entire flight discovery flow (search, multi-city, return options, booking) and price watch CRUD operations. The only minor gap is the lack of an update operation for an existing price watch, but users can untrack and re-track to adjust targets, so it is easily worked around.
Maintenance
Related MCP Connectors
Google Flights for any route and date: price, airlines, flight numbers, times, stops, layovers, aircraft, legroom and CO2. One way or round trip, any cabin and currency. Runs on Apify, $0.20 per 1,000 flights.
Google Flights fares, airlines, stops and durations for any route. Paid, on Apify's hosted MCP.
Search award flights and cash fares, optimize points, and predict fares inside ChatGPT and Claude.
Google Flights fares for any route and date, plus a tracker that flags price drops.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables flight search and fare calendar exploration by interacting with Google Flights' API, supporting detailed filters for origin, destination, dates, cabin class, airlines, and more.6,847 PyPI3,490MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search for real-time flights between airports using the SearchAPI.io Google Flights API, returning prices, schedules, airlines, and carbon emissions.-
- AlicenseAqualityBmaintenanceEnables searching and analyzing Google Flights data including prices, emissions, cabin classes, layovers, and price tracking, all without an API key.12225 npm5ISC
- FlicenseAqualityBmaintenanceEnables LLMs to search Google Flights for one-way and round-trip flights, with configurable filters for airports, dates, passengers, cabin, stops, airlines, price, bags, and more, returning booking links and detailed trip information.1-