Fortrip について
Fortrip は、CLI とホスト型またはローカルの MCP 接続を通じて、ホテル検索、リアルタイムの客室料金、注文、支払いリンクを提供します。Fortrip を利用するエージェントや旅行者向けに、CLI、MCP ツール、エージェント接続で共通の API 契約とガイドを用意しています。
主な機能
- 01ホテル検索とリアルタイム料金の確認
- 02注文と支払いリンクの作成
- 03OAuth 対応クライアントでのホスト型 MCP 利用
- 04CLI によるローカル MCP ブリッジの起動
- 05共通 API 契約とエージェントガイド
活用シーン
- 01ホテルを探して現在の料金を比較
- 02注文を作成して支払いリンクを共有
- 03MCP クライアントを Fortrip のホテルツールに接続
MCP 対応
Fortrip は OAuth 対応クライアント向けに `https://mcp.fortrip.ai/` のホスト型 MCP サーバーを提供し、`npx -y fortrip mcp` でローカルブリッジも起動できます。どちらもホテル検索、料金、注文、支払いリンク機能を利用できます。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://mcp.fortrip.ai/claude mcp add --transport http fortripengineering-fortrip https://mcp.fortrip.ai/{"mcpServers":{"fortripengineering-fortrip":{"type":"http","url":"https://mcp.fortrip.ai/"}}}Cursor で開く{"servers":{"fortripengineering-fortrip":{"type":"http","url":"https://mcp.fortrip.ai/"}}}VS Code で開く{"mcpServers":{"fortripengineering-fortrip":{"type":"http","url":"https://mcp.fortrip.ai/"}}}{"mcpServers":{"fortripengineering-fortrip":{"serverUrl":"https://mcp.fortrip.ai/"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
詳細
Fortrip
Fortrip の公開エージェント向け機能を1つのリポジトリにまとめています。ホテル検索、リアルタイムのオファーと注文に対応する fortrip コマンドラインツール、すべてのエージェント向け機能で共有される仕様、エージェントを Fortrip に案内するストアの掲載情報が含まれています。現時点ではホテルのみです。
ここにあるものはすべて、Fortrip API v1 の https://api.fortrip.ai/v1 またはホスト型 MCP サーバーの https://mcp.fortrip.ai/ と通信します。利用するには、ブラウザーで OAuth を使って Fortrip にサインインしている必要があります。
Fortrip の利用方法
-
シェルから、またはシェルを使えるエージェントから利用する場合:
npx -y fortrip <command>。まずはnpx -y fortrip loginを実行してください。コマンド、サインイン、終了コードについてはCLI の READMEを参照してください。 -
MCP クライアントで利用する場合: クライアントが OAuth 対応のリモートサーバーをサポートしていれば、ホスト型サーバー
https://mcp.fortrip.ai/に接続してください。または、ローカルブリッジnpx -y fortrip mcpを実行してください。Claude Desktop、Cursor、Codex、Claude Code の設定についてはCLI の READMEを参照してください。Claude プラグインと OpenAI プラグインは、ホスト型サーバーを使用します。 -
シェルコマンドは実行できるものの、Fortrip の MCP ツールを持たないエージェント向けのスキルとして利用する場合:
npx skills add FortripEngineering/fortrip --skill fortrip-cli
構成
| パス | 内容 | 公開方法 |
|---|---|---|
packages/contract | Fortrip API v1 の仕様です。制限、パス、リクエストとレスポンスのスキーマ、エラーコード、フィールドの規則、MCP ツールと CLI コマンドの仕様、エージェントガイドを一度だけ記述し、MCP サーバー、Claude スキル、CLI 向けに生成します | npm:@fortrip/agent-contract。main の v* タグから、fortrip とともに公開 |
packages/cli | fortrip CLI です。シェルからのホテル検索、リアルタイムのオファー、注文、支払いリンク、ローカル MCP ブリッジ(fortrip mcp)、エージェントガイド(fortrip guide)を提供します | npm:fortrip。main の v* タグから、@fortrip/agent-contract とともに公開 |
plugins/claude | Claude プラグイン(ホスト型 MCP サーバー+静的スキル、生成済み) | 開発者ポータルから提出します。ルートの .claude-plugin/marketplace.json を使うと、Claude Code でこのリポジトリをマーケットプレイスとして追加できます |
plugins/openai | ChatGPT / Codex プラグイン | Zip ファイルを OpenAI ポータルにアップロード |
plugins/registry | MCP Registry のエントリ | Fortrip を MCP Registry に公開ワークフロー |
skills/fortrip-cli | シェルを使えるエージェント向けスキル(生成済み) | npx skills add FortripEngineering/fortrip --skill fortrip-cli で main から読み込みます |
scripts | リポジトリ全体で使うスクリプトです。generate.ts はスキルを生成し、validate.mjs は掲載情報を検証します |
開発
Node.js 22 以降と pnpm 11 が必要です。
pnpm install
pnpm test # tests of every package, and of the scripts
pnpm generate # renders the skills from the contract
pnpm generate --check # fails with a diff when a generated file is stale
pnpm build && pnpm validate # checks the store listings
pnpm typecheck と pnpm build もすべてのパッケージで実行されます。CI では Node.js 22 と 24 で型チェック、テスト、ビルドを実行し、24 ではさらに pnpm generate --check、pnpm validate、および .、plugins/claude、skills に対する claude plugin validate --strict も実行します。
生成ファイル
plugins/claude/skills/fortrip と skills/fortrip-cli にあるスキル(SKILL.md と references/planning.md)、およびコントラクトの src/guide-data.generated.ts は生成ファイルです。編集しないでください。packages/contract/guide/*.md にあるガイドの断片(または scripts/generate.ts にあるスキルのフロントマター)を変更し、pnpm generate を実行して結果をコミットしてください。断片では各機能がどの内容を示すかを定めており、Claude スキル、MCP の指示、CLI のガイドはすべてそれらから生成されるため、内容が食い違うことはありません。
公開
Claude プラグイン
plugins/claude は、2 つの部分で構成されるプラグインです。
.mcp.jsonはホストされた MCP サーバーを指定します。claude.ai と Cowork では、プラグインの「Connectors」タブに表示され、ユーザーは Fortrip アカウントでサインインします(OAuth)。Claude Code はこのサーバーに直接接続します。skills/fortrip/は生成されたスキルで、ツールの使い方を Claude に伝えます。呼び出し順序、部屋ごとの宿泊人数、料金と通貨、支払いリンクの前に確認すること、エラーなどが記載されています。references/planning.mdでは、日程の柔軟な設定、予算、複数の宿泊先への分割、複数の目的地について説明しています。
このスキルは単独で動作します。ディレクトリでは、プラグインが実行時に手順を取得することは許可されておらず(Software Directory Policy §2F)、バリデーターがピン留めされていない npx ランチャーをブロックするため、CLI スキルは plugins/claude の外に置かれています。配下のファイルに npx、fortrip@latest、または get_planning_guide が含まれていると、pnpm validate は失敗します。
開発者ポータルで plugins/claude フォルダーを提出します。次のコマンドで確認します。
claude plugin validate --strict plugins/claude
claude plugin validate --strict .
2 つ目のコマンドは、リポジトリのルートにある .claude-plugin/marketplace.json を確認します。ここでは plugins/claude がプラグインとして登録されており、npx skills add で skills/fortrip-cli の隣にあるプラグインのスキルを見つけられます。また、Claude Code でこのリポジトリをマーケットプレイスとして追加できます。
Claude Code は plugin.json の version に従ってユーザーを固定するため、生成されたスキルテキストを含め、plugins/claude 内の内容を変更したら必ずバージョンを上げます。文言の変更にはパッチ、新しい動作やコンポーネントの追加にはマイナー(1.1.0 ではプラグインをホストされた MCP サーバーに移行)、利用方法を変更する場合はメジャーバージョンを上げます。ディレクトリで使用されるリスティングアイコンは、最初の提出時のものです。
CLI スキル
skills/fortrip-cli は静的なスキルとして提供される CLI ガイドです。エージェントはスキル自体からコマンド、呼び出し順序、サインイン方法、支払いリンクの前にユーザーに表示する内容を読み取ります。Node.js 22 以降が必要で、Claude ディレクトリプラグインには含まれません。
npx skills add FortripEngineering/fortrip --skill fortrip-cli
OpenAI プラグイン
plugins/openai/plugin.json にはリスティングの説明文とレビュー用テストケースが、mcp.json にはホストされたサーバーの URL が記載されています。mcp.json は Agent Plugins スキーマ(type: streamable-http)に従い、plugins/claude/.mcp.json は Claude のスキーマ(type: http)に従います。どちらも同じサーバーを指定します。アップロード用ファイルを作成します。
cd plugins/openai && rm -f ../../fortrip-openai.zip && zip -rX ../../fortrip-openai.zip plugin.json mcp.json assets
zip ファイルを OpenAI ポータルにアップロードします。ポータルでは、mcp.fortrip.ai が配信する https://mcp.fortrip.ai/.well-known/openai-apps-challenge を通じてドメインを検証します。
MCP Registry
plugins/registry/server.json では、Fortrip を io.github.FortripEngineering/fortrip として登録し、2 つの接続方法を指定しています。ホストされたサーバー(remotes)と、fortrip という npm パッケージを fortrip mcp として実行する方法(packages)です(packages/cli/package.json の mcpName はエントリーの名前と一致させる必要があります)。このエントリーは専用のワークフロー Publish Fortrip to MCP Registry(.github/workflows/publish-mcp-registry.yml)で公開されます。このワークフローは main からのみ実行でき、mcp-registry 環境で人による承認を待ちます。変更を公開するには、version を上げ(バージョンを下げることはできません)、packages[].version を npm 上の CLI バージョンに設定してから、main にマージし、ワークフローを実行します。CLI のリリース後は、npm に新しいバージョンが公開されてからワークフローを実行します。
古いバージョンを非推奨にする場合、または再び有効にする場合は、Set an MCP Registry version's status(.github/workflows/mcp-registry-status.yml)を実行し、バージョンとステータスを指定します。非推奨にする場合はメッセージも指定します(active の場合、パブリッシャーはメッセージを受け取りません)。このワークフローも main からのみ実行でき、承認が必要です。個人アカウントでの mcp-publisher login github では実行できません。この認証では io.github.<user>/* しか取得できないため、組織の名前空間にはこのリポジトリの OIDC アイデンティティを使用します。
Registry ではサーバー URL を 1 つの名前に紐付けるため、名前を変更するには、古いエントリーを削除してから新しいエントリーを公開します。
リリース
fortrip と @fortrip/agent-contract は、同じバージョンで同時にリリースされます。
-
PR で、
packages/cli/package.jsonとpackages/contract/package.jsonの両方のversionを新しいX.Y.Zに設定し(各パッケージのディレクトリでnpm version X.Y.Z --no-git-tag-versionを実行します)、plugins/registry/server.jsonのpackages[].versionも同じ値に設定して、pnpm generateを実行し、変更内容をコミットします。CI が通過したら、PR をmainにマージします。 -
main上のマージコミットにタグを付けて、タグをプッシュします。git checkout main && git pull git tag vX.Y.Z && git push origin vX.Y.Z -
担当者が
npm-publish環境を承認します。その後、ワークフローpublish.ymlが、信頼されたパブリッシング(GitHub Actions から npm への OIDC サインイン。GitHub に npm トークンを保存する必要はありません)を通じて両方のパッケージを npm に公開し、プロベナンス情報を付与します。 -
npm に新しいバージョンが反映されたら、(上記の)MCP Registry ワークフローを実行します。
このワークフローは、vX.Y.Z または vX.Y.Z-rc.N 形式ではないタグ、いずれかの package.json の version と一致しないタグ、または main 上にないタグを拒否します。build ジョブでは型チェック、テスト、ビルドを実行し、両方の tarball をパッケージ化します。publish ジョブでは、npm-publish 環境で、インストールやビルドを行わずにそれらの tarball を公開します(@fortrip/agent-contract が先です)。vX.Y.Z-rc.N のタグが付いたリリース候補は next dist-tag で公開されるため、npm install では取得されません。一部のパッケージだけが公開された場合、publish ジョブを再実行すると、すでに npm に公開済みのものはスキップされます。
ライセンス
Apache License 2.0。Copyright 2026 FortripAI, Inc.(NOTICE を参照)。2.0.0 より前のリリースは MIT License の下で公開されていました。このライセンスは、ホスト型 Fortrip サービス、ホテル在庫、またはサードパーティのデータへのアクセスを許可するものではありません。
商標
「Fortrip」と Fortrip のロゴは FortripAI, Inc. の商標です。Apache License 2.0 は、ソフトウェアの出所を説明し、NOTICE ファイルの内容を複製するために合理的かつ慣習的な範囲で必要となる場合を除き、FortripAI, Inc. の商号、商標、サービスマーク、または製品名の使用を許可するものではありません(第 6 条)。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。