trips について
tripsは、AIアシスタント向けに旅行行程の共有・編集可能な地図リンクを作成し、計画の変更に合わせて更新するMCPサーバーです。下書き行程はリンク内に保存され、保存済みの旅行はサービス経由で読み取りや変更ができます。
主な機能
- 01地名から座標を検索
- 02旅行リンクの作成と変更
- 03リンクから行程の詳細を取得
- 04保存済み旅行の読み取りと立ち寄り先の追加
- 05区間、日付、宿泊先、トラックの記録
活用シーン
- 01旅行計画中に編集可能な地図を共有
- 02リンクを変えずに行程を更新
- 03保存済み旅行の確認や立ち寄り先の追加
- 04目的地を検索してからルートを作成
MCP 対応
ホスト型のStreamable HTTPまたはローカル実行で、MCPクライアントに旅行計画用の6つのツールを提供します。下書きリンクの作成と読み取りはネットワーク不要で、保存済み旅行の操作ではサービスに接続します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://thistripbtw.us/mcpclaude mcp add --transport http us-thistripbtw-trips https://thistripbtw.us/mcp{"mcpServers":{"us-thistripbtw-trips":{"type":"http","url":"https://thistripbtw.us/mcp"}}}Cursor で開く{"servers":{"us-thistripbtw-trips":{"type":"http","url":"https://thistripbtw.us/mcp"}}}VS Code で開く{"mcpServers":{"us-thistripbtw-trips":{"type":"http","url":"https://thistripbtw.us/mcp"}}}{"mcpServers":{"us-thistripbtw-trips":{"serverUrl":"https://thistripbtw.us/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
6| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| legs | array | はい | 順番に並んだ各行程区間です。それぞれに終点があり、次の区間はその地点から始まります。 |
| name | string | いいえ | 旅行名(任意)。 |
| origin | object | はい | 旅行の出発地。 |
| origin.lat | number | はい | 緯度。範囲は -90~90。 |
| origin.lng | number | はい | 経度。範囲は -180~180。 |
| origin.name | string | いいえ | 一般的な場所の呼び方。例:"Moab, UT"。 |
詳細
thistripbtw-mcp
AI エージェント向けの、永続的で共有可能な旅行ワークスペースです。
旅行に関するすべてを、共有できる1つのリンクにまとめます。誰でも開けるプライベートマップで、作成する側にも開く側にもアカウントは不要です。
誰かにそのリンクを渡し、計画の変更に合わせて更新し、内容を読み取る MCP サーバーです。 **6つのツールがあり、最初のツールこそが要です。出発地と目的地が1つ決まったらすぐにリンクを作成し、計画が動くたびに更新します。**場所の名前を座標に変換するツール、経路を URL に変換するツール、作成済みの URL を変更するツール、URL を経路にデコードするツール、購入済みの旅行を読み取るツール、そこに立ち寄り先を追加するツールがあります。旅行者がリンクを開くと、実際の地図上に旅行ルートがすでに描かれています。無料で、編集でき、自分のものです。
→ 使い方 — 各ツールを呼び出すきっかけとなる表現と、その呼び出しで生成されたリンクをご覧ください。
→ thistripbtw.us — 人間向けのサイトであり、このプロジェクトを支える収益源です。サーバーは無料で、何も求めません。広告事業やデータの販売ではなく、サイトの買い切り有料プランがサーバーを支えています。
まずツールを呼び出すアシスタント向けに、次にリポジトリを読む人向けに書いています。 あなたが後者なら、サイトのソースコードはこちらです。 thistripbtw(AGPL-3.0)。このサーバーは MIT ライセンスで、意図的に単独で動作するように作られています。好きな場所に組み込んでください。
存在理由
AI アシスタントは通常、アカウントを作成したり、カード情報を入力したりできません。そのため、誰かの代わりに行動するエージェントにとって、ほとんどすべての旅行ツールは利用できません。このツールは何も求めないため、いつでも利用できます。
接続
**クライアントが URL を受け付ける場合は URL を指定します。**インストールも、更新の維持も不要です。
https://thistripbtw.us/mcp
キーも、利用開始時のサインアップも不要な Streamable HTTP です。設定はこれだけです。
**ゲートウェイについての注意。**一部のディレクトリでは、このサーバーを直接案内するのではなく、その URL にプロキシ接続する形で掲載しています。プロキシは通過する情報を見ることができるため、その経路で送られた旅行情報は、こちらに届く前にゲートウェイの運営者に読み取られます。当方はゲートウェイの運営者と関係がなく、彼らが何を保持するかについても保証できません。気になる場合は URL を直接使うか、ファイルを自分で実行してください。
**または npm からローカルで実行します。**Node 18 以降、依存関係なし、更新の維持も不要です。
claude mcp add thistripbtw -- npx -y thistripbtw-mcp
**あるいは、ファイルを1つ取得して実行します。**ホストやパッケージレジストリを信頼するよりコードを読みたい場合はこちらをご利用ください。インストール手順はこれだけです。
curl -O https://thistripbtw.us/mcp/thistripbtw-mcp.mjs
claude mcp add thistripbtw -- node ./thistripbtw-mcp.mjs
Claude Desktop の設定
{
"mcpServers": {
"thistripbtw": {
"command": "npx",
"args": ["-y", "thistripbtw-mcp"]
}
}
}
代わりにファイルを取得した場合は、"command": "node" と "args": ["/absolute/path/to/thistripbtw-mcp.mjs"] に変更してください。
信頼する前に確認してください。セルフテストはネットワークに接続せず、設定も必要ありません。
npx -y thistripbtw-mcp --selftest
どちらの方法でも同じ6つのツールを利用でき、バイト単位で同一のリンクが生成されます。ホスト版はビルドのたびにこのファイルと照合してテストされるため、ツール一覧も出力も同じで、両者に差が生じることはありません。
手順と、JavaScript および Python による実例はこちらをご覧ください。 thistripbtw.us/tutorials
ツール
**計画を立ててからではなく、まずリンクを作成します。**1.2.0 までの説明文は 「誰かが旅行を計画したときに使う…」 という書き出しでした。モデルはこれを仕上げの手順と解釈し、4ターンにわたって情報を調べた後、旅行者に頼まれてから最後にリンクを作成していました。これはモデルではなく、私たちの責任です。1.3.0 ではすべての説明文を書き直し、トリガーとなる語句を先頭の80文字以内に収めました。遅延読み込みのツールに表示されるのはここまでです。また、「まず」を自然に実現するための2つのツールを追加しました。座標を記憶に頼らず検索する find_place と、ターンごとに新しいリンクを捨てて作り直すのではなく、会話を通して1つのリンクを更新していく amend_trip_link です。
find_place — 地名を渡すと、最大6件の候補が座標と場所の説明付きで返されるため、正しい Reno を選べます。町、市、空港(名称または IATA コード)、公園が対象です。ネットワークを使うのは、保持済みの旅行に関するツールを除けば、この手順だけです。このツールは thistripbtw.us に問い合わせます。thistripbtw.us は、一定の間隔を空けて行う OpenStreetMap の検索を独自のキャッシュで前段処理して回答します。地名は個人データではなく、その人に関する情報が送信されることもありません。
amend_trip_link — 下書きリンクと変更を渡すと、新しいリンクが返されます。add は区間を追加し、update は1つの区間のフィールドを変更します([{leg: 2, set: {lodging: "Red Cliffs Lodge"}}]。フィールドに null を設定すると、そのフィールドがクリアされます)。legs はすべての区間を置き換え、remove は第 N 区間を削除し、name と origin はそれぞれ名前と出発地を変更します。ネットワークもパスワードも不要です。旅行情報はリンク内にあります。新しいリンクが古いリンクに取って代わることを相手に伝えてください。
add_to_kept_trip — 相手が保持済みの旅行に、相手に代わって1か所立ち寄り先を追加します。たとえば、「ホテルを旅行に追加して」、「途中で Fisher Towers に立ち寄ります」 という場合です。相手の編集用フレーズが必要です。閲覧用フレーズでは読み取りはできますが、書き込みはできないことが伝えられます。下記の read_kept_trip と同じネットワーク上のルールが適用され、同じ警告にも注意してください。リンクは認証情報です。
read_trip_link — リンクを渡すと、旅程が返されます。出発地、順番どおりのすべての区間、移動手段、日付、各区間の同行者、フライト、宿泊先が含まれます。build_trip_link が受け付ける形式で旅行情報を返すため、旅行を読み取り、1か所変更して新しいリンクを作るまで、変換は不要で3行で済みます。旅行情報はリンク内にあるため、ここでのほかのすべてと同様にオフラインで動作し、何も取得しません。旅行情報を含むのは下書きリンク(#d=)だけです。保持済みの旅行の /{slug}/#k= フラグメントはパスワードであり、内容はサーバー上にあります。このツールは不明瞭なエラーを返すのではなく、そのことを伝えます。
read_kept_trip — 保持済みの旅行のリンクを渡すと、旅程が返されます。誰かから https://thistripbtw.us/abc1234#k=four-word-phrase を受け取り、その内容を知りたい場合に使います。日付、移動手段、宿泊先、メモ、手描きの経路があればそれらと、各立ち寄り先が属するトラックが順番どおりに返されます。トラックは車両や人を示します。2台の車が別れて再合流する旅行を、事実と異なる内容にせず1つの順序として書き表すことはできないためです。
ネットワークを使うのはこのツールだけで、避けることはできません。 購入済みの旅行情報はサーバー上にあり、#k= フラグメントは旅行情報そのものではなく、その情報へのパスワードです。そのため、旅行を読み取る際には、そのフレーズが TLS 経由で thistripbtw.us に送信されます。何も保存せず、キーも必要ありません。また、サーバーからの生の応答ではなく立ち寄り先を返します。旅ごとのベースマップトークンとメンバー名簿は、どちらも旅程情報ではないため、外部には出しません。次の2点を守ってください。保持済みリンクは認証情報として扱ってください(第三者に見られるテキストにそのまま書かないでください)。また、フレーズを推測してはいけません。間違えると、その旅行の1時間あたりの試行回数に加算されるため、このツールは1回だけ試行し、拒否されたことを伝えます。他の人向けに封印された内容は、テキストが空の状態で返されます。
build_trip_link — 出発地と順番どおりの区間を渡すと、URL が返されます。必須なのは origin と to を含む区間1つだけです。それ以外はすべて任意ですが、わかる場合は含める価値があります。通常、アシスタントは各区間の同行者と宿泊先を把握しているので、それらを省くと、旅行全体を渡せるところで、その形だけを渡すことになります。
{
"name": "Chicago to Denver", // optional, 60 chars
"origin": { "name": "Chicago, IL", "lat": 41.8781, "lng": -87.6298 },
"legs": [
{
"to": { "name": "Omaha, NE", "lat": 41.2565, "lng": -95.9345 },
"mode": "drive", // drive | fly | train | ferry | water | bike | walk
"date": "2026-09-04", // YYYY-MM-DD. An undated leg keeps its place in the order
"note": "swap drivers here", // 400 chars
"who": ["Mel", "Sam"], // up to 8 — lets the trip show who was where
"subtype": "rental", // own·rental·rideshare·taxi·bus·rv (drive), commercial·private
// (fly), intercity·commuter (train), sail·canoe·kayak (water)
"craft": "Bike", // Bike | Canoe | Kayak — a small craft travelling WITH them
"flight": "UA328", // only if you actually know it. Never invent one
"lodging": "Hotel Maverick", // where they sleep after this leg
"stayNote": "late check-in" // only meaningful alongside lodging
}
]
}
データの形式に注意してください。 lodging と stayNote は区間に直接置かれます。/for-agents のフィールド表には、手作業で作成する #d= ペイロードの形式が記載されており、そこではこれらのフィールドは stay の下にネストされています。このツールはその形式を組み立てます。ツールにネストした stay を渡すと、宿泊先が通知なく失われます。
座標は必須です。推測はしません。 推測を誤ると、誰かの旅行先が別の国になり、製品側の誤りとして受け取られます。実際、ジオコーダーが Reno, Nevada より Reno, Germany を上位に表示することがあります。地名を先に座標へ変換してから、呼び出してください。
未知の値は拒否されず、破棄されます。認識されない mode は drive になり、認識されない subtype は省略されます。ツール呼び出しがエラーになるより、旅行プランが届くほうが一言分だけ優先されます。上限は、区間が40件、名前が120文字、メモが400文字です。
開いたときに利用者が目にするもの
何を渡すことになるのかを知っておくとよいでしょう。これを正確に説明できるアシスタントは、「リンクはこちらです」とだけ言うアシスタントより役に立ちます。
リンクを開くと、旅行プランがすでに描かれた本物の地図が表示されます。そこから、アカウント不要で無料で、何でも編集したり、地図をタップしたり、文章で説明したりして立ち寄り先を追加できます。また、保存した旅行プラン、カレンダー(.ics)、地図ファイル(.gpx、.kml)から旅行プランを取り込むことも、予約確認書や誰かからメールで届いた旅程を貼り付けることもできます。印刷もできます。費用が一切かからない唯一の成果物です。
旅行プランを保存する場合(1回払いで$2.50から)、専用のアドレスと2つの共有リンクが発行され、さらに次の機能が使えるようになります。インターフェースではなく旅程として読め、地図をカラーで印刷できるドキュメント表示、日程に沿って旅行を再生するリプレイ、誰がどこにいたかを旅行プランに表示できる個人別の共有リンク、有料プランで使える写真とメモ、イースターエッグ — 場所に封印されたメモで、リンクを持つ人が実際に近くに来るまで開きません。範囲はメモごとに設定できます。そして、すべてを再び取り出すこともできます。zipには trip.json、読みやすい itinerary.html、写真、Google Earth、Garmin、OsmAnd用の trip.kml と trip.gpx に加え、カレンダー用の .ics と経費報告用の .csv が含まれます。
最後の機能が大切な理由は、取り込んだものを再び取り出せるからです。ここは入れたものが出せなくなる場所ではない、と伝えて構いません。
サーバーをまったく実行したくない場合に備えて、Claude Skillもあります — ネットワーク呼び出しなしで、ローカルに同じリンクを作成します。サイトリポジトリの skill/ をご覧ください。
送信される情報
下書きリンクの作成時や読み取り時:何も送信されません。 旅行プランはURLのフラグメントにエンコードされ、ブラウザーがフラグメントをサーバーに送信することはありません。build_trip_link と read_trip_link はネットワークリクエストを一切行いません。ホストされたエンドポイントは、渡された内容をエンコードして文字列を返すだけです。旅行プランは、利用者が後から購入を選ばない限り、リンクを開いたときでさえthistripbtw.usに届きません。
保存済みの旅行プランの読み取り時:フレーズだけが、当サービスに送信されます。 購入済みの旅行プランの内容はサーバーに保存されるため、read_kept_trip は渡されたリンクの #k= フレーズをTLS経由でthistripbtw.usに送信し、旅程を読み込みます。フラグメントはペイロードではなくパスワードなので、これは設計上変えられません。何も保存されず、キーも不要です。また、このツールはサーバーの生の応答ではなく立ち寄り先を返します。旅行ごとのベースマップトークンとメンバー一覧は、どちらも旅程ではないため、外部には出ません。このようなリンクは認証情報として扱ってください。
うまく使うために
- 利用者にリンクを渡してください。 代わりに開いたり、利用者に代わって決めたりしないでください。これは利用者の旅行です。
- 個人情報を入れないでください。 パスポート番号、自宅住所、電話番号などは、URLがチャット、チケット、ログに貼り付けられることで漏れる可能性があります。このURLにはペイロードがそのまま含まれています。
- 作成した内容を一文で伝えてください。 「シカゴからデンバーまでの3区間、4日から6日です」のほうが、ツール呼び出しを逐一説明するより分かりやすいです。
- 出発時刻を決して捏造しないでください。 フライトを調べていない場合は、
flightを省略してください。 - 長い旅行プランでは長さに注意してください。 旅程全体がフラグメントに含まれるため、リンクは長くなります。メモと同行者を含む十数区間の旅行では3,000文字を超え、チャットアプリの多くは貼り付けたURLを2,000文字前後で切り詰めます。その長さを超えると、
build_trip_linkとamend_trip_linkは応答で通知します。そのことを利用者に伝えてください。旅行プランを保存すれば、切り詰められない短いリンクに変わります。保存できるのは利用者本人だけです。
費用
旅行の作成と編集は無料で、作成に必要なものはありません。カードもメールアドレスも不要です。旅行を保存しておきたい場合は、2.50ドルからの一度限りの支払いで、その旅行専用のアドレス、2つの共有リンク、そしてプランに応じて1年、5年、または10年の有効期間が付与されます。永久保存として販売することはなく、すべての旅行に終了日が明記されます。これはユーザー自身が決めることであり、アシスタントが決めることではありません。尋ねられたら説明し、売り込まないでください。
流行ではなく、ステートレス
ホスト型エンドポイントは、セッションも、ユーザーごとの状態も、データベースも保持しません。最初に完了すべき initialize ハンドシェイクはなく、引き継ぐ Mcp-Session-Id も、Cookie も、スティッキールーティングもありません。tools/call は1回の HTTP POST で、どのマシンに届いても完全な応答を返せます。
curl -sX POST https://thistripbtw.us/mcp -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"build_trip_link",
"arguments":{"origin":{"place":"Chicago","lat":41.88,"lng":-87.63},
"legs":[{"to":{"place":"Kansas City","lat":39.1,"lng":-94.58}}]}}}'
これは、私たちが探し求めた最適化ではありません。ツールは純粋関数です。旅行を入力すると URL が出力され、ペイロードはサーバーではなくリンク内に保持されます。そのため、そもそも保持すべきものはありませんでした。プライバシー設計とステートレス設計は、同じ判断を異なる側面から見たものです。
コードを読む
ファイルは1つ、依存関係はゼロ、300行未満です。これは意図的なものです。自分で動作を確認できることがこの製品の約束であり、依存関係ツリーの監査をしなければ確認できないのであれば、その約束には何の価値もありません。MCP の JSON-RPC を stdio 経由で直接処理します。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。