hotelbooking-ai について
hotelbooking-ai は、旅行エージェントやホテル予約機能を開発する人向けの MCP サーバーです。ホテル検索、リアルタイム料金、客室情報、検索タグを提供します。
主な機能
- 01場所や条件を指定したホテル検索
- 02リアルタイム料金と空室情報の取得
- 03ホテル詳細とポリシーの確認
- 04検索を絞り込むタグの取得
活用シーン
- 01旅行計画エージェントへのホテル検索追加
- 02出張向けホテルの比較
- 03予約前の料金確認
MCP 対応
streamable HTTP 経由で、MCP クライアントにホテル検索と詳細取得のツールを公開します。基本エンドポイントは3つのツールを提供し、OAuth 2.0 モードでは予約や注文関連のツールも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
3掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| size | number | いいえ | 返す結果の数(整数、1~20)。デフォルトは 10 です。 |
| place | string | はい | 検索範囲を定義する、ジオコーディング可能な単一の場所テキスト。例:"Beijing"、"Shanghai Pudong International Airport"、"Tokyo Disneyland"、"No. 19 Sanlitun Road, Chaoyang District, Beijing"。 |
| hotelTags | object | いいえ | 価格、ブランド、特定の設備に関する構造化タグフィルター。 |
| hotelTags.requiredTags | array | いいえ | 必須タグ/設備(必須条件)。 |
| hotelTags.preferredBrands | array | いいえ | 希望するホテルブランド。 |
| hotelTags.maxPricePerNight | number | いいえ | 1 泊あたりの最高料金(RMB、例:500)。 |
| placeType | string | はい | 場所の種類。使用できる値:`city`、`airport`、`point_of_interest`、`train_station`、`subway_station`、`hotel`、`district/county`、`detailed address`。`place` と意味的に一致している必要があります。 |
| countryCode | string | いいえ | 通貨/ロケール設定の優先指定に使用する ISO 3166-1 alpha-2 国コード。例:US、GB、JP。 |
| originQuery | string | はい | 意味理解とランキングに使用する、ユーザーの元の自然言語クエリ(原文)。 |
| checkInParam | object | いいえ | チェックインのパラメーター。フィールド:adultCount(整数、>=1、デフォルト 2);checkInDate(文字列、YYYY-MM-DD、未来の日付);stayNights(整数、1~28、デフォルト 1)。 |
| checkInParam.adultCount | number | いいえ | |
| checkInParam.stayNights | number | いいえ | |
| checkInParam.checkInDate | string | いいえ | |
| filterOptions | object | いいえ | 任意のフィルター。フィールド:distanceInMeter(整数、>0、POI のみ);starRatings(配列 [min, max]、0.0~5.0、刻み幅 0.5)。 |
| filterOptions.starRatings | array | いいえ | |
| filterOptions.distanceInMeter | number | いいえ |
詳細
RollingGo Hotel MCP — ホテル検索・予約
🏠 キーを申請 · 🚀 クイックスタート · 📚 使用例 · 💬 サポート · 🔍 Q&A · 💰RollingGoで収益を得る
これは、AI エージェントが世界中の200万軒以上のホテルを検索、比較、予約できるようにする公式 MCP サーバーです。このサーバーは、AI による旅行のおすすめと実際の予約の間をつなぎます。
| サービス | エンドポイント | 利用可能なツール | 認証 |
|---|---|---|---|
| Hotel MCP | https://mcp.rollinggo.ai/mcp | searchHotels, getHotelDetail, getHotelSearchTags | Authorization: Bearer <YOUR_API_KEY> |
- トランスポートプロトコル:
streamable-http - 料金:完全無料、利用制限なし
- 利用方法:このドキュメントに従ったセルフサービス方式です。迅速なプロトタイピングやツール開発に適しています。
RollingGo MCP では、getHotelSearchTags、searchHotels、getHotelDetail、hotelPriceConfirm、searchHotelOrders など、7つのツールを提供する OAuth 2.0 認可コードフローも利用できます。このモードは、エンタープライズ向けの本番アプリケーションとの高度な統合を想定しており、[email protected] へのお問い合わせが必要です。
🌟 RollingGo Hotel MCP が選ばれる理由
従来の AI エージェントは、静的なトレーニングデータセットに基づいてホテルをおすすめすることしかできません。RollingGo Hotel MCP により、LLM エージェントはリアルタイムの取引機能を直接利用できます。
✅ 最新料金と予約可能な在庫 — 遅延なく料金を確認でき、すべての検索結果をすぐに予約できます。
✅ サプライチェーン — エンドツーエンドで完全に API ネイティブです。
✅ グローバルなホテルネットワーク — 200万軒以上の施設が200以上の国・地域を網羅しています。高級チェーンから地域密着型のブティックホテルまで、あらゆる層をカバーする500社以上のサプライヤーと連携しています。
✅ 直接契約 — 11万軒以上のホテルと直接接続し、料金と在庫をリアルタイムで同期しています。
✅ 仕入れ元での価格優位性 — OTAより上流の価格設定により、人気エリアで魅力的な料金を提供します。
✅ エージェント対応 — Cursor、Claude Code、Codex、Windsurf、Copilot など、40以上の主要なエージェントで利用できます。
✅ MCP の呼び出しごとに収益を獲得 — 国ごとのマークアップを設定し、予約成立ごとにコミッションを獲得できます。注文、収益、支払い状況をリアルタイムで確認できます。法人と個人開発者のどちらも、柔軟に出金できます。
🎯 対象ユーザー
• AI エージェントを構築する企業または個人開発者
• MCP クライアントにホテル予約機能を統合したい開発者
• 旅行計画、出張管理、OTA、ライフスタイルサービス向けのエージェントを構築する開発者
• AI エージェントの商取引ワークフローを検証したいプロダクトチーム
• ホテル検索、料金比較、値下がり通知を必要とする個人******
🎯 ユースケース
- 汎用エージェント:あらゆる AI エージェントにネイティブなホテル予約機能を追加できます。ユーザーは自然言語での会話だけで、比較、絞り込み、予約をすべて行えます。
- AI 旅行プランナー:自然言語で作成する旅程に、ホテル検索を直接統合できます。
- 法人向け出張アシスタント:従業員が Slack、Teams、またはカスタムチャットインターフェース内で、出張の検索、比較、予約を行えるようにします。
- 取引デモ:大規模なバックエンド統合を行わずに、AI エージェントによる商取引と決済のフローをエンドツーエンドで検証できます。
🚀 クイックスタート
コーディング不要で、5 分以内にグローバルなホテル検索と予約を AI アシスタントに統合できます。
ステップ 1:開発者 API キーを取得する
- パートナーセンターにアクセスし、無料キーを登録します。
- 次の情報が記載されたメールが届きます:B2B パートナーセンターダッシュボードの認証情報(注文の確認、マークアップの設定、収益の追跡に使用します)。
ステップ 2:エージェントに接続する
推奨クライアント:Claude CLI、Codex、Cursor。Kiro、Doubao など、その他の MCP 対応クライアントも同様に設定できます。
Claude CLI
プロジェクトのルートに .mcp.json を作成します:
{
"mcpServers": {
"Rollinggo-Hotel": {
"url": "https://mcp.rollinggo.ai/mcp",
"type": "http",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
または、コマンドラインから直接追加します:
claude mcp add \
--transport http \
--header "Authorization: Bearer YOUR_API_KEY" \
Dida-Hotel \
https://mcp.rollinggo.ai/mcp
Codex
設定ファイルの場所:プロジェクトのルートにある .codex/config.json、またはグローバル設定の ~/.codex/config.json
{
"mcpServers": {
"Rollinggo-Hotel": {
"url": "https://mcp.rollinggo.ai/mcp",
"type": "streamable-http",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
Cursor
設定ファイルの場所:プロジェクトのルートにある .cursor/mcp.json、またはグローバル設定の ~/.cursor/mcp.json
{
"mcpServers": {
"Rollinggo-Hotel": {
"url": "https://mcp.rollinggo.ai/mcp",
"type": "streamable-http",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}
YOUR_API_KEYを実際の API キーに置き換えてください。
cURL で直接テストする
注:cURL には
-H "Accept: application/json, text/event-stream"を含める必要があります。含めない場合、サーバーは 400 エラーを返します。
curl -X POST https://mcp.rollinggo.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "searchHotels",
"arguments": {
"originQuery": "Shanghai Bund five-star hotel",
"place": "Shanghai Bund",
"placeType": "Attraction",
"checkInParam": {
"checkInDate": "2026-06-01",
"stayNights": 2
},
"filterOptions": {
"starRatings": [5.0]
},
"size": 3
}
},
"id": 1
}'
ステップ 3:最初の MCP 呼び出し
設定が完了したら、AI アシスタントに次のように伝えるだけです:
「あさってから宿泊できる、上海の外灘近くにある五つ星ホテルを探してください。」
AI は自動的に searchHotels ツールを呼び出し、ホテルの一覧を返します。
ホテル検索の例
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "searchHotels",
"arguments": {
"originQuery": "Shanghai Bund five-star hotel",
"place": "Shanghai Bund",
"placeType": "Attraction",
"checkInParam": {
"checkInDate": "2026-06-01",
"stayNights": 2
},
"filterOptions": {
"starRatings": [5.0]
},
"size": 3
}
},
"id": 1
}
ステップ 4:結果とサンプルデータを確認する
ホテル検索結果(実データ)
「上海の外灘にある五つ星ホテル」を検索すると、2 泊の場合、次の結果が返されます:
| ホテル | 星の数 | 1 泊あたりの最安料金 | 外灘までの距離 |
|---|---|---|---|
| Fairmont Peace Hotel Shanghai | ⭐⭐⭐⭐⭐ | $648 | 124m |
| The Peninsula Shanghai | ⭐⭐⭐⭐⭐ | $940 | 252m |
予想されるレスポンス JSON の例
{
"message": "Hotel search successful",
"hotelInformationList": [
{
"hotelId": 29529,
"bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
"name": "Fairmont Peace Hotel on the Bund",
"address": "No. 20 Nanjing East Road",
"starRating": 5.0,
"price": {
"message": "Price query successful. Lowest price: 648, Currency: USD",
"hasPrice": true,
"currency": "USD",
"lowestPrice": 648.0
},
"hotelAmenities": ["Bar", "Gym", "Pool", "SPA", "Parking", "WIFI"],
"tags": ["SPA Service", "Resort Hotel", "Sports-Friendly Hotel"]
}
]
}
🔧 利用可能なツール
サーバーは、検索から予約までの一連の流れに対応する 3 つのコアツールを登録します:
1) searchHotels
場所、日付、価格、星評価、タグでホテルを検索します。
- 入力パラメーター:
originQuery(string、必須):ユーザーからの自然文によるリクエスト(例:「東京で200ドル未満のブティックホテルを探してください」)。place(string、必須):目的地、観光スポット、空港の具体的な名称。placeType(string、必須):場所の種類(city、airport、point_of_interest、hotelなど)。対応している値:city、airport、point_of_interest、train_station、subway_station、hotel、district/county、detailed address。countryCode(string、任意):ISO 3166-1 alpha-2 国コード(例:CN、US)。size(number、任意、デフォルト:5):返すホテルの数(最大20)。checkInParam(object、任意):チェックイン関連のパラメーター。filterOptions(object、任意):フィルターパラメーター。hotelTags(object、任意):タグ/ブランド/予算のフィルター。
🔎 入力パラメーターの詳細を表示(checkInParam、filterOptions、hotelTags)
checkInParam のフィールド:
adultCount(number、任意、デフォルト:2):1室あたりの大人の人数。checkInDate(string、任意、形式:YYYY-MM-DD):チェックイン日。省略された場合、過去の日付の場合、または形式が不正な場合は、翌日がデフォルトになります。stayNights(number、任意、デフォルト:1):宿泊数(最大28泊)。
filterOptions のフィールド:
distanceInMeter(number、任意):観光スポットからの直線距離(メートル)。観光スポットが指定されている場合、デフォルトは2000です。starRatings(number[]、任意):星評価の範囲。デフォルトは[0.0, 5.0]、刻み幅は0.5です。
hotelTags のフィールド:
requiredTags(string[]、任意):必須タグ(厳密な条件)。preferredBrands(string[]、任意):希望するブランド。maxPricePerNight(number、任意):1泊あたりの予算上限(CNY)。
📄 応答 JSON スキーマの例を表示
{
"message": "Hotel search succeeded",
"hotelInformationList": [
{
"hotelId": 43615,
"bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
"name": "Sunworld Dynasty Hotel Beijing",
"brand": null,
"address": "50 Wangfujing Street",
"destinationId": "6140156",
"latitude": 39.917748,
"longitude": 116.412249,
"distanceInMeters": 205,
"starRating": 5.0,
"price": {
"message": "Price found, lowest: 626.0, currency: CNY",
"hasPrice": true,
"currency": "CNY",
"lowestPrice": 626.0
},
"areaCode": "CN",
"description": "...",
"imageUrl": "https://image-cdn.RollingGo.com/...",
"hotelAmenities": ["24h Front Desk", "WiFi"],
"score": 1.0,
"tags": ["Near Shopping Mall", "Free WiFi"]
}
]
}
注:
priceは数値ではなくオブジェクトです。都市や供給元によっては、フィールドが欠落しているかnullの場合があります。
2) getHotelDetail
選択したホテルの客室タイプ、変動料金、在庫状況、キャンセルポリシーをリアルタイムで取得します。
- 入力パラメーター:
hotelId(number、任意):ホテル ID。nameとは相互排他的です。両方が指定された場合は、hotelIdが優先されます。name(string、任意):ホテル名(あいまい検索)。dateParam(object、任意):チェックイン/チェックアウトの日付パラメーター。occupancyParam(object、任意):宿泊人数と客室数のパラメーター。localeParam(object、任意):国と通貨のパラメーター。
🔎 入力パラメーターの詳細を表示(dateParam、occupancyParam、localeParam)
dateParam のフィールド:
checkInDate(string、任意、形式:YYYY-MM-DD):チェックイン日。空欄、形式が不正、または過去の日付の場合、翌日がデフォルトになります。checkOutDate(string、任意、形式:YYYY-MM-DD):チェックアウト日。空欄、形式が不正、またはチェックイン日より後でない場合、checkInDateの翌日がデフォルトになります。
occupancyParam のフィールド:
adultCount(number、任意、デフォルト:2):1室あたりの大人の人数。childCount(number、任意、デフォルト:0):1室あたりの子どもの人数。childAgeDetails(number[]、任意):子どもの年齢(例:[3, 5])。roomCount(number、任意、デフォルト:1):客室数。
localeParam のフィールド:
countryCode(string、任意、デフォルト:US):ISO 3166-1 alpha-2 国コード。currency(string、任意、デフォルト:USD):通貨コード。
📄 応答 JSON スキーマの例を表示
{
"success": true,
"errorMessage": null,
"hotelId": 43615,
"bookingUrl": "https://rollinggo.ai/pages/hotel/detail/index?...",
"name": "Sunworld Dynasty Hotel Beijing",
"checkIn": "2026-03-05",
"checkOut": "2026-03-06",
"roomRatePlans": [
{
"roomTypeId": 4984714,
"roomName": "Superior Room",
"roomNameCn": "高级客房",
"ratePlanId": "7012072001634754626",
"ratePlanName": "Superior Room King Bed, 1 King Bed",
"bedType": 73,
"bedTypeDescription": "Unknown",
"currency": "CNY",
"totalPrice": 0,
"totalSalesRate": null,
"inventoryCount": null,
"isOnRequest": null,
"recommendIndex": null,
"cancellationPolicies": [
{
"fromDate": "2026-03-02T10:00:00+08:00",
"toDate": null,
"amount": 634,
"percent": null,
"type": null,
"description": null
}
],
"includedFees": null,
"excludedFees": null,
"metadata": null
}
]
}
注: 失敗した場合、応答にはエラーメッセージ(例:「料金の取得に失敗しました。後でもう一度お試しください」)または構造化されたエラーフィールドが含まれることがあります。
roomRatePlans配列は長くなる場合があるため、クライアント側でページネーションを行うか、表示件数を制限することを検討してください。
3) getHotelSearchTags
検索フィルターの絞り込みに使用できるすべてのタグ名(例:「無料 Wi-Fi」「ジム」「子ども向け」)を含むメタデータを取得します。ローカルキャッシュやクライアント側のインテントマッピングに適しています。
📄 レスポンス JSON スキーマの例を表示
{
"tags": [
{
"name": "Free WiFi",
"category": "Core Amenities",
"description": "Provides free WiFi"
}
],
"usageGuide": {
"tagUsage": "Place tag names into hotelTags.preferredTags (preference), requiredTags (hard requirement), or excludedTags (exclusion)",
"exampleRequest": "{...}"
}
}
一般的なタグカテゴリ:
- ブランドと評価
- 特徴的な見どころ
- 基本的なアメニティ
- 家族と子ども
- サービスの詳細
- サービスと飲食
- 交通と支払い
- 景観と客室タイプ
- ホテルのタイプ
- 料金
📚 使用例
例 1:都市で検索
{
"originQuery": "Find 4-star+ hotels in Beijing for 2 nights",
"place": "Beijing",
"placeType": "city",
"checkInParam": {
"checkInDate": "2026-03-01",
"stayNights": 2
},
"filterOptions": {
"starRatings": [4.0, 5.0]
},
"size": 5
}
例 2:タグと予算の条件を指定
{
"originQuery": "Find quality hotels in Beijing with free WiFi, budget under 1000 per night",
"place": "Beijing",
"placeType": "city",
"hotelTags": {
"requiredTags": ["Free WiFi"],
"maxPricePerNight": 1000
},
"size": 5
}
例 3:ホテルの客室タイプと料金を照会
{
"hotelId": 43615,
"dateParam": {
"checkInDate": "2026-03-05",
"checkOutDate": "2026-03-06"
},
"occupancyParam": {
"adultCount": 2,
"roomCount": 1
},
"localeParam": {
"currency": "CNY",
"countryCode": "CN"
}
}
💬 Q&A
Q&A
Q1:クライアントにツールが表示されない
- JSON 設定の形式が正しいことを確認してください
urlとtypeが正しいことを確認してくださいAuthorizationヘッダーの API Key が正しいことを確認してください- クライアントを再起動してください(変更は再起動後に反映されます)
Q2:401 Unauthorized が返される API Key が無効、または形式が正しくありません:
- API Key が
mcp_で始まっていることを確認してください Authorization: Bearer YOUR_API_KEYでは、Bearer の後にスペースが必要です- API Key に余分なスペースや改行が含まれていないことを確認してください
Q3:400 Bad Request が返される cURL で直接呼び出す場合によく発生します。Accept ヘッダーが含まれていることを確認してください:
-H "Accept: application/json, text/event-stream"
Q4:searchHotels の検索結果が空
placeとplaceTypeの組み合わせが正しいことを確認してください(例:「Shanghai Bund」には「Attraction」を指定してください)- フィルター条件を緩和してください(星評価やタグの制限を解除します)
checkInDateが過去の日付でないことを確認してください
Q5:料金が実際の料金と一致しない 検索結果に表示されるのは参考料金です。リアルタイムの料金は異なる場合があります。現在は検索のみ対応しており、オンライン予約はまだ利用できません。
💬 サポート
- 📧 メール:[email protected]
- 🐛 Issue:GitHub Issues から不具合や機能リクエストを送信してください。
- 💬 Discord コミュニティ:Discord サーバーに参加するか、以下の QR コードをスキャンして、ほかの開発者とつながり、インテグレーションについて話し合い、RollingGo チームからリアルタイムのサポートを受けてください。
🌟 RollingGo Hotel MCP(OAuth)v2.3 メジャーアップデート
v2.3 では注文照会の構造を最適化し、注文詳細フィールドを複数追加しました。これにより、エージェントがチェックイン、支払い、キャンセルのシナリオに適切に対応できるようになります。注:このアップデートは OAuth 連携版のみが対象で、ここに記載されている API Key 版には適用されません。OAuth 版の利用には、[email protected] へのお問い合わせによるビジネス導入が必要です。
変更内容
変更なしのツール(4)
getHotelSearchTags— 有効なホテルフィルタータグをすべて取得searchHotels— 条件を指定して世界各地のホテル一覧を検索getHotelDetail— ホテルの利用可能な客室タイプと料金を取得hotelPriceConfirm— 選択した客室のリアルタイム確定小売価格を確保
変更されたツール(2)
createHotelBookingWithPaymentURL—alipayUrlSceneパラメーターを削除し、bookingResult.paymentUrlを汎用チェックアウトに統一searchHotelOrders— 一覧表示用に出力を中核となる 9 つのフィールド(orderNo、hotelName、roomName、orderStatus、totalPriceなど)に簡素化し、完全な詳細情報を専用ツールに移動
新しいツール(1)
getHotelOrderDetail—orderNoを指定して注文の構造化された詳細情報をすべて照会します。hotelConfirmationNo、宿泊者一覧、ベッドタイプ、連絡先電話番号、座標、支払い期限とキャンセル期限、およびポリシーフラグが含まれます
新しいフィールド
hotelConfirmationNo— フロントデスクでの照会に使用する、ホテル側の正式な確認番号stayInfo.bedTypeStr— 人が読み取れるベッドタイプの説明(例:"1 King Bed (1.8m)")stayInfo.guestNames— 確認用の正式なピンイン/英語表記の宿泊者名リストpriceInfo.paymentDeadline— カウントダウン通知に使用する支払い期限のタイムスタンプ(YYYY-MM-DD HH:mm:ss)policyInfo.freeCancelDeadline— 返金期間の確認に使用する無料キャンセル期限のタイムスタンプpolicyInfo.isCancelable— 現時点で無料キャンセルがまだ可能かどうか
ツール数: 合計 7 個(v2.2 の 6 個から増加)— 新規 1 個、変更 2 個、変更なし 4 個。
付録
🔣 ローカル環境にデプロイする場合
方法 A:uv で実行(推奨 — 設定不要)
uv がインストールされている場合は、次のコマンドを実行するとすぐにサーバーを起動できます。
uv run --with-requirements requirements.txt server.py
方法 B:標準的な Python セットアップ
# Clone the repository
git clone https://github.com/DIDA-AI/dida_hotel_mcp_global.git
cd dida_hotel_mcp_global
# Setup virtual environment
python -m venv venv
source venv/bin/activate # On Windows: venv\Scripts\activate
# Install dependencies and run
pip install -r requirements.txt
python server.py
ローカルサーバーは http://localhost:8000/mcp で実行され、リクエストはセキュアな RollingGo グローバル API ノードに自動転送されます。
🔑 セキュリティとヘッダー
- ローカルサーバーはリクエストをセキュアな DIDA グローバル API に転送します。
- API キーは必ずヘッダーに指定してください。キーは
mcp_で始まる必要があります。 - 必須ヘッダー:
Authorization: Bearer mcp_your_key_here
📜 ライセンス
このプロジェクトは MIT ライセンスのもとでライセンスされています。詳細については LICENSE ファイルをご覧ください。
RollingGo チームが ❤️ を込めて作成
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。