mcpField
C
cruisescope

cruisescope

ローカル
github.com/CloudCorpRecords地図・旅行01 週間前に更新

cruisescope について

cruisescopeは、クルーズ航路を調べる人向けの、gangwazeのホスト型MCPサーバーへのローカルブリッジです。運賃の検索・比較、価格履歴の確認、船や港、客室の情報検索に使える読み取り専用ツールを転送し、予約や支払いには対応しません。

主な機能

  1. 01航路や運賃の条件を指定して検索
  2. 02航路の詳細と運賃を比較
  3. 03運賃履歴と値下がりを確認
  4. 04船、客室、クルーズ会社を検索
  5. 05港のガイドと寄港地ツアーを検索

活用シーン

  1. 01目的地、日付、予算でクルーズを絞り込む
  2. 02候補の航路を比較する
  3. 03運賃が値下がりしたか確認する
  4. 04客室や港でのアクティビティを調べる

MCP 対応

ローカルMCPサーバーを通じて、gangwazeから取得したツール一覧を公開し、呼び出しをgangwazeのホスト型MCPサーバーに転送します。ツールは読み取り専用で、結果は変更せず返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-cruisescope": {
"command": "npx",
"args": [
"-y",
"@reneturcios/cruisescope"
]
}
}
}
起動コマンドnpx -y @reneturcios/cruisescope

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

パッケージ
npm@reneturcios/cruisescope0.1.0
ocighcr.io/cloudcorprecords/cruisescope:0.1.0

ツール

14

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
cabinarrayいいえ客室タイプのキー。小文字で、次のいずれかと完全一致する必要があります:"inside"、"oceanview"、"balcony"、"suite"。複数の値は OR 条件で扱われます。他の綴りや大文字・小文字の組み合わせ(例:"Suite")は使用しないでください。認識されない値は拒否されます。
portsarrayいいえ寄港地。カタログにある正確な名称を指定してください。複数の値は OR 条件で扱われます。ツールは各名称を実際のカタログと照合し、認識できない名称について候補を返します。
priceanyいいえクルーズ全体の INSIDE 客室の 1 人あたり合計料金。整数の US ドルで指定し、コロン区切りの両端を含む範囲 "lo:hi" を使用します。例:"100:900" は $100 から $900 まで。片側を省略した範囲も使用できます:"500:" または ":1500"。合計予算(「$1,500 未満」)にはこれを使用します。1 日/1 泊あたりの予算には `pricePerNight` を使用してください。必ず INSIDE 客室の料金を指定し、他の客室タイプの料金は指定しないでください。単一の数値やハイフン区切りの範囲は渡さないでください。null は制約なしを意味します。
shipsarrayいいえ船名。カタログにある正確な値を指定してください。複数の値は OR 条件で扱われます。ツールは各名称を実際のカタログと照合し、認識できない名称について候補を返します。
vibesarrayいいえ旅程の特徴。次のいずれかと完全一致する必要があります:"relaxing"、"adventure"、"nature"、"shopping"。複数の値は OR 条件で扱われます。ユーザーの発言内容だけを対応付けてください(「のんびりしたビーチでの 1 週間」 -> ["relaxing"]、「景色と野生動物」 -> ["nature"])。目的地から特徴を推測しないでください。空の配列は制約なしを意味します。
familyanyいいえ船のファミリー向け度。0~100 のスコアを、コロン区切りの両端を含む範囲 "lo:hi" で指定します。「家族向け」「子ども連れ」「ティーン」「三世代」 -> "60:"、「大人限定」「カップル向けの隠れ家」「子どもなし」「静かな船」 -> ":40"。スコアをユーザーに伝えないでください。単一の数値やハイフン区切りの範囲は渡さないでください。null は制約なしを意味します。
nightsanyいいえクルーズの泊数。コロン区切りの両端を含む範囲 "lo:hi" を使用します。例:"7:7" はちょうど 7 泊、"5:9" は 5~9 泊です。片側を省略した範囲も使用できます:"5:"(5 泊以上)または ":9"(9 泊以下)。単一の数値(例:"7")やハイフン(例:"5-9")は渡さないでください。どちらも無効で、フィルターが拒否されます。null は制約なしを意味します。
safetyanyいいえ安全スコア。0~100 の範囲を、コロン区切りの両端を含む範囲 "lo:hi" で指定します。例:"80:100" は安全スコア 80 以上です。片側を省略した範囲も使用できます:"80:" または ":50"。単一の数値やハイフン区切りの範囲は渡さないでください。null は制約なしを意味します。
endDateanyいいえ最も遅い出航日。"YYYY-MM-DD" 形式で指定します(例:"2027-06-30")。null は上限なしを意味します。
regionsarrayいいえサブ地域名。カタログにある正確な値を指定してください(例:"Eastern Caribbean"、"Western Mediterranean")。複数の値は OR 条件で扱われます。ツールは各名称を実際のカタログと照合し、認識できない名称について候補を返します。大文字・小文字は区別しませんが、実在する地域である必要があります。
lineTypearrayいいえクルーズ会社のクラス。次のいずれかと完全一致する必要があります:"mainstream"、"premium"、"luxury"、"river"。複数の値は OR 条件で扱われます。「豪華クルーズ」「上質なもの」「大手の主流クルーズ会社」などに使用します。名前が指定された会社(「Seabourn」)は `cruiselines` に指定し、ここには指定しないでください。このフィールドは会社名が指定されていない場合に使用します。空の配列は制約なしを意味します。
shipSizeanyいいえ船の大きさは乗客定員(乗客数)で表し、コロン区切りの両端を含む範囲 "lo:hi" を使用します。表現を次の範囲に対応付けてください:「小型船」/「親密な雰囲気」/「ブティック」/「浮かぶ都市のようではない」 -> ":1500"、「中型船」 -> "1500:3000"、「大型船」/「メガシップ」/「船内で楽しめることが多い」 -> "3000:"。具体的な数値も指定できます:「乗客 1,000 人未満」 -> ":1000"。船隊の定員は 100~7,600 人です。片側を省略した範囲も使用できます。単一の数値やハイフン区切りの範囲は渡さないでください。null は制約なしを意味します。
shipYearanyいいえ船の建造年。コロン区切りの両端を含む範囲 "lo:hi" を使用します。例:"2015:" は 2015 年以降に建造された船を表し、「新しめの船」を指定する方法です。カタログの対象は 1998~2024 年です。片側を省略した範囲も使用できます:"2015:" または ":2005"。これは建造年であり、出航年ではありません。クルーズの出航時期には startDate/endDate を使用してください。単一の数値やハイフン区切りの範囲は渡さないでください。null は制約なしを意味します。
startDateanyいいえ最も早い出航日。"YYYY-MM-DD" 形式で指定します(例:"2027-03-01")。null は下限なしを意味します。
tripShapeanyいいえクルーズが出発地に戻るかどうか。出発港で終了する航程には "round_trip" を使用します。これは、飛行機を2便予約したくない人に適しています。別の場所で終了する航程(ポジショニングクルーズを含む)には "one_way" を使用します。この2つの文字列のみを指定してください。null は制約なしを意味します。航程の約5分の1は片道です。
cruiselinesarrayいいえクルーズ会社名。カタログにある正確な値を指定してください(例:"Carnival Cruise Line"。"Carnival" ではありません)。複数指定した場合は OR 条件で検索します。ツールは各名称を実際のカタログと照合し、認識できない名称には候補を返します。
destinationanyいいえ最上位の地域名を1つ指定します。カタログにある正確な値を指定してください(例:"Caribbean"、"Europe"、"Alaska")。"Mediterranean" や "Eastern Caribbean" のようなサブ地域は指定できません(これらは `regions` に指定します)。実在するカタログ値が必要です。認識できない場合、ツールは候補を返します。null は制約なしを意味します。
departureDaysarrayいいえクルーズの出発曜日。次の値のみ指定できます:"mon"、"tue"、"wed"、"thu"、"fri"、"sat"、"sun"。複数指定した場合は OR 条件で検索します。"Weekend getaway" / "leave on the weekend" -> ["fri","sat"] とし、ユーザーが日数を指定していない場合は `nights` を ":4" に設定します。曜日が指定されている場合("sails on a Saturday")は、その曜日を指定します。短いクルーズというだけでは週末出発を意味しません。空の配列は制約なしを意味します。
pricePerNightanyいいえ内側客室の1泊あたりの料金。1人あたりの整数の米ドルで、コロン区切りの両端を含む範囲 "lo:hi" を指定します。例:「1日あたり $100 未満」には ":100"、1泊 $80~$120 には "80:120" を指定します。ユーザーが1日、1泊、または1人1日あたりの予算を指定した場合は必ず使用し、合計予算には `price` を使用します。自分で換算せず、ユーザーが示した1泊あたりの金額を渡してください。単一の数値やハイフン区切りの範囲は渡さないでください。null は制約なしを意味します。
departurePortsarrayいいえ出発港/乗船港名。カタログにある正確な値を指定してください。複数指定した場合は OR 条件で検索します。ツールは各名称を実際のカタログと照合し、認識できない名称には候補を返します。

詳細

cruisescope

cruisescope は、クルーズの航路をカタログ化する gangwaze のホスト型 MCP サーバーへの、小規模なローカルブリッジです。行き先、時期、 予算を伝えると、カタログが条件に合う航路、その運賃、および gangwaze.com の全検索結果へのリンクを返します。

このブリッジは独自のカタログを保持しません。ライブエンドポイントから 取得したとおりに、上流サーバーのツール一覧をローカルで提供し、 各ツール呼び出しを上流に転送して、結果をそのまま返します。取得した ツール群はすべて読み取り専用です。航路の検索、候補の比較、運賃履歴と 値下がりの確認、客室、船、クルーズ会社、港、寄港地観光、ドリンク パッケージの検索を行えます。予約、購入、支払いのツールはありません。

ツール

  • searchCruises — これから出発する航路を検索します。すべてのフィルターは 任意です。destination(トップレベルの地域名)、 regions、departurePorts、ports、startDate / endDate、nights("lo:hi" の範囲)、cruiselines、 ships、cabin(inside、oceanview、balcony、 suite)、price / pricePerNight("lo:hi" の範囲)、 safety、family、tripShape、shipYear、shipSize、 lineType、vibes、departureDays を指定できます。結果は 出発日が近い順に並び、各航路には id が付いています。
  • compareSailings — 2~3件の航路を並べて比較します。日程、港、価格と 1泊あたりの価格、6か月平均に対する価格の評価、船齢とサイズ、 家族向けかどうか、評価、CDC スコアを確認できます。必須:ids。
  • getPriceHistory — 1件の航路の現在の運賃を過去6か月の履歴と比較し、 評価と値下がりフラグを返します。必須:id。
  • getPriceDrops — 現在の値下がり幅が大きいものを返します。 任意:limit(1~10)。
  • getCabinDetail — 船名と客室番号を指定して、特定の客室を検索します。 デッキ、位置、カテゴリー、既知の問題、乗客のコメントを確認できます。 必須:ship、cabin。
  • getShipCabins — 船の客室をタイプ別にまとめ、カテゴリー、数、 広さの範囲を返します。必須:ship。
  • getShipProfile — 船の情報を返します。建造年と改装年、サイズ、 乗客数と乗組員数、評価、施設、編集記事を確認できます。 必須:ship。
  • getCruiseLineProfile — クルーズ会社の情報を返します。どのような乗客に 向いているか、旅行者タイプ別の評価、グレード、保有船数を確認できます。 必須:line。
  • getDressCode — クルーズ会社の服装規定を返します。昼間と夜間の規則、 フォーマルナイト、施設ごとの規則を確認できます。 必須:line。
  • getPortGuide — クルーズ港のガイドを返します。アクティビティ、ビーチ、 ショッピング、ターミナル、安全性、Wi-Fi、レンタカーを確認できます。 必須:port。
  • getPortExcursions — ある港で予約できる寄港地観光とデイパスを、 価格、所要時間、評価とともに返します。 必須:port。任意:activity、minPrice、 maxPrice。
  • getSailingExcursions — 1回の呼び出しで、ある航路のすべての寄港地の 寄港地観光を、旅程順に返します。sailingId、または ship と date を指定します。任意: activity、minPrice、maxPrice。
  • getBestTimeToVisit — 港、地域、または目的地の月ごとの気温と 降水量に加え、最も暖かい月と最も乾燥した月を返します。 必須:place。
  • getDrinkPackages — クルーズ会社ごとのドリンクパッケージの詳細を返します。 パッケージ名、ドリンク1杯あたりの上限額、1日の上限、チップを確認できます。 任意:cruiseline(すべての会社を対象にする場合は省略)。

設定

  • GANGWAZE_MCP_URL(任意)— 上流エンドポイントを上書きします。 デフォルトは https://gangwaze.com/api/mcp です。 (この上書き用フックは、この再構築で独自に追加したものであることを 明記しています。)
  • GANGWAZE_API_KEY(任意)— 設定すると、すべての上流リクエストに X-Api-Key: <key> ヘッダーが付加されます(レート制限が緩和されます)。 未設定の場合はキーのヘッダーを送信せず、匿名でアクセスします。 Authorization ヘッダーは一切送信されません。 (この転送機能も、この再構築で独自に追加したものであることを 明記しています。元のツール群はキーなしで取得されました。)
転送の仕組み

最初のツール呼び出し時に、クライアントは上流サーバーとのストリーミング可能な HTTP セッションを開きます。JSON-RPC の initialize リクエスト(protocolVersion 2025-03-26、clientInfo name cruisescope)、続いて notifications/initialized 通知を送信し、その後、呼び出し元の引数を変更せずに含めた tools/call リクエストを送信します。上流サーバーが initialize への応答で Mcp-Session-Id ヘッダーを返した場合、 その値はセッションの以降のすべてのリクエストに付与され、 プロセスが終了するまで再利用されます。応答は 通常の JSON またはサーバー送信イベントとして届く場合があり、 どちらも読み取られます。

成功した上流サーバーの結果は、上流サーバーが設定した isError フラグも含め、そのまま返されます。 失敗(JSON-RPC エラー、2xx 以外のステータス、 読み取り不能な応答、または完了できないリクエスト)は、 テキストが cruisescope error: で始まる isError 結果として返されます(この形式は、この再構築版独自のラベル付き表現です)。

CLI

各ツールはサブコマンドとしても利用でき、JSON 引数文字列を 1 つ受け取ります(引数が不要なツールでは省略します)。

npx @reneturcios/cruisescope searchCruises '{"destination":"Caribbean","nights":"7:7"}'
npx @reneturcios/cruisescope compareSailings '{"ids":["carnival-breeze:2026-09-21:5","carnival-breeze:2026-09-28:5"]}'
npx @reneturcios/cruisescope getPriceHistory '{"id":"carnival-breeze:2026-09-21:5"}'
npx @reneturcios/cruisescope getPriceDrops '{"limit":5}'
npx @reneturcios/cruisescope getPortGuide '{"port":"Cozumel"}'
npx @reneturcios/cruisescope --version

終了コード:成功時は 0、isError 結果の場合は 1、使用方法に誤りがある場合は 2 です。

MCP サーバー

npx -y @reneturcios/cruisescope mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "cruisescope": {
      "command": "npx",
      "args": ["-y", "@reneturcios/cruisescope", "mcp"]
    }
  }
}

Docker

docker run -i ghcr.io/cloudcorprecords/cruisescope
docker run --rm ghcr.io/cloudcorprecords/cruisescope --version

コンテナのデフォルトコマンドは mcp なので、最初の形式は stdio MCP サーバーとして動作します。それ以外の引数は通常どおり CLI に渡されます。

開発

npm install
npm run build
npm test
npm run dev

テストスイートは、スタブ化された JSON-RPC 上流サーバーのみを対象に実行されます。実際のネットワーク呼び出しは行いません。

ライセンス

MIT — 詳細は LICENSE を参照してください。

コメント

MCP は初めてですか?

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

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