trvl for VS Code
io.github.mikkoparkkola/trvl
Door-to-door travel MCP + CLI: flights, hotels, trains, cars, ferries. No API keys, Go binary.
client:VS Code
transport:stdio
runtime:oci
Install trvl in VS Code
.vscode/mcp.json
{
"inputs": [
{
"type": "promptString",
"id": "trvl-mcp-token",
"description": "TRVL_MCP_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-read-token",
"description": "TRVL_MCP_READ_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-write-token",
"description": "TRVL_MCP_WRITE_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-oauth-introspection-url",
"description": "TRVL_MCP_OAUTH_INTROSPECTION_URL",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-oauth-client-id",
"description": "TRVL_MCP_OAUTH_CLIENT_ID",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-oauth-client-secret",
"description": "TRVL_MCP_OAUTH_CLIENT_SECRET",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-oauth-audience",
"description": "TRVL_MCP_OAUTH_AUDIENCE",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-tool-mode",
"description": "TRVL_MCP_TOOL_MODE",
"password": true
},
{
"type": "promptString",
"id": "trvl-mcp-tool-timeout",
"description": "TRVL_MCP_TOOL_TIMEOUT",
"password": true
},
{
"type": "promptString",
"id": "afklm-key",
"description": "AFKLM_KEY",
"password": true
},
{
"type": "promptString",
"id": "afklm-op-ref",
"description": "AFKLM_OP_REF",
"password": true
},
{
"type": "promptString",
"id": "afklm-keychain-service",
"description": "AFKLM_KEYCHAIN_SERVICE",
"password": true
},
{
"type": "promptString",
"id": "afkl-klm-cookies",
"description": "AFKL_KLM_COOKIES",
"password": true
},
{
"type": "promptString",
"id": "serpapi-key",
"description": "SERPAPI_KEY",
"password": true
},
{
"type": "promptString",
"id": "travelpayouts-token",
"description": "TRAVELPAYOUTS_TOKEN",
"password": true
},
{
"type": "promptString",
"id": "transavia-api-key",
"description": "TRANSAVIA_API_KEY",
"password": true
},
{
"type": "promptString",
"id": "ticketmaster-api-key",
"description": "TICKETMASTER_API_KEY",
"password": true
},
{
"type": "promptString",
"id": "foursquare-api-key",
"description": "FOURSQUARE_API_KEY",
"password": true
},
{
"type": "promptString",
"id": "opentripmap-api-key",
"description": "OPENTRIPMAP_API_KEY",
"password": true
},
{
"type": "promptString",
"id": "geoapify-api-key",
"description": "GEOAPIFY_API_KEY",
"password": true
},
{
"type": "promptString",
"id": "distribusion-api-key",
"description": "DISTRIBUSION_API_KEY",
"password": true
},
{
"type": "promptString",
"id": "skyscanner-api-key",
"description": "SKYSCANNER_API_KEY",
"password": true
}
],
"servers": {
"trvl": {
"type": "stdio",
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"ghcr.io/mikkoparkkola/trvl:1.21.6"
],
"env": {
"TRVL_MCP_TOKEN": "${input:trvl-mcp-token}",
"TRVL_MCP_READ_TOKEN": "${input:trvl-mcp-read-token}",
"TRVL_MCP_WRITE_TOKEN": "${input:trvl-mcp-write-token}",
"TRVL_MCP_OAUTH_INTROSPECTION_URL": "${input:trvl-mcp-oauth-introspection-url}",
"TRVL_MCP_OAUTH_CLIENT_ID": "${input:trvl-mcp-oauth-client-id}",
"TRVL_MCP_OAUTH_CLIENT_SECRET": "${input:trvl-mcp-oauth-client-secret}",
"TRVL_MCP_OAUTH_AUDIENCE": "${input:trvl-mcp-oauth-audience}",
"TRVL_MCP_TOOL_MODE": "${input:trvl-mcp-tool-mode}",
"TRVL_MCP_TOOL_TIMEOUT": "${input:trvl-mcp-tool-timeout}",
"AFKLM_KEY": "${input:afklm-key}",
"AFKLM_OP_REF": "${input:afklm-op-ref}",
"AFKLM_KEYCHAIN_SERVICE": "${input:afklm-keychain-service}",
"AFKL_KLM_COOKIES": "${input:afkl-klm-cookies}",
"SERPAPI_KEY": "${input:serpapi-key}",
"TRAVELPAYOUTS_TOKEN": "${input:travelpayouts-token}",
"TRANSAVIA_API_KEY": "${input:transavia-api-key}",
"TICKETMASTER_API_KEY": "${input:ticketmaster-api-key}",
"FOURSQUARE_API_KEY": "${input:foursquare-api-key}",
"OPENTRIPMAP_API_KEY": "${input:opentripmap-api-key}",
"GEOAPIFY_API_KEY": "${input:geoapify-api-key}",
"DISTRIBUSION_API_KEY": "${input:distribusion-api-key}",
"SKYSCANNER_API_KEY": "${input:skyscanner-api-key}"
}
}
}
}
VS Code prompts for each input the first time the server starts, so no secret is written to the file. VS Code docs