Skip to content
VS Code

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

trvl in other clients