SkillAgentSearch skills...

fli

Google Flights MCP, CLI and Python Library

Install / Use

claude mcp add punitarani -- npx -y github:punitarani/fli

If the server publishes to npm under a different name, use that package instead — check the repo README.

About this skill
🔌

MCP Server

Model Context Protocol server

Quality Score

88/100

Supported Platforms

Claude Code
Claude Desktop

🛫 Fli - Flight Search MCP Server and Library

Ask DeepWiki

A powerful Python library that provides programmatic access to Google Flights data with an elegant CLI interface. Search flights, find the best deals, and filter results with ease.

🚀 What makes fli special? Unlike other flight search libraries that rely on web scraping, Fli directly interacts with Google Flights' API through reverse engineering. This means:

  • Fast: Direct API access means faster, more reliable results
  • Zero Scraping: No HTML parsing, no browser automation, just pure API interaction
  • Reliable: Less prone to breaking from UI changes
  • Modular: Extensible architecture for easy customization and integration

MCP Server

pipx install flights

# Run the MCP server on STDIO
fli-mcp

# Run the MCP server over HTTP (streamable)
fli-mcp-http  # serves at http://127.0.0.1:8000/mcp/

MCP Demo

Connecting to Claude Desktop

{
  "mcpServers": {
    "fli": {
      "command": "/Users/<user>/.local/bin/fli-mcp"
    }
  }
}

Note: Replace <user> with your actual username. You can also find the path to the MCP server by running which fli-mcp in your terminal.

MCP Tools Available

The MCP server provides two main tools:

| Tool | Description | |----------------------|-------------------------------------------------------------| | search_flights | Search for flights on a specific date with detailed filters | | search_dates | Find the cheapest travel dates across a flexible date range |

search_flights Parameters

| Parameter | Type | Description | |---------------------|--------|-------------------------------------------------------------| | origin | string | Departure airport IATA code(s) — comma-separated for multi | | destination | string | Arrival airport IATA code(s) — comma-separated for multi | | departure_date | string | Travel date in YYYY-MM-DD format | | return_date | string | Return date for round trips (optional) | | cabin_class | string | ECONOMY, PREMIUM_ECONOMY, BUSINESS, or FIRST | | max_stops | string | ANY, NON_STOP, ONE_STOP, or TWO_PLUS_STOPS | | departure_window | string | Time window in 'HH-HH' format (e.g., '6-20') | | airlines | list | Filter by airline codes (e.g., ['BA', 'AA']) | | exclude_airlines | list | Airline IATA codes to exclude (e.g., ['DL', 'B6']) | | alliance | list | Restrict to alliances: ONEWORLD, SKYTEAM, STAR_ALLIANCE | | exclude_alliance | list | Alliance names to exclude from results | | min_layover | int | Minimum layover duration in minutes (multi-stop only) | | max_layover | int | Maximum layover duration in minutes (multi-stop only) | | currency | string | ISO 4217 code (e.g. 'EUR', 'JPY') — flows to curr= param | | language | string | BCP-47 language code (e.g. 'en-GB') — flows to hl= param | | country | string | ISO 3166-1 alpha-2 country code (e.g. 'GB') for gl= param | | sort_by | string | CHEAPEST, DURATION, DEPARTURE_TIME, or ARRIVAL_TIME | | passengers | int | Number of adult passengers |

search_dates Parameters

| Parameter | Type | Description | |---------------------|--------|-------------------------------------------------------------| | origin | string | Departure airport IATA code(s) — comma-separated for multi | | destination | string | Arrival airport IATA code(s) — comma-separated for multi | | start_date | string | Start of date range in YYYY-MM-DD format | | end_date | string | End of date range in YYYY-MM-DD format | | trip_duration | int | Trip duration in days (for round-trips) | | is_round_trip | bool | Whether to search for round-trip flights | | cabin_class | string | ECONOMY, PREMIUM_ECONOMY, BUSINESS, or FIRST | | max_stops | string | ANY, NON_STOP, ONE_STOP, or TWO_PLUS_STOPS | | departure_window | string | Time window in 'HH-HH' format (e.g., '6-20') | | airlines | list | Filter by airline codes (e.g., ['BA', 'AA']) | | exclude_airlines | list | Airline IATA codes to exclude | | alliance | list | Restrict to alliances: ONEWORLD, SKYTEAM, STAR_ALLIANCE | | exclude_alliance | list | Alliance names to exclude | | min_layover | int | Minimum layover duration in minutes | | max_layover | int | Maximum layover duration in minutes | | currency | string | ISO 4217 currency code (e.g. 'EUR', 'JPY') | | language | string | BCP-47 language code (e.g. 'en-GB') | | country | string | ISO 3166-1 alpha-2 country code (e.g. 'GB') | | sort_by_price | bool | Sort results by price (lowest first) | | passengers | int | Number of adult passengers |

Quick Start

pip install flights
# Install using pipx (recommended for CLI)
pipx install flights

# Get started with CLI
fli --help

CLI Demo

Features

  • 🔍 Powerful Search

    • One-way flight searches
    • Multi-city flight searches
    • Flexible departure times
    • Multi-airline support
    • Cabin class selection
    • Stop preferences
    • Custom result sorting
  • 💺 Cabin Classes

    • Economy
    • Premium Economy
    • Business
    • First
  • 🎯 Smart Sorting

    • Price
    • Duration
    • Departure Time
    • Arrival Time
  • 🛡️ Built-in Protection

    • Rate limiting
    • Automatic retries
    • Comprehensive error handling
    • Input validation

CLI Usage

Search for Flights

# Basic flight search
fli flights JFK LHR 2026-10-25

# Advanced search with filters
fli flights JFK LHR 2026-10-25 \
    --time 6-20 \             # Departure time window (6 AM - 8 PM)
    --airlines BA,KL \        # Airlines (British Airways, KLM)
    --class BUSINESS \        # Cabin class
    --stops NON_STOP \        # Non-stop flights only
    --sort DURATION           # Sort by duration

# Alliance + exclude + locale (May-2026 filter additions)
fli flights JFK LHR 2026-10-25 \
    --alliance ONEWORLD \
    --exclude-airlines AA \
    --min-layover 90 \
    --max-layover 360 \
    --currency EUR --language en-GB --country GB

⚠️ Experimental --format json is experimental. The JSON schema may change while the machine-readable CLI contract settles.

# Return machine-readable flight results
fli flights JFK LHR 2026-10-25 --format json

Find Cheapest Dates

# Basic date search
fli dates JFK LHR

# Advanced search with date range
fli dates JFK LHR \
    --from 2026-01-01 \
    --to 2026-02-01 \
    --monday --friday      # Only Mondays and Fridays

⚠️ Experimental --format json is experimental for date searches as well.

# Return machine-readable date search results
fli dates JFK LHR --from 2026-01-01 --to 2026-02-01 --format json

Multi-city Search

# Two-leg multi-city trip
fli multi --leg SEA,HKG,2026-12-26 --leg PEK,SEA,2027-01-02

# Three-leg multi-city trip with filters
fli multi \
    -l SEA,NRT,2026-12-26 \
    -l NRT,HKG,2026-12-30 \
    -l HKG,SEA,2027-01-05 \
    --class BUSINESS \
    --stops 0

CLI Options

Flights Command (fli flights)

| Option | Description | Example | |-------------------------|--------------------------------------------|----------------------------------| | --return, -r | Return date | 2026-10-30 | | --time, -t | Departure time window | 6-20 | | --airlines, -a | Airline IATA codes | BA,KL | | --exclude-airlines, -A | Airline IATA codes to exclude | DL,B6 | | --alliance | Restrict to alliance(s) | ONEWORLD, SKYTEAM | | --exclude-alliance | Alliance(s) to exclude | STAR_ALLIANCE | | --min-layover | Minimum layover (minutes) | 90 | | --max-layover | Maximum layover (minutes) | 360 | | --currency | ISO 4217 currency code | EUR, JPY | | --language | BCP-47 language code (Google hl=) | en-GB | | --country | ISO 3166-1 alpha-2 country (gl=) | GB | | --class, -c | Cabin class | ECONOMY, BUSINESS | | --stops, -s | Maximum stops | NON_STOP, ONE_STOP | | --sort, -o | Sort results by | CHEAPEST, DURATION | | --format | Output format | text, json |

Dates Command (fli dates)

| Option | Description | Example | |-------------------------|--------------------------------------------|--------------------------| | --from | Start date | 2026-01-01 | | --to | End date | 2026-02-01 | | --duration, -d | Trip duration in days | 3 | | --round, -R | Round-trip search | (flag) | | --airlines, -a | Airline IATA codes | BA,KL | | --exclude-airlines, -A| Airline IATA codes to exclude | DL,B6 | | --alliance | Restrict to alliance(s) | ONEWORLD | | --exclude-alliance | Alliance(s) to exclude | STAR_ALLIANCE | | --min-layover | Minimum layover (minutes) | 90 | | --max-layover | Maximum layover (minutes) | 360 | | --currency | ISO 4217 currency code | EUR, JPY | | --language | BCP-47 language code | en-GB | | --country | ISO 3166-1 alpha-2 country | GB | | --class, -c | Cabin class | ECONOMY, BUSINESS | | --stops, -s | Maximum stops | NON_STOP, ONE_STOP | | --time | Departur

Truncated for display — read the full file on GitHub.

Related Skills

View on GitHub
GitHub Stars3.2k
CategoryDevelopment
Updated22h ago
Forks399

Languages

Python

Security Score

95/100

Audited on Sep 20, 2026

1 low