LetsFG MCP工具 是 AI Skill Hub 本期精选AI工具之一。已获得 1.1k 颗 GitHub Star,综合评分 8.2 分,整体质量较高。我们强烈推荐将其纳入你的 AI 工具库,帮助提升工作效率。
LetsFG MCP工具 是一款基于 Python 开发的开源工具,专注于 MCP工具、航班预订、AI Agent 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
LetsFG MCP工具 是一款基于 Python 开发的开源工具,专注于 MCP工具、航班预订、AI Agent 等核心功能。作为 GitHub 开源项目,它拥有活跃的社区支持和持续的版本迭代,代码完全透明可审计,支持本地部署以保护数据隐私。无论是个人使用还是集成到企业工作流,都能提供稳定可靠的解决方案。
# 方式一:pip 安装(推荐)
pip install letsfg
# 方式二:虚拟环境安装(推荐生产环境)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install letsfg
# 方式三:从源码安装(获取最新功能)
git clone https://github.com/LetsFG/LetsFG
cd LetsFG
pip install -e .
# 验证安装
python -c "import letsfg; print('安装成功')"
# 命令行使用
letsfg --help
# 基本用法
letsfg input_file -o output_file
# Python 代码中调用
import letsfg
# 示例
result = letsfg.process("input")
print(result)
# letsfg 配置文件示例(config.yml) app: name: "letsfg" debug: false log_level: "INFO" # 运行时指定配置文件 letsfg --config config.yml # 或通过环境变量配置 export LETSFG_API_KEY="your-key" export LETSFG_OUTPUT_DIR="./output"
<a href="https://github.com/LetsFG/LetsFG"> <img src="assets/banner.png" alt="LetsFG" width="600"> </a>
<br>
Human users: Use letsfg.co and search flights instantly in your browser:
- A card on file is required for every hotel call, including search. That is unusual and it is deliberate: a hotel search opens a real session at the supplier, and booking blocks a real rate. We would rather refuse up front than let you reach the point of commitment and discover you cannot pay. The same card that authorises flight booking authorises hotels — there is no separate hotel signup. - Only free-cancellation, pay-later rates are sold. Those are the rates where the balance can safely be settled with the supplier after booking, which is what makes 5%-now/rest-later work at all. You will see fewer results than a metasearch shows you. Every one of them can actually be booked. - Booking is asynchronous. book_hotel returns a booking_job_id, not a booking — the real thing takes minutes. Poll hotel_booking(job_id) until status is succeeded or failed, or call book_hotel_and_wait and let the SDK do it. This is not ceremony: it is what makes it impossible to charge a card and then lose the confirmation to a timeout. - The fee is charged before the room is committed. A declined card therefore costs nothing to unwind — no reservation exists and nothing is charged. - Do not retry a booking blindly. Calling book_hotel twice for the same rate books the room twice and charges two reservation fees. - price is what the guest pays. There is no wholesale figure in the response to quote by mistake.
| Package | Command | What you get |
|---|---|---|
| **Remote MCP** | https://letsfg.co/developers/api/mcp | No install. Approve the connection, add a card at letsfg.co/connect, search and book |
| **Python SDK + CLI** | pip install letsfg | SDK + CLI (token from the connect flow in LETSFG_BEARER_TOKEN) |
| **MCP Server (stdio)** | npx letsfg-mcp | Local server for clients without remote MCP support; needs LETSFG_BEARER_TOKEN |
| **JS/TS SDK** | npm install -g letsfg | SDK + CLI + open-source ranking engine |
| **Agent Skill** | npx skills add LetsFG/LetsFG | Install flight search skill for any AI agent ([skills.sh](https://skills.sh)) |
| **Smithery** | [smithery.ai/servers/letsfg](https://smithery.ai/servers/letsfg) | One-click MCP install |
| **Omarchy plugin** | omarchy plugin add https://github.com/LetsFG/LetsFG.git --enable | Flight search in the Omarchy bar ([details](OMARCHY-PLUGIN.md)) |
---
result = await search_local("GDN", "BCN", "2026-06-15")
for offer in result.offers[:5]: print(f"{offer.airlines[0]}: {offer.currency} {offer.price}") ```
---
pip install letsfg
export LETSFG_BEARER_TOKEN=<token from the connect flow>
letsfg search LHR BCN 2026-06-15
letsfg search LHR JFK 2026-06-15 --cabin C # cabin class: M economy, W premium, C business, F first
The SDKs read the token from LETSFG_BEARER_TOKEN or ~/.letsfg/config.json. letsfg auth performs that connect flow itself: it registers as an OAuth client, opens https://letsfg.co/connect for a person to approve, and writes the token to ~/.letsfg/config.json. Add --no-browser to print the URL instead of opening one.
A separate paid product for high-volume commercial integrations; most agents should not use it. Prepaid credits, results in seconds, direct airline booking URLs — plus /discover (20 destinations in one call, 1 credit), async polling, NL query parsing, and a free sandbox.
```bash
curl -X POST https://letsfg.co/developers/api/v1/agents/register \ -H "Content-Type: application/json" \ -d '{"agent_name":"my-agent","email":"you@example.com"}'
curl -X POST https://letsfg.co/developers/api/v1/flights/search \ -H "X-API-Key: letsfg_..." \ -H "Content-Type: application/json" \ -d '{"origin":"LHR","destination":"BCN","date_from":"2026-06-15"}'
Pricing: $0.50/search for the first 10 each month, $0.20 for 11–1,000, $0.10 beyond. Minimum top-up $5. Test for free in the sandbox first. Full docs: [letsfg.co/developers/api/docs](https://letsfg.co/developers/api/docs).
<details>
<summary><strong>Full search → book flow (MCP / PFS agent path, no unlock step)</strong></summary>
search_flights LON → BCN, 2026-04-01, return 2026-04-08 get_flight_results (while more offers are still landing) book_flight search_id + offer_id + one traveller's real details + contact_email → booking_ref in seconds; fare + markup HELD on the connected card get_flight_booking every 20–30 s → completed (PNR, charged_amount) | failed (hold released) | needs_attention ```
Over raw HTTP the same four steps are POST /api/search, GET /api/results/<id>, POST /api/agent-book, POST /api/agent-book/status.
letsfg unlock is a Developer API–only command for the paid, prepaid-credit product above — it isn't part of this flow. See CLI Commands.
</details>
💡 Like what you see? Support us — ⭐ Star · Share with a friend
---
from letsfg import LetsFG
bt = LetsFG() # reads LETSFG_API_KEY from env
flights = bt.search("LHR", "JFK", "2026-04-15")
print(f"{flights.total_results} offers, cheapest: {flights.cheapest.summary()}")
import { LetsFG } from 'letsfg';
const bt = new LetsFG({ apiKey: 'letsfg_...' });
const flights = await bt.search('LHR', 'JFK', '2026-04-15');
console.log(`${flights.totalResults} offers`);
```python from letsfg.local import search_local
| Command | Description |
|---|---|
letsfg auth | Connect a card at letsfg.co/connect and store the token (self-registers, PKCE + loopback redirect, opens a browser). --no-browser prints the URL |
letsfg search <origin> <dest> <date> | Search flights (free with a card-backed token) |
letsfg register | **[Developer API only]** Register an account for the paid, prepaid-credit product — not part of the agent flow |
letsfg setup-payment | **[Developer API only]** Attach a payment method (required for unlock) — not part of the agent flow |
letsfg recover --email <email> | Recover lost API key via email |
letsfg locations <query> | Resolve city/airport to IATA codes |
letsfg unlock <offer_id> | **[Developer API only]** Confirm live price and reveal the booking URL. Legacy — not part of the agent flow, use letsfg book |
letsfg book <offer_id> | Book the flight: holds the fare on the connected card, a LetsFG agent buys the ticket, returns a booking_ref to poll |
letsfg me | View profile & usage stats |
All commands accept --json for structured output and --api-key to override the env variable.
---
Connect the MCP (once, card added at letsfg.co/connect) → card-backed token → Search (free) → Book (hold → agent → PNR)
https://letsfg.co/developers/api/mcp as an MCP server and approve it. The OAuth consent step opens letsfg.co/connect, where a card is added in a 0.00 Revolut setup. Nothing is charged. The SDKs read that token from LETSFG_BEARER_TOKEN or ~/.letsfg/config.json.letsfg search LHR BCN 2026-06-15 calls POST https://letsfg.co/api/search, polls until done (8–10 s to first results), and applies the open-source ranking algorithm locally.POST /api/agent-book holds the fare plus markup on the card and starts a LetsFG booking agent; POST /api/agent-book/status reports completed with the PNR (4–11 minutes), or failed with the hold released. Nothing extra is added at booking.Card connected at letsfg.co/connect -> Bearer token -> POST /api/search -> poll GET /api/results/<id> -> POST /api/agent-book -> poll POST /api/agent-book/status
POST /api/agent-access/request answers 402 with add_card_url and the steps. The MPP wallet lane ($0.01 once) verifies at POST /api/agent-access/verify with Authorization: Payment.POST https://letsfg.co/api/search with Authorization: Bearer <token>. Returns { search_id }. Poll GET /api/results/<search_id> immediately, then every 2 s, until status leaves searching. Then keep polling while split_ticket_pending or gf_enrich_pending is true — the split-ticket offer merges in after the status turns terminal.POST /api/agent-book → booking_ref; poll POST /api/agent-book/status until completed (PNR) or failed (hold released, nothing charged).Register → Fund balance → Discover or Search (credits) → Direct booking URL (no checkout)
POST /flights/discover with up to 20 destinations, get indicative prices sorted cheapest-first. 1 credit, 2–5 s. Use to rank options before committing to a full search.POST /flights/search (blocking) or /flights/search/async (non-blocking + poll). 1 credit, 8–10 s to first results.booking_url. No LetsFG fee, no checkout step.<details> <summary><strong>Virtual interlining</strong></summary>
The server-side engine builds cross-airline round-trips by combining one-way fares from different carriers. A Ryanair outbound + Wizz Air return can save 30-50% vs booking a round-trip on either airline alone.
</details>
<details> <summary><strong>City-wide airport expansion</strong></summary>
Search a city code and LetsFG automatically searches all airports in that city. LON expands to LHR, LGW, STN, LTN, SEN, LCY. NYC expands to JFK, EWR, LGA. Works for 25+ major cities worldwide.
</details>
---
Search hundreds of airlines from the Omarchy bar. Type two airport codes and a date, press Search, click an offer to open it. The panel lives in this repo — manifest.json, BarWidget.qml, Panel.qml and Model.js at the root — and runs on the same engine as the CLI and the MCP server, ordered by the same open-source ranking algorithm in sdk/js/src/ranking.ts.
<p align="center"><img src="preview.png" alt="LetsFG Flights panel in the Omarchy bar" width="820"></p>
Install
omarchy plugin add https://github.com/LetsFG/LetsFG.git --enable
Then add LetsFG Flights to a bar section in the Omarchy bar settings. The panel reads your LetsFG token from ~/.letsfg/config.json (what letsfg auth writes) and renews it itself, or connects a card from the panel via letsfg.co/connect — nothing is charged. See OMARCHY-PLUGIN.md.
Remove
omarchy plugin remove io.github.letsfg.flights
That removes the plugin only. Your token is yours — delete ~/.letsfg/config.json yourself if you want it gone.
The plugin bundles no API keys. It authenticates with a token you create and can revoke, it never asks for card details, and it never starts a search on its own — no background poll, no price watch, no refresh timer. Every host it can contact, every file it reads or writes, and the anonymous installation id it sends so we can tell whether anyone is using it, are documented in full in OMARCHY-PLUGIN.md.
Requires the Omarchy Quattro shell. MIT, like the rest of this repo. Not affiliated with, sponsored by, or endorsed by Omarchy or 37signals.
---
We searched 5 routes on Google Flights and LetsFG on the same day (2026-08-05), for flights departing 2026-09-16. Same airline, same number of stops — LetsFG was cheaper every time:
| Route | Airline | Google Flights | LetsFG | You Save |
|---|---|---|---|---|
| LAX → Paris (CDG) | JetBlue, 1 stop | $363 | **$334** | **$29** |
| SFO → London (LHR) | JetBlue, 1 stop | $349 | **$333** | **$16** |
| LA → New York (JFK) | JetBlue, nonstop | $174 | **$157** | **$17** |
| London → Singapore (SIN) | Shenzhen Airlines, 1 stop | $395 | **$380** | **$15** |
| Chicago → Dubai (DXB) | Air Canada + Emirates, 2 stops | $517 | **$461** | **$56** |
$133 cheaper across 5 routes in a verified comparison (2026-08-05). Google Flights inflates on repeat searches; LetsFG returns the same prices however often you run the search, because it reads airlines and the major booking sites directly rather than tracking you.
Why the difference? Google Flights only searches its own limited set of airline partners. LetsFG searches everywhere — Skyscanner, Kiwi, Kayak, Momondo, plus direct airline websites (Ryanair, United, Southwest, EasyJet, Spirit, Norwegian, AirAsia, and hundreds more). More sources = better prices. No demand-based inflation and no cookie tracking: the same search returns the same prices however often you run it.
---
Same hotel, same room type, same 2-night stay, same free-cancellation policy — checked on the same day (2026-08-05) for a 2026-09-16 check-in:
| Hotel | Booking.com | LetsFG | You Save |
|---|---|---|---|
| Hotel Boss, Warsaw | $206 | **$169** | **$37** |
| ibis Styles Paris Gare de l'Est | $663 | **$525** | **$138** |
| Copthorne Tara Hotel, London Kensington | $379 | **$347** | **$32** |
$207 cheaper across 3 hotels in a verified comparison (2026-08-05), matching each property's own free-cancellation rate against Booking.com's free-cancellation rate for the identical dates and room type. Prices quoted in PLN at booking, converted to USD at that day's rate.
Why the difference? LetsFG sells at wholesale cost — no markup for demand, no loyalty-program cross-subsidy. You're not paying for the room upfront: 5% books it now, and the remaining 95% isn't due until the hotel's own cancellation deadline. Cancel before that deadline and you lose nothing but the 5%; the rest was never charged. Only free-cancellation, pay-later rates are sold, so every price shown is one you can actually hold risk-free.
---
架构完善���Agent工具,解决实际痛点。代码质量好,社区活跃度高,但需关注支付安全合规。
该工具使用 NOASSERTION 协议,商用场景请仔细阅读协议条款,必要时咨询法律意见。
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
📄 NOASSERTION — 请查阅原始协议条款了解具体使用限制。
经综合评估,LetsFG MCP工具 在AI工具赛道中表现稳健,质量优秀。如果你已有明确的使用需求,可以直接上手体验;如果还在评估阶段,建议对比同类工具后再做决策。
| 原始名称 | LetsFG |
| 原始描述 | 开源MCP工具:Agent-native flight search & booking. Saved $116 across 5 routes vs Google Fligh。⭐1.1k · Python |
| Topics | MCP工具航班预订AI AgentPython开源 |
| GitHub | https://github.com/LetsFG/LetsFG |
| License | NOASSERTION |
| 语言 | Python |
收录时间:2026-05-16 · 更新时间:2026-05-19 · License:NOASSERTION · AI Skill Hub 不对第三方内容的准确性作法律背书。