Google Flights MCP
Búsqueda de vuelos en tiempo real: tarifas de ida y vuelta en rangos de fechas, con veredictos de precios.
Documentación
Habilidades de Agente de Viajes
Ocho habilidades de agente que convierten los precios en tiempo real de Google Flights y Booking.com en respuestas de viaje: la fecha más barata para volar, a dónde ir, un presupuesto completo de viaje, un seguimiento de tarifas, una lista corta de hoteles, una auditoría de paridad de tarifas y un informe listo para el cliente.
Empieza con el servidor alojado, no con el repositorio. Una línea y cualquier cliente MCP puede buscar vuelos en vivo:
claude mcp add --transport http google-flights https://google-flights-mcp.flightpowers.com/mcp --header "x-rapidapi-key: YOUR_RAPIDAPI_KEY"
Eso le da a tu agente los datos. Las habilidades siguientes son las que hacen que use bien los datos: una llamada para todo un rango de fechas en lugar de treinta, el veredicto low | typical | high en lugar de un número desnudo, y una obtención fresca cada vez en lugar de una tarifa obsoleta.
Cómo encajan las habilidades
Un centro central contiene la autenticación, los hosts, cada endpoint, cada nombre de campo de respuesta y las reglas de facturación. Siete habilidades de flujo de trabajo se mantienen delgadas y delegan en él.
travel-data-api hub — auth, hosts, endpoints, response fields, cost per call
|- cheapest-dates WHEN to fly: scan a date range, judge the winner
|- destination-compare WHERE to go: price many cities from one origin
|- trip-planner flights + hotel totalled into one all-in budget
|- fare-watch one pinned route, re-checked over time, book-now-or-wait
|- hotel-search find and price places to stay
|- rate-parity-monitor same hotel priced as a resident of each country
`- travel-brief presentation layer — recommendation, table, links
| Habilidad | Úsala cuando quieras… | Devuelve |
|---|---|---|
travel-data-api | escribir código curl o de cliente, buscar un parámetro o campo de respuesta, instalar el servidor MCP, o calcular cuánto cuesta una llamada | tablas de endpoints, curl ejecutable, nombres exactos de campos JSON |
cheapest-dates | encontrar el día, semana o mes más barato para volar una ruta conocida — o la duración de viaje más barata | tarifa más barata por fecha, el departure_date/return_date ganador, buy_link, y el veredicto de oferta |
destination-compare | decidir a dónde ir: "algún lugar cálido por menos de $300 en octubre" | una tabla de ciudades ordenadas por precio, más una línea de cobertura que nombra cada destino realmente buscado |
trip-planner | cotizar un viaje nombrado de principio a fin: "7 noches en Lisboa por menos de $2000" | check-in/check-out alineados, vuelos de ida y vuelta, hoteles coincidentes, total combinado por persona vs. el límite |
fare-watch | rastrear el precio de una ruta en comprobaciones repetidas y alertar solo ante una caída significativa | precio en vivo, veredicto low/typical/high, banda histórica de Google, checked_at, delta vs. tu historial almacenado |
hotel-search | encontrar hoteles por ciudad, barrio o punto de referencia, o cotizar una propiedad nombrada | name, price_string, review_score, room_type, location, link — o available más nights |
rate-parity-monitor | ver si el mismo hotel es más barato reservado desde otro país | tabla por mercado con proxy_country, tarifa por noche en una moneda, diferencial vs. mercado más barato, veredicto de brecha vs. ruido |
travel-brief | convertir resultados en algo que puedas enviar a un cliente | recomendación → tabla → veredicto → enlaces de reserva → línea de verificación |
Las habilidades se nombran por el trabajo, no por el endpoint. Dos endpoints de vuelos y dos endpoints de hoteles producen siete flujos de trabajo, porque "qué día es más barato" y "a dónde debería ir" son preguntas diferentes para un usuario y preguntas idénticas para una API.
Instalación
Claude Code (plugin)
claude plugin marketplace add mtnrabi/travel-agent-skills
claude plugin install travel-agent-skills@travel-agent-skills
Reinicia Claude Code y las ocho habilidades se cargan juntas: el agente elige la correcta según la pregunta, y también puedes invocar una directamente por nombre (cheapest-dates, trip-planner, rate-parity-monitor).
Cualquier agente con un directorio de habilidades simple
git clone https://github.com/mtnrabi/travel-agent-skills.git
# personal, every project:
cp -r travel-agent-skills/skills/* ~/.claude/skills/
# or scoped to one project:
mkdir -p .claude/skills && cp -r travel-agent-skills/skills/* .claude/skills/
Cada habilidad es una carpeta autocontenida con un descriptor de visualización SKILL.md y un agents/openai.yaml, por lo que cualquier runtime que lea un directorio de habilidades puede cargarlas: copia todo el conjunto, o solo las carpetas que quieras. Nada aquí importa nada; no hay paso de compilación ni dependencia.
Tu clave de API
cp .env.example .env # then paste your key into RAPIDAPI_KEY
Las habilidades nunca imprimen, registran ni confirman tu clave, y no la pedirán a menos que una llamada en vivo la necesite.
Obtén una clave
Ambas APIs se facturan a través de RapidAPI con tu propia clave, y la misma clave funciona para ambas una vez que te suscribes a cada una. Suscríbete a la que necesites: solo vuelos, solo hoteles, o ambas.
| API | Qué devuelve | Regístrate |
|---|---|---|
| Google Flights Live API | tarifas de vuelos en tiempo real, ida y vuelta | https://rapidapi.com/mtnrabi/api/google-flights-live-api |
| Booking Live API | disponibilidad de hoteles y tarifas por noche en tiempo real | https://rapidapi.com/mtnrabi/api/booking-live-api |
¿Prefieres ejecuciones sin código o programadas por lotes? Los mismos datos se envían como actores de Apify: vuelos ($5 / 1k) y hoteles ($4 / 1k).
MCP alojado — el servidor sin anuncios
claude mcp add --transport http google-flights https://google-flights-mcp.flightpowers.com/mcp --header "x-rapidapi-key: YOUR_RAPIDAPI_KEY"
Dos herramientas, search_oneway_flights y search_roundtrip_flights. Ambas toman un rango de fechas (departure_date_from / departure_date_to), una lista de destinos y, para ida y vuelta, nights (un número, o una lista como [5,6,7]) en lugar de una fecha de regreso fija. Una intención de usuario es una llamada de herramienta, nunca una llamada por fecha. Si tu cliente no admite encabezados personalizados, el servidor de pago también acepta ?rapidapi_key= en la URL o un campo de clave de API donde el cliente lo ofrezca.
Gratis vs. de pago
De pago — google-flights-mcp.flightpowers.com/mcp | Gratis — google-flights-lulu.flightpowers.com/mcp | |
|---|---|---|
| Anuncios | ninguno | una tarjeta patrocinada divulgada por resultado |
| Clave | tu propia clave de RapidAPI | ninguna necesaria |
| Límite de fan-out | 30 por llamada (máx. 60) | 15 por llamada |
| Informe de gastos | api_usage en cada respuesta | n/a |
| Listable en directorio | sí | no — los anuncios están prohibidos por Anthropic, OpenAI y el registro oficial de MCP |
Los hoteles aún no tienen servidor MCP; las habilidades de hoteles llaman a la API REST directamente.
Lo que los datos hacen que un scraper no puede
price_insights_low/price_insights_high/price_range_in_relation_to_other_periods— la propia banda de precios histórica de Google para esa ruta y período, más un veredictolow | typical | high. Esa es la diferencia entre "$209" y "$209 es típico para esta ruta — no hay necesidad de apresurarse". Cada habilidad de vuelo comienza con el veredicto, no con el número.proxy_countryen los endpoints de hoteles enruta la solicitud a través de un proxy residencial en ese país, por lo que el mismo hotel y las mismas fechas pueden cotizarse como los vería un usuario enus,deoil. Eso es lo que hace posiblerate-parity-monitor.
Ejemplo práctico
Le preguntas a Claude:
I'm flexible — cheapest 4 nights in Paris out of Berlin, sometime in the first half of June.
Is it actually a good price, or should I wait?
cheapest-dates reconoce la ventana flexible, emite una llamada search_roundtrip_flights con departure_date_from: 2026-06-01, departure_date_to: 2026-06-15 y nights: 4, ordena los resultados por sí mismo y luego responde con esta forma:
Low for this route. $119 round-trip sits under Google's historical band of
$135–$205 for BER–CDG in this period — this is a book-it price, not a wait-it-out price.
Best: depart Mon Jun 1, return Fri Jun 5 (4 nights)
Out easyJet · non-stop · 1 hr 50 min · 7:00 AM → 8:50 AM
Back easyJet · non-stop · 1 hr 45 min · 8:20 PM → 10:05 PM
Total $119 · https://www.google.com/travel/flights?tfs=...
Runner-up dates, cheapest per departure day:
Jun 2 $131 Jun 8 $146 Jun 11 $158 Jun 4 $172
Prices checked at 2026-06-01 09:14 UTC — fares go stale in minutes.
(Los nombres de campos y valores de muestra anteriores provienen de la forma de respuesta documentada de la API — ilustran el formato de respuesta, no son una cotización en vivo.)
Tres cosas en esa respuesta son el punto central de las habilidades:
- Una llamada, no quince. Una ventana de quince días sobre REST son quince solicitudes facturadas; sobre MCP con un rango es una. La habilidad dice el número de solicitudes en voz alta antes de gastar tu dinero.
- El veredicto lidera. Un escaneo siempre produce un mínimo — un mínimo no es una oferta. Si la fecha más barata encontrada devuelve
typicalohigh, la habilidad lo dice. - Nada se reutiliza. Pregunta de nuevo una hora después y vuelve a obtener y a sellar. Ninguna habilidad en este repositorio almacena en caché una tarifa, y cada respuesta lleva la hora en que se obtuvo.
Otros prompts para los que están construidas estas habilidades:
Where can I go from JFK for under $400 in late October? Somewhere warm.
Watch BER→LHR for the 14th and ping me if it drops below $90.
Plan a week in Rome in May for two, £1800 all in, hotel needs free cancellation.
Is the Hilton Paris Opera cheaper booked from Germany than from the US, same dates?
Write up the Lisbon options for my client with a table and booking links.
Reglas de diseño que siguen estas habilidades
- Prefiere las herramientas MCP cuando un cliente las tenga; de lo contrario, recurre a curl REST. Los hoteles siempre son REST.
- Di cuánto cuesta una llamada antes de hacerla. Cada solicitud facturada es dinero del usuario.
- Un resultado vacío es
[]con HTTP 200 — eso significa "no hay vuelos en esta ruta y fecha", no un error. Repórtalo y continúa; no reintentes en un bucle. - Nunca almacenes en caché ni reutilices una tarifa de una conversación anterior. Siempre sella la respuesta con cuándo se obtuvieron los datos.
- Comienza con la respuesta, luego la evidencia. Nunca presentes un
buy_linkcomo una tarifa retenida, bloqueada o garantizada. - Nunca imprimas, registres ni confirmes una clave de API.
Estas son APIs independientes que devuelven precios de vuelos y hoteles disponibles públicamente. No están afiliadas, respaldadas ni patrocinadas por Google o Booking.com.
Licencia MIT — consulta LICENSE.