NuVista Haven MCP Server について
NuVista Haven MCP Serverは、NuVista Havenのバケーションレンタル向け読み取り専用AIフロントデスクです。宿泊施設、空室、料金を確認するゲストを対象とし、Hospitableの最新カレンダーとNuVista Havenの直接予約リンクを提供します。
主な機能
- 01バケーションレンタル物件の検索
- 02指定日の空室確認
- 03宿泊数と清掃料金による見積もり
- 04直接予約リンクの提示
- 05GETリクエストのみでデータを読み取り
活用シーン
- 01空室物件に関するゲストの質問への回答
- 02宿泊日の空き状況の確認
- 03料金見積もりと予約先の案内
MCP 対応
MCP経由で物件検索、空室確認、見積もり、予約リンクのツールを公開します。stdioまたはStreamable HTTPに対応し、Hospitableのデータを読み取り専用で照会します。
設定
リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。
https://nuvista-haven-mcp.onrender.com/mcpclaude mcp add --transport http cswarey16-nuvista-haven https://nuvista-haven-mcp.onrender.com/mcp{"mcpServers":{"cswarey16-nuvista-haven":{"type":"http","url":"https://nuvista-haven-mcp.onrender.com/mcp"}}}Cursor で開く{"servers":{"cswarey16-nuvista-haven":{"type":"http","url":"https://nuvista-haven-mcp.onrender.com/mcp"}}}VS Code で開く{"mcpServers":{"cswarey16-nuvista-haven":{"type":"http","url":"https://nuvista-haven-mcp.onrender.com/mcp"}}}{"mcpServers":{"cswarey16-nuvista-haven":{"serverUrl":"https://nuvista-haven-mcp.onrender.com/mcp"}}}コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。
ツール
5| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| area | string | いいえ | エリア名で絞り込みます(例:"Lancaster"、"Poconos"、"Sarasota")。 |
| query | string | いいえ | 物件名に含まれるキーワードで検索します(例:"farmhouse"、"hot tub")。 |
| min_sleeps | integer | いいえ | 指定人数以上が宿泊できる物件のみを対象にします。 |
詳細
NuVista Haven MCP サーバー(「AI フロントデスク」)
AI アシスタントがライブデータをもとに回答できるようにする Model Context Protocol サーバーです:
- NuVista Haven の物件 →
search_properties - 指定した日付に空きがあるか →
check_availability(Hospitable のカレンダー) - 料金はいくらか →
get_quote(1泊あたりの料金 × 泊数 + 清掃料金) - 直接予約するにはどこにアクセスするか →
get_booking_link(nuvistahaven.com)
セキュリティモデル
- 設計上、読み取り専用です。
hospitable_client.pyが公開する HTTP メソッドは、読み取りパスの許可リスト(/user、/properties、/reservations)に対する GET だけです。POST/PUT/PATCH/DELETE メソッドはどこにもありません。トークンに書き込みスコープが含まれていても、この コードから Hospitable のデータを変更することはできません。 - トークンの取り扱い。 Hospitable の Personal Access Token は
HOSPITABLE_API_TOKEN環境変数からのみ 読み取ります。ハードコードされることも、ログに記録されることも、ディスクに書き込まれることもありません。
セットアップ
cd ~/workspace/nuvista-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
実行
# local testing (stdio)
HOSPITABLE_API_TOKEN=<token> ./venv/bin/python server.py
# public hosting (Streamable HTTP)
HOSPITABLE_API_TOKEN=<token> ./venv/bin/python server.py --http --port 8000
テスト(モックを使用、トークン不要)
./venv/bin/python test_server.py
初回のみ:Hospitable の物件 ID を対応付ける
properties.py には、Hospitable の物件名の最善努力による推定を含む、正規の
12 件の物件が登録されています(確度が高いものが 7 件、推定が 5 件です。guess_confidence を参照)。
有効なトークンを使用して、マッチャーを実行し、各対応付けを手動で確認してから、
各物件の hospitable_id を設定してください:
HOSPITABLE_API_TOKEN=<token> ./venv/bin/python - <<'EOF'
import sys; sys.path.insert(0, '.')
from hospitable_client import HospitableClient
from logic import build_id_mapping
import json
print(json.dumps(build_id_mapping(HospitableClient()), indent=2))
EOF
"needs_human_confirm": true のエントリは、使用前に確認する必要があります。
対応付けされていない物件では、check_availability/get_quote は実行できません。
既知の API の不足点/前提(ライブ API で確認してください)
- カレンダーのクエリパラメーター:
get_calendarはstart_date/end_dateを送信します。 これは/reservationsで使われている Hospitable の慣例に従ったものです。エンドポイントが これらを無視する場合、空き状況の期間が正しくない可能性があります。初回のライブ実行時に確認してください。 - 清掃料金:カレンダーの日付オブジェクトには含まれていません。
get_quoteは 物件レコードから一般的な料金形式を調べます。見つからない場合、合計にはtotal_is_partial_estimate: trueと明示されます。暗黙にゼロとして扱うことはありません。 - 予約リンクの日付パラメーター:nuvistahaven.com のクエリー文字列による日付の事前入力は
未確認のため、
get_booking_linkは物件の URL をそのまま返します(架空のパラメーターは追加しません)。 - 予約の照合:
list_reservationsは実装されていますが、正確な情報源はカレンダーです。現在、 予約情報は参照されません。
ファイル
server.py— FastMCP サーバー。4 つのツール、stdio + Streamable HTTPlogic.py— ツールのロジック(MCP なしでテスト可能)hospitable_client.py— GET 専用の Hospitable Public API v2 クライアントproperties.py— 正規の 12 件の物件レジストリー + Hospitable との対応付けtest_server.py— モックベースのテスト
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。