About Soar Flight Booking MCP
Soar Flight Booking MCP is a remote server available at https://mcp.soar.flights.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
https://mcp.soar.flightsclaude mcp add --transport http soar-flight-booking https://mcp.soar.flights{"mcpServers":{"soar-flight-booking":{"type":"http","url":"https://mcp.soar.flights"}}}Open in Cursor{"servers":{"soar-flight-booking":{"type":"http","url":"https://mcp.soar.flights"}}}Open in VS Code{"mcpServers":{"soar-flight-booking":{"type":"http","url":"https://mcp.soar.flights"}}}{"mcpServers":{"soar-flight-booking":{"serverUrl":"https://mcp.soar.flights"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
2| Parameter | Type | Required | Description |
|---|---|---|---|
| origin | string | No | Origin city, metro area, airport name, or IATA code, e.g. New York, Bay Area, Heathrow, NYC, or SFO. Required unless slices is provided. |
| destination | string | No | Destination city, metro area, airport name, or IATA code, e.g. Los Angeles, London, LAX, or LON. Required unless slices is provided. |
| date | string | No | Departure date in YYYY-MM-DD format. |
| return_date | string | No | Return date in YYYY-MM-DD format for round trips. |
| passengers | integer | No | Number of passengers when passenger details are not supplied. |
| passengers_detail | array | No | Passenger types, birth dates, or ages for accurate fare search. |
| passenger_ids | array | No | Saved Rift passenger IDs from the user account, such as self or managed traveler IDs. |
| cabin | enum | No | Requested cabin class. Defaults to economy.economy | premium_economy | business | first |
| airlines | array | No | Marketing airline IATA codes to keep, e.g. ["AA"]. Applied after search before limit. |
| sort | enum | No | Primary sort before limit. Defaults to best (Rift app Best: price+duration+stops). Use price for explicit cheapest-first. For time-window requests ("around 7am", "must leave by 8") keep default sort=best or sort=price and use departure_after/before or arrival_after/before with time_mode—do not switch to sort=departure. Only use duration/departure/arrival when the user prioritizes that dimension over price without specifying a window.best | price | duration | departure | arrival |
| secondary_sort | enum | No | Optional tiebreaker after primary sort. When sort=price, equal prices break by duration, stops, then departure (same as the web app) unless you set secondary_sort.best | price | duration | departure | arrival |
| time_mode | enum | No | How departure/arrival windows apply. prefer (default): soft time want but best-value ranking wins—"prefer morning", "around 7 if possible", "ideally 7am"; keep all offers, default sort=best, present recommended and when preferred_time_match is false also preferred_time_offer_id. strict: hard time requirement—"must leave at 7", "only morning", "cannot leave after 8"; drop out-of-window offers; recommended is best in-window.prefer | strict |
| departure_after | string | No | Window start for first departure (local HH:MM). Pair with departure_before. Example ~7am: departure_after=06:00, departure_before=08:00. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers before this time are dropped. |
| departure_before | string | No | Window end for first departure (local HH:MM). Pair with departure_after. Example ~7am: departure_after=06:00, departure_before=08:00. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers after this time are dropped. |
| arrival_after | string | No | Window start for first-slice arrival (local HH:MM). Pair with arrival_before. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers arriving before this time are dropped. |
| arrival_before | string | No | Window end for first-slice arrival (local HH:MM). Pair with arrival_after. prefer (default): soft—cheaper out-of-window offers remain. strict: hard—offers arriving after this time are dropped. |
| stops | integer | No | Exact stop count after search (0 = nonstop). Distinct from max_connections (provider upper bound). |
| min_stops | integer | No | Minimum stops after search. |
| max_stops | integer | No | Maximum stops after search. |
| max_price | number | No | Maximum total_amount in USD after search. |
| refundable_only | boolean | No | Keep only offers with conditions.refundable=true. |
| changeable_only | boolean | No | Keep only offers with conditions.changeable=true. |
| min_checked_bags | integer | No | Minimum included checked bags when bag data is present. Offers with missing/unknown bag data are kept (not treated as zero); use list_bag_options on a chosen offer_id to confirm purchasable bags. |
| via | array | No | Require a connection through one of these airport IATAs. |
| avoid_airports | array | No | Drop offers that connect through any of these airport IATAs. |
| require_origin | array | No | After metro expansion, keep only offers whose first origin is one of these IATAs. |
| require_destination | array | No | After metro expansion, keep only offers whose first-slice destination is one of these IATAs. |
| currency | string | No | Optional ISO 4217 currency code. Rift Flight Booking MCP prices flights in USD only; omit this field or pass USD. |
| slices | array | No | Multi-city slices when origin/destination/date are not enough. |
| limit | integer | No | Maximum compact offers to return after MCP filters/sort. Defaults to 15 after filters/sort; pass a higher limit (up to 250) or call again with a larger limit if the user needs more options. Filters run before this limit. preferred_time pin may add one extra row when the best in-window offer would otherwise be omitted. |
| include_fare_options | boolean | No | When true, include alternate fare tiers on each offer. Defaults to false so search stays small enough for agents; use soar_get_offer after selecting an offer_id for fare comparison. |
| max_connections | integer | No | Provider-side maximum connections (upper bound). For exact stop counts use stops/min_stops/max_stops. |
Details
The maintainer has not added details yet. Check the README in the repository.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.