
Google Flights
io.github.andreacappelletti97Published by GitHub account andreacappelletti97v1.0.3Updated Oct 24, 2026
MCP server for Google Flights: search, price tracking, cabin comparison, emissions, and more.
Overview
A local MCP server that lets an assistant search Google Flights, compare fares and cabins, track prices, and analyze airports, layovers and emissions.
- What you can do
- Search one-way, round-trip and multi-city itineraries with prices, airlines, stops, aircraft, seat pitch, CO2 emissions and price context, and generate booking links for a route. Compare daily prices across a calendar, scan date ranges for the cheapest departures, and compare economy through first class on the same route. Record and review price observations for tracked routes, stored locally, and list tracked routes with their last known price. Look up airports by city, name, IATA code or country, and find alternative airports within a radius. Assess layover quality and connection risk for multi-stop flights.
- When to use it
- Useful when planning air travel and you want an assistant to compare fares, find cheaper dates or nearby airports, weigh cabin classes, check emissions or connection risk, or keep an eye on a route's price over time.
- Requirements
- Runs locally as a Node.js process, typically launched with npx or from a built build. No API key or account is required. It needs network access to Google's undocumented Flights endpoint. Price tracking writes a SQLite database under the user's home directory. Desktop MCP clients only.
Installation
In SourceWeft
- Open Google Flights in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
google-flights-mcp
[npm version] [CI] [License: ISC]
The most feature-rich MCP server for Google Flights. No API key required.
12 tools for searching flights, tracking prices, comparing cabins, analyzing layovers, and more, all powered by real-time Google Flights data.
Works with Claude Desktop, Claude Code, Cursor, and any MCP-compatible client.
Features no other Google Flights MCP has
- Carbon emissions per flight and per leg (CO2 in kg)
- Price context: Google's own assessment of whether a price is low, typical, or high
- Price tracking: track prices over time with SQLite persistence, detect drops and trends
- Calendar heatmap: the cheapest fare for each day of a window of up to 31 days
- Cabin class comparison: economy vs premium vs business vs first, side by side
- Nearby airport suggestions: find cheaper alternatives (e.g., EWR/LGA near JFK)
- Layover analysis: connection time risk assessment (tight/comfortable/overnight)
- Aircraft & seat details: Boeing 787 vs 777, seat pitch in inches
- Google Flights URLs: direct booking links users can click
What you can ask
- "Find nonstop flights from JFK to London next month"
- "What's the cheapest week to fly SFO to Tokyo?"
- "Compare economy vs business class for LAX to Paris"
- "Are there cheaper airports near JFK I should check?"
- "Track the price of SFO to NRT on June 15 and alert me if it drops"
- "Show me the emissions for flights from SFO to Tokyo"
- "Analyze the layovers for connecting flights from SFO to Bangkok"
Quick start
Option 1: npx (no install)
Works immediately with Claude Code:
Or with Claude Desktop, add to your claude_desktop_config.json:
Option 2: Install from source
Then connect to Claude Code:
Or Claude Desktop (claude_desktop_config.json):
Restart your MCP client. You should see 12 flight tools available.
Tools (12)
Search
Price intelligence
Airport tools
Utility
Example output
search_flights (with emissions and price context)
get_calendar_heatmap
find_nearby_airports
How it works
There is no official Google Flights API. This server loads Google Flights' public search page and reads the result data the page embeds, the same data Google's internal FlightsFrontendService returns. It extracts not just flights, but hidden metadata: emissions, price assessments, daily price calendars, aircraft types, and seat details.
Reliability
- Caching: 5-minute TTL cache, identical searches don't hit Google twice
- Retry with backoff: exponential backoff + jitter on 429/5xx errors, honors
Retry-Afterheaders - Circuit breaker: stops requests after 5 consecutive failures, auto-recovers after 30s
- Structural validation: clear errors when Google changes their response format
- Paced fan-out: round trips and calendars load several pages; they go out a few at a time (
GF_MCP_MULTILEG_CONCURRENCY,GF_MCP_CALENDAR_CONCURRENCY) - TLS mitigation:
undiciwith browser-like headers + rotating User-Agents,fetchfallback
Price tracking
Price history is stored in SQLite at ~/.google-flights-mcp/prices.db. Each call to track_price records the current cheapest price and reports the trend compared to previous observations.
Development
Design
Fully functional TypeScript codebase:
- No mutation: all types
readonly, nolet/var/.push()/forloops - Result monad: errors are values (
Result<T, E>), not exceptions - Pure/IO separation: pure transforms are separate from network and disk IO
- Composition:
pipe()+flatMap()for chaining fallible operations
See CLAUDE.md for architecture details and the Google Flights response format reference.
Limitations
- No official API: reads data embedded in Google's public search page, which can change at any time. Structural validation makes breakages obvious.
- Multi-city is unavailable: since August 2026 Google's internal flight endpoints only accept requests signed by its own page JavaScript, and the public page carries no rows for multi-city trips.
- Calendars cost one page per day: Google's single-call calendar endpoint is gated the same way, so
get_calendar_heatmapandget_price_insightssearch each day, up to 31 days. - Not encoded:
maxPriceandmaxDurationare applied to the results after the search, so a capped search can return fewer options. - Rate limiting: Google may throttle heavy use. Built-in retry and circuit breaker handle transient issues.
- Prices are estimates: prices reflect query time; they can change before booking.
- Currency: determined by Google based on IP/locale.
Contributing
- Fork the repo
- Create a feature branch
- Make your changes
- Run
npm run checkto verify - Open a PR
License
ISC
Source: README.md at commit 9e26198
Tools
0Version history
1- v1.0.3LatestSep 16, 2026
Score
50% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts