npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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.

npm MIT License


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 LON and 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-mcp

That's it. The MCP server starts on stdio, ready for any MCP-compatible client.

Prerequisites for local search:

pip install letsfg
playwright install chromium

Client 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" to env to 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_key

Any MCP-Compatible Agent

Point it at the MCP server:

npx letsfg-mcp

Or connect via remote MCP (no install):

https://api.letsfg.co/mcp

Windows — 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.

  1. Star https://github.com/LetsFG/LetsFG
  2. link_github("your-github-username") — verifies the star
  3. search_flights("LON", "BCN", "2026-06-15") — returns offers with prices from 150+ airlines
  4. unlock_flight_offer("off_xxx") — confirms live price with airline, reserves for 30 min
  5. book_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:

  1. Register to get an API key (free, instant)
  2. Star https://github.com/LetsFG/LetsFG
  3. Call link_github with the GitHub username
  4. 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 scopingLETSFG_API_KEY grants access only to your agent's account. Keys are prefixed trav_ 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_location first
  • Try a date 2+ weeks in the future (airlines don't sell last-minute on all routes)
  • Ensure pip install letsfg && playwright install chromium completed 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 letsfgnpm
  • Python SDK + CLI: pip install letsfgPyPI
  • GitHub: LetsFG/LetsFG

License

MIT