Skip to main content
Glama
andreacappelletti97

google-flights-mcp

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: 60 days of daily prices in a single API call

  • 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

Related MCP server: Google Flights MCP Server

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:

claude mcp add google-flights -- npx -y google-flights-mcp

Or with Claude Desktop, add to your claude_desktop_config.json:

{
  "mcpServers": {
    "google-flights": {
      "command": "npx",
      "args": ["-y", "google-flights-mcp"]
    }
  }
}

Option 2: Install from source

git clone https://github.com/andreacappelletti97/google-flights-mcp.git
cd google-flights-mcp
npm install
npm run build

Then connect to Claude Code:

claude mcp add google-flights node /absolute/path/to/google-flights-mcp/dist/index.js

Or Claude Desktop (claude_desktop_config.json):

{
  "mcpServers": {
    "google-flights": {
      "command": "node",
      "args": ["/absolute/path/to/google-flights-mcp/dist/index.js"]
    }
  }
}

Restart your MCP client. You should see 12 flight tools available.

Tools (12)

Tool

Description

search_flights

One-way & round-trip search. Returns prices, airlines, durations, stops, aircraft, seat pitch, CO2 emissions, and price context.

search_multi_city

Multi-leg itinerary search (2-5 segments).

Price intelligence

Tool

Description

get_calendar_heatmap

Full calendar of daily prices (~60 days) from a single API call. Cheapest dates at a glance.

get_price_insights

Scan a date range to find cheapest departure dates (multiple API calls for precision).

compare_cabin_classes

Compare economy, premium economy, business, and first class prices for the same route.

track_price

Record current price and report trend (dropping/rising/stable). Persists in SQLite.

get_price_history

View all recorded price observations for a tracked route.

list_tracked_routes

List all routes being price-tracked with last known price.

Airport tools

Tool

Description

lookup_airport

Search 8,800+ airports by city, name, IATA code, or country.

find_nearby_airports

Find alternative airports within a radius (default: 200km). Uses Haversine distance.

Utility

Tool

Description

get_flight_url

Generate a direct Google Flights booking URL.

analyze_layovers

Analyze connection quality for multi-stop flights. Reports risk level, connection type, aircraft.

Example output

search_flights (with emissions and price context)

Flights from SFO to NRT on 2026-06-15:
Price assessment: HIGH ($294 above typical). Range: $500 - $700, typical: $577

Flight 1: $874 | 11h 15m | 0 stop(s) | CO2: 428kg
  ZG 25: SFO -> NRT (11h 15m) [aircraft: Boeing 787, seat pitch: 31 inches, CO2: 428kg]

Flight 2: $1310 | 11h 5m | 0 stop(s) | CO2: 545kg
  NH 7: SFO -> NRT (11h 5m) [aircraft: Boeing 777, seat pitch: 34 inches, CO2: 545kg]

get_calendar_heatmap

Price calendar: SFO -> NRT
61 days of data

Cheapest: $384 (2026-02-12)
Most expensive: $870 (2026-04-13)
Average: $632

  2026-02:
    12: $384     ***
    13: $384     ***
    ...
    20: $540     ***
  2026-03:
    06: $609      *
    ...
    20: $689

find_nearby_airports

Airports near JFK within 150km:

  LGA - LaGuardia Airport (New York, US), 17km away
  EWR - Newark Liberty International Airport (Newark, US), 33km away
  HPN - Westchester County Airport (White Plains, US), 48km away

How it works

There is no official Google Flights API. This server reverse-engineers Google's internal FlightsFrontendService endpoint. 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-After headers

  • Circuit breaker: stops requests after 5 consecutive failures, auto-recovers after 30s

  • Structural validation: clear errors when Google changes their response format

  • TLS mitigation: undici with browser-like headers + rotating User-Agents, fetch fallback

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

npm install         # Install dependencies
npm run build       # Build with tsup
npm test            # Run tests (85 tests)
npm run lint        # ESLint with FP rules (no-let, immutable-data, no-loop-statements)
npm run typecheck   # TypeScript strict type checking
npm run check       # typecheck + lint + test (the full CI pipeline)
npm run dev         # Build in watch mode

Design

Fully functional TypeScript codebase:

  • No mutation: all types readonly, no let/var/.push()/for loops

  • 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: uses an undocumented Google endpoint that could change at any time. Structural validation makes breakages obvious.

  • 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

  1. Fork the repo

  2. Create a feature branch

  3. Make your changes

  4. Run npm run check to verify

  5. Open a PR

License

ISC

Available Tools

12 tools
analyze_layoversA

Analyze layover quality for connecting flights. Reports connection time, risk level (tight/comfortable/long), and aircraft details.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesDeparture airport IATA code
cabinClassNoeconomy
maxResultsNo
destinationYesArrival airport IATA code
departureDateYesDeparture date (YYYY-MM-DD)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Without annotations, the description accurately conveys the tool's behavior: it is read-only and reports layover details. However, it omits details such as how risk level is defined or any dependencies on external data, which could affect agent expectations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loading the tool's purpose and immediately listing the outputs. Every word contributes to understanding without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (5 parameters, no output schema), the description adequately explains the return values (connection time, risk level, aircraft details). However, it does not mention how maxResults or cabinClass affect results, leaving some ambiguity about output volume and scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description does not add meaning to the parameters beyond what is in the schema. With 60% schema description coverage (origin, destination, departureDate have descriptions; cabinClass and maxResults do not), the description fails to clarify the role of these parameters in the analysis, earning a baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool analyzes layover quality for connecting flights, and reports connection time, risk level, and aircraft details. This distinguishes it from sibling tools like search_flights or get_price_history, which cover different aspects of flight information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not specify prerequisites or scenarios where this tool should be preferred, leaving the agent to infer its use case solely from the tool name and purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

compare_cabin_classesA

Compare prices across economy, premium economy, business, and first class for the same route in one call.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNo
originYesDeparture airport IATA code
maxStopsNoMax stops (0=nonstop)
destinationYesArrival airport IATA code
departureDateYesDeparture date (YYYY-MM-DD)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must bear full burden for behavioral disclosure. It only states it 'compares prices' with no mention of side effects, permissions, or data freshness. As a read-only tool, it lacks explicit safety guarantees. The description is too sparse.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, no fluff. Every word adds value: verb, resource, scope ('same route in one call'). Easily scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no description of return values. The description minimally covers the tool's purpose but lacks detail on what the response contains (e.g., price for each class, currency, provider). For a tool that is likely used in decision-making, this is a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 80% (covers origin, destination, departureDate, maxStops, adults). The description adds meaning beyond schema by specifying the cabin classes compared (economy, premium economy, business, first class), which is not in the schema. This helps the agent understand the tool's specific output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb 'Compare' and clearly identifies the resource: prices across multiple cabin classes (economy, premium economy, business, first class) for the same route in one call. This distinguishes it from sibling tools like search_flights, which likely handles a single cabin class.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus siblings like search_flights, get_price_insights, or get_calendar_heatmap. The description implies it's for comparing multiple classes at once, but does not state when NOT to use it or provide alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_nearby_airportsA

Find alternative airports near a given airport within a radius. Useful for finding cheaper flights from nearby cities.

ParametersJSON Schema
NameRequiredDescriptionDefault
airportYesIATA code of the airport to search around
radiusKmNoSearch radius in kilometers (default: 200)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description fails to disclose behavioral traits such as output format, ordering, possible limitations, or any side effects. The description is too brief to compensate for the missing annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise with two sentences, front-loading the core purpose and following with a use case. Every word earns its place with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple tool with 2 parameters and no output schema, the description provides the essential purpose but omits details about the return format (e.g., list of codes or objects with distances) and any additional context needed for an agent to use the results effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters. The description adds marginal value by repeating the concept of radius but does not clarify parameter formats or constraints beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Find alternative airports') and the resource ('near a given airport within a radius'). It distinguishes itself from sibling tools like lookup_airport and search_flights by focusing on finding nearby alternatives for cheaper flights.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage ('Useful for finding cheaper flights from nearby cities') but does not provide explicit when-to-use or when-not-to-use guidance, nor does it compare with sibling tools like search_flights or get_price_history.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_calendar_heatmapA

Get a full calendar of daily flight prices (~60 days). Single API call, no scanning. Shows cheapest dates at a glance.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesDeparture airport IATA code
cabinClassNoeconomy
destinationYesArrival airport IATA code
departureDateYesA date within the month to search (YYYY-MM-DD). Google returns ~60 days of prices around this date.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses the scope (~60 days) and mentions it's a single API call, but lacks information on data freshness, pricing sources, or any potential limitations (e.g., incomplete coverage for certain dates).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no filler. Front-loaded with core action and key attributes ('~60 days', 'Single API call'). Every word adds utility.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description does not specify the output format (e.g., list of dates with prices), which is important for an agent to use the result. With no output schema, this gap hinders full understanding. Sibling tools may offer more detail, but for this tool it's incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema covers 75% of parameters with descriptions. The description adds value by explaining that departureDate is used to retrieve ~60 days of prices around that date, which is not clear from the schema alone. cabinClass default is noted but not elaborated.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it 'Get a full calendar of daily flight prices (~60 days)' and distinguishes itself by noting 'Single API call, no scanning,' which differentiates it from sibling tools like search_flights or get_price_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies it's for a broad overview ('Shows cheapest dates at a glance'), but it does not explicitly state when to use this tool versus alternatives like search_flights or get_price_history. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_flight_urlB

Generate a direct Google Flights URL for a route. Users can click to view and book flights in their browser.

ParametersJSON Schema
NameRequiredDescriptionDefault
stopsNoMax stops (0=nonstop)
adultsNo
originYesDeparture airport IATA code
cabinClassNoeconomy
returnDateNoReturn date (YYYY-MM-DD) for round-trip
destinationYesArrival airport IATA code
departureDateYesDeparture date (YYYY-MM-DD)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the tool generates a URL and can be clicked to view/book, but does not mention any behavioral traits like error handling, rate limits, or read-only nature. It is minimally adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, no fluff, and front-loaded with the primary action. Every word adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity and schema richness, the description is mostly complete. It implies the return is a URL and that it supports one-way/round-trip based on returnDate. Minor omission: no explicit mention of return format or that origin/destination must be IATA codes (schema handles that).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 71%, so baseline is 3. The description adds no extra meaning beyond the schema's parameter descriptions, which already document most parameters clearly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it generates a Google Flights URL for a route, using a specific verb and resource. It implies differentiation from sibling tools like search_flights, which return flight data, but does not explicitly distinguish them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus its 11 siblings, nor does it mention when not to use it. It only implies usage for generating a URL, leaving the agent to infer context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_historyA

View the recorded price history for a tracked route. Shows all past observations and the trend.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesDeparture airport IATA code
cabinClassNoeconomy
destinationYesArrival airport IATA code
departureDateYesTravel date (YYYY-MM-DD)

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries full burden. It indicates a read operation ('view') and mentions 'all past observations and the trend', but lacks details on data freshness, pagination, or limits. For a simple read, this is adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. It front-loads the action and resource efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description hints at the return shape ('all past observations and the trend'), but could be more specific (e.g., includes date and price fields). Still, it covers the core functionality for a simple read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 75% (3 of 4 parameters have descriptions). The tool description adds no extra meaning beyond the schema's parameter descriptions. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'View' and the resource 'recorded price history for a tracked route', distinguishing it from sibling tools like search_flights or get_price_insights.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies that this tool is for viewing past price data but provides no explicit guidance on when to use it vs. alternatives, nor any exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_price_insightsB

Find the cheapest travel dates for a route within a date range. Scans multiple departure dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNo
originYesDeparture airport IATA code
endDateYesEnd of date range (YYYY-MM-DD)
startDateYesStart of date range (YYYY-MM-DD)
cabinClassNoeconomy
destinationYesArrival airport IATA code

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full burden. It only states the tool 'scans multiple departure dates' but does not disclose behavior such as whether it returns prices, dates only, or real-time vs. cached data. Lacks transparency for an agent to predict side effects or limitations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, immediately stating the core function. No wasted words, front-loaded with actionable information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Tool has 6 parameters, no output schema, and no annotations. The description fails to specify return format (e.g., prices, dates, or both), how scanning works, or any prerequisite knowledge. Incomplete for an agent to use effectively without additional context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 67%, with adults and cabinClass lacking descriptions. The tool description does not add any parameter-specific details beyond what the schema already provides. No compensation for missing parameter descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Find the cheapest travel dates for a route within a date range.' It uses a specific verb ('Find') and resource ('cheapest travel dates'), and distinguishes itself from sibling tools like search_flights by indicating it scans multiple departure dates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for finding cheapest dates across a range, but lacks explicit guidance on when not to use it (e.g., for specific flight booking) or alternatives like search_flights or get_calendar_heatmap. No exclusion criteria or context provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_tracked_routesA

List all routes currently being price-tracked, with their last known price and number of observations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It indicates the tool returns last known price and observation count, implying a read-only operation. However, it does not mention authentication requirements, rate limits, or potential pagination for many routes. This is adequate but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence that is clear, front-loaded with the verb and resource, and concise. Every part of the sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with no parameters and no output schema, the description is fairly complete: it states what is listed and what data is returned. It lacks mention of ordering or if all routes are returned at once, but given the simplicity, a 4 is appropriate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and schema coverage is 100% (trivially). Since there are no parameters to describe, the description adds no parameter information, but the baseline expectation for a no-param tool is 4. The description appropriately focuses on output.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List' and the resource 'all routes currently being price-tracked', and specifies the output fields (last known price, number of observations). This distinguishes it from sibling tools like track_price (which adds routes) and get_price_history (history of a specific route).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool vs alternatives is provided. The context implies it is for getting an overview of tracked routes, but there is no 'use when' or 'instead of' wording. A 3 reflects this lack of explicit usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lookup_airportA

Look up airport IATA codes by city name, airport name, or country. Searches 8,800+ airports.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCity name, airport name, IATA code, or country code to search for

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full transparency burden. It mentions searchable fields (city, airport, country) but omits details like case sensitivity, partial matching behavior, output format, or error handling. Basic transparency is present, but richer context would aid the agent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loading the core action, and contains no extraneous information. Every word contributes to understanding the tool's function and scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple lookup tool with a single parameter and no output schema, the description adequately covers the basic purpose. It could mention that the result is a list of matches or provide a typical output shape, but it remains sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description adds value by stating the corpus size (8,800+ airports). The parameter's purpose is fully documented in the schema, and the description reinforces it without redundancy.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Look up airport IATA codes by city name, airport name, or country. Searches 8,800+ airports.' It uses a specific verb ('look up') and resource ('airport IATA codes'), and the scope is quantified. This effectively distinguishes it from sibling tools like search_flights or find_nearby_airports.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives such as find_nearby_airports is provided. The intended use is implied by the description, but an agent would benefit from knowing that this is for IATA code resolution specifically, not for finding airports by location or other criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_flightsA

Search for one-way or round-trip flights. Returns prices, airlines, durations, stops, aircraft, emissions, and price context (low/typical/high).

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNoNumber of adult passengers
originYesDeparture airport IATA code (e.g., JFK)
sortByNoSort results bybest
infantsNoNumber of infant passengers
childrenNoNumber of child passengers
maxStopsNoMaximum number of stops (0=nonstop, 1, 2). Omit for any.
cabinClassNoCabin classeconomy
maxResultsNoMaximum number of results to return
returnDateNoReturn date in YYYY-MM-DD format (makes it round-trip)
destinationYesArrival airport IATA code (e.g., NRT)
departureDateYesDeparture date in YYYY-MM-DD format

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It lists return fields but does not disclose if the operation is read-only, any side effects, error conditions, auth needs, or rate limits. The behavior is implied as read-only with no side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, concise, and front-loaded with the primary action. Every part adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with 11 parameters and no output schema, the description covers the purpose and return values well. However, it lacks details on pagination or sorting behavior, but given the schema richness, it is mostly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description adds context about one-way vs round-trip (via returnDate) but does not provide additional parameter semantics beyond what the schema already contains.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for flights, specifies one-way or round-trip, and lists the returned data (prices, airlines, durations, etc.). This differentiates it from siblings like search_multi_city or get_price_insights.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for standard flight searches but does not explicitly provide when to use this tool versus alternatives, nor does it mention when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_multi_cityB

Search for multi-city (multi-leg) flight itineraries. Supports 2-5 segments.

ParametersJSON Schema
NameRequiredDescriptionDefault
adultsNo
infantsNo
childrenNo
maxStopsNo
segmentsYesFlight segments (2-5 legs)
cabinClassNoeconomy
maxResultsNo

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It only states that 2-5 segments are supported, without mentioning error handling, performance characteristics, or what happens if constraints are violated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is very concise at two sentences, but this brevity comes at the cost of missing essential details. It is not optimally informative; the second sentence adds minimal value beyond the first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 7 parameters, no output schema, and no annotations, the description is far from complete. It does not describe the return format, result limits beyond 'maxResults', or any ordering/filtering behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is only 14%, and the description adds no information beyond the schema's existing parameter descriptions. Key parameters like 'adults', 'cabinClass', and 'maxResults' are left unexplained, requiring the agent to infer meaning from names alone.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches for multi-city (multi-leg) flights and specifies the supported number of segments (2-5). This distinguishes it from sibling tool 'search_flights' which likely handles simpler itineraries.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use for multi-city itineraries with 2-5 segments but provides no guidance on when not to use this tool or mention of alternatives like 'search_flights' for single-leg or round-trip searches.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

track_priceA

Track a flight price over time. Records the current cheapest price and reports if it has gone up, down, or stayed stable since last check.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesDeparture airport IATA code
cabinClassNoeconomy
destinationYesArrival airport IATA code
departureDateYesTravel date (YYYY-MM-DD)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses that the tool records the cheapest price and reports changes since the last check, but it does not detail side effects (e.g., overwriting previous data), authentication needs, rate limits, or response structure. Some valuable behavioral context is provided but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences, no waste. It is front-loaded with the main action and adds specific detail in the second sentence. Every part earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 4 parameters, no output schema, and no annotations, the description is somewhat complete but misses important context: what 'since last check' implies (requires prior call?), the return format, and whether it is a write operation. It is sufficient for simple scenarios but lacks depth.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 75% (3 of 4 parameters have descriptions). The description adds no additional meaning beyond the schema for origin, destination, and departureDate, and does not mention cabinClass at all. Since coverage is high but not complete, a score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool tracks a flight price over time, recording the current cheapest price and reporting changes. It uses specific verbs and resources, distinguishing it from siblings like search_flights and get_price_history.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for tracking a specific flight price over time but provides no explicit guidance on when to use this tool versus alternatives such as get_price_history or get_price_insights. Context is clear but exclusions are absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 12 tool updatesv1.0.3
    • First observedanalyze_layovers
    • First observedcompare_cabin_classes
    • First observedfind_nearby_airports
    • First observedget_calendar_heatmap
    • First observedget_flight_url
    • First observedget_price_history
    • First observedget_price_insights
    • First observedlist_tracked_routes
    • First observedlookup_airport
    • First observedsearch_flights
    • First observedsearch_multi_city
    • First observedtrack_price

TDQS

A3.9/5.0
Disambiguation5/5

Each tool targets a distinct task: searching flights, multi-city, price history, insights, calendar, cabin comparison, tracking, route listing, airport lookup, nearby airports, URL generation, and layover analysis. No significant overlap.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (e.g., search_flights, get_price_history, analyze_layovers), making naming predictable and clear.

Tool Count5/5

12 tools is well-scoped for a flight search and tracking service, covering core functionalities without being excessive or lacking.

Completeness4/5

The tool set covers searching (one-way, round-trip, multi-city), price tracking, airport lookup, and layover analysis. Minor gaps exist, such as no tool to stop tracking a route, but overall it's comprehensive.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Integrates Google Flights data into AI workflows for natural language flight searches, price comparisons, flexible date searches, and multi-city itinerary planning with support for various cabin classes and passenger types.
    9
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    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.
    3,128
    MIT

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/andreacappelletti97/google-flights-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server