# trvl

Searches flights, hotels and ground transport, merges the sources and hands back one route with the savings spelled out.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 89
- Author: MikkoParkkola
- License: not stated · policy=link-only · description only; the file stays with the author
- Source: https://github.com/MikkoParkkola/trvl
- Updated: 2026-10-23
- HTML: https://affpapa.org/en/nevibecode/mcp/trvl

## What it does

trvl is a single binary running locally. Your AI client talks to it over MCP, and the server queries flight, lodging, rail and weather providers on its own, then removes duplicates and picks the cheaper option. No personal API key is needed for the default search; paid providers turn on only when you supply credentials.

The client sees one `travel` router tool, which takes a plain-language request and decides what to look up. Older clients calling individual tool names keep working too. There is also a set of detectors for shifting dates, mixing carriers across legs, hidden-city segments and award fares.

Some providers sit behind bot protection and may piggyback on a browser session you already have open, so read that part before installing. Search requests reach the providers the same way they would from any booking site, while whatever the server stores stays on your disk. A released build also sends one daily heartbeat to `https://telemetry.revaluator.ai/v1/heartbeat`; `TRVL_TELEMETRY_ENDPOINT` points it elsewhere and the ping can be turned off.

## Requirements
- Needs: Node.js (commands run via npx)
- Environment variables: `TRVL_MCP_TOKEN`, `TRVL_MCP_READ_TOKEN`, `TRVL_MCP_WRITE_TOKEN`, `TRVL_MCP_OAUTH_INTROSPECTION_URL`, `TRVL_MCP_OAUTH_CLIENT_ID`, `TRVL_MCP_OAUTH_CLIENT_SECRET`, `TRVL_MCP_OAUTH_AUDIENCE`, `TRVL_MCP_TOOL_MODE`, `TRVL_MCP_TOOL_TIMEOUT`, `AFKLM_KEY` — keys and tokens: ask the human for the values, never commit them or put them in shared files.

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add --env TRVL_MCP_TOKEN=<TRVL_MCP_TOKEN> --env TRVL_MCP_READ_TOKEN=<TRVL_MCP_READ_TOKEN> --env TRVL_MCP_WRITE_TOKEN=<TRVL_MCP_WRITE_TOKEN> --env TRVL_MCP_OAUTH_INTROSPECTION_URL=<TRVL_MCP_OAUTH_INTROSPECTION_URL> --env TRVL_MCP_OAUTH_CLIENT_ID=<TRVL_MCP_OAUTH_CLIENT_ID> --transport stdio trvl -- npx -y trvl-mcp
```
Replace <…> with your own values. 17 more environment variables are in the server README

### Codex

**Platform CLI**
```bash
codex mcp add trvl --env TRVL_MCP_TOKEN=<TRVL_MCP_TOKEN> --env TRVL_MCP_READ_TOKEN=<TRVL_MCP_READ_TOKEN> --env TRVL_MCP_WRITE_TOKEN=<TRVL_MCP_WRITE_TOKEN> --env TRVL_MCP_OAUTH_INTROSPECTION_URL=<TRVL_MCP_OAUTH_INTROSPECTION_URL> --env TRVL_MCP_OAUTH_CLIENT_ID=<TRVL_MCP_OAUTH_CLIENT_ID> -- npx -y trvl-mcp
```
Replace <…> with your own values. 17 more environment variables are in the server README

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "trvl": {
            "command": "npx",
            "args": [
                "-y",
                "trvl-mcp"
            ],
            "env": {
                "TRVL_MCP_TOKEN": "<TRVL_MCP_TOKEN>",
                "TRVL_MCP_READ_TOKEN": "<TRVL_MCP_READ_TOKEN>",
                "TRVL_MCP_WRITE_TOKEN": "<TRVL_MCP_WRITE_TOKEN>",
                "TRVL_MCP_OAUTH_INTROSPECTION_URL": "<TRVL_MCP_OAUTH_INTROSPECTION_URL>",
                "TRVL_MCP_OAUTH_CLIENT_ID": "<TRVL_MCP_OAUTH_CLIENT_ID>"
            }
        }
    }
}
```
Replace <…> with your own values. 17 more environment variables are in the server README

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "trvl": {
            "type": "stdio",
            "command": "npx",
            "args": [
                "-y",
                "trvl-mcp"
            ],
            "env": {
                "TRVL_MCP_TOKEN": "<TRVL_MCP_TOKEN>",
                "TRVL_MCP_READ_TOKEN": "<TRVL_MCP_READ_TOKEN>",
                "TRVL_MCP_WRITE_TOKEN": "<TRVL_MCP_WRITE_TOKEN>",
                "TRVL_MCP_OAUTH_INTROSPECTION_URL": "<TRVL_MCP_OAUTH_INTROSPECTION_URL>",
                "TRVL_MCP_OAUTH_CLIENT_ID": "<TRVL_MCP_OAUTH_CLIENT_ID>"
            }
        }
    }
}
```
Replace <…> with your own values. 17 more environment variables are in the server README

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add -e TRVL_MCP_TOKEN=<TRVL_MCP_TOKEN> -e TRVL_MCP_READ_TOKEN=<TRVL_MCP_READ_TOKEN> -e TRVL_MCP_WRITE_TOKEN=<TRVL_MCP_WRITE_TOKEN> -e TRVL_MCP_OAUTH_INTROSPECTION_URL=<TRVL_MCP_OAUTH_INTROSPECTION_URL> -e TRVL_MCP_OAUTH_CLIENT_ID=<TRVL_MCP_OAUTH_CLIENT_ID> trvl npx -y trvl-mcp
```
Replace <…> with your own values. 17 more environment variables are in the server README

## When to use it
- compare a flight and a train on the same route
- build one itinerary from flight, hotel and transfer
- find a cheaper fare by moving the dates
- check whether a price hides a hidden-city segment
- keep price-drop alerts running for a route

## Example prompts
- Find a weekend trip under 300 euros from Helsinki, with a hotel and a transfer
- Compare train and plane to Berlin next weekend
- Alert me if the fare to Dubrovnik drops

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
