Skip to main content
Glama
saikandikatta

cheapflights-mcp

๐Ÿ›ซ CheapFlights MCP

An open-source MCP server that helps you find the cheapest flights with smart suggestions.

Features

  • ๐Ÿ” Search flights โ€” Find cheapest options for any route

  • ๐Ÿ“… Flexible dates โ€” See which dates are cheapest across a month

  • ๐Ÿ’ก Smart suggestions โ€” Nearby airports, date shifts, savings tips

  • ๐Ÿ‘จโ€๐Ÿ‘ฉโ€๐Ÿ‘งโ€๐Ÿ‘ฆ Family pricing โ€” Calculates total for adults + children

  • โšก Fast โ€” Direct Google Flights API access (no scraping)

Install

# Install dependencies
pipx install flights  # provides fli-mcp and fli CLI

# Install this MCP server
pip install cheapflights-mcp

Usage with Claude / Kiro / AI Assistants

Add to your MCP config:

{
  "mcpServers": {
    "cheapflights": {
      "command": "cheapflights-mcp"
    }
  }
}

Then ask your AI:

  • "Find cheapest flights from Melbourne to Tokyo in October for 2 adults and 2 kids"

  • "What are the cheapest dates to fly Sydney to London in January?"

  • "Suggest cheaper alternatives for JFK to NRT on Dec 25"

MCP Tools

Tool

Description

search_flights

Compare flight prices, sorted by cheapest

find_cheapest_dates

Price calendar across a date range

suggest_alternatives

Nearby dates, airports, and route alternatives

Development

git clone https://github.com/YOUR_USERNAME/cheapflights-mcp.git
cd cheapflights-mcp
pip install -e .
cheapflights-mcp  # runs on stdio

Roadmap

  • Multi-source: Add Skyscanner, Kiwi.com APIs

  • Price alerts: Notify when prices drop

  • Destination discovery: "Where can I fly for $500?"

  • Price history: "Is this a good deal?"

  • Booking links: Direct links to book

License

MIT

Available Tools

3 tools
find_airportsSearch AirportsA
Read-onlyIdempotent

Search for airports by city name, airport name, or IATA code.

Use this tool to find airport IATA codes before searching for flights. Supports city names (e.g., "new york" returns JFK, LGA, EWR), airport names (e.g., "heathrow" returns LHR), and IATA codes.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesCity name, airport name, or IATA code (e.g., 'new york', 'heathrow', 'JFK')
limitNoMaximum results to return

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint and idempotentHint, confirming safe read operation. Description adds behavioral context by explaining supported query types and providing examples, without contradicting 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?

Three concise sentences: purpose, usage guidance, and examples. Every sentence adds distinct value with no redundancy.

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

Completeness5/5

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

Input schema fully described, output schema exists, annotations cover safety. Description covers all user-facing aspects including query types and use case, making it complete for a simple lookup tool.

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 coverage is 100% with descriptions for both parameters. Description adds value by offering examples for 'query' (e.g., 'new york', 'heathrow', 'JFK') and clarifying search functionality beyond schema 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?

Description clearly states 'Search for airports' and specifies three distinct input types (city name, airport name, IATA code). Differentiates from sibling tools search_dates and search_flights by focusing on airport lookup for flight context.

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?

Explicitly advises using this tool before searching for flights to find IATA codes. Provides clear usage context but does not include when-not or alternative scenarios.

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

search_datesSearch DatesA
Read-onlyIdempotent

Find the cheapest travel dates between two airports within a date range.

Returns a list of dates with their prices, useful for flexible travel planning. Supports both one-way and round-trip searches.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesDeparture airport IATA code(s), comma-separated for multiple (e.g., 'JFK' or 'JFK,LGA')
destinationYesArrival airport IATA code(s), comma-separated for multiple (e.g., 'LHR' or 'LHR,CDG')
start_dateYesStart of date range in YYYY-MM-DD format
end_dateYesEnd of date range in YYYY-MM-DD format
trip_durationNoTrip duration in days for round-trips
is_round_tripNoSearch for round-trip flights
airlinesNoFilter by airline IATA codes (e.g., ['BA', 'AA'])
cabin_classNoCabin class: ECONOMY, PREMIUM_ECONOMY, BUSINESS, FIRSTECONOMY
max_stopsNoMaximum stops: ANY, NON_STOP, ONE_STOP, TWO_PLUS_STOPSANY
departure_windowNoDeparture time window in 'HH-HH' 24h format (e.g., '6-20')
sort_by_priceNoSort results by price (lowest first)
passengersNoNumber of adult passengers

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true and idempotentHint=true. The description adds that it returns a list of dates with prices, which is consistent, but does not disclose additional behavioral traits like rate limits or data freshness.

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?

Three sentences, front-loaded with main purpose, no extraneous words. Highly efficient.

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 rich schema (100% coverage), annotations, and output schema, the description adequately covers core functionality and return values. Could mention more about filtering options or result format nuances.

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 100%, so baseline is 3. The description only adds context about one-way/round-trip searches, which is already covered by the is_round_trip parameter schema.

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 'find' and resource 'cheapest travel dates between two airports within a date range', differentiating from sibling tools find_airports and search_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 for flexible travel planning and notes support for one-way/round-trip, but does not explicitly guide when to use this tool versus search_flights or provide exclusions.

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

search_flightsSearch FlightsA
Read-onlyIdempotent

Search for flights between two airports on a specific date.

Returns a list of available flights with prices, durations, and leg details. Supports one-way and round-trip searches with various filtering options.

ParametersJSON Schema
NameRequiredDescriptionDefault
originYesDeparture airport IATA code(s), comma-separated for multiple (e.g., 'JFK' or 'JFK,LGA')
destinationYesArrival airport IATA code(s), comma-separated for multiple (e.g., 'LHR' or 'LHR,CDG')
departure_dateYesTravel date in YYYY-MM-DD format
return_dateNoReturn date in YYYY-MM-DD format (omit for one-way)
departure_windowNoDeparture time window in 'HH-HH' 24h format (e.g., '6-20')
airlinesNoFilter by airline IATA codes (e.g., ['BA', 'AA'])
cabin_classNoCabin class: ECONOMY, PREMIUM_ECONOMY, BUSINESS, FIRSTECONOMY
max_stopsNoMaximum stops: ANY, NON_STOP, ONE_STOP, TWO_PLUS_STOPSANY
sort_byNoSort by: TOP_FLIGHTS, BEST, CHEAPEST, DEPARTURE_TIME, ARRIVAL_TIME, DURATION, EMISSIONSCHEAPEST
passengersNoNumber of adult passengers
exclude_basic_economyNoExclude basic economy fares from results
emissionsNoFilter by emissions level: ALL or LESSALL
checked_bagsNoNumber of checked bags to include in price (0, 1, or 2)
carry_onNoInclude carry-on bag fee in displayed price
show_all_resultsNoReturn all available results instead of curated ~30

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and idempotentHint as true, so the description's mention of returning a list of flights is consistent. It adds useful context about return fields (prices, durations, leg details) and trip types (one-way, round-trip), going beyond what annotations provide.

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 three sentences, front-loading the core purpose. Every sentence adds value: the first states the action, the second describes the output, the third notes supported search types and filters. No wasted words.

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 complexity (15 parameters, output schema exists, annotations provided), the description sufficiently covers the main purpose and return format. It does not detail the output schema structure, but that is handled by the output schema itself. Minor gaps in pagination or rate limits are acceptable.

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 100%, meaning all 15 parameters have descriptions in the schema. The description adds no extra parameter-specific meaning beyond referencing 'various filtering options,' so it meets the baseline without exceeding.

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 'Search for flights between two airports on a specific date,' specifying the verb (search), resource (flights), and scope. Sibling tools find_airports and search_dates handle different tasks (airport lookup and date exploration), so this tool is well-distinguished.

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 does not explicitly state when to use this tool versus alternatives like search_dates. It implies usage for flight search with filtering, but lacks explicit guidance on when not to use or when to consider other tools.

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. 3 tool updatesv0.1.0
    • First observedfind_airports
    • First observedsearch_dates
    • First observedsearch_flights

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a distinct purpose: finding airports, exploring cheapest dates, and searching specific flights. No overlap.

Naming Consistency5/5

All tool names follow a verb_noun pattern with consistent verb choices (find/search), making them predictable.

Tool Count4/5

With only 3 tools, it's slightly minimal but covers the core flight search workflow without unnecessary bloat.

Completeness5/5

The tool set covers the full flight search lifecycle: locate airports, find optimal dates, and retrieve specific flights. No obvious gaps.

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

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/saikandikatta/cheapflights-mcp'

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