mcpField
T
trvl

trvl

ローカル
github.com地図・旅行912 日前に更新

trvl について

trvl は単一バイナリで動作する旅行検索の MCP サーバー兼コマンドラインツールで、航空券、ホテル、列車、バス、フェリー、レンタカー、天気を扱います。デフォルトの検索には個人の API キーが不要で、AI アシスタントに実際の旅行検索を行わせたいユーザー向けです。

主な機能

  1. 01MCP クライアント向けの統合 travel ルーター・ツール
  2. 02航空券、ホテル、地上交通、レンタカーの検索
  3. 03デフォルト検索で個人 API キー不要
  4. 04節約額を表示する価格最適化
  5. 05データソース失敗時の明示的なステータス表示
  6. 06trvl status によるプロバイダー別の状態確認

活用シーン

  1. 01AI アシスタントとのドアツードアの旅行計画
  2. 02航空券とホテルの合計価格の比較
  3. 03航空券の価格アラートの設定

MCP 対応

trvl は MCP サーバーとして動作し、Claude や Cursor などの MCP クライアントに travel ツールを公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"mikkoparkkola-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>",
"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>"
}
}
}
}
起動コマンドnpx -y trvl-mcp
設定が必要な環境変数
TRVL_MCP_TOKENシークレットBearer token for HTTP-mode auth (unused in stdio). Optional.
TRVL_MCP_READ_TOKENシークレットRead-scoped bearer token for HTTP-mode auth (unused in stdio). Optional.
TRVL_MCP_WRITE_TOKENシークレットWrite-scoped bearer token for HTTP-mode auth (unused in stdio). Optional.
TRVL_MCP_OAUTH_INTROSPECTION_URLシークレットOAuth token introspection endpoint for HTTP-mode auth (unused in stdio). Optional.
TRVL_MCP_OAUTH_CLIENT_IDシークレットOAuth client ID for HTTP-mode token introspection (unused in stdio). Optional.
TRVL_MCP_OAUTH_CLIENT_SECRETシークレットOAuth client secret for HTTP-mode token introspection (unused in stdio). Optional.
TRVL_MCP_OAUTH_AUDIENCEシークレットExpected OAuth audience for HTTP-mode token introspection (unused in stdio). Optional.
TRVL_MCP_TOOL_MODESelects which MCP tool set is registered (e.g. smart/full). Optional, defaults to full set.
TRVL_MCP_TOOL_TIMEOUTPer-tool-call timeout override. Optional, defaults to the built-in timeout.
AFKLM_KEYシークレットAir France-KLM API key; unlocks that airline's live fares/award search. Optional, trvl works without it.
AFKLM_OP_REF1Password reference for the Air France-KLM API key. Optional, alternative to AFKLM_KEY.
AFKLM_KEYCHAIN_SERVICEシークレットmacOS Keychain service name to read the Air France-KLM API key from. Optional, alternative to AFKLM_KEY.
AFKL_KLM_COOKIESシークレットSession cookies for Air France-KLM award search. Optional, unlocks award-fare lookups only.
SERPAPI_KEYシークレットSerpApi API key; unlocks search-engine-backed lookups used by some providers. Optional, trvl works without it.
TRAVELPAYOUTS_TOKENシークレットTravelpayouts API token; unlocks that flight-price data source. Optional, trvl works without it.
TRANSAVIA_API_KEYシークレットTransavia API key; unlocks that airline's live fares. Optional, trvl works without it.
TICKETMASTER_API_KEYシークレットTicketmaster API key; unlocks event listings for destinations. Optional, trvl works without it.
FOURSQUARE_API_KEYシークレットFoursquare API key; unlocks that place-search data source. Optional, trvl works without it.
OPENTRIPMAP_API_KEYシークレットOpenTripMap API key; unlocks that attractions data source. Optional, trvl works without it.
GEOAPIFY_API_KEYシークレットGeoapify API key; unlocks that places/geocoding data source. Optional, trvl works without it.
DISTRIBUSION_API_KEYシークレットDistribusion API key; unlocks that ground-transport data source. Optional, trvl works without it.
SKYSCANNER_API_KEYシークレットSkyscanner API key; unlocks that car-hire data source. Optional, trvl works without it.

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocighcr.io/mikkoparkkola/trvl:1.27.0
npmtrvl-mcp1.27.0

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Go レポートカード CI リリース ダウンロード govulncheck OpenSSF Scorecard ライセンス Go リファレンス MCP プロバイダー Go バージョン VS Code にインストール Cursor にインストール ライブデモ

trvl — AI アシスタントのためのリアルな旅行検索

trvl デモ

AI アシスタントに実際の旅行プランを頼めば、本当に計画してくれます。 trvl は、Claude、Cursor、Windsurf、Codex、または MCP 互換クライアントに、スマートなツールをひとつ提供します。travel ルーターを通じて、フライト、ホテル、レンタカー、列車、バス、フェリー、価格アラート、特典航空券のお得な情報、天気、目的地情報をリアルタイムで利用できます。非商用利用は無料で、デフォルトの検索に個人用 API キーは不要、登録も不要です。バイナリはひとつだけです。

あなた: 300 ユーロと自由な週末があります。行き先はおまかせします。

回答例(料金は例です): クロアチア、ドゥブロヴニク 🇭🇷 — ✈️ Ryanair HEL→DBV 往復 €167 · 🏨 Old Town Studios 4.6★ €84 · 🌡️ 26°C、晴れ。 📊 そのままなら €350 → 最適化後 €251 → 金曜日に出発し、航空会社を分けて**€99(28%)節約**。

▶ インストール不要のライブデモを試す: socialistic.ai/trvl-travel-mcp(コミュニティがホストしています)。


仕組みをひとことで

trvl はお使いのマシンで動作する単一のバイナリです。AI クライアントは MCP 経由で trvl と通信します。trvl はフライト、ホテル、交通機関、天気、スポットの情報源に問い合わせ、結果を統合して重複を除き、最適化してから一つの回答として返します。ほとんどの情報源は無料の公開エンドポイントなので、登録は必要ありません。ボット対策のある情報源では、すでにお使いのブラウザーセッションを再利用する場合があります。インストール前に確認しておく価値があるのはこの点です。trvl が読み取る情報と保持する情報をご覧ください。

trvl は最新の MCP リビジョン 2 つに対応しています。2026-07-28 と 2025-11-25 です。_meta を含まない initialize には、ハンドシェイクで 2025-11-25 と 2026-07-28 のどちらが指定されていても、2025-11-25 として応答し、その応答には ping と resources/subscribe が含まれます。initialize の _meta に 2026-07-28 を指定すると、2026 形式が選択されます。各リクエストの _meta["io.modelcontextprotocol/protocolVersion"] に 2026-07-28 を指定するクライアントには、server/discover、resultType、一覧・読み取りエンドポイントのキャッシュヒント、およびリソースのサブスクライブに代わる subscriptions/listen が提供されます。それ以外の _meta のプロトコルバージョンを指定すると、data.supported と data.requested を含む JSON-RPC -32022 が返されます。HTTP では、MCP-Protocol-Version ヘッダーをそのフィールドと一致させる必要があります。2026 のヘッダーだけを指定した場合は -32020 になります。2026 のリクエストでは、Mcp-Method も送信する必要があり(tools/call、resources/read、prompts/get の場合は Mcp-Name も必要です)。

代替サービスではなく trvl を選ぶ理由

  • 出発から到着まで、旅程全体をカバーします。 自宅から空港、フライト、到着後の移動、ホテル、その後の鉄道まで、交通手段をまたいで旅行全体を計画し、各区間を実際の移動手段に応じて料金計算します。多くのツールはフライトかホテルのどちらか一つしか扱いません。
  • 標準の検索に個人用 API キーは不要です。 標準の検索経路では、申し込みが必要な Amadeus キーも、サブスクリプションも、呼び出しごとの料金もありません。任意のプロバイダーは認証情報を設定すると有効になりますが、標準のフライト、ホテル、地上交通の検索に必須のものはありません。
  • アシスタントもマシンも、あなたのものです。 ローカルで動く単一のバイナリで、あらゆる MCP クライアントに対応し、特定のベンダーに縛られません。検索クエリは、他の旅行サイトと同じように、検索対象のプロバイダーへ送信されます。Google、Kiwi、Booking などには、ルート、日付、旅行者数が送られます。自分で設定した Webhook を除き、trvl が独自に保持する情報はお使いのマシン上にとどまります。リリースビルドは https://telemetry.revaluator.ai/v1/heartbeat に毎日 1 回のハートビートを送信します。この機能は無効にできます。TRVL_TELEMETRY_ENDPOINT を設定すると、この URL が置き換えられます。どちらについても以下で詳しく説明します。
  • 候補を列挙するだけでなく、最適化します。 日程をずらした場合の料金、航空会社を分ける経路、隠れた都市の確認、特典航空券のお得な利用先、往復運賃を考慮します。より安い選択肢を提示し、節約額も示します。
  • 情報源に問題が起きたときも、正直に伝えます。 型付きのステータスと、推定であることを明記した料金を返します。「見つかりませんでした」と見せかけた空の結果は返しません。

Google Flights、KAYAK、Skyscanner、Kiwi、その他の旅行向け MCP との詳細な比較については、docs/COMPARISON.mdをご覧ください。

できること

分野主な機能参考資料
MCP ツールスマートな travel ルーターが 1 つあります。完全なドメイン別リスト(約 33,500 トークン)の代わりに、自然言語対応のツールを 1 つ(約 378 トークン)提示するため、tools/list の占有量を約 98.9% 削減できます。従来のツール名を呼び出す古いクライアントも引き続き動作します(従来互換の機能は 66 個)。MCP-TOOLS-REFERENCE.md
航空便Google Flights、Kiwi、Skiplagged の情報を統合。LCC 運賃、AFKLM 特典航空券の検索、往復(両区間)に対応PROVIDERS.md
地上交通ヨーロッパ全域の 22 の鉄道・バス・フェリー事業者に対応。API を優先PROVIDERS.md
ホテル6 つの情報源に対応。「検索 → 検証」の信頼モデルPROVIDERS.md
旅行の裏ワザ36 個の並列検出機能(隠れ都市、ポジショニング、ストップオーバー、複合交通、エラー運賃など)PROVIDERS.md
CLI単体で動作するツール。57 個のコマンドに対応し、テーブル/JSON 形式で出力CLI.md
プロフィール予約履歴から、自宅の空港、FF ステータス、手荷物、好みを学習traveller-workspace.md

これはあなたに向いていますか?

向いています:すでに AI アシスタントで旅行を計画していて、推測ではなく実際の航空便、ホテル、鉄道、バス、フェリー、送迎を検索したい場合、または有料の旅行 API を使わずに旅行に関する意図を扱うアプリを開発したい場合。

おそらく向いていません:ウェブサイトで予約したいだけの場合(Google Flights をお使いください)、またはアカウントとダッシュボードを備えたホスト型の製品をお求めの場合。trvl は自分で実行するツールであり、ログインして使うサービスではありません。

詳しい位置づけについては、docs/POSITIONING.md をご覧ください。

インストール

AI に任せる — Claude Code、Cursor、Windsurf、または Codex に貼り付けてください:

https://raw.githubusercontent.com/MikkoParkkola/trvl/main/AGENTS.md を読み、trvl をセットアップしてください

バイナリをインストールし、MCP サーバーを接続して、スキルをインストールし、すべてを検証します。1 分もかかりません。

または手動で:

brew install MikkoParkkola/tap/trvl   # install
trvl mcp install                       # auto-detects your AI client

クライアントを再起動してください。trvl mcp install --client <name> を実行すると、特定のクライアントを対象にできます(10 種類に対応:Claude Desktop/Code、Cursor、Windsurf、Codex、VS Code、Zed、Gemini、Amazon Q、LM Studio)。

その他のインストール方法(Go、Docker、生のバイナリ、手動設定)
# Direct binary (no Homebrew)
TRVL_VERSION="$(curl -fsSLI -o /dev/null -w '%{url_effective}' https://github.com/MikkoParkkola/trvl/releases/latest | sed 's#.*/v##')"
curl -fsSL "https://github.com/MikkoParkkola/trvl/releases/download/v${TRVL_VERSION}/trvl_${TRVL_VERSION}_$(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 2027-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"] } } }

試してみる

trvl の接続後、以下のいずれかをアシスタントに貼り付けてください:

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.

その他のプロンプト例と、良い回答の例については、docs/DEMO.md をご覧ください。

信頼できる理由

AI エージェントは、人がすべての結果を確認しなくても trvl の出力に基づいて行動するため、網羅性だけでなく正確性が重要です。

  • 対応できない場合はその旨を伝えます。 プロバイダーがブロック中またはレート制限中の場合、偽の「見つかりませんでした」ではなく、修正のヒントを添えて型付きステータス(AKAMAI_BLOCK、RATE_LIMITED、BOOKING_COOKIES_MISSING)を返します。推定値にはその旨を明記し、通貨が一致しない合計金額は捏造せずに除外します。
  • コード量より多くテストしています。 テストコードはソースコードより多く、macOS、Linux、Windows でレース検査を実施しています。リリース前にはスモークゲートでパッケージ済みバイナリを実行します。実行できないビルドはリリースされません。
  • 障害時も適切に縮退します。 プロバイダーは個別のタイムアウトを設定して並行実行されます。1 つの情報源で障害が発生しても、検索を中止するのではなく部分的な結果を返します。
  • 状態を確認できます。 trvl status(または HTTP モードのローカル /dashboard)では、プロバイダーごとの成功率、レイテンシー、情報の鮮度、サーキットブレーカーの状態を確認できます。

ホテル価格について。 ホテルのメタ検索では、まず一覧レベルの料金が表示されます。その中には確定した料金もあれば、施設の詳細ページにある部屋・税金・キャンセル条件の一覧を確認するまで確定しない料金もあります。そのため trvl では、検索(search_hotels — 高速で、最低価格を表示)、比較検討(search_accommodations — ランキング前に部屋単位のオファーを検証)、詳細確認(search_hotels_with_details、hotel_rooms)を分けています。手動で引き継ぐための予約リンクは提供しますが、予約や部屋の確保、料金の保証は行いません。詳細は docs/PROVIDERS.md をご覧ください。

trvl が読み取る情報と保持する情報

何も指示しなくても、2つのことが行われます。どちらも自明ではないため、リンク先のページに委ねず、ここで説明します。

ブラウザーの Cookie を自動的に読み取ります。 ホテルや鉄道のサイトでは検索 API の前にボット対策が設けられており、trvl はすでにお使いのブラウザーセッションを再利用してそれを回避します。そのため、API キーなしで検索できます。読み取りは trvl の起動時、検索を行う前に始まります。読み取りを有効にするフラグはありません。macOS ではブラウザーの Cookie ストアが暗号化されているため、読み取りには Keychain へのアクセスが必要で、Keychain の確認が表示されます。読み取られるのは、検索対象サイトに対するご自身のセッション Cookie であり、同じサイトへのリクエストに含めて送信されます。Cookie を受け取る可能性のある各プロバイダー定義はソースコード内でレビューされ、バイナリに組み込まれています。実行時のプロバイダー JSON は実行可能ではありません。客室検索で呼び出し元が指定した URL は、Cookie を付与する前に Booking.com の URL であることが確認され、この確認が維持されていない場合はテストが失敗します。サイトが trvl を別のホストにリダイレクトした場合、Cookie は引き継がれません。Go の HTTP クライアントは、ホストが変わると Cookie を送信しないためです。この確認ではスキームではなくホストを比較するため、サイトが自身の https:// アドレスを平文の http:// にリダイレクトした場合は Cookie が引き継がれます。サイトが自身の通信を平文にダウングレードするケースだけは、セッションが暗号化されずにネットワーク上を流れることになります。trvl が Cookie を独自のエンドポイントに送信することはありません。

任意のプロバイダー定義はソースコードのみで提供されます。 trvl providers enable <id> で有効にできるのは、現在のバイナリに含まれるレビュー済みの定義のみです。実行時の状態ファイルには同意、有効状態、健全性が記録されますが、エンドポイント、ヘッダー、認証、リクエストテンプレート、レスポンスマッピングを差し替えることはできません。~/.trvl/providers にある古いファイルは、ロールバックや手動移行に備えてそのまま残されますが、trvl が読み込むことはありません。新しい定義は、レビュー済みのソースコード変更(またはユーザーが管理するフォーク)を通じて追加する必要があります。

動作状態は ~/.trvl に保持されます。 保存済みの旅行、設定と旅行者プロフィール、価格ウォッチ、検索履歴、キャッシュされた Cookie とプロバイダートークン、プロバイダーの健全性ログ、Google のレート制限によるクールダウン、アップグレードとプロバイダーの自己修復に関する記録、ランダムなインストール ID が含まれます。これらの状態はローカルに保存されます。リリース版は、1 日に最大 1 回、インストール ID のみを https://telemetry.revaluator.ai/v1/heartbeat に送信します。このディレクトリ内のほかの情報は送信されません。TRVL_TELEMETRY_ENDPOINT で送信先 URL を変更できます。TRVL_NO_TELEMETRY=1 を設定すると、送信が停止します。価格ウォッチに Webhook URL を指定すると、そのウォッチの経路と価格データがそのアドレスに POST されます。これが Webhook の目的です。

JSON 状態ファイルは一時ファイルに書き込んだ後、対象ファイルを置き換えるように名前を変更します。そのため、クラッシュしても不完全な JSON ドキュメントが残ることはありません。価格ウォッチとその履歴には、トランザクションに対応した watch.db ストレージを使用します。最初の移行では、データベースを確定する前に従来の JSON のバックアップが作成されます。一時ファイルによる置き換えでも、書き込みが中断されたことによる孤立した一時ファイルが残る場合があります。それぞれ、置き換え対象だった JSON ファイルの完全なコピーです。孤立ファイルが対象ファイルの唯一の残存コピーである場合もあるため、trvl は自動的に削除しません。trvl tempfiles を実行すると、ファイルのサイズと経過時間を確認できます。trvl tempfiles --delete を実行すると、書き込みプロセスが終了していることを確実に確認できるファイルのみを削除します。

どちらの動作も拒否できます。

export TRVL_NO_BROWSER_COOKIES=1   # never read your browsers or the sessions in them, and never open a window in your real browser
export TRVL_NO_TIER2_CDP=1         # never start a headless browser of its own

どちらの設定も、分離性とカバー範囲のトレードオフになります。保護されたホテルや鉄道の情報源では既存のセッションが必要なため、Cookie へのアクセスはデフォルトで有効です。無効にすると、検索結果が大幅に減る可能性があります。ヘッドレスのフォールバックは、チャレンジが必要な情報源で新しい Cookie が必要な場合に限り、インストール済みの Chrome、Brave、または Edge を空のプロファイルで起動します。既存のブラウザーセッションを読み取ったり、ウィンドウを表示したり、フォーカスを奪ったりすることはありません。無効にすると、チャレンジが必要な情報源から結果が得られない場合があります。一部のプロバイダーには、表示されるブラウザーを使った復旧手段もありますが、これは別のプロバイダー固有の機能であり、開く前に確認を求めます。ヘッドレスのフォールバックを無効にしても、この機能が自動的に有効になることはありません。

プロキシを使用している場合

trvl は HTTP_PROXY、HTTPS_PROXY、NO_PROXY を尊重します。プロキシと宛先の両方のホップを検証して固定するため、リダイレクトや DNS 応答の変更によって、URL に指定されていない場所へ接続が移動することはありません。

デフォルトでは、trvl はプライベート、ループバック、リンクローカルのアドレスへの接続を拒否します。これにより、悪意のあるリダイレクトが内部ネットワークやクラウドのメタデータエンドポイントに到達するのを防ぎます。企業のプロキシはほぼ必ずプライベートアドレス上にあるため、接続するには明示的なオプトインが必要です。

export TRVL_ALLOW_PRIVATE_PROXY=1   # the PROXY may be on a private address

これにより緩和されるのはプロキシのホップだけです。宛先がプライベートアドレスの場合は、引き続き拒否されます。より広範な TRVL_ALLOW_LOCAL_PROVIDERS=1 を設定すると、両方の制限が緩和されます。これは、自分のマシン上のモックプロバイダーを trvl に指定するためのものです。プロキシを使うだけなら設定しないでください。宛先の保護も無効になります。

認証が必要なプロキシ(http://user:pass@host)はサポートされていません。

trvl をクラウドサーバーで実行する場合

trvl は旅行サイトに直接アクセスしますが、多くのサイトではクラウドやデータセンターの IP アドレスをボットとして扱います。サーバーから検索すると、自宅からの場合より選択肢が少なくなることがあります。trvl はこれを隠さずに報告します。応答しなかった場合、provider_statuses 内の各プロバイダーには reason が含まれます。値は blocked(拒否。通常は HTTP 403 またはボットチェック)、rate_limited、unavailable(プロバイダー側の 5xx エラー)、dns、network、timeout のいずれかです。一部のプロバイダーが失敗した検索は部分的な結果として示され、「見つかりませんでした」とは表示されません。

あるユーザーは、2026 年 10 月に Kubernetes クラスターから実行した結果を測定しました。SNCF、Trainline、Rome2Rio は 403 を返し、Wizz Air は 503 を返し、Italo のホストは一部の DNS リゾルバーで名前解決できませんでした。IP アドレスのブロックを示しているのは 403 のみです。503 や DNS の失敗には、ほかの原因も考えられます。自宅やオフィスの接続、または上記のプロキシサポートを利用すると、通常はカバー範囲が改善しますが、保証はできません。

trvl が保持する価格履歴の量

価格の監視機能は実験的です。 動作し、データも保持されます。監視対象とその価格履歴全体は ~/.trvl に保存されます。この履歴は失われる可能性があるものとして扱ってください。移行前にストアはバックアップされ、移行後も従来のファイルが保持されるため、問題が起きても復旧できます。ただし、この機能は trvl の他の部分より新しく、変更も頻繁に行われています。

1.21.0 へのアップグレードで価格履歴が削除されることがあります。 初回起動時にストアがトランザクションデータベースへ変換されます。TRVL_WATCH_MAX_POINTS_PER_WATCH を引き下げている場合、変換時にもその上限が適用されるようになりました。以前のバージョンでは、他のすべての処理では適用されていた上限が、変換時には無視されていたため、引き下げた上限がひそかに反映されていませんでした。上限を超えるポイントは削除されます。まず trvl watch migrate --dry-run を実行して、実際の削除数を確認してください。以前はプレビューで数が実際より少なく報告されていたため、この警告を掲載しています。

価格履歴には上限が設定されています。そうでなければ、際限なく増え続けます。ある実際のストアでは、41MB に 320,028 ポイントが保存され、実行中の trvl プロセスごとに約 686MB のメモリが消費されました。3 つの上限で増加を抑えており、いずれも変更できます。

export TRVL_WATCH_MAX_POINTS_PER_WATCH=1000   # points kept per watch
export TRVL_WATCH_MAX_POINTS_TOTAL=50000      # points kept across all watches
export TRVL_WATCH_ROUTE_TTL_DAYS=90           # how long a dateless route watch keeps being checked

これらがデフォルト値と、それぞれの値を変更した場合の影響です。

設定引き上げた場合のコスト引き下げた場合のコスト
監視対象ごとのポイント数メモリとディスクの使用量が、監視対象の数に応じて増加します長期トレンド表示の解像度が下がります。元のポイント列が必要になる場面はありません。スパークラインは 10~20 ポイントを読み込み、監視対象の過去最安値は監視対象自体に保存されるため、削除されずに残ります
ポイントの総数実際にファイルサイズを制限するのはこの値です。監視対象が多ければ上限がその数だけ乗算されるため、監視対象ごとの上限ではファイルサイズを抑えられませんすべての監視対象が共通の上限を使います。そのため、監視頻度の高い対象だけでなく、数が多いコレクション全体で履歴が失われます
ルート監視の TTL旅行日が設定されていないルートは、この期間が有効な限り、30 分ごとにライブプロバイダーへ再確認されます。ある実際のストアには、常時有効なルート監視対象が 468 件ありました季節性のあるルートは、利用の間に期限切れになります。再度監視すれば期限が更新されますが、毎年の旅行でも毎年期限切れになります

使用できない値は調整されず、拒否されます。たとえば TRVL_WATCH_MAX_POINTS_TOTAL=0 が設定されていると、trvl は起動しません。デフォルト値をひそかに使い、設定が反映されたと思わせることはありません。

ストアでいずれかの上限が実際に適用されているか確認するには、trvl watch migrate --dry-run を実行してください。ディスク上のサイズ、監視対象ごとのポイント数の分布、各上限への到達状況が報告され、データは変更されません。

完全な仕組みについては、どの時点で何を読み込むか、2 つのスイッチの正確な違い、ヘッドレスブラウザーのフォールバック、AF-KLM の認証情報のルールを、docs/ARCHITECTURE.md で説明しています。

意図的に公開処理を行うコマンドは 1 つだけです。カレンダーヘルパーは、実行する目的に沿って Google カレンダーに予定を書き込みます。一方、trvl share は公開しません。旅行カードを表示するか、クリップボードにコピーするだけなので、誰に渡すかは自分で決められます。以前はカードを公開 GitHub gist としてアップロードしていましたが、カードには目的地と日付が記載され、それらの情報から自宅が空になる時期が分かってしまうため、#527 で削除されました。

オプションの認証情報が必要なプロバイダー

trvl がデフォルトで利用するソースはすべて無料で、アカウントも必要ありません。次の追加機能は、ご自身のキーを指定した場合にのみ有効になり、それ以外の場合は何も行いません。

変数有効になる機能
AFKLM_KEYAF-KLM 独自の往復運賃および鉄道+航空運賃
AFKL_KLM_COOKIESAF-KLM Flying Blue の特典航空券/マイル検索
SERPAPI_KEY詳細確認済みのホテルプロバイダー料金(trvl serpapi)
TRAVELPAYOUTS_TOKEN過去の価格推移
TRANSAVIA_API_KEYTransavia のフライト
DISTRIBUSION_API_KEYバスおよび長距離バスの地上移動区間
FOURSQUARE_API_KEY周辺の場所
GEOAPIFY_API_KEY目的地の地理データ
OPENTRIPMAP_API_KEY観光スポット
TICKETMASTER_API_KEYイベント
TRVL_GMAIL_APP_PASSWORD旅行ダイジェストのメール送信

これらのキーはすべて、環境変数から読み込まれます。唯一の例外は AF-KLM で、明示的に指定した場合に限ります。--provider afklm を指定すると、macOS Keychain または 1Password から読み込むこともあります。通常の検索では、この表に記載されたどの機能も認証情報マネージャーにアクセスしません。詳しい理由は docs/ARCHITECTURE.md をご覧ください。

プライバシーとテレメトリー

リリースビルドは、1 日あたり最大 1 回、https://telemetry.revaluator.ai/v1/heartbeat にハートビートを POST します。同じ本文を別の場所に送信するには、TRVL_TELEMETRY_ENDPOINT を設定してください。本文に含まれるのは、次の情報だけです。

  • 固定のプロジェクトタグ(trvl)とイベント名(heartbeat)
  • trvl のバージョン
  • Go ランタイムの文字列(OS、アーキテクチャ、Go のバージョン。例:darwin/arm64/go1.26.9)
  • 初回送信時に作成され、~/.trvl/install-id に保存されるランダムなインストール ID

ホスト名、ユーザー名、検索クエリ、旅行データは含まれません。JSON 本文に IP アドレスは含まれません。デフォルトのホストでは Cloudflare が TLS を終端するため、Cloudflare は接続元アドレスを確認できます。受信側はそのアドレスを記録しません。接続情報から Cloudflare の位置情報機能が都市名と国コードを取得し、この 2 つの値がハートビートとともに保存されます。これらはおおよその情報です。VPN、リレー、モバイルネットワークを使用している場合、都市は現在地ではなくネットワークの出口地点を示すことがあります。また、都市情報が得られない接続もあります。座標とリクエストヘッダーは保存されません。インストール ID は日をまたいで同じままなので、これらのリクエストは、関連付けられた都市情報も含めて相互に関連付けることができます。ID はランダムで、個人を特定する情報は含まれません。リクエストのタイムアウトは 3 秒で、失敗しても無視されます。

開発ビルド(go build/go run、バージョン dev)、CI、テストでは送信されません。無効にするには、trvl の実行前に次のいずれか 1 つを設定してください。

export TRVL_NO_TELEMETRY=1   # trvl-specific switch
export NO_TELEMETRY=1        # common convention
export DO_NOT_TRACK=1        # cross-tool Do-Not-Track signal

HTTP/リモートサーバーとして実行する

デフォルトで最も安全なトランスポートは、ローカルの stdio です。trvl mcp --http は 127.0.0.1 にバインドされ、ベアラートークンを必要とし、未設定の場合は起動時に生成します。リモート公開、スコープ付き読み書きトークン、OAuth 2.1 のイントロスペクションについては、docs/REMOTE-MCP-OAUTH.md をご覧ください。

トラブルシューティング

  • ツールが表示されませんか? trvl mcp install の後に AI クライアントを再起動し、which trvl が $PATH に含まれていることを確認してください。
  • フライトの検索結果が空ですか? Google Flights のデータがない路線もあります。trvl flights HEL LHR 2027-07-01 のように、主要な都市間の路線をお試しください。
  • 地上交通の検索がタイムアウトしますか? 鉄道/フェリーのプロバイダーではリクエストが制限されます。30 秒後に再試行するか、--timeout 3m を指定してください。

トラブルシューティングの詳細は、docs/CLI.md をご覧ください。

利用可能な場所

Glama · LobeHub · Smithery · MCPHub · Cursor Directory · PulseMCP · MCP Market · pkg.go.dev

サードパーティのディレクトリは独自の説明をキャッシュしているため、ツール数やコマンド数が古い場合があります。最新の機能とリリースバージョンについては、このREADME、変更履歴、公式MCP Registryをご確認ください。

独立した評価: Roberto RealeによるBudget Travel Pipeline — 実際に構築してテストする独立した取り組みで、実際の修正点を見つけ、v1.10の信頼性向上ロードマップの策定に貢献しました。

エコシステム

MCP ツールスイートの一部です:mcp-gateway(ユニバーサルゲートウェイ) · nab(ボット対策を備えたウェブ抽出) · axterminator(macOS GUI 自動化)。

法的事項とライセンス

trvlは、一般公開されているウェブ API(Google Flights、Google Hotelsなど)を読み取る個人利用向けツールです。認証の回避やレート制限の迂回は行いません。リクエストのパターンは、手動でブラウジングしているように見えるよう調整されています。自動アクセスは一部のプロバイダーの利用規約に違反する可能性があります。お住まいの地域の法令遵守はご自身の責任です。

trvl flights と trvl hotels では、任意の --stealth フラグを使用できます。このフラグを指定すると、取得処理はtrvlのChrome HTTP/2フィンガープリントトランスポート経由で行われます。この機能は、フラグを指定しない限り無効です。また、TRVL_STEALTH_ALLOWLIST に登録したホストに対してのみ有効になり、リストにないホストではログを1行出力するだけで、何も行いません。許可リストが空の場合は有効になりません。ステルス機能が適用されるのは、フライト検索とホテル検索のみです。自動アクセスを禁止しているサイトに対してステルス機能を使用する場合は、ご自身の責任で行ってください。

export TRVL_STEALTH_ALLOWLIST=".google.com"
trvl flights HEL NRT 2027-09-01 --stealth

PolyForm Noncommercial 1.0のもとでライセンスされています。個人利用および非営利利用は無料です。商用利用(社内での利用、ホステッドサービス、有料プラットフォームへの組み込み)には別途ライセンスが必要です。料金は指定プロジェクトごとに月額500ユーロです。GitHub Sponsorsからお申し込みください。詳細はCOMMERCIAL.mdとLICENSING.mdをご覧ください。

fli、utls、およびSerpAPIのパラメーターリファレンスを基に構築されています。

スターを付ける

trvlのおかげでブラウザーのタブやAPIのサブスクリプションを使わずに済んだ場合、スターを付けると、ほかの旅行者(およびそのアシスタント)が見つけやすくなります。お願いしたいのはそれだけです。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。