Door-to-door travel MCP + CLI: flights, hotels, trains, cars, ferries. No API keys, Go binary.
Connect Runs on your machine
claude mcp add trvl -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> -e TRVL_MCP_OAUTH_CLIENT_SECRET=<TRVL_MCP_OAUTH_CLIENT_SECRET> -e TRVL_MCP_OAUTH_AUDIENCE=<TRVL_MCP_OAUTH_AUDIENCE> -e TRVL_MCP_TOOL_MODE=<TRVL_MCP_TOOL_MODE> -e TRVL_MCP_TOOL_TIMEOUT=<TRVL_MCP_TOOL_TIMEOUT> -e AFKLM_KEY=<AFKLM_KEY> -e AFKLM_OP_REF=<AFKLM_OP_REF> -e AFKLM_KEYCHAIN_SERVICE=<AFKLM_KEYCHAIN_SERVICE> -e AFKL_KLM_COOKIES=<AFKL_KLM_COOKIES> -e SERPAPI_KEY=<SERPAPI_KEY> -e TRAVELPAYOUTS_TOKEN=<TRAVELPAYOUTS_TOKEN> -e TRANSAVIA_API_KEY=<TRANSAVIA_API_KEY> -e TICKETMASTER_API_KEY=<TICKETMASTER_API_KEY> -e FOURSQUARE_API_KEY=<FOURSQUARE_API_KEY> -e OPENTRIPMAP_API_KEY=<OPENTRIPMAP_API_KEY> -e GEOAPIFY_API_KEY=<GEOAPIFY_API_KEY> -e DISTRIBUSION_API_KEY=<DISTRIBUSION_API_KEY> -e SKYSCANNER_API_KEY=<SKYSCANNER_API_KEY> -- docker run -i --rm ghcr.io/mikkoparkkola/trvl:1.27.0
{
"mcpServers": {
"trvl": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mikkoparkkola/trvl:1.27.0"
],
"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>",
"TRVL_MCP_OAUTH_CLIENT_SECRET": "<TRVL_MCP_OAUTH_CLIENT_SECRET>",
"TRVL_MCP_OAUTH_AUDIENCE": "<TRVL_MCP_OAUTH_AUDIENCE>",
"TRVL_MCP_TOOL_MODE": "<TRVL_MCP_TOOL_MODE>",
"TRVL_MCP_TOOL_TIMEOUT": "<TRVL_MCP_TOOL_TIMEOUT>",
"AFKLM_KEY": "<AFKLM_KEY>",
"AFKLM_OP_REF": "<AFKLM_OP_REF>",
"AFKLM_KEYCHAIN_SERVICE": "<AFKLM_KEYCHAIN_SERVICE>",
"AFKL_KLM_COOKIES": "<AFKL_KLM_COOKIES>",
"SERPAPI_KEY": "<SERPAPI_KEY>",
"TRAVELPAYOUTS_TOKEN": "<TRAVELPAYOUTS_TOKEN>",
"TRANSAVIA_API_KEY": "<TRANSAVIA_API_KEY>",
"TICKETMASTER_API_KEY": "<TICKETMASTER_API_KEY>",
"FOURSQUARE_API_KEY": "<FOURSQUARE_API_KEY>",
"OPENTRIPMAP_API_KEY": "<OPENTRIPMAP_API_KEY>",
"GEOAPIFY_API_KEY": "<GEOAPIFY_API_KEY>",
"DISTRIBUSION_API_KEY": "<DISTRIBUSION_API_KEY>",
"SKYSCANNER_API_KEY": "<SKYSCANNER_API_KEY>"
}
}
}
}
{
"mcpServers": {
"trvl": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mikkoparkkola/trvl:1.27.0"
],
"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>",
"TRVL_MCP_OAUTH_CLIENT_SECRET": "<TRVL_MCP_OAUTH_CLIENT_SECRET>",
"TRVL_MCP_OAUTH_AUDIENCE": "<TRVL_MCP_OAUTH_AUDIENCE>",
"TRVL_MCP_TOOL_MODE": "<TRVL_MCP_TOOL_MODE>",
"TRVL_MCP_TOOL_TIMEOUT": "<TRVL_MCP_TOOL_TIMEOUT>",
"AFKLM_KEY": "<AFKLM_KEY>",
"AFKLM_OP_REF": "<AFKLM_OP_REF>",
"AFKLM_KEYCHAIN_SERVICE": "<AFKLM_KEYCHAIN_SERVICE>",
"AFKL_KLM_COOKIES": "<AFKL_KLM_COOKIES>",
"SERPAPI_KEY": "<SERPAPI_KEY>",
"TRAVELPAYOUTS_TOKEN": "<TRAVELPAYOUTS_TOKEN>",
"TRANSAVIA_API_KEY": "<TRANSAVIA_API_KEY>",
"TICKETMASTER_API_KEY": "<TICKETMASTER_API_KEY>",
"FOURSQUARE_API_KEY": "<FOURSQUARE_API_KEY>",
"OPENTRIPMAP_API_KEY": "<OPENTRIPMAP_API_KEY>",
"GEOAPIFY_API_KEY": "<GEOAPIFY_API_KEY>",
"DISTRIBUSION_API_KEY": "<DISTRIBUSION_API_KEY>",
"SKYSCANNER_API_KEY": "<SKYSCANNER_API_KEY>"
}
}
}
}
{
"servers": {
"trvl": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mikkoparkkola/trvl:1.27.0"
],
"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>",
"TRVL_MCP_OAUTH_CLIENT_SECRET": "<TRVL_MCP_OAUTH_CLIENT_SECRET>",
"TRVL_MCP_OAUTH_AUDIENCE": "<TRVL_MCP_OAUTH_AUDIENCE>",
"TRVL_MCP_TOOL_MODE": "<TRVL_MCP_TOOL_MODE>",
"TRVL_MCP_TOOL_TIMEOUT": "<TRVL_MCP_TOOL_TIMEOUT>",
"AFKLM_KEY": "<AFKLM_KEY>",
"AFKLM_OP_REF": "<AFKLM_OP_REF>",
"AFKLM_KEYCHAIN_SERVICE": "<AFKLM_KEYCHAIN_SERVICE>",
"AFKL_KLM_COOKIES": "<AFKL_KLM_COOKIES>",
"SERPAPI_KEY": "<SERPAPI_KEY>",
"TRAVELPAYOUTS_TOKEN": "<TRAVELPAYOUTS_TOKEN>",
"TRANSAVIA_API_KEY": "<TRANSAVIA_API_KEY>",
"TICKETMASTER_API_KEY": "<TICKETMASTER_API_KEY>",
"FOURSQUARE_API_KEY": "<FOURSQUARE_API_KEY>",
"OPENTRIPMAP_API_KEY": "<OPENTRIPMAP_API_KEY>",
"GEOAPIFY_API_KEY": "<GEOAPIFY_API_KEY>",
"DISTRIBUSION_API_KEY": "<DISTRIBUSION_API_KEY>",
"SKYSCANNER_API_KEY": "<SKYSCANNER_API_KEY>"
}
}
}
}
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools
This server runs locally, so its tools are listed by your MCP client once it starts.
Environment variables
| Name | Description |
|---|---|
TRVL_MCP_TOKENOptional, secret | Bearer token for HTTP-mode auth (unused in stdio). Optional. |
TRVL_MCP_READ_TOKENOptional, secret | Read-scoped bearer token for HTTP-mode auth (unused in stdio). Optional. |
TRVL_MCP_WRITE_TOKENOptional, secret | Write-scoped bearer token for HTTP-mode auth (unused in stdio). Optional. |
TRVL_MCP_OAUTH_INTROSPECTION_URLOptional | OAuth token introspection endpoint for HTTP-mode auth (unused in stdio). Optional. |
TRVL_MCP_OAUTH_CLIENT_IDOptional | OAuth client ID for HTTP-mode token introspection (unused in stdio). Optional. |
TRVL_MCP_OAUTH_CLIENT_SECRETOptional, secret | OAuth client secret for HTTP-mode token introspection (unused in stdio). Optional. |
TRVL_MCP_OAUTH_AUDIENCEOptional | Expected OAuth audience for HTTP-mode token introspection (unused in stdio). Optional. |
TRVL_MCP_TOOL_MODEOptional | Selects which MCP tool set is registered (e.g. smart/full). Optional, defaults to full set. |
TRVL_MCP_TOOL_TIMEOUTOptional | Per-tool-call timeout override. Optional, defaults to the built-in timeout. |
AFKLM_KEYOptional, secret | Air France-KLM API key; unlocks that airline's live fares/award search. Optional, trvl works without it. |
AFKLM_OP_REFOptional | 1Password reference for the Air France-KLM API key. Optional, alternative to AFKLM_KEY. |
AFKLM_KEYCHAIN_SERVICEOptional | macOS Keychain service name to read the Air France-KLM API key from. Optional, alternative to AFKLM_KEY. |
AFKL_KLM_COOKIESOptional, secret | Session cookies for Air France-KLM award search. Optional, unlocks award-fare lookups only. |
SERPAPI_KEYOptional, secret | SerpApi API key; unlocks search-engine-backed lookups used by some providers. Optional, trvl works without it. |
TRAVELPAYOUTS_TOKENOptional, secret | Travelpayouts API token; unlocks that flight-price data source. Optional, trvl works without it. |
TRANSAVIA_API_KEYOptional, secret | Transavia API key; unlocks that airline's live fares. Optional, trvl works without it. |
TICKETMASTER_API_KEYOptional, secret | Ticketmaster API key; unlocks event listings for destinations. Optional, trvl works without it. |
FOURSQUARE_API_KEYOptional, secret | Foursquare API key; unlocks that place-search data source. Optional, trvl works without it. |
OPENTRIPMAP_API_KEYOptional, secret | OpenTripMap API key; unlocks that attractions data source. Optional, trvl works without it. |
GEOAPIFY_API_KEYOptional, secret | Geoapify API key; unlocks that places/geocoding data source. Optional, trvl works without it. |
DISTRIBUSION_API_KEYOptional, secret | Distribusion API key; unlocks that ground-transport data source. Optional, trvl works without it. |
SKYSCANNER_API_KEYOptional, secret | Skyscanner API key; unlocks that car-hire data source. Optional, trvl works without it. |
Details
| Package | ghcr.io/mikkoparkkola/trvl:1.27.0 (OCI, stdio) |
| Package | [email protected] (NPM, stdio) |
| First published | 10 Oct 2026 |
| Last updated | 10 Oct 2026 |
| Registry name | io.github.MikkoParkkola/trvl |
More other servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
