letsfg-mcp 1.0.0 → 1.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +60 -68
- package/dist/index.js +18 -3
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -1,47 +1,45 @@
|
|
|
1
|
-
#
|
|
1
|
+
# letsfg-mcp
|
|
2
2
|
|
|
3
|
-
The largest open flight-search MCP server.
|
|
3
|
+
The largest open flight-search MCP server. 102 ready-to-run airline connectors fire in parallel on your machine — Ryanair, EasyJet, Wizz Air, Southwest, AirAsia, Qantas, and 96 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.
|
|
4
4
|
|
|
5
|
-
**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
|
|
5
|
+
**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.**
|
|
6
6
|
|
|
7
|
-
Works with
|
|
7
|
+
Works with Claude Desktop, Cursor, Windsurf, and any MCP-compatible client.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
[](https://www.npmjs.com/package/boostedtravel-mcp)
|
|
9
|
+
[](https://www.npmjs.com/package/letsfg-mcp)
|
|
12
10
|
[](../../LICENSE)
|
|
13
11
|
|
|
14
12
|
---
|
|
15
13
|
|
|
16
14
|
## What This Is
|
|
17
15
|
|
|
18
|
-
|
|
16
|
+
LetsFG is not a scraper wrapper. It's a production-grade **agent-to-airline connector layer**:
|
|
19
17
|
|
|
20
|
-
- **
|
|
21
|
-
- **Enterprise GDS/NDC feeds** (Amadeus, Duffel, Sabre, Travelport, Kiwi) run through the
|
|
18
|
+
- **102 airline connectors** run locally on your machine via Python + Playwright — no API key needed for search
|
|
19
|
+
- **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
|
|
22
20
|
- **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
|
|
23
21
|
- **City-wide airport expansion** — search `LON` and it auto-searches LHR, LGW, STN, LTN, SEN, LCY. Works for 25+ major cities worldwide
|
|
24
22
|
- **Zero price bias** — no cookie tracking, no demand-based inflation, no surge pricing. Same raw airline price every time
|
|
25
23
|
|
|
26
24
|
**Why agents should use this instead of building their own:**
|
|
27
25
|
- Saves thousands of tokens vs. browser automation or scraping
|
|
28
|
-
-
|
|
26
|
+
- 102 connectors fire in parallel — scans airlines across Europe, Asia, Americas, Middle East, Africa, and Oceania simultaneously
|
|
29
27
|
- Finds deals on carriers your agent wouldn't think to check (Lucky Air, 9 Air, Jazeera Airways, FlySafair...)
|
|
30
|
-
- Enterprise-contracted GDS deals that require contracts worth $50k+/year —
|
|
28
|
+
- Enterprise-contracted GDS deals that require contracts worth $50k+/year — available for free on search
|
|
31
29
|
|
|
32
30
|
---
|
|
33
31
|
|
|
34
32
|
## Quick Start
|
|
35
33
|
|
|
36
34
|
```bash
|
|
37
|
-
npx
|
|
35
|
+
npx letsfg-mcp
|
|
38
36
|
```
|
|
39
37
|
|
|
40
38
|
That's it. The MCP server starts on stdio, ready for any MCP-compatible client.
|
|
41
39
|
|
|
42
40
|
**Prerequisites for local search:**
|
|
43
41
|
```bash
|
|
44
|
-
pip install
|
|
42
|
+
pip install letsfg
|
|
45
43
|
playwright install chromium
|
|
46
44
|
```
|
|
47
45
|
|
|
@@ -56,18 +54,18 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS)
|
|
|
56
54
|
```json
|
|
57
55
|
{
|
|
58
56
|
"mcpServers": {
|
|
59
|
-
"
|
|
57
|
+
"letsfg": {
|
|
60
58
|
"command": "npx",
|
|
61
|
-
"args": ["-y", "
|
|
59
|
+
"args": ["-y", "letsfg-mcp"],
|
|
62
60
|
"env": {
|
|
63
|
-
"
|
|
61
|
+
"LETSFG_API_KEY": "trav_your_api_key"
|
|
64
62
|
}
|
|
65
63
|
}
|
|
66
64
|
}
|
|
67
65
|
}
|
|
68
66
|
```
|
|
69
67
|
|
|
70
|
-
> **Note:** Add `"
|
|
68
|
+
> **Note:** Add `"LETSFG_MAX_BROWSERS": "4"` to `env` to limit browser concurrency on constrained machines.
|
|
71
69
|
|
|
72
70
|
### Cursor
|
|
73
71
|
|
|
@@ -76,11 +74,11 @@ Add to `.cursor/mcp.json` in your project root:
|
|
|
76
74
|
```json
|
|
77
75
|
{
|
|
78
76
|
"mcpServers": {
|
|
79
|
-
"
|
|
77
|
+
"letsfg": {
|
|
80
78
|
"command": "npx",
|
|
81
|
-
"args": ["-y", "
|
|
79
|
+
"args": ["-y", "letsfg-mcp"],
|
|
82
80
|
"env": {
|
|
83
|
-
"
|
|
81
|
+
"LETSFG_API_KEY": "trav_your_api_key"
|
|
84
82
|
}
|
|
85
83
|
}
|
|
86
84
|
}
|
|
@@ -94,11 +92,11 @@ Add to `~/.codeium/windsurf/mcp_config.json`:
|
|
|
94
92
|
```json
|
|
95
93
|
{
|
|
96
94
|
"mcpServers": {
|
|
97
|
-
"
|
|
95
|
+
"letsfg": {
|
|
98
96
|
"command": "npx",
|
|
99
|
-
"args": ["-y", "
|
|
97
|
+
"args": ["-y", "letsfg-mcp"],
|
|
100
98
|
"env": {
|
|
101
|
-
"
|
|
99
|
+
"LETSFG_API_KEY": "trav_your_api_key"
|
|
102
100
|
}
|
|
103
101
|
}
|
|
104
102
|
}
|
|
@@ -111,19 +109,19 @@ Add to `~/.continue/config.yaml`:
|
|
|
111
109
|
|
|
112
110
|
```yaml
|
|
113
111
|
mcpServers:
|
|
114
|
-
- name:
|
|
112
|
+
- name: letsfg
|
|
115
113
|
command: npx
|
|
116
|
-
args: ["-y", "
|
|
114
|
+
args: ["-y", "letsfg-mcp"]
|
|
117
115
|
env:
|
|
118
|
-
|
|
116
|
+
LETSFG_API_KEY: trav_your_api_key
|
|
119
117
|
```
|
|
120
118
|
|
|
121
|
-
###
|
|
119
|
+
### Any MCP-Compatible Agent
|
|
122
120
|
|
|
123
|
-
|
|
121
|
+
Point it at the MCP server:
|
|
124
122
|
|
|
125
123
|
```bash
|
|
126
|
-
npx
|
|
124
|
+
npx letsfg-mcp
|
|
127
125
|
```
|
|
128
126
|
|
|
129
127
|
Or connect via remote MCP (no install):
|
|
@@ -139,11 +137,11 @@ If you get `spawn npx ENOENT` on Windows, use the full path to `npx`:
|
|
|
139
137
|
```json
|
|
140
138
|
{
|
|
141
139
|
"mcpServers": {
|
|
142
|
-
"
|
|
140
|
+
"letsfg": {
|
|
143
141
|
"command": "C:\\Program Files\\nodejs\\npx.cmd",
|
|
144
|
-
"args": ["-y", "
|
|
142
|
+
"args": ["-y", "letsfg-mcp"],
|
|
145
143
|
"env": {
|
|
146
|
-
"
|
|
144
|
+
"LETSFG_API_KEY": "trav_your_api_key"
|
|
147
145
|
}
|
|
148
146
|
}
|
|
149
147
|
}
|
|
@@ -155,11 +153,11 @@ Or use `node` directly:
|
|
|
155
153
|
```json
|
|
156
154
|
{
|
|
157
155
|
"mcpServers": {
|
|
158
|
-
"
|
|
156
|
+
"letsfg": {
|
|
159
157
|
"command": "node",
|
|
160
|
-
"args": ["C:\\Users\\YOU\\AppData\\Roaming\\npm\\node_modules\\
|
|
158
|
+
"args": ["C:\\Users\\YOU\\AppData\\Roaming\\npm\\node_modules\\letsfg-mcp\\dist\\index.js"],
|
|
161
159
|
"env": {
|
|
162
|
-
"
|
|
160
|
+
"LETSFG_API_KEY": "trav_your_api_key"
|
|
163
161
|
}
|
|
164
162
|
}
|
|
165
163
|
}
|
|
@@ -173,7 +171,7 @@ To avoid unexpected updates:
|
|
|
173
171
|
```json
|
|
174
172
|
{
|
|
175
173
|
"command": "npx",
|
|
176
|
-
"args": ["-y", "
|
|
174
|
+
"args": ["-y", "letsfg-mcp@1.0.0"]
|
|
177
175
|
}
|
|
178
176
|
```
|
|
179
177
|
|
|
@@ -185,7 +183,7 @@ To avoid unexpected updates:
|
|
|
185
183
|
|------|-------------|------|--------------|
|
|
186
184
|
| `search_flights` | Search 400+ airlines worldwide | FREE | None (read-only) |
|
|
187
185
|
| `resolve_location` | City name → IATA code | FREE | None (read-only) |
|
|
188
|
-
| `unlock_flight_offer` | Confirm live price, reserve 30 min |
|
|
186
|
+
| `unlock_flight_offer` | Confirm live price, reserve 30 min | — | Confirms price |
|
|
189
187
|
| `book_flight` | Create real airline reservation (PNR) | FREE | Creates booking |
|
|
190
188
|
| `setup_payment` | Attach payment card (once) | FREE | Updates payment |
|
|
191
189
|
| `get_agent_profile` | Usage stats & payment status | FREE | None (read-only) |
|
|
@@ -195,11 +193,11 @@ To avoid unexpected updates:
|
|
|
195
193
|
|
|
196
194
|
```
|
|
197
195
|
search_flights → unlock_flight_offer → book_flight
|
|
198
|
-
(free) (
|
|
196
|
+
(free) (quote) (free, creates PNR)
|
|
199
197
|
```
|
|
200
198
|
|
|
201
|
-
1. `search_flights("LON", "BCN", "2026-06-15")` — returns offers with prices from
|
|
202
|
-
2. `unlock_flight_offer("off_xxx")` — confirms live price with airline, reserves for 30 min
|
|
199
|
+
1. `search_flights("LON", "BCN", "2026-06-15")` — returns offers with prices from 102 airlines
|
|
200
|
+
2. `unlock_flight_offer("off_xxx")` — confirms live price with airline, reserves for 30 min
|
|
203
201
|
3. `book_flight("off_xxx", passengers, email)` — creates real booking, airline sends e-ticket
|
|
204
202
|
|
|
205
203
|
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.
|
|
@@ -222,8 +220,8 @@ curl -X POST https://api.letsfg.co/api/v1/agents/register \
|
|
|
222
220
|
|
|
223
221
|
Or via CLI:
|
|
224
222
|
```bash
|
|
225
|
-
pip install
|
|
226
|
-
|
|
223
|
+
pip install letsfg
|
|
224
|
+
letsfg register --name my-agent --email you@example.com
|
|
227
225
|
```
|
|
228
226
|
|
|
229
227
|
---
|
|
@@ -235,13 +233,13 @@ boostedtravel register --name my-agent --email you@example.com
|
|
|
235
233
|
│ MCP Client (Claude Desktop / Cursor / Windsurf / etc.) │
|
|
236
234
|
│ ↕ stdio (JSON-RPC, local only) │
|
|
237
235
|
├──────────────────────────────────────────────────────────────┤
|
|
238
|
-
│
|
|
236
|
+
│ letsfg-mcp (this package, runs on YOUR machine) │
|
|
239
237
|
│ │ │
|
|
240
238
|
│ ├─→ Python subprocess (local connectors) │
|
|
241
|
-
│ │
|
|
239
|
+
│ │ 102 airline connectors via Playwright + httpx │
|
|
242
240
|
│ │ Data goes: your machine → airline website → back │
|
|
243
241
|
│ │ │
|
|
244
|
-
│ └─→ HTTPS to api.letsfg.co (backend)
|
|
242
|
+
│ └─→ HTTPS to api.letsfg.co (backend) │
|
|
245
243
|
│ unlock, book, payment, enterprise GDS search │
|
|
246
244
|
└──────────────────────────────────────────────────────────────┘
|
|
247
245
|
```
|
|
@@ -262,12 +260,12 @@ boostedtravel register --name my-agent --email you@example.com
|
|
|
262
260
|
## Security & Privacy
|
|
263
261
|
|
|
264
262
|
- **TLS everywhere** — all backend communication uses HTTPS. Local connectors connect to airline websites over HTTPS.
|
|
265
|
-
- **No card storage** — payment cards are tokenized by Stripe.
|
|
266
|
-
- **API key scoping** — `
|
|
267
|
-
- **PII handling** — passenger names, emails, and DOBs are sent to the airline for booking (required by airlines).
|
|
263
|
+
- **No card storage** — payment cards are tokenized by Stripe. LetsFG never sees or stores raw card numbers.
|
|
264
|
+
- **API key scoping** — `LETSFG_API_KEY` grants access only to your agent's account. Keys are prefixed `trav_` for easy identification and revocation.
|
|
265
|
+
- **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.
|
|
268
266
|
- **No tracking** — no cookies, no session-based pricing, no fingerprinting. Every search returns the same raw airline price.
|
|
269
267
|
- **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.
|
|
270
|
-
- **Open source** — all connector code is MIT-licensed and auditable at [github.com/
|
|
268
|
+
- **Open source** — all connector code is MIT-licensed and auditable at [github.com/LetsFG/LetsFG](https://github.com/LetsFG/LetsFG).
|
|
271
269
|
|
|
272
270
|
---
|
|
273
271
|
|
|
@@ -279,7 +277,7 @@ Use Stripe's test token for payment setup without real charges:
|
|
|
279
277
|
setup_payment with token: "tok_visa"
|
|
280
278
|
```
|
|
281
279
|
|
|
282
|
-
This attaches a test Visa card. Unlock calls will
|
|
280
|
+
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.
|
|
283
281
|
|
|
284
282
|
---
|
|
285
283
|
|
|
@@ -297,22 +295,16 @@ Or install globally and use `node` directly (see Windows config above).
|
|
|
297
295
|
|
|
298
296
|
- Check IATA codes are correct — use `resolve_location` first
|
|
299
297
|
- Try a date 2+ weeks in the future (airlines don't sell last-minute on all routes)
|
|
300
|
-
- Ensure `pip install
|
|
298
|
+
- Ensure `pip install letsfg && playwright install chromium` completed successfully
|
|
301
299
|
- Check Python is available: the MCP server spawns a Python subprocess for local search
|
|
302
300
|
|
|
303
301
|
### How do I search without an API key?
|
|
304
302
|
|
|
305
|
-
Just omit `
|
|
303
|
+
Just omit `LETSFG_API_KEY` from your config. Local search (102 airline connectors) works without any key. You'll only miss the enterprise GDS/NDC sources (Amadeus, Duffel, etc.).
|
|
306
304
|
|
|
307
305
|
### Can I use this for commercial projects?
|
|
308
306
|
|
|
309
|
-
Yes. MIT license. The local connectors and SDK are fully open source.
|
|
310
|
-
|
|
311
|
-
### How do I pin a version?
|
|
312
|
-
|
|
313
|
-
```json
|
|
314
|
-
"args": ["-y", "boostedtravel-mcp@0.2.4"]
|
|
315
|
-
```
|
|
307
|
+
Yes. MIT license. The local connectors and SDK are fully open source.
|
|
316
308
|
|
|
317
309
|
### MCP server hangs on start
|
|
318
310
|
|
|
@@ -320,23 +312,23 @@ Ensure Node.js 18+ is installed. The server communicates via stdio (stdin/stdout
|
|
|
320
312
|
|
|
321
313
|
---
|
|
322
314
|
|
|
323
|
-
## Supported Airlines (
|
|
315
|
+
## Supported Airlines (102 connectors)
|
|
324
316
|
|
|
325
317
|
| Region | Airlines |
|
|
326
318
|
|--------|----------|
|
|
327
|
-
| **Europe** | Ryanair, Wizz Air, EasyJet, Norwegian, Vueling, Eurowings, Transavia, Pegasus, Turkish Airlines, Condor, SunExpress, Volotea, Smartwings, Jet2, LOT Polish Airlines |
|
|
328
|
-
| **Middle East & Africa** | Emirates, Etihad, Qatar Airways, flydubai, Air Arabia, flynas, Salam Air, Air Peace, FlySafair |
|
|
329
|
-
| **Asia-Pacific** | AirAsia, IndiGo, SpiceJet, Akasa Air, 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, US-Bangla, Biman Bangladesh |
|
|
330
|
-
| **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 |
|
|
319
|
+
| **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 |
|
|
320
|
+
| **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 |
|
|
321
|
+
| **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 |
|
|
322
|
+
| **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 |
|
|
331
323
|
| **Aggregator** | Kiwi.com (virtual interlining + LCC fallback) |
|
|
332
324
|
|
|
333
325
|
---
|
|
334
326
|
|
|
335
327
|
## Also Available As
|
|
336
328
|
|
|
337
|
-
- **
|
|
338
|
-
- **
|
|
339
|
-
- **
|
|
329
|
+
- **JavaScript/TypeScript SDK + CLI**: `npm install letsfg` — [npm](https://www.npmjs.com/package/letsfg)
|
|
330
|
+
- **Python SDK + CLI**: `pip install letsfg` — [PyPI](https://pypi.org/project/letsfg/)
|
|
331
|
+
- **GitHub**: [LetsFG/LetsFG](https://github.com/LetsFG/LetsFG)
|
|
340
332
|
|
|
341
333
|
## License
|
|
342
334
|
|
package/dist/index.js
CHANGED
|
@@ -100,7 +100,7 @@ var TOOLS = [
|
|
|
100
100
|
},
|
|
101
101
|
{
|
|
102
102
|
name: "unlock_flight_offer",
|
|
103
|
-
description: 'Unlock a flight offer for booking \u2014
|
|
103
|
+
description: 'Unlock a flight offer for booking \u2014 FREE with GitHub star.\n\nThis is the "quote" step: confirms the latest price with the airline and reserves the offer for 30 minutes. ALWAYS call this before book_flight so the user can see the confirmed price.\n\nIf the confirmed price differs from the search price, inform the user before proceeding.\n\nRequires GitHub star verification (call link_github first).\n\nNot idempotent \u2014 calling twice on the same offer may process twice.',
|
|
104
104
|
inputSchema: {
|
|
105
105
|
type: "object",
|
|
106
106
|
required: ["offer_id"],
|
|
@@ -142,7 +142,7 @@ var TOOLS = [
|
|
|
142
142
|
},
|
|
143
143
|
{
|
|
144
144
|
name: "setup_payment",
|
|
145
|
-
description: "
|
|
145
|
+
description: "Legacy payment setup \u2014 no longer required. Use link_github instead for free unlimited access.\n\nOnly needed if you want the old Stripe-based flow. For most users, star the GitHub repo and call link_github.",
|
|
146
146
|
inputSchema: {
|
|
147
147
|
type: "object",
|
|
148
148
|
properties: {
|
|
@@ -158,7 +158,7 @@ var TOOLS = [
|
|
|
158
158
|
},
|
|
159
159
|
{
|
|
160
160
|
name: "start_checkout",
|
|
161
|
-
description: "Automate airline checkout up to the payment page \u2014 NEVER submits payment.\n\nFLOW: search_flights \u2192 unlock_flight_offer
|
|
161
|
+
description: "Automate airline checkout up to the payment page \u2014 NEVER submits payment.\n\nFLOW: search_flights \u2192 unlock_flight_offer \u2192 start_checkout\n\nUses Playwright to drive the airline website: selects flights, fills passenger details, skips extras/seats, and stops at the payment form. Returns a screenshot and booking URL so the user can complete manually in their browser.\n\nSupported airlines: Ryanair, Wizz Air, EasyJet. Other airlines return booking URL only.\n\nSAFETY: Uses fake test data by default. Never enters payment info. The checkout_token from unlock_flight_offer is required \u2014 prevents unauthorized usage.\n\nRuns locally via Python subprocess (pip install letsfg && playwright install chromium).",
|
|
162
162
|
inputSchema: {
|
|
163
163
|
type: "object",
|
|
164
164
|
required: ["offer_id", "checkout_token"],
|
|
@@ -184,6 +184,17 @@ var TOOLS = [
|
|
|
184
184
|
}
|
|
185
185
|
}
|
|
186
186
|
},
|
|
187
|
+
{
|
|
188
|
+
name: "link_github",
|
|
189
|
+
description: 'Link your GitHub account for FREE unlimited access \u2014 star the repo and verify.\n\nFLOW: 1) User stars https://github.com/LetsFG/LetsFG 2) Call this tool with their GitHub username\n\nOnce verified, the user gets unlimited search, unlock, and booking forever.\nOnly needs to be called once. If already verified, returns confirmation.\n\nIf status is "star_required", the user needs to star the repo first, then try again.',
|
|
190
|
+
inputSchema: {
|
|
191
|
+
type: "object",
|
|
192
|
+
required: ["github_username"],
|
|
193
|
+
properties: {
|
|
194
|
+
github_username: { type: "string", description: "User's GitHub username (e.g., 'octocat')" }
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
},
|
|
187
198
|
{
|
|
188
199
|
name: "system_info",
|
|
189
200
|
description: "Get system resource info (RAM, CPU cores) and recommended concurrency settings.\n\nUse this to determine optimal max_browsers value for search_flights. Returns RAM total/available, CPU cores, recommended max browsers, and performance tier.\n\nTiers: minimal (<2GB, max 2), low (2-4GB, max 3), moderate (4-8GB, max 5), standard (8-16GB, max 8), high (16-32GB, max 12), maximum (32+GB, max 16).\n\nRead-only, no side effects, instant response.",
|
|
@@ -260,6 +271,10 @@ async function callTool(name, args) {
|
|
|
260
271
|
const result = await apiRequest("POST", "/api/v1/bookings/unlock", { offer_id: args.offer_id });
|
|
261
272
|
return JSON.stringify(result, null, 2);
|
|
262
273
|
}
|
|
274
|
+
case "link_github": {
|
|
275
|
+
const result = await apiRequest("POST", `/api/v1/agents/link-github?github_username=${encodeURIComponent(args.github_username)}`, {});
|
|
276
|
+
return JSON.stringify(result, null, 2);
|
|
277
|
+
}
|
|
263
278
|
case "book_flight": {
|
|
264
279
|
const body = {
|
|
265
280
|
offer_id: args.offer_id,
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "letsfg-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.2",
|
|
4
4
|
"mcpName": "io.github.Efistoffeles/letsfg",
|
|
5
|
-
"description": "LetsFG MCP Server —
|
|
5
|
+
"description": "LetsFG MCP Server — 102 airline connectors run locally + enterprise GDS/NDC APIs. Flight search & booking for Claude, Cursor, Windsurf, and any MCP-compatible AI agent.",
|
|
6
6
|
"main": "dist/index.js",
|
|
7
7
|
"bin": {
|
|
8
8
|
"letsfg-mcp": "dist/index.js"
|