Skip to main content
Glama
Google Flights MCP

Google Flights MCP

by pisanuw

Google Flights MCP

CI

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_flights

Search between two airports (one-way or round-trip), with cabin class, passengers, stops, and price filters.

search_multi_city

Search a multi-city itinerary (2+ legs). Returns leg-1 options; advance leg by leg with get_return_flights.

get_return_flights

Select a flight via its departure_token to see the next set of options (round-trip return, or next multi-city leg).

get_booking_options

For a chosen flight (via its booking_token), list where to book and the price at each provider.

track_price

Save a search as a price watch, with an optional target price and label.

list_price_watches

List all watches and their most recent recorded price.

check_prices

Re-check every watch now, record prices, and report drops / target hits.

get_price_history

Show the recorded price history for a watch.

untrack_price

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

  1. Get a SerpAPI key (free tier: 100 searches/month) at https://serpapi.com/manage-api-key.

  2. Add the key:

    cp .env.example .env      # then edit .env and set SERPAPI_API_KEY=...
  3. Install dependencies (uv provisions an isolated Python ≥3.10):

    uv sync
  4. Register 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.py

    Restart 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.py

Schedule 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 price is 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_flights with a departure_token to advance.

  • deep_search=true matches google.com/travel/flights more closely but is slower.

  • Every search (including each watch re-check) counts against your SerpAPI quota.

Available Tools

9 tools
check_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

    A4/5.0

    Scored across 9 tools

    Disambiguation5/5

    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.

    Naming Consistency5/5

    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.

    Tool Count5/5

    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.

    Completeness4/5

    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

    ActivityInactive
    ResponsivenessOutdated data

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables 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 PyPI
      3,490
      MIT
    • F
      license
      Not graded
      quality
      D
      maintenance
      Enables AI assistants to search for real-time flights between airports using the SearchAPI.io Google Flights API, returning prices, schedules, airlines, and carbon emissions.
      -
    • F
      license
      A
      quality
      B
      maintenance
      Enables 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
      -