Viajante

io.github.felipebasurtoPublished by GitHub account felipebasurtov1.5.5Updated Nov 5, 2026

Flight and hotel search for the terminal, Python, and AI assistants.

Overview

AI-generated overview

Local MCP server that lets an assistant search flights and hotels, compare dates and destinations, and check prices from Google Flights, Google Hotels and…

What you can do
  • Search flights: one-way, round-trip, multi-city, cheapest dates in a window, flexible dates, and destination exploration
  • Search stays: hotel offers with total-stay prices and cancellation terms, room rates, and combined flight-plus-hotel trips
  • Check and verify: re-check an earlier offer, validate a proposed itinerary, flag amounts or links no search returned, and compare award value or transfer partners
  • Plan and track: split stay costs, group nights, look up airport codes offline, and optionally record price history or watch a saved search
When to use it
Useful when you want an assistant to research airfare and accommodation options, compare dates or nearby destinations, and keep the numbers tied to what the providers actually returned. Handy for trip planning where you want prices, itinerary details and links in one place.
Requirements
Runs locally over stdio; needs Python 3.10+ and either Node.js (npm package) or uv (uvx). Booking.com and detailed fetches need the optional browser extra with Playwright Chromium. No API keys or accounts are declared.
Before you install
It reads travel sites directly, so pages may change, block requests, or show different prices; confirm fares, baggage, hotel totals and cancellation terms with the provider before booking. Opt-in modes such as split tickets, hidden-city fares and Skiplagged carry their own risks. The optional streamable-HTTP transport has no authentication, so keep it on loopback. Price history and watch are opt-in and stored on your machine.

Installation

In SourceWeft

  1. Open Viajante in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

[Viajante: flight and hotel search for your terminal, Python, and AI assistants. Runs on your machine, no API keys.]

It reads Google Flights, Google Hotels, and Booking.com directly, and Skiplagged when you opt in. It returns prices, itinerary details, and links. It reports what the provider returned and says so when something is unknown; it never invents a fare.

Quick start

Requires Python 3.10+.

bash
pip install viajante
viajante flights JFK-LHR:2026-11-15 --fetch sweepviajante hotels London 2026-11-15 2026-11-20 --currency GBP --source google

Use future dates. Not sure of a code? viajante airports london.

Prefer not to install? uvx --from viajante viajante airports JFK, or npx -y -p @viajante/mcp viajante airports JFK (both need uv).

These searches use plain HTTP. Booking.com and --fetch detail need the browser extra.

Connect an AI assistant

Add this to your assistant's MCP configuration (needs uv and Python 3.10+):

json
{  "mcpServers": {    "viajante": {      "command": "npx",      "args": ["-y", "@viajante/mcp"]    }  }}

Without Node, use "command": "uvx" with "args": ["--from", "viajante[mcp]", "viajante-mcp"]. That covers Google Flights and Hotels with no Chromium. The npm entry also includes the browser extra, which search_explore needs.

Then ask in plain language:

Find a seven-night round trip from BOS to LHR, departing any day in November 2026. Compare the dates.

Hotels in Tokyo, November 12 to 16, two adults, free cancellation, in JPY.

Every tool result (except lookup_airports) carries one envelope: status, completeness, empty_reason, retry_after, observed_at. Only empty_reason: provider_empty means the provider found nothing. A client that only takes a URL can use viajante-mcp --transport streamable-http; it has no auth, so keep it on loopback (details).

All 22 MCP tools
ToolWhat it does
search_flightsOne-way, round-trip, or multi-city flights
search_datesCheapest fare per departure date in a window
search_flexDates around a target, then flights for the cheapest day
search_exploreDestinations from an origin, with a priced shortlist
search_hotelsStays with total-stay prices and cancellation terms
search_hotel_roomsSkiplagged room rates for one named hotel
get_hotel_detailsA hotel offer from this session, plus an optional room quote
search_tripFlights and hotel together, summed when compatible
search_split_ticketsOpt-in separately ticketed itineraries (connections not protected)
search_hidden_cityOpt-in Skiplagged hidden-city fares
recheck_offerOne fresh search to re-check an earlier offer
validate_itineraryCheck a proposed itinerary against search evidence
compare_awardsCents-per-point math for a named award offer
lookup_transfersPoints transfer-partner table
lookup_airportsAirport and metro codes, offline
plan_stay_blocksGroup consecutive nights with the same people
split_stay_costsSplit stay totals among who slept there
verify_answerFlag amounts, codes, dates, or links no search returned
price_historyPrices this machine recorded for a query (opt-in)
watch_priceRe-run a saved search and report the change
get_runtime_infoInstalled version, offline
get_guideLong operational guide

Command line

Run viajante <command> --help for options. Add --save FILE to write a JSON report.

CommandPurpose
flightsSpecific routes and dates (--nearby-days compares ±N days when N is set; --split-tickets is opt-in)
datesCheapest departure day across a window of up to 31 days
flexA few days either side of a target date
exploreDestinations from an origin airport
hotels, hotel-roomsGoogle Hotels, Booking.com, or Skiplagged
tripFlights and a hotel stay in one request
recheck-offerRe-check a saved offer against a fresh search
airportsFind airport codes
hidden-city, awards, pointsSkiplagged fares, award value, transfer partners
history, watchRecorded prices and saved re-runs (opt-in)
feedbackOpen a prefilled GitHub issue (viajante sends nothing itself)
bash
viajante dates BOS-LHR --from 2026-11-01 --to 2026-11-30 --nights 7

Python

python
from viajante import get_flights
report = get_flights("JFK-LHR:2026-11-15", fetch="sweep", top=5)
for result in report.queries:    if result.status == "ok":        for offer in result.offers:            print(offer.price, report.currency, offer.airline, offer.duration)    else:        print(result.error)

FlightQuery, HotelQuery, and the search_* functions are exported too; see the Python examples.

Optional browser support

bash
pip install 'viajante[browser]'playwright install chromium

For uvx, use viajante[mcp,browser] in --from and install Chromium from that same environment.

Good to know

  • Currency. Taken from --currency, or from a named origin airport's country. Hotels always need one. Viajante never converts between currencies.
  • Baggage. --carry-on asks Google to price one carry-on. Checked bags (--bags) are refused, because no transport can verify them. --baggage-buffer only affects ranking; it is not a quoted fee.
  • Hotels. Prices are for the whole stay. Free cancellation is required unless you opt out. Google rates 0–5, Booking.com 0–10.
  • Recommendation. Flight results may include a short recommendation block. It adds to the offer list and never replaces it.
  • Price level. Flight results may include Google's own price level (low, typical, or high) from the results page already fetched. It is Google's label for that price against its typical range. --price-history adds the page's price history. No extra request.
  • Unknown stays unknown. Missing fields are left out or marked unknown.

Travel sites change their pages, block requests, and update prices at any time. Confirm the final fare, baggage, hotel total, and cancellation terms with the provider before you book.

Contributing

Bug reports and focused pull requests are welcome; see CONTRIBUTING.md.

License

MIT. Independent project, not affiliated with Google, Booking.com, or any airline. Use of those services is subject to their terms: Google, Booking.com.

Source: README.md at commit 9a00446

Tools

0
SourceWeft started this package once in an isolated sandbox, without credentials, to list its tools. That failed: the server did not start.

Version history

11
  1. v1.5.5LatestNov 5, 2026
  2. v1.5.4Nov 4, 2026
  3. v1.5.2Oct 19, 2026
  4. v1.5.0Oct 9, 2026
  5. v1.4.7Oct 8, 2026
  6. v1.4.6Oct 7, 2026
  7. v1.4.5Oct 7, 2026
  8. v1.4.1Oct 5, 2026
  9. v1.4.0Oct 5, 2026
  10. v1.3.1Oct 2, 2026
  11. v1.2.0Sep 16, 2026

Score

50% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts

    Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.

  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts