Google Flights Deals MCP Server

Convierte una idea de viaje en lenguaje natural en ofertas de vuelos con fechas desde un origen, con tarifas, precios típicos, aerolíneas y enlaces de reserva, como JSON estructurado.

Documentación

Servidor MCP de Google Flights Deals

Un servidor de Protocolo de Contexto de Modelo (MCP) alojado que brinda a Claude, Cursor, Windsurf y cualquier otro cliente MCP una herramienta de Google Flights Deals. Describe un viaje en lenguaje natural, como "floración de cerezos en Japón" o "escapada a la playa", y obtén tarifas con fechas desde un aeropuerto de origen con el precio típico al lado, la aerolínea, las escalas y un enlace de reserva, como JSON estructurado.

1,000 créditos gratis cada mes, sin necesidad de tarjeta, lo que equivale a unas 66 búsquedas.

https://mcp.hasdata.com/mcp?apis=google_travel_flights_deals

Glama score tool contract MCP Tools

Contenido

Lo que necesitas

Un cliente MCP y una clave de API de HasData desde el panel de control, gratis de crear sin tarjeta, y el nivel gratuito cubre unas 66 llamadas al mes a la tarifa de 15 créditos. Este es un servidor remoto, por lo que la ruta más simple es una URL y un encabezado x-api-key, sin contenedor que ejecutar y sin cuenta de Google en ningún paso del proceso. Un cliente que solo hable stdio lo alcanza a través de un lanzador ligero, publicado como @hasdata/google-flights-deals-mcp en npm y hasdata-google-flights-deals-mcp en PyPI, que se muestra a continuación.

Inicio rápido

La URL del servidor es la misma para todos los clientes. Lo ejecutamos de forma práctica en Claude Code y Claude Desktop. Los demás bloques siguen el formato documentado de cada cliente para un servidor remoto.

CampoValor
URLhttps://mcp.hasdata.com/mcp?apis=google_travel_flights_deals
TransporteHTTP, transmisible
Encabezado de autenticaciónx-api-key: HASDATA_API_KEY

Los clientes con soporte OAuth pueden añadir la misma URL como conector e iniciar sesión sin poner una clave en un archivo de configuración.

Claude Code
claude mcp add --transport http google-flights-deals "https://mcp.hasdata.com/mcp?apis=google_travel_flights_deals" \
  --header "x-api-key: HASDATA_API_KEY"
Claude Desktop
{
  "mcpServers": {
    "google-flights-deals": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=google_travel_flights_deals",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
Cursor
{
  "mcpServers": {
    "google-flights-deals": {
      "type": "streamable-http",
      "url": "https://mcp.hasdata.com/mcp?apis=google_travel_flights_deals",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}
VS Code
{
  "servers": {
    "google-flights-deals": {
      "type": "http",
      "url": "https://mcp.hasdata.com/mcp?apis=google_travel_flights_deals",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

Ejemplos de prompts

Prompts, no código. Pega uno y el agente elige la herramienta por sí mismo. Cada uno está anotado con las llamadas que requiere, porque cada llamada exitosa cuesta 15 créditos.

Quiero ver la floración de cerezos en Japón, volando desde LAX. ¿Cuáles son las fechas más baratas?

Una llamada, 15 créditos. Google elige los destinos y el rango de fechas a partir de la descripción.

Escapada a la playa desde Londres en febrero, nada por encima de 600 libras, solo vuelos directos.

Una llamada, 15 créditos. El límite de precio y el filtro de escalas necesitan un destino fijado con arrivalId, por lo que el agente tiene que nombrar uno o eliminar los filtros.

El mismo viaje pero a Tokio específicamente, diez días, clase business.

Una llamada, 15 créditos. Con arrivalId establecido, la duración del viaje y la cabina están disponibles.

Compara la idea de la floración de cerezos desde LAX y desde JFK.

Dos llamadas, 30 créditos. Un origen por llamada.

Herramientas

HerramientaQué devuelve
hasdata_google_travel_flights_deals_getGoogleFlightsDealsOfertas con fechas que incluyen la tarifa, el precio típico de la ruta, la duración del vuelo, la duración del viaje, las escalas, la aerolínea operadora, los aeropuertos y un enlace de reserva de Google Flights, además de los destinos y el rango de fechas que Google derivó de la consulta. 15 créditos por llamada

Una herramienta, 15 créditos por llamada exitosa.

Encontrar ofertas de vuelos

hasdata_google_travel_flights_deals_getGoogleFlightsDeals

ParámetroTipoObligatorioNotas
qstringsíDescripción del viaje en texto libre, desde un nombre de lugar simple hasta una frase completa
departureIdstringsíOrigen como código IATA de tres letras en mayúsculas, por ejemplo LAX
arrivalIdstringFija el destino en lugar de dejar que Google elija. Cada filtro de abajo lo necesita
typestringroundTrip (predeterminado) o oneWay
travelClassstringeconomy, premiumEconomy, business o first
outboundDatestringUna fecha exacta, o una ventana como 2026-12-01,2026-12-10
returnDatestringMisma ortografía que outboundDate, y obligatorio junto a ella
travelDurationstringDuración predefinida, week, weekend o twoWeeks
tripLengthstringDuración en días, en lugar de returnDate o travelDuration
stopsstringnonStop, oneStopOrFewer o twoStopsOrFewer
maxDurationnumberLímite por vuelo en minutos
maxPricenumberLímite en la moneda de la solicitud
includeAirlines / excludeAirlinesstringUno u otro, nunca ambos

Los filtros son lo que hay que acertar. Todos requieren arrivalId. Un prompt que pida vuelos directos bajo un límite de precio mientras deja que Google elija el destino está pidiendo dos cosas que no se pueden combinar, y la API lo dice con un 422 que nombra el par problemático. Fija un destino o elimina los filtros.

searchInformation informa de lo que Google hizo con la consulta: el aeropuerto departure completo con su ciudad y coordenadas, el dateRange en el que se decidió, el priceRange que encontró y el airlines involucrado.

{
  "searchInformation": {
    "query": "cherry blossom in Japan",
    "departure": { "airport": "LAX", "city": "Los Angeles", "country": "United States" },
    "dateRange": { "from": "2027-03-01", "to": "2027-04-30" }
  },
  "flightDeals": [
    {
      "outboundDate": "2027-03-01",
      "returnDate": "2027-03-08",
      "price": { "value": 960, "currency": "USD" },
      "typicalPrice": { "value": 1335, "currency": "USD" },
      "discountPercent": 28,
      "durationMinutes": 1320,
      "tripLengthDays": 7,
      "stops": 1,
      "airlineCode": "CX",
      "airline": "Cathay Pacific",
      "multipleAirlines": false,
      "departureAirport": "LAX",
      "arrivalAirport": "HIJ",
      "destination": { "city": "Hiroshima", "country": "Japan", "highlight": "Peace Park Memorial & Shukkei-en garden" },
      "bookingLink": "https://www.google.com/travel/flights?tfs=…"
    }
  ]
}

Prompts y recursos

El servidor expone 7 recursos, uno por parámetro cuyos valores aceptados son una lista fija. Leer uno es más barato que aprender el vocabulario de una llamada rechazada, y no cuesta créditos. Cada URI es hasdata://google_travel_flights_deals/<parameter>.

ParámetroValoresQué selecciona
type4Tipo de vuelo. Requiere arrivalId. - 1 / roundTrip — ida y vuelta (predeterminado) - 2 / oneWay — solo ida Una oferta de solo ida no lleva returnDate ni tripLengthDays.
travelClass8Clase de viaje. Requiere arrivalId. - 1 / economy — económica (predeterminada) - 2 / premiumEconomy — económica premium - 3 / business — business - 4 / first — primera Las tarifas suben bruscamente: en LAX-NRT la misma búsqueda costó $730 en económica frente a $2882 en business.
travelDuration6Duración predefinida del viaje. Requiere arrivalId. No se puede combinar con returnDate o tripLength. - 1 / week — alrededor de una semana (6-8 días) - 2 / weekend — un fin de semana (2-3 días) - 3 / twoWeeks — alrededor de dos semanas (13-15 días) Se combina con outboundDate para limitar el período de salida. Se ignora cuando type es oneWay.
stops6Número máximo de escalas. Requiere arrivalId. Si se omite, se permite cualquier número. - 1 / nonStop — solo vuelos directos - 2 / oneStopOrFewer — como máximo una conexión - 3 / twoStopsOrFewer — como máximo dos conexiones Una ruta sin nada a esa profundidad devuelve un array flightDeals vacío, no un error — nonStop en una ruta sin vuelo directo es una respuesta válida y vacía.
gl245El código de país de dos letras para el país al que quieres limitar la búsqueda.
hl159El código de idioma de dos letras para el idioma que quieres usar en la búsqueda.
currency71El parámetro define la moneda de los precios devueltos

La lista se sirve sin clave de API, por lo que un cliente puede leerla antes de que un usuario se haya registrado.

Errores y rutas de fallo

Tu cliente casi nunca ve un código de error HTTP de una llamada de herramienta. La capa MCP responde 200 y pone el fallo dentro del resultado, con isError establecido en true y el motivo como texto.

discountPercent es la excepción, no la regla. En 351 ofertas medidas el 2026-10-05 estaba presente en 109 de ellas. Donde aparece, coincide con la diferencia entre price y typicalPrice dentro de un paso de redondeo, y donde está ausente esa diferencia iba del 4% al 15%, por lo que Google parece publicar el campo solo por encima de un umbral propio. typicalPrice estaba en todas las ofertas, así que calcula la comparación tú mismo en lugar de informar "sin descuento" porque falta la clave.

airline y airlineCode desaparecen juntos. En esa misma muestra, 269 ofertas nombraban una aerolínea y 82 no, y la división es exactamente el indicador multipleAirlines: cada oferta que lo establecía en true omitía ambos campos, cada oferta que no lo hacía llevaba ambos. Lee el indicador antes de informar de una aerolínea y di "varias aerolíneas" en lugar de dejar el campo en blanco.

Un filtro sin arrivalId se rechaza antes de ejecutarse. La API responde 422 con rule: "requiredIfExists" nombrando tanto arrivalId como el filtro que lo provocó, y no se cobra nada. Los once filtros se comportan así, por lo que el fallo es ruidoso y barato en lugar de silencioso.

Las fechas son las que Google eligió a menos que las fijes. searchInformation.dateRange es el rango que buscó, que puede estar a meses de hoy. Cítalo al presentar los precios, porque una tarifa para marzo próximo no es una tarifa para el mes que viene.

Cada llamada exitosa gasta créditos de la cuenta conectada. Ni un 422 de validación ni un 400 del proveedor se cobran, medido leyendo el saldo a ambos lados de una llamada.

Precios, nivel gratuito y límites

La herramienta de Google Flights Deals cuesta 15 créditos por llamada exitosa, igual que la API de Google Flights. El número de ofertas devueltas no cambia el precio.

El nivel gratuito es 1,000 créditos cada mes sin tarjeta, lo que equivale a unas 66 búsquedas.

Los planes de pago comienzan en $59 al mes por 200,000 créditos, lo que equivale a unas 13,000 búsquedas. El precio unitario baja en planes más grandes. Los números actuales están en la página de planes.

Cómo se compara

API de Google FlightsEste servidor
EntradaUn origen, un destino y fechasUna frase, con el destino opcional
Quién elige el destinoTúGoogle, a partir de la descripción
Quién elige las fechasTúGoogle, a menos que las fijes
Mejor paraUn viaje que alguien ya ha decididoUn viaje que alguien todavía está imaginando

Ambos se complementan en lugar de competir. Usa este para encontrar dónde y cuándo, y luego la API de Google Flights para calcular el precio del itinerario una vez que el viaje esté decidido.

Preguntas frecuentes

¿Necesito una cuenta de Google?

No. La única credencial involucrada es tu clave de HasData.

¿Por qué se ignoraron mis filtros?

Casi con seguridad salieron sin arrivalId. Cada filtro de esta herramienta necesita un destino fijado, y una solicitud que lo omita aún así tiene éxito.

¿Puedo buscar desde varios orígenes a la vez?

No. departureId toma un solo aeropuerto, por lo que comparar orígenes significa una llamada por cada uno.

¿Con cuánta antelación busca?

Hasta donde Google decida a partir de la consulta. Lee searchInformation.dateRange en lugar de asumir las próximas semanas.

¿Está HasData afiliada a Google?

No. HasData es un proveedor independiente de datos web y no está afiliada, respaldada ni patrocinada por Google. Todas las marcas comerciales pertenecen a sus propietarios.

Cumplimiento y datos personales

El servidor lee la interfaz pública de ofertas de Google Flights. No lleva datos de pasajeros y no reserva nada.

Enlaces de HasData

Página del producto y constructor de solicitudesAPI de Google Flights
Documentación del endpointDocumentación de la API de Google Flights Deals
Documentación del servidorDocumentación del servidor MCP
Todas las herramientas en un solo servidorHasData/hasdata-mcp
Tutoriales para clientesClientes MCP e integraciones
Planes y costos de créditosPlanes y costos de créditos

Desarrollo

npm install
npm test

Las pruebas en test/ verifican el contrato de la herramienta, la parte que puede romperse sin un commit aquí. Comprueban que ?apis=google_travel_flights_deals devuelve la única herramienta esperada, que su nombre y parámetros requeridos no han cambiado, que incluye una descripción, y que una búsqueda real aún devuelve flightDeals con los campos documentados.

Contribuciones

La tabla de parámetros y el ejemplo anterior se leyeron del esquema en vivo y de una llamada real, no de la documentación. Se agradece una corrección cuando un campo o un modo de fallo ha cambiado. Abre un issue con la respuesta que viste.

Licencia

MIT