About NuVista Haven MCP Server
NuVista Haven MCP Server is a read-only AI front desk for NuVista Haven vacation rentals, for guests checking properties, availability, and prices. It gets live calendars from Hospitable and returns direct booking links on nuvistahaven.com.
Key features
- 01Search vacation rental properties
- 02Check availability for selected dates
- 03Calculate quotes from nights and cleaning fees
- 04Provide direct booking links
- 05Read data using GET requests only
Use cases
- 01Answer guest questions about available properties
- 02Check vacancies for stay dates
- 03Provide a price quote and booking route
MCP support
The server exposes property search, availability, quote, and booking-link tools over MCP. It supports stdio or Streamable HTTP and queries Hospitable data in read-only mode.
Configuration
Remote servers need no local install. Pick your client, then copy the config or install in one click.
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"}}}Open in Cursor{"servers":{"cswarey16-nuvista-haven":{"type":"http","url":"https://nuvista-haven-mcp.onrender.com/mcp"}}}Open in 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"}}}Run commands in a terminal; paste JSON into the client’s MCP config and restart. Servers that need sign-in will prompt on first connect.
Tools
5| Parameter | Type | Required | Description |
|---|---|---|---|
| area | string | No | filter by area text (e.g. "Lancaster", "Poconos", "Sarasota"). |
| query | string | No | keyword matched against property names (e.g. "farmhouse", "hot tub"). |
| min_sleeps | integer | No | only properties sleeping at least this many guests. |
Details
From the project READMENuVista Haven MCP server ("AI front desk")
Model Context Protocol server that lets AI assistants answer, from live data:
- what NuVista Haven properties exist →
search_properties - what's free on given dates →
check_availability(Hospitable calendars) - what's the price →
get_quote(nightly rates × nights + cleaning fee) - where to book direct →
get_booking_link(nuvistahaven.com)
Security model
- Read-only by construction.
hospitable_client.pyexposes exactly one HTTP verb (GET) against an allow-list of read paths (/user,/properties,/reservations). There are no POST/PUT/PATCH/DELETE methods anywhere — even though the token may carry write scopes, this code cannot mutate anything in Hospitable. - Token handling. The Hospitable Personal Access Token is read ONLY
from the
HOSPITABLE_API_TOKENenvironment variable. It is never hardcoded, never logged, never written to disk.
Setup
cd ~/workspace/nuvista-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
Run
# 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
Tests (mocked, no token needed)
./venv/bin/python test_server.py
One-time: map Hospitable property IDs
properties.py holds the 12 canonical properties with best-effort
Hospitable name guesses (7 strong, 5 guesses — see guess_confidence).
With a live token, run the matcher and confirm each mapping by hand,
then fill in hospitable_id per property:
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
Entries with "needs_human_confirm": true must be verified before use —
check_availability/get_quote refuse to run for unmapped properties.
Known API gaps / assumptions (verify against live API)
- Calendar query params:
get_calendarsendsstart_date/end_date(the Hospitable convention used by/reservations). If the endpoint ignores them, availability windows may be wrong — verify on first live run. - Cleaning fee: not part of the calendar day object.
get_quoteprobes the property record for common fee shapes; if absent, the total is explicitly markedtotal_is_partial_estimate: true— never silently zero. - Booking-link date params: date pre-fill via query string on
nuvistahaven.com is unverified, so
get_booking_linkreturns the plain property URL (no fabricated params). - Reservations cross-check:
list_reservationsis implemented but the calendar is the source of truth; reservations are not currently consulted.
Files
server.py— FastMCP server, 4 tools, stdio + Streamable HTTPlogic.py— tool logic (testable without MCP)hospitable_client.py— GET-only Hospitable Public API v2 clientproperties.py— canonical 12-property registry + Hospitable mappingtest_server.py— mock-based tests
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.