Google Flights MCP
Busca de voos em tempo real: tarifas de ida e volta em intervalos de datas, com avaliações de preço.
Documentação
Habilidades do Agente de Viagens
Oito habilidades de agente que transformam preços em tempo real do Google Flights e Booking.com em respostas de viagem — a data mais barata para voar, para onde ir, um orçamento completo de viagem, um monitoramento de tarifas, uma lista de hotéis, uma auditoria de paridade de preços e um relatório pronto para o cliente.
Comece com o servidor hospedado, não com o repositório. Uma linha e qualquer cliente MCP pode pesquisar voos ao vivo:
claude mcp add --transport http google-flights https://google-flights-mcp.flightpowers.com/mcp --header "x-rapidapi-key: YOUR_RAPIDAPI_KEY"
Isso dá ao seu agente os dados. As habilidades abaixo são o que fazem ele usar os dados bem — uma chamada para um intervalo de datas inteiro em vez de trinta, o veredito low | typical | high em vez de um número puro, e uma busca nova a cada vez em vez de uma tarifa desatualizada.
Como as habilidades se encaixam
Um hub central contém autenticação, hosts, todos os endpoints, todos os nomes de campos de resposta e as regras de cobrança. Sete habilidades de fluxo de trabalho permanecem enxutas e delegam para ele.
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
| Habilidade | Use quando quiser… | Ela retorna |
|---|---|---|
travel-data-api | escrever código curl ou de cliente, consultar um parâmetro ou campo de resposta, instalar o servidor MCP ou calcular quanto custa uma chamada | tabelas de endpoints, curl executável, nomes exatos de campos JSON |
cheapest-dates | encontrar o dia, semana ou mês mais barato para voar em uma rota conhecida — ou a duração de viagem mais barata | tarifa mais barata por data, o departure_date/return_date vencedor, buy_link e o veredito da oferta |
destination-compare | decidir para onde ir: "algum lugar quente abaixo de $300 em outubro" | tabela de cidades classificada por preço, além de uma linha de cobertura nomeando cada destino realmente pesquisado |
trip-planner | precificar uma viagem nomeada de ponta a ponta: "7 noites em Lisboa abaixo de $2000" | check-in/check-out alinhados, voos de ida e volta, hotéis correspondentes, total combinado por pessoa vs. o limite |
fare-watch | acompanhar o preço de uma rota ao longo de verificações repetidas e alertar apenas em uma queda significativa | preço ao vivo, veredito low/typical/high, faixa histórica do Google, checked_at, delta vs. seu histórico armazenado |
hotel-search | encontrar hotéis por cidade, bairro ou ponto de referência, ou precificar uma propriedade nomeada | name, price_string, review_score, room_type, location, link — ou available mais nights |
rate-parity-monitor | ver se o mesmo hotel é mais barato reservado de outro país | tabela por mercado com proxy_country, tarifa por noite em uma moeda, spread vs. mercado mais barato, veredito de violação vs. ruído |
travel-brief | transformar resultados em algo que você possa enviar a um cliente | recomendação → tabela → veredito → links de reserva → linha de horário verificado |
As habilidades são nomeadas pelo trabalho, não pelo endpoint. Dois endpoints de voos e dois endpoints de hotéis produzem sete fluxos de trabalho, porque "qual dia é mais barato" e "para onde devo ir" são perguntas diferentes para um usuário e perguntas idênticas para uma API.
Instalação
Claude Code (plugin)
claude plugin marketplace add mtnrabi/travel-agent-skills
claude plugin install travel-agent-skills@travel-agent-skills
Reinicie o Claude Code e todas as oito habilidades carregam juntas — o agente escolhe a certa a partir da pergunta, e você também pode invocar uma diretamente pelo nome (cheapest-dates, trip-planner, rate-parity-monitor).
Qualquer agente com um diretório simples de habilidades
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 habilidade é uma pasta autocontida com um SKILL.md e um descritor de exibição agents/openai.yaml, então qualquer runtime que leia um diretório de habilidades pode carregá-las — copie o conjunto inteiro ou apenas as pastas que quiser. Nada aqui importa nada; não há etapa de build e nenhuma dependência.
Sua chave de API
cp .env.example .env # then paste your key into RAPIDAPI_KEY
As habilidades nunca imprimem, registram ou confirmam sua chave, e não pedirão uma a menos que uma chamada ao vivo precise.
Obtenha uma chave
Ambas as APIs são cobradas via RapidAPI na sua própria chave, e a mesma chave funciona para ambas depois que você assinar cada uma. Assine o que precisar — apenas voos, apenas hotéis ou ambos.
| API | O que retorna | Cadastro |
|---|---|---|
| Google Flights Live API | tarifas de voos em tempo real, ida e volta | https://rapidapi.com/mtnrabi/api/google-flights-live-api |
| Booking Live API | disponibilidade de hotéis e tarifas por noite em tempo real | https://rapidapi.com/mtnrabi/api/booking-live-api |
Prefere execuções sem código ou em lote agendado? Os mesmos dados são distribuídos como atores Apify: voos ($5 / 1k) e hotéis ($4 / 1k).
MCP hospedado — o servidor sem anúncios
claude mcp add --transport http google-flights https://google-flights-mcp.flightpowers.com/mcp --header "x-rapidapi-key: YOUR_RAPIDAPI_KEY"
Duas ferramentas, search_oneway_flights e search_roundtrip_flights. Ambas aceitam um intervalo de datas (departure_date_from / departure_date_to), uma lista de destinos e — para ida e volta — nights (um número ou uma lista como [5,6,7]) em vez de uma data de retorno fixa. Uma intenção do usuário é uma chamada de ferramenta, nunca uma chamada por data. Se seu cliente não suporta cabeçalhos personalizados, o servidor pago também aceita ?rapidapi_key= na URL ou um campo de chave de API onde o cliente oferecer um.
Grátis vs. pago
Pago — google-flights-mcp.flightpowers.com/mcp | Grátis — google-flights-lulu.flightpowers.com/mcp | |
|---|---|---|
| Anúncios | nenhum | um card patrocinado divulgado por resultado |
| Chave | sua própria chave RapidAPI | nenhuma necessária |
| Limite de fan-out | 30 por chamada (máx. 60) | 15 por chamada |
| Relatório de gastos | api_usage em cada resposta | n/a |
| Listável em diretório | sim | não — anúncios são proibidos pela Anthropic, OpenAI e o registro oficial MCP |
Hotéis ainda não têm servidor MCP; as habilidades de hotéis chamam a API REST diretamente.
O que os dados fazem que um scraper não consegue
price_insights_low/price_insights_high/price_range_in_relation_to_other_periods— a faixa histórica de preços do próprio Google para aquela rota e período, além de um vereditolow | typical | high. Essa é a diferença entre "$209" e "$209 é típico para esta rota — sem necessidade de pressa". Toda habilidade de voo lidera com o veredito, não com o número.proxy_countrynos endpoints de hotéis roteia a solicitação através de um proxy residencial naquele país, então o mesmo hotel e datas podem ser precificados como um usuário emus,deouilveria. É isso que tornarate-parity-monitorpossível.
Exemplo prático
Você pergunta ao 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 reconhece a janela flexível, emite uma chamada search_roundtrip_flights com departure_date_from: 2026-06-01, departure_date_to: 2026-06-15 e nights: 4, ordena os resultados ele mesmo e então responde neste formato:
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.
(Nomes de campos e valores de exemplo acima vêm do formato de resposta documentado da API — eles ilustram o formato da resposta, não são uma cotação ao vivo.)
Três coisas nessa resposta são o ponto central das habilidades:
- Uma chamada, não quinze. Uma janela de quinze dias via REST são quinze solicitações cobradas; via MCP com intervalo é uma. A habilidade diz o número de solicitações em voz alta antes de gastar seu dinheiro.
- O veredito lidera. Uma varredura sempre produz um mínimo — um mínimo não é uma oferta. Se a data mais barata encontrada vier como
typicalouhigh, a habilidade diz isso. - Nada é reutilizado. Pergunte novamente uma hora depois e ela re-busca e re-carimba. Nenhuma habilidade neste repositório armazena tarifa em cache, e toda resposta carrega o horário em que foi buscada.
Outros prompts para os quais essas habilidades são construídas:
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.
Regras de design que essas habilidades seguem
- Prefira as ferramentas MCP quando um cliente as tiver; caso contrário, use REST curl. Hotéis são sempre REST.
- Diga quanto uma chamada custa antes de fazê-la. Toda solicitação cobrada é dinheiro do usuário.
- Um resultado vazio é
[]com HTTP 200 — isso significa "sem voos nesta rota e data", não um erro. Reporte e siga em frente; não tente novamente em loop. - Nunca armazene em cache ou reutilize uma tarifa de antes na conversa. Sempre carimbe a resposta com quando os dados foram buscados.
- Liderar com a resposta, depois a evidência. Nunca apresente um
buy_linkcomo uma tarifa garantida, travada ou assegurada. - Nunca imprima, registre ou confirme uma chave de API.
Estas são APIs independentes que retornam preços de voos e hotéis publicamente disponíveis. Elas não são afiliadas, endossadas ou patrocinadas pelo Google ou Booking.com.
Licença MIT — veja LICENSE.