A travel search server and CLI that gives an assistant real inventory rather than guesses: flights merged from several sources, six hotel sources, 22 European train, bus and ferry providers, rental cars, price alerts and award sweet spots. It runs as one local Go binary with no API keys and no signup.
The design choice worth noting is the tool surface. Instead of advertising dozens of tools, it exposes a single natural-language router tool, which the author measures at roughly 378 tokens against 33,500 for a full per-domain list. Older clients calling the legacy tool names still work through 66 compatible aliases. If you have ever watched an agent drown in an oversized tools list, this is the answer to that problem.
It also takes failure seriously, which matters when an agent acts on results without a human checking them. A blocked or throttled provider returns a typed status such as AKAMAI_BLOCK or RATE_LIMITED with a fix hint, rather than an empty result dressed up as "nothing found". Estimated values are labelled, currency-mismatched totals are skipped, providers run concurrently with per-provider timeouts, and a partial result is returned instead of aborting the search.
Hotel pricing is split deliberately between discovery, which returns fast lead-in rates, and decision, which verifies room-level offers before ranking. It provides booking links for manual handoff but never books, holds or guarantees a rate.
Note the licence before deploying it in a company: PolyForm Noncommercial, free for personal and noncommercial use, with commercial use requiring a separate licence.
Ten clients are supported: Claude Desktop and Code, Cursor, Windsurf, Codex, VS Code, Zed, Gemini, Amazon Q and LM Studio. Target one explicitly with trvl mcp install --client <name>, then restart it.
Claude Code directly:
claude mcp add trvl --transport stdio -- trvl mcp
Other routes: go install github.com/MikkoParkkola/trvl/cmd/trvl@latest, a raw binary from the releases page, or Docker with ghcr.io/mikkoparkkola/trvl.
Flights: Google Flights, Kiwi and Skiplagged merged, low-cost carrier fares, award scanning, both legs of a round trip
Ground: 22 train, bus and ferry providers across Europe, API first
Hotels: 6 sources, with discovery separated from verification
Travel hacks: 36 parallel detectors including hidden-city, positioning, stopover, multimodal and error fares
CLI: 56 standalone commands with table or JSON output
Profile: learns home airports, frequent flyer status and luggage preferences from your booking history
Observability
trvl status, or the local dashboard in HTTP mode, reports per-provider success rate, latency, freshness and circuit-breaker state. Useful when you need to know whether a thin result means no availability or a blocked source.
Remote mode
Local stdio is the default and the safest transport. trvl mcp --http binds to localhost, requires a bearer token, and generates one at startup if unset. Remote exposure with scoped tokens and OAuth 2.1 introspection is documented in the repository.
Licence and commercial use
PolyForm Noncommercial 1.0: free for personal and noncommercial use. Commercial use, which the author defines as company-internal use, hosted services or embedding in paid platforms, requires a separate licence at 500 EUR per month per named project.
For a travel business this is the line to read carefully: evaluating it costs nothing, running it in production does not.
Legal note from the author
The tool reads public-facing web APIs. It does not bypass authentication or circumvent rate limits, and throttles requests to resemble manual browsing. Automated access may still conflict with some providers' terms of service, and the author states that compliance is the operator's responsibility.
An optional stealth mode exists for flight and hotel search. It is off by default, activates only for hosts on an explicit allowlist set through an environment variable, and refuses by default when that allowlist is empty.
Maturity
Mature by open-source standards: 1098 commits, 82 releases, CI across macOS, Linux and Windows, more test code than source, and a release gate that runs the packaged binary before shipping. Listed on Glama, Smithery, PulseMCP, LobeHub and Cursor Directory.