           
trvl β Real travel search for your AI assistant
Ask your AI assistant to plan a real trip, and it actually can. trvl gives Claude, Cursor, Windsurf, Codex, or any MCP-compatible client one smart tool β the travel router β with live access to flights, hotels, rental cars, trains, buses, ferries, price alerts, award sweet spots, weather, and destination intel. Free, no API keys, no signup. One binary.
You: I have β¬300 and a free weekend. Surprise me. Claude (with trvl): Dubrovnik, Croatia ππ· β βοΈ Ryanair HELβDBV β¬167 RT Β· π¨ Old Town Studios 4.6β β¬84 Β· π‘οΈ 26Β°C, sunny. π Naive β¬350 β optimized β¬251 β saved β¬99 (28%) by flying Friday and splitting airlines.
βΆ Try it live, no install: socialistic.ai/trvl-travel-mcp (community-hosted).
---
Install
Let your AI do it β paste into Claude Code, Cursor, Windsurf, or Codex:
Read https://raw.githubusercontent.com/MikkoParkkola/trvl/main/AGENTS.md and set up trvl
It installs the binary, wires the MCP server, installs the skill, and verifies everything. Under a minute.
Or by hand:
brew install MikkoParkkola/tap/trvl # install
trvl mcp install # auto-detects your AI client
Restart your client. trvl mcp install --client <name> targets a specific one (10 supported: Claude Desktop/Code, Cursor, Windsurf, Codex, VS Code, Zed, Gemini, Amazon Q, LM Studio).
<details> <summary>More ways to install (Go, Docker, raw binary, manual config)</summary>
# Direct binary (no Homebrew)
curl -fsSL https://github.com/MikkoParkkola/trvl/releases/latest/download/trvl_$(uname -s | tr '[:upper:]' '[:lower:]')_$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/').tar.gz | tar xz -C /usr/local/bin trvl
# Go
go install github.com/MikkoParkkola/trvl/cmd/trvl@latest
# Docker
docker run --rm ghcr.io/mikkoparkkola/trvl flights HEL NRT 2026-06-15
# Build from source
git clone https://github.com/MikkoParkkola/trvl.git && cd trvl && make build
# Claude Code CLI
claude mcp add trvl --transport stdio -- trvl mcp
# Manual JSON (Claude Desktop, Cursor, Windsurf, etc.)
# { "mcpServers": { "trvl": { "command": "trvl", "args": ["mcp"] } } }
</details>
Try it
Paste any of these to your assistant once trvl is wired:
Find the cheapest realistic trip from Helsinki for the long weekend of July 1β5, nonstop, hotel near the center.
Compare award sweet spots HELβLHR business on Aug 15 with 80k Amex MR + 20k Virgin points.
Create a mistake-fare watch for HELβBCN, July 1β8, and alert me below β¬90.
More starter prompts and what good answers look like: docs/DEMO.md.
Why trvl, not the alternatives
- Whole journey, door to door. It plans the entire trip across modes β home to airport, flight, arrival transfer, hotel, onward train β and prices each leg in its real mode. Most tools stop at one flight, one hotel.
- No API keys, no signup, no bill. Works the moment you install it. No Amadeus key to apply for, no subscription, no per-call cost.
- Your assistant, your machine. One local binary, any MCP client. Not locked to a vendor; your trips and preferences never leave your computer.
- It optimizes, not just lists. Shift-day pricing, split-airline routing, hidden-city checks, award sweet spots, round-trip fares. It hands back the cheaper option and shows what it saved.
- It is honest when a source fails. Typed statuses and labelled estimates, never an empty result dressed up as "nothing found."
Full head-to-head against Google Flights, KAYAK, Skyscanner, Kiwi, and other travel MCPs: docs/COMPARISON.md.
Why trust it
An AI agent acts on trvl's output without a human checking every result, so the bar is correctness, not just coverage.
- It tells you when it can't. A blocked or rate-limited provider returns a typed status (
AKAMAI_BLOCK,RATE_LIMITED,BOOKING_COOKIES_MISSING) with a fix hint, instead of a fake "nothing found." Estimated values are labelled; currency-mismatched totals are skipped, not faked. - Tested more than it is written. More test code than source, race-checked on macOS, Linux, and Windows. A smoke gate runs the packaged binary before any release β a build that doesn't run can't ship.
- It degrades gracefully. Providers run concurrently with per-provider timeouts; one source failing returns partial results instead of aborting the search.
- It's observable.
trvl status(or the local/dashboardin HTTP mode) shows per-provider success rate, latency, freshness, and circuit-breaker state.
A note on hotel prices
Hotel metasearch exposes list-level rates first; some are real, some only firm up after the property detail page reveals the room/tax/cancellation matrix. So trvl separates discovery (search_hotels β fast, lead-in prices) from decisions (search_accommodations β verifies room-level offers before ranking) and drill-down (search_hotels_with_details, hotel_rooms). It provides booking links for manual handoff but never books, holds, or guarantees a rate. Detail: docs/PROVIDERS.md.
Stealth: opt-in, authorized first-party access only
trvl flights and trvl hotels accept an optional --stealth flag that routes the fetch through trvl's existing Chrome HTTP/2 fingerprint transport. It is built as a fail-safe scope fence:
- Default off. Stealth is inactive unless you explicitly pass
--stealth. - Authorized hosts only. Even with
--stealth, it activates only for hosts on an operator-authorized allowlist read from theTRVL_STEALTH_ALLOWLISTenvironment variable (comma-separated hostnames; case-insensitive; exact match plus leading-dot suffix such as.google.com). An empty allowlist means stealth never activates β refuse by default. - No silent evasion. With
--stealthset for a host that is not on the allowlist, trvl runs the normal fetch path and logs one line (stealth not authorized for host <host>); it does not error, it does not abort. - Scope-fenced. Only flight and hotel search honour
--stealth. Other paths never receive it.
Using stealth against sites whose terms prohibit automated access is the operator's responsibility.
Example:
export TRVL_STEALTH_ALLOWLIST=".google.com"
trvl flights HEL NRT 2026-09-01 --stealth
trvl hotels "Helsinki" --checkin 2026-09-01 --checkout 2026-09-04 --stealth
What it can do
| Area | Highlights | Reference | |------|-----------|-----------| | MCP tools | 1 smart travel router + 66 compatibility aliases; 98.9% smaller tools/list footprint (~378 vs ~33,500 tokens) | MCP-TOOLS-REFERENCE.md | | Flights | Google Flights + Kiwi + Skiplagged merged; LCC fares, AFKLM award scan, round-trip (both legs) | PROVIDERS.md | | Ground | 20 train/bus/ferry providers across Europe, API-first | PROVIDERS.md | | Hotels | 6 sources, discovery β verification trust model | PROVIDERS.md | | Travel hacks | 37 parallel detectors (hidden-city, positioning, stopover, multimodal, error-fareβ¦) | PROVIDERS.md | | CLI | Standalone tool, 56 commands, table/JSON output | CLI.md | | Profile | Learns home airports, FF status, luggage, preferences from your booking history | traveller-workspace.md |
Is this for you?
Yes if you already plan trips with an AI assistant and want it to search real flights, hotels, trains, buses, ferries, and transfers instead of guessing β or if you're building an app that needs travel intent without a paid travel API.
Probably not if you just want to book on a website (use Google Flights), or you want a hosted product with an account and dashboard. trvl is a tool you run, not a service you log into.
Full positioning: docs/POSITIONING.md.
Run it as an HTTP / remote server
Local stdio is the default and safest transport. trvl mcp --http binds to 127.0.0.1, requires a bearer token, and generates one at startup if unset. Remote exposure, scoped read/write tokens, and OAuth 2.1 introspection: docs/REMOTE-MCP-OAUTH.md.
Available on
Glama Β· LobeHub Β· Smithery Β· MCPHub Β· Cursor Directory Β· PulseMCP Β· MCP Market Β· pkg.go.dev
Independent coverage: Roberto Reale's Budget Travel Pipeline β an independent build-and-test that surfaced real fixes and shaped the v1.10 trust roadmap.
Troubleshooting
- No tools showing? Restart your AI client after
trvl mcp install; confirmwhich trvlis on$PATH. - Empty flight results? Some routes have no Google Flights data β try a major pair like
trvl flights HEL LHR 2026-07-01. - Ground transport times out? Rail/ferry providers throttle; retry after 30s or pass
--timeout 3m.
Full troubleshooting: docs/CLI.md.
Ecosystem
Part of a suite of MCP tools: mcp-gateway (universal gateway) Β· nab (web extraction with anti-bot) Β· axterminator (macOS GUI automation).
Legal & license
trvl is a personal-use tool that reads public-facing web APIs (Google Flights, Google Hotels, and others). It does not bypass authentication or circumvent rate limits; request patterns are throttled to look like manual browsing. Automated access may violate some providers' Terms of Service β you are responsible for compliance in your jurisdiction.
Licensed under PolyForm Noncommercial 1.0 β free for personal and noncommercial use. Commercial use (company-internal, hosted service, embedding in paid platforms) requires a separate license: EUR 500/month per named project via GitHub Sponsors, see COMMERCIAL.md.
Built on fli, utls, and SerpAPI's parameter reference.
Star it
If trvl saved you a browser tab or an API subscription, a star helps other travellers (and their assistants) find it. That's the whole ask.






