letsfg-mcp
v1.2.1
Published
LetsFG MCP Server — 140 airline connectors via cloud + enterprise GDS/NDC APIs. Flight search & booking for Claude, Cursor, Windsurf, and any MCP-compatible AI agent.
Readme
letsfg-mcp
The largest open flight-search MCP server. 140 ready-to-run airline connectors fire in parallel on your machine — Ryanair, EasyJet, Wizz Air, Southwest, AirAsia, Qantas, and 134 more — plus enterprise GDS/NDC providers (Amadeus, Duffel, Sabre) through the LetsFG backend. One tool call scans the entire world for flights, including airlines your agent didn't know existed.
Your agent doesn't need to build a flight integration. It doesn't need to scrape. Just add this MCP server and it can search and book flights in seconds.
Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.
What This Is
LetsFG is not a scraper wrapper. It's a production-grade agent-to-airline connector layer:
- 140 airline connectors run locally on your machine via Python + Playwright — no API key needed for search
- Enterprise GDS/NDC feeds (Amadeus, Duffel, Sabre, Travelport, Kiwi) run through the LetsFG backend — these are contract-only data sources that require enterprise agreements, made available to everyone through our API
- Virtual interlining — the combo engine mixes one-way fares across airlines (e.g., Ryanair outbound + Wizz Air return) to find deals no single airline offers
- City-wide airport expansion — search
LONand it auto-searches LHR, LGW, STN, LTN, SEN, LCY. Works for 25+ major cities worldwide - Zero price bias — no cookie tracking, no demand-based inflation, no surge pricing. Same raw airline price every time
Why agents should use this instead of building their own:
- Saves thousands of tokens vs. browser automation or scraping
- 140 connectors fire in parallel — scans airlines across Europe, Asia, Americas, Middle East, Africa, and Oceania simultaneously
- Finds deals on carriers your agent wouldn't think to check (Lucky Air, 9 Air, Jazeera Airways, FlySafair...)
- Enterprise-contracted GDS deals that require contracts worth $50k+/year — available for free on search
Quick Start
npx letsfg-mcpThat's it. The MCP server starts on stdio, ready for any MCP-compatible client.
Prerequisites for local search:
pip install letsfg
playwright install chromiumClient Configuration
Claude Desktop
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"letsfg": {
"command": "npx",
"args": ["-y", "letsfg-mcp"],
"env": {
"LETSFG_API_KEY": "trav_your_api_key"
}
}
}
}Note: Add
"LETSFG_MAX_BROWSERS": "4"toenvto limit browser concurrency on constrained machines.
Cursor
Add to .cursor/mcp.json in your project root:
{
"mcpServers": {
"letsfg": {
"command": "npx",
"args": ["-y", "letsfg-mcp"],
"env": {
"LETSFG_API_KEY": "trav_your_api_key"
}
}
}
}Windsurf
Add to ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"letsfg": {
"command": "npx",
"args": ["-y", "letsfg-mcp"],
"env": {
"LETSFG_API_KEY": "trav_your_api_key"
}
}
}
}Continue
Add to ~/.continue/config.yaml:
mcpServers:
- name: letsfg
command: npx
args: ["-y", "letsfg-mcp"]
env:
LETSFG_API_KEY: trav_your_api_keyAny MCP-Compatible Agent
Point it at the MCP server:
npx letsfg-mcpOr connect via remote MCP (no install):
https://api.letsfg.co/mcpWindows — npx ENOENT Fix
If you get spawn npx ENOENT on Windows, use the full path to npx:
{
"mcpServers": {
"letsfg": {
"command": "C:\\Program Files\\nodejs\\npx.cmd",
"args": ["-y", "letsfg-mcp"],
"env": {
"LETSFG_API_KEY": "trav_your_api_key"
}
}
}
}Or use node directly:
{
"mcpServers": {
"letsfg": {
"command": "node",
"args": ["C:\\Users\\YOU\\AppData\\Roaming\\npm\\node_modules\\letsfg-mcp\\dist\\index.js"],
"env": {
"LETSFG_API_KEY": "trav_your_api_key"
}
}
}
}Pin a Specific Version
To avoid unexpected updates:
{
"command": "npx",
"args": ["-y", "[email protected]"]
}Available Tools
| Tool | Description | Cost | Side Effects |
|------|-------------|------|--------------|
| search_flights | Search 400+ airlines worldwide | FREE | None (read-only) |
| search_hotels | Search 300,000+ hotels worldwide | FREE | None (read-only) |
| resolve_location | City name → IATA code | FREE | None (read-only) |
| link_github | Verify GitHub star for access | FREE | Updates profile |
| unlock_flight_offer | Confirm live price, reserve 30 min | — | Confirms price |
| book_flight | Create real airline reservation (PNR) | Ticket price | Creates booking |
| setup_payment | Attach payment card (required for booking) | FREE | Updates payment |
| get_agent_profile | Usage stats & payment status | FREE | None (read-only) |
| start_checkout | Automate LCC checkout to payment page | — | Browser automation |
| system_info | System resources & concurrency tier | FREE | None (read-only) |
Booking Flow
link_github → search_flights → unlock_flight_offer → setup_payment (once) → book_flight
(verify star) (free) (quote) (attach card) (ticket price, creates PNR)GitHub star verification is required before searching. The agent calls link_github once with the user's GitHub username. If verified, all tools are unlocked forever.
- Star https://github.com/LetsFG/LetsFG
link_github("your-github-username")— verifies the starsearch_flights("LON", "BCN", "2026-06-15")— returns offers with prices from 150+ airlinesunlock_flight_offer("off_xxx")— confirms live price with airline, reserves for 30 minbook_flight("off_xxx", passengers, email)— creates real booking, airline sends e-ticket
The search_flights tool accepts an optional max_browsers parameter (1–32) to limit concurrent browser instances. Omit it to auto-detect based on system RAM.
The system_info tool returns your system profile (RAM, CPU, tier, recommended max browsers) — useful for agents to decide concurrency before searching.
The agent has native tools — no API docs needed, no URL building, no token-burning browser automation.
Response Mode (Remote MCP only)
search_flights and search_hotels accept an optional response_mode parameter:
| Mode | Default | What's returned | Best for |
|------|---------|----------------|----------|
| "summary" | ✅ | Price, airlines, route, departure, stops | Chat, quick comparisons |
| "full" | | Everything: segments, durations, conditions, bags, booking URLs | Deep analysis, programmatic use |
Summary mode saves tokens by stripping per-segment details, baggage policies, and booking conditions. It includes a hint field telling the agent to call unlock_flight_offer for full details on a specific offer.
// summary response (search_flights)
{
"total_offers": 42,
"offers": [
{ "id": "off_abc", "price": "€29", "airlines": ["FR"], "route": "STN→BCN", "departure": "06:15", "stops": 0 }
],
"hint": "Use unlock_flight_offer with the offer id for full pricing and booking."
}Get an API Key
An API key + GitHub star verification is required. Search, unlock, and book all require a verified star.
The flow for agents:
- Register to get an API key (free, instant)
- Star https://github.com/LetsFG/LetsFG
- Call
link_githubwith the GitHub username - Once verified — unlimited access forever. First 1,000 stars only.
curl -X POST https://api.letsfg.co/api/v1/agents/register \
-H "Content-Type: application/json" \
-d '{"agent_name": "my-agent", "email": "[email protected]"}'Or via CLI:
pip install letsfg
letsfg register --name my-agent --email [email protected]Architecture & Data Flow
┌──────────────────────────────────────────────────────────────┐
│ MCP Client (Claude Desktop / Cursor / Windsurf / etc.) │
│ ↕ stdio (JSON-RPC, local only) │
├──────────────────────────────────────────────────────────────┤
│ letsfg-mcp (this package, runs on YOUR machine) │
│ │ │
│ ├─→ Python subprocess (local connectors) │
│ │ 150+ airline connectors via Playwright + httpx │
│ │ Data goes: your machine → airline website → back │
│ │ │
│ └─→ HTTPS to api.letsfg.co (backend) │
│ unlock, book, payment, enterprise GDS search │
└──────────────────────────────────────────────────────────────┘What data goes where
| Operation | Where data flows | What is sent |
|-----------|-----------------|--------------|
| search_flights (local) | Your machine → airline websites | Route, date, passenger count |
| search_flights (GDS) | Your machine → api.letsfg.co → GDS providers | Route, date, passenger count, API key |
| resolve_location | Your machine → api.letsfg.co | City/airport name |
| unlock_flight_offer | Your machine → api.letsfg.co → airline | Offer ID, payment token |
| book_flight | Your machine → api.letsfg.co → airline | Passenger name, DOB, email, phone |
| setup_payment | Your machine → api.letsfg.co → Stripe | Payment token (card handled by Stripe) |
Security & Privacy
- TLS everywhere — all backend communication uses HTTPS. Local connectors connect to airline websites over HTTPS.
- No card storage — payment cards are tokenized by Stripe. LetsFG never sees or stores raw card numbers.
- API key scoping —
LETSFG_API_KEYgrants access only to your agent's account. Keys are prefixedtrav_for easy identification and revocation. - PII handling — passenger names, emails, and DOBs are sent to the airline for booking (required by airlines). LetsFG does not store passenger PII after forwarding to the airline.
- No tracking — no cookies, no session-based pricing, no fingerprinting. Every search returns the same raw airline price.
- Local search is fully local — when searching without an API key, zero data leaves your machine except direct HTTPS requests to airline websites. The MCP server and Python connectors run entirely on your hardware.
- Open source — all connector code is MIT-licensed and auditable at github.com/LetsFG/LetsFG.
Sandbox / Test Mode
Use Stripe's test token for payment setup without real charges:
setup_payment with token: "tok_visa"This attaches a test Visa card. Unlock calls will use Stripe test mode — no real money is charged. Useful for agent development and testing the full search → unlock → book flow.
FAQ
spawn npx ENOENT on Windows
Windows can't find npx in PATH. Use the full path:
"command": "C:\\Program Files\\nodejs\\npx.cmd"Or install globally and use node directly (see Windows config above).
Search returns 0 results
- Check IATA codes are correct — use
resolve_locationfirst - Try a date 2+ weeks in the future (airlines don't sell last-minute on all routes)
- Ensure
pip install letsfg && playwright install chromiumcompleted successfully - Check Python is available: the MCP server spawns a Python subprocess for local search
How do I search without an API key?
Just omit LETSFG_API_KEY from your config. Local search (150+ airline connectors) works without any key. You'll only miss the enterprise GDS/NDC sources (Amadeus, Duffel, etc.).
Can I use this for commercial projects?
Yes. MIT license. The local connectors and SDK are fully open source.
MCP server hangs on start
Ensure Node.js 18+ is installed. The server communicates via stdio (stdin/stdout JSON-RPC) — it doesn't open a port or print a "ready" message. MCP clients handle the lifecycle automatically.
Supported Airlines (150+ connectors)
| Region | Airlines | |--------|----------| | Europe | Ryanair, Wizz Air, EasyJet, Norwegian, Vueling, Eurowings, Transavia, Pegasus, Turkish Airlines, Condor, SunExpress, Volotea, Smartwings, Jet2, LOT Polish Airlines, Finnair, SAS, Aegean, Aer Lingus, ITA Airways, TAP Portugal, Icelandair, PLAY | | Middle East & Africa | Emirates, Etihad, Qatar Airways, flydubai, Air Arabia, flynas, Salam Air, Air Peace, FlySafair, EgyptAir, Ethiopian Airlines, Kenya Airways, Royal Air Maroc, South African Airways | | Asia-Pacific | AirAsia, IndiGo, SpiceJet, Akasa Air, Air India, Air India Express, VietJet, Cebu Pacific, Scoot, Jetstar, Peach, Spring Airlines, Lucky Air, 9 Air, Nok Air, Batik Air, Jeju Air, T'way Air, ZIPAIR, Singapore Airlines, Cathay Pacific, Malaysian Airlines, Thai Airways, Korean Air, ANA, JAL, Qantas, Virgin Australia, Bangkok Airways, Air New Zealand, Garuda Indonesia, Philippine Airlines, US-Bangla, Biman Bangladesh | | Americas | American Airlines, Delta, United, Southwest, JetBlue, Alaska Airlines, Hawaiian Airlines, Sun Country, Frontier, Volaris, VivaAerobus, Allegiant, Avelo, Breeze, Flair, GOL, Azul, JetSmart, Flybondi, Porter, WestJet, LATAM, Copa, Avianca, Air Canada, Arajet, Wingo, Sky Airline | | Aggregator | Kiwi.com (virtual interlining + LCC fallback) |
Also Available As
- JavaScript/TypeScript SDK + CLI:
npm install letsfg— npm - Python SDK + CLI:
pip install letsfg— PyPI - GitHub: LetsFG/LetsFG
License
MIT
