Google Flights Deals MCP Server

Transforme uma ideia de viagem em linguagem simples em ofertas de voos com datas a partir de um único ponto de origem, com tarifas, preços típicos, companhias aéreas e links de reserva, em JSON estruturado.

Documentação

Google Flights Deals MCP Server

Um servidor de Model Context Protocol (MCP) hospedado que oferece ao Claude, Cursor, Windsurf e qualquer outro cliente MCP uma ferramenta de ofertas do Google Flights. Descreva uma viagem em linguagem natural, como "flor de cerejeira no Japão" ou "escapada de praia", e receba tarifas com datas a partir de um aeroporto de origem, com o preço típico ao lado, a companhia aérea, as escalas e um link de reserva, como JSON estruturado.

1.000 créditos grátis todo mês, sem necessidade de cartão, o que equivale a cerca de 66 buscas.

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

Glama score tool contract MCP Tools

Conteúdo

O que você precisa

Um cliente MCP e uma chave de API da HasData do painel de controle, gratuita para criar sem cartão, e o plano gratuito cobre cerca de 66 chamadas por mês na taxa de 15 créditos. Este é um servidor remoto, então o caminho mais simples é uma URL e um cabeçalho x-api-key, sem contêiner para executar e sem conta do Google em nenhum lugar do fluxo. Um cliente que só fala stdio o acessa por meio de um lançador leve, publicado como @hasdata/google-flights-deals-mcp no npm e hasdata-google-flights-deals-mcp no PyPI, mostrado abaixo.

Início rápido

A URL do servidor é a mesma para todos os clientes. Nós o executamos na prática no Claude Code e no Claude Desktop. Os outros blocos seguem o formato documentado de cada cliente para um servidor remoto.

CampoValor
URLhttps://mcp.hasdata.com/mcp?apis=google_travel_flights_deals
TransporteHTTP, transmissível
Cabeçalho de autenticaçãox-api-key: HASDATA_API_KEY

Clientes com suporte a OAuth podem adicionar a mesma URL como conector e entrar sem colocar uma chave em um arquivo de configuração.

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" }
    }
  }
}

Exemplos de prompts

Prompts, não código. Cole um e o agente escolhe a ferramenta sozinho. Cada um é anotado com as chamadas que faz, porque cada chamada bem-sucedida custa 15 créditos.

Quero ver flor de cerejeira no Japão, saindo de LAX. Quais são as datas mais baratas?

Uma chamada, 15 créditos. O Google escolhe os destinos e o intervalo de datas a partir da descrição.

Escapada de praia saindo de Londres em fevereiro, nada acima de 600 libras, somente voos diretos.

Uma chamada, 15 créditos. O teto de preço e o filtro de escalas exigem um destino fixado com arrivalId, então o agente precisa nomear um ou remover os filtros.

Mesma viagem, mas para Tóquio especificamente, dez dias, classe executiva.

Uma chamada, 15 créditos. Com arrivalId definido, a duração da viagem e a cabine ficam disponíveis.

Compare a ideia de flor de cerejeira saindo de LAX e de JFK.

Duas chamadas, 30 créditos. Uma origem por chamada.

Ferramentas

FerramentaO que retorna
hasdata_google_travel_flights_deals_getGoogleFlightsDealsOfertas com datas, tarifa, preço típico da rota, duração do voo, duração da viagem, escalas, companhia aérea operadora, aeroportos e link de reserva do Google Flights, além dos destinos e intervalo de datas que o Google derivou da consulta. 15 créditos por chamada

Uma ferramenta, 15 créditos por chamada bem-sucedida.

Encontrar ofertas de voos

hasdata_google_travel_flights_deals_getGoogleFlightsDeals

ParâmetroTipoObrigatórioObservações
qstringsimDescrição da viagem em texto livre, de um nome de lugar simples a uma frase completa
departureIdstringsimOrigem como código IATA de três letras em maiúsculas, por exemplo LAX
arrivalIdstringFixa o destino em vez de deixar o Google escolher. Todos os filtros abaixo precisam dele
typestringroundTrip (padrão) ou oneWay
travelClassstringeconomy, premiumEconomy, business ou first
outboundDatestringUma data exata, ou um intervalo como 2026-12-01,2026-12-10
returnDatestringMesma grafia de outboundDate, e obrigatório junto com ele
travelDurationstringDuração predefinida, week, weekend ou twoWeeks
tripLengthstringDuração em dias, em vez de returnDate ou travelDuration
stopsstringnonStop, oneStopOrFewer ou twoStopsOrFewer
maxDurationnumberTeto por voo em minutos
maxPricenumberTeto na moeda da solicitação
includeAirlines / excludeAirlinesstringUm ou outro, nunca ambos

Os filtros são o ponto mais importante para acertar. Todos exigem arrivalId. Um prompt que pede voos diretos abaixo de um teto de preço enquanto deixa o Google escolher o destino está pedindo duas coisas que não podem ser combinadas, e a API responde com um 422 nomeando o par problemático. Fixe um destino ou remova os filtros.

searchInformation informa o que o Google entendeu da consulta: o aeroporto departure completo com cidade e coordenadas, o dateRange que ele definiu, o priceRange que encontrou e o airlines envolvido.

{
  "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 e recursos

O servidor expõe 7 recursos, um para cada parâmetro cujos valores aceitos são uma lista fixa. Ler um é mais barato do que aprender o vocabulário com uma chamada rejeitada, e não custa créditos. Cada URI é hasdata://google_travel_flights_deals/<parameter>.

ParâmetroValoresO que seleciona
type4Tipo de voo. Exige arrivalId. - 1 / roundTrip — ida e volta (padrão) - 2 / oneWay — somente ida Uma oferta de somente ida não traz returnDate nem tripLengthDays.
travelClass8Classe de viagem. Exige arrivalId. - 1 / economy — econômica (padrão) - 2 / premiumEconomy — econômica premium - 3 / business — executiva - 4 / first — primeira As tarifas sobem acentuadamente: na rota LAX-NRT, a mesma busca custou $730 na econômica contra $2882 na executiva.
travelDuration6Duração predefinida da viagem. Exige arrivalId. Não pode ser combinada com returnDate ou tripLength. - 1 / week — cerca de uma semana (6-8 dias) - 2 / weekend — um fim de semana (2-3 dias) - 3 / twoWeeks — cerca de duas semanas (13-15 dias) Combina com outboundDate para limitar o período de partida. Ignorada quando type é oneWay.
stops6Número máximo de escalas. Exige arrivalId. Se omitido, qualquer número é permitido. - 1 / nonStop — somente voos diretos - 2 / oneStopOrFewer — no máximo uma conexão - 3 / twoStopsOrFewer — no máximo duas conexões Uma rota sem nada nesse nível retorna um array flightDeals vazio, não um erro — nonStop em uma rota sem voo direto é uma resposta válida e vazia.
gl245O código de país de duas letras para o país ao qual você quer limitar a busca.
hl159O código de idioma de duas letras para o idioma que você quer usar na busca.
currency71O parâmetro define a moeda dos preços retornados

A lista é servida sem chave de API, então um cliente pode lê-la antes de o usuário se cadastrar.

Erros e caminhos de falha

Seu cliente quase nunca vê um código de erro HTTP de uma chamada de ferramenta. A camada MCP responde com 200 e coloca a falha dentro do resultado, com isError definido como true e o motivo como texto.

discountPercent é a exceção, não a regra. Em 351 ofertas medidas em 2026-10-05, ele estava presente em 109 delas. Onde aparece, corresponde à diferença entre price e typicalPrice dentro de uma etapa de arredondamento, e onde está ausente, essa diferença variou de 4% a 15%, então o Google parece publicar o campo apenas acima de um limite próprio. typicalPrice estava em todas as ofertas, então calcule a comparação você mesmo em vez de informar "sem desconto" porque a chave está ausente.

airline e airlineCode desaparecem juntos. Na mesma amostra, 269 ofertas nomearam uma companhia aérea e 82 não, e a divisão é exatamente o sinalizador multipleAirlines: toda oferta que o definiu como true omitiu ambos os campos, toda oferta que não o definiu trouxe ambos. Leia o sinalizador antes de informar uma companhia aérea e diga "várias companhias aéreas" em vez de deixar o campo em branco.

Um filtro sem arrivalId é rejeitado antes de ser executado. A API responde com 422 e rule: "requiredIfExists" nomeando tanto arrivalId quanto o filtro que o acionou, e nada é cobrado. Todos os onze filtros se comportam assim, então a falha é clara e barata, não silenciosa.

As datas são as que o Google escolheu, a menos que você as fixe. searchInformation.dateRange é o intervalo que ele buscou, que pode estar a meses de distância de hoje. Cite-o ao apresentar preços, porque uma tarifa para março do ano que vem não é uma tarifa para o próximo mês.

Cada chamada bem-sucedida gasta créditos da conta conectada. Nem um 422 de validação nem um 400 do upstream são cobrados, medido pela leitura do saldo antes e depois de uma chamada.

Preços, plano gratuito e limites

A ferramenta de ofertas do Google Flights custa 15 créditos por chamada bem-sucedida, o mesmo que a API do Google Flights. O número de ofertas retornadas não altera o preço.

O plano gratuito é 1.000 créditos todo mês sem cartão, o que equivale a cerca de 66 buscas.

Os planos pagos começam em US$ 59 por mês para 200.000 créditos, o que equivale a cerca de 13.000 buscas. O preço unitário cai em planos maiores. Os números atuais estão na página de planos.

Como se compara

API do Google FlightsEste servidor
EntradaUma origem, um destino e datasUma frase, com o destino opcional
Quem escolhe o destinoVocêO Google, a partir da descrição
Quem escolhe as datasVocêO Google, a menos que você as fixe
Melhor paraUma viagem que alguém já decidiuUma viagem que alguém ainda está imaginando

Os dois ficam lado a lado em vez de competir. Use este para descobrir onde e quando, e depois a API do Google Flights para precificar o itinerário quando a viagem estiver decidida.

FAQ

Preciso de uma conta do Google?

Não. A única credencial envolvida é a sua chave da HasData.

Por que meus filtros foram ignorados?

Eles quase certamente saíram sem arrivalId. Todo filtro desta ferramenta precisa de um destino fixado, e uma solicitação que o omita ainda é bem-sucedida.

Posso buscar de várias origens ao mesmo tempo?

Não. departureId aceita um aeroporto, então comparar origens significa uma chamada para cada.

Com quanta antecedência ele busca?

Até onde o Google decidir a partir da consulta. Leia searchInformation.dateRange em vez de presumir as próximas semanas.

A HasData é afiliada ao Google?

Não. A HasData é um provedor independente de dados da web e não é afiliada, endossada ou patrocinada pelo Google. Todas as marcas registradas pertencem aos seus proprietários.

Conformidade e dados pessoais

O servidor lê a interface pública de ofertas do Google Flights. Ele não carrega dados de passageiros e não reserva nada.

Links da HasData

Página do produto e construtor de solicitaçõesGoogle Flights API
Documentação do endpointGoogle Flights Deals API docs
Documentação do servidorMCP server docs
Todas as ferramentas em um único servidorHasData/hasdata-mcp
Tutoriais para clientesMCP clients and integrations
Planos e custos de créditosPlans and credit costs

Desenvolvimento

npm install
npm test

Os testes em test/ verificam o contrato da ferramenta, a parte que pode quebrar sem um commit aqui. Eles verificam que ?apis=google_travel_flights_deals retorna a única ferramenta esperada, que seu nome e parâmetros obrigatórios não mudaram, que ela possui uma descrição e que uma busca real ainda retorna flightDeals com os campos documentados.

Contribuindo

A tabela de parâmetros e o exemplo acima foram lidos do esquema ao vivo e de uma chamada real, em vez de documentação. Uma correção é bem-vinda quando um campo ou um modo de falha mudou. Abra uma issue com a resposta que você viu.

Licença

MIT