NuVista Haven MCP Server
Recepción con IA para los alquileres vacacionales de NuVista Haven: busca 12 cabañas y casas, consulta disponibilidad en tiempo real, obtén cotizaciones de tarifas por noche y recupera enlaces de reserva directa. Datos en vivo a través de Hospitable.
Servidor MCP alojado
npx add-mcp 'https://nuvista-haven-mcp.onrender.com/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
Servidor MCP de NuVista Haven ("recepcionista de IA")
Servidor del Protocolo de Contexto de Modelo que permite a los asistentes de IA responder, a partir de datos en vivo:
- qué propiedades de NuVista Haven existen →
search_properties - qué está disponible en fechas determinadas →
check_availability(calendarios de Hospitable) - cuál es el precio →
get_quote(tarifas nocturnas × noches + tarifa de limpieza) - dónde reservar directamente →
get_booking_link(nuvistahaven.com)
Modelo de seguridad
- Solo lectura por diseño.
hospitable_client.pyexpone exactamente un verbo HTTP (GET) contra una lista de permitidos de rutas de lectura (/user,/properties,/reservations). No hay métodos POST/PUT/PATCH/DELETE en ningún lugar — incluso si el token puede tener alcances de escritura, este código no puede mutar nada en Hospitable. - Manejo del token. El Token de Acceso Personal de Hospitable se lee SOLO
de la variable de entorno
HOSPITABLE_API_TOKEN. Nunca está codificado, nunca se registra, nunca se escribe en disco.
Configuración
cd ~/workspace/nuvista-mcp
python3 -m venv venv
./venv/bin/pip install -r requirements.txt
Ejecución
# 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
Pruebas (simuladas, sin necesidad de token)
./venv/bin/python test_server.py
Una sola vez: mapear los IDs de propiedades de Hospitable
properties.py contiene las 12 propiedades canónicas con suposiciones
de nombres de Hospitable de mejor esfuerzo (7 sólidas, 5 suposiciones — ver guess_confidence).
Con un token en vivo, ejecuta el emparejador y confirma cada mapeo a mano,
luego completa hospitable_id por propiedad:
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
Las entradas con "needs_human_confirm": true deben verificarse antes de su uso —
check_availability/get_quote se niegan a ejecutarse para propiedades no mapeadas.
Brechas / suposiciones conocidas de la API (verificar contra la API en vivo)
- Parámetros de consulta del calendario:
get_calendarenvíastart_date/end_date(la convención de Hospitable utilizada por/reservations). Si el endpoint los ignora, las ventanas de disponibilidad pueden ser incorrectas — verificar en la primera ejecución en vivo. - Tarifa de limpieza: no es parte del objeto de día del calendario.
get_quotesondea el registro de la propiedad en busca de formas comunes de tarifas; si está ausente, el total se marca explícitamente comototal_is_partial_estimate: true— nunca se pone en cero silenciosamente. - Parámetros de fecha del enlace de reserva: el precargado de fechas mediante cadena de consulta en
nuvistahaven.com no está verificado, por lo que
get_booking_linkdevuelve la URL simple de la propiedad (sin parámetros inventados). - Verificación cruzada de reservas:
list_reservationsestá implementado, pero el calendario es la fuente de verdad; las reservas no se consultan actualmente.
Archivos
server.py— servidor FastMCP, 4 herramientas, stdio + Streamable HTTPlogic.py— lógica de herramientas (probable sin MCP)hospitable_client.py— cliente de API pública v2 de Hospitable solo GETproperties.py— registro canónico de 12 propiedades + mapeo de Hospitabletest_server.py— pruebas basadas en simulaciones