Fli install and usage skill
Use this skill when the goal is to install Fli and use its CLI or MCP server correctly.
The primary path is:
- install with
- use for terminal searches
- use for Claude Desktop or other STDIO MCP clients
- use only when an HTTP MCP endpoint is specifically needed
Do not default to cloning the repository or using a source checkout. Only mention cloning the repo when the user explicitly wants to contribute to Fli itself.
What Fli is
Fli is a Python package for accessing Google Flights data through direct API interaction.
It has three public surfaces:
- CLI via
- Python library via the package
- MCP server via and
For this skill, focus on the CLI and MCP server first.
Core install rule
If the user wants to use Fli as a tool, recommend
.
Why:
- it is the documented recommended install path for CLI and MCP usage
- it keeps the install isolated from other Python projects
- it exposes , , and on the user's PATH
Only fall back to
or
when:
- is unavailable
- the user wants library-only usage
- the user explicitly prefers another Python package manager
Standard installation flow
Preferred install
bash
python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install flights
If
is already installed, skip directly to:
Verify installation
Run these checks after install:
bash
fli --help
fli-mcp --help
which fli-mcp
If the commands are not found after
, have the user run:
bash
python3 -m pipx ensurepath
Then restart the terminal session.
What the install provides
After
, these commands should be available:
- - main CLI for flight searches
- - MCP server over STDIO
- - MCP server over HTTP, defaulting to
http://127.0.0.1:8000/mcp/
Important naming detail:
- the package to install is
- the commands to run are , , and
Do not tell users to run
.
CLI usage
Basic flight search
Use:
bash
fli flights JFK LAX 2026-10-25
Cheapest-date search
Use:
bash
fli dates JFK LAX --from 2026-01-01 --to 2026-01-31
Common filters
Use filters like these when the user asks for them:
bash
fli flights JFK LHR 2026-10-25 \
--time 6-20 \
--airlines BA KL \
--class BUSINESS \
--stops NON_STOP \
--sort DURATION
Supported language to map correctly:
- cabin classes: , , ,
- stop filters: , , ,
- sort options: , , ,
CLI shorthand
Fli supports a convenience shorthand where a non-command invocation is treated as a flights search.
Example:
This behaves like:
bash
fli flights JFK LAX 2026-05-15
Use the explicit
subcommand in examples unless the user asks for shortcuts.
MCP usage
Default MCP mode
Use
for Claude Desktop and other STDIO-based MCP clients.
This is the default recommendation for local assistant integration.
HTTP MCP mode
Use
only when the user needs an HTTP endpoint.
By default, it serves at:
http://127.0.0.1:8000/mcp/
For HTTP integrations, the client should send:
Accept: application/json, text/event-stream
Claude Desktop setup
When the user wants Claude Desktop integration, recommend this config first:
json
{
"mcpServers": {
"fli": {
"command": "fli-mcp",
"args": []
}
}
}
Suggested config paths:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%\\Claude\\claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
After editing the config:
- fully quit Claude Desktop
- relaunch it
- start a new conversation
- ask for a flight search
Good validation prompt:
Can you search for flights from JFK to LHR on 2026-03-15?
Optional MCP environment variables
If the user wants defaults, these environment variables are relevant:
FLI_MCP_DEFAULT_PASSENGERS
FLI_MCP_DEFAULT_CABIN_CLASS
FLI_MCP_DEFAULT_DEPARTURE_WINDOW
Example:
json
{
"mcpServers": {
"fli": {
"command": "fli-mcp",
"args": [],
"env": {
"FLI_MCP_DEFAULT_CURRENCY": "EUR",
"FLI_MCP_DEFAULT_CABIN_CLASS": "BUSINESS",
"FLI_MCP_MAX_RESULTS": "10"
}
}
}
}
How to guide users well
If the user asks to install Fli
Give them the
path first.
If the user asks how to use the command line tool
If the user asks how to connect Claude or another assistant
Show
and the Claude Desktop config first.
If the user asks for a web endpoint
Then show
and mention the
path and
header.
If the user asks how to contribute or hack on the codebase
That is outside the primary scope of this skill. Only then discuss cloning the repository and using development commands.
Common mistakes to prevent
- telling users to clone the repository when they only want the tool
- telling users to install instead of
- focusing on the Python API when the user asked for CLI or MCP setup
- giving HTTP MCP instructions when STDIO MCP is enough
- forgetting to tell Claude Desktop users to fully restart the app
- omitting the PATH fix when installs successfully but commands are not found
Troubleshooting
or not found
Try:
bash
python3 -m pipx ensurepath
Then restart the terminal.
Python version problems
Fli requires Python 3.10 or newer.
Check with:
Claude Desktop does not show the tools
Check these in order:
- works in a terminal
- the Claude Desktop config file path is correct
- the JSON is valid
- Claude Desktop was fully quit and reopened
Rate limiting or temporary failures
Fli includes automatic rate limiting and retries, but live Google Flights requests can still fail temporarily.
If a query fails:
- retry after a short delay
- reduce repeated back-to-back searches
- do not assume the CLI or MCP setup is broken just because one upstream request failed
Public docs
Use these docs for product-facing guidance:
- introduction:
https://punitarani-fli.mintlify.app/introduction
- installation:
https://punitarani-fli.mintlify.app/installation
- MCP setup:
https://punitarani-fli.mintlify.app/mcp/setup
- docs index:
https://punitarani-fli.mintlify.app/llms.txt
Use product docs for examples and onboarding. Use the actual installed command names when writing instructions.
Summary
The default recommendation is
. After that, use
for terminal searches,
for Claude Desktop and other STDIO MCP clients, and
only when an HTTP MCP endpoint is specifically needed.