MikkoParkkola

trvl

Live flights, hotels, trains, buses, ferries and price alerts for any MCP client. Single Go binary, no API keys, 24 providers.

MCP Server Trip Planning Free tier, then €500/month per named project for commercial use ▲ 110 views
Quick start
brew install MikkoParkkola/tap/trvl && trvl mcp install

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.

Documentation

Install

Homebrew, then auto-detect your client:

brew install MikkoParkkola/tap/trvl
trvl mcp install

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.

Manual client configuration:

{ "mcpServers": { "trvl": { "command": "trvl", "args": ["mcp"] } } }

What it covers

  • 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.