Mapbox MCP Server
OFFICIAL SERVERGeocoding, place search, routing, isochrones and map images from Mapbox, plus offline geometry maths
Flight and hotel search with real bookings charged to a connected card, via LetsFG
Official · LetsFG TypeScript Remote (hosted) · Streamable HTTPLocal · stdio Maps and travel
55 popularity score ★ 2.2k ↓ 204/wk
Opens the app, which asks before it adds the server.
claude mcp add --transport http letsfg https://letsfg.co/developers/api/mcphttps://letsfg.co/developers/api/mcphttps://letsfg.co/developers/api/mcp{
"mcpServers": {
"letsfg": { "url": "https://letsfg.co/developers/api/mcp" }
}
}{
"mcpServers": {
"letsfg": { "serverUrl": "https://letsfg.co/developers/api/mcp" }
}
}Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.
It needs LETSFG_BEARER_TOKEN. Replace each <NAME> with your value.
claude mcp add letsfg -e LETSFG_BEARER_TOKEN=<LETSFG_BEARER_TOKEN> -- npx -y letsfg-mcp{
"mcpServers": {
"letsfg": {
"command": "npx",
"args": [
"-y",
"letsfg-mcp"
],
"env": {
"LETSFG_BEARER_TOKEN": "<LETSFG_BEARER_TOKEN>"
}
}
}
}{
"mcpServers": {
"letsfg": {
"command": "npx",
"args": [
"-y",
"letsfg-mcp"
],
"env": {
"LETSFG_BEARER_TOKEN": "<LETSFG_BEARER_TOKEN>"
}
}
}
}{
"servers": {
"letsfg": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"letsfg-mcp"
],
"env": {
"LETSFG_BEARER_TOKEN": "<LETSFG_BEARER_TOKEN>"
}
}
}
}[mcp_servers.letsfg]
command = "npx"
args = ["-y", "letsfg-mcp"]
[mcp_servers.letsfg.env]
LETSFG_BEARER_TOKEN = "<LETSFG_BEARER_TOKEN>"gemini mcp add --scope user -e LETSFG_BEARER_TOKEN=<LETSFG_BEARER_TOKEN> letsfg npx -- -y letsfg-mcpLETSFG_BEARER_TOKEN |
Required: Card-backed token from the connect flow at letsfg.co/connect (or `letsfg auth`). LETSFG_API_KEY, a paid Developer API key, can be used instead. |
|---|---|
LETSFG_API_KEY |
Optional: Developer API key (letsfg_...); needed for resolve_location, get_agent_profile and connect_payment. |
LETSFG_USER_AGENT |
Optional: Overrides the User-Agent sent to letsfg.co, for anti-bot 403s from VPS hosts. |
LETSFG_WAIT_FOR_SPLIT |
Optional: Set to 0 to skip waiting up to 90 s for late split-ticket offers. |
LETSFG_BASE_URL |
Optional: API base address; https://letsfg.co by default. |
LetsFG is a travel search and booking service. Its MCP server lets an assistant search flights across many airlines and booking sites, look up bookable hotel rates, and then actually book: a flight booking holds the fare on the user's card, a LetsFG booking agent buys the ticket, and the hold is captured only once an airline PNR exists. Hotel bookings work the same way, captured once the hotel confirms. Searching runs on LetsFG's own servers; the local package is a thin stdio client that forwards every call to letsfg.co over HTTPS.
There are two ways to use it. The hosted endpoint signs in with OAuth through a one-tap approval page at letsfg.co/connect, and a card is requested at the first booking (a zero-amount setup through Revolut). The npm package letsfg-mcp runs on your machine and needs that same card-backed token in LETSFG_BEARER_TOKEN, which the Python CLI's `letsfg auth` command can obtain, or a key for LetsFG's separate paid Developer API in LETSFG_API_KEY.
The npm build 2026.5.78 registers 14 tools, more than the README tables show: besides flight and hotel search and booking it has `answer_booking_question`, for when a booking agent pauses mid-checkout at a seat map, a priced extra or a moved fare and waits for the traveller's choice, plus `authenticate` and `load_resources` helpers. Flight search returns 10 offers by default (`max_results`), priced in EUR unless `currency` is set; hotel search returns up to 40 hotels in USD by default. Long-haul searches may also return split-ticket itineraries: two separate tickets with an unprotected self-transfer, flagged on the offer.
| To run it yourself | Node.js 18+ |
|---|
Node.js 18 or later for the npm package (npx). A LetsFG token from the connect flow at letsfg.co/connect in LETSFG_BEARER_TOKEN (obtainable with `letsfg auth` from the Python package letsfg, installed with pip), or a paid Developer API key in LETSFG_API_KEY. A card, Revolut Pay or Google Pay saved through the connect page before booking, and before any hotel call, including hotel search. The hosted endpoint needs only the OAuth approval.
With the bearer token, the stdio package's `resolve_location`, `get_agent_profile` and `connect_payment` return an error; they need a Developer API key, so pass IATA codes directly. `book_flight` takes one traveller per call and refuses more. A flight booking takes about 4 to 11 minutes to reach a PNR. Hotel search is free for 1,000 calls since the last hotel booking, then $5 per 1,000 from a prepaid balance. Hotel booking needs letsfg-mcp 2026.5.77 or later. `cancel_hotel_booking` refuses cancellations that cost money. From VPS addresses letsfg.co can return an anti-bot 403 (LETSFG_USER_AGENT overrides the User-Agent). Split-ticket offers have no protected connection.
Suits someone who wants an assistant to find and actually book flights or hotels and is fine with a card saved with LetsFG, because bookings place real holds and charges. The hosted endpoint is the easier choice for Claude, ChatGPT, Cursor or Windsurf: OAuth, nothing to install. The npm package is for clients without remote MCP support, and needs a token copied into its config. Not a fit for price lookups with no card at all: hotel calls refuse without a payment method. High-volume commercial integrations are pointed by its makers to the separate paid Developer API instead.
search_flightsresolve_locationbook_flightget_flight_bookinganswer_booking_questionresolve_hotel_citysearch_hotelsbook_hotelget_hotel_bookingcancel_hotel_bookingauthenticateconnect_paymentget_agent_profileload_resources