Skip to main content
Glama
afgoes
by afgoes

cheapdates

Самые дешёвые даты для перелёта по маршруту прямо из Google Flights. CLI + MCP-сервер.

Зачем это существует: календарь цен Google (GetCalendarGraph) подписывается на каждый запрос через BotGuard, поэтому все чистые HTTP-клиенты (fli dates, google-flights-mcp, …) возвращают пустые результаты с середины 2026 года. У cheapdates есть два бэкенда:

  • graph — управляет headless Chromium для перехода на страницу маршрута, открывает Price graph и считывает календарь, который получает сама страница. Один вызов ≈ 60 дат вылета, в одну сторону или туда-обратно. ~3 с на 60 дней.

  • sweep — один поиск fast-flights на дату, без браузера. ~0,5 с на дату при 4 воркерах; также сообщает авиакомпанию.

auto (по умолчанию) использует graph, если установлены Playwright + Chromium, иначе sweep; если graph не срабатывает, выполняется откат к sweep.

Установка

git clone https://github.com/afgoes/cheapdates.git && cd cheapdates && uv sync   # see INSTALL.md
python -m playwright install chromium       # for the graph backend

Related MCP server: fli

CLI

cheapdates JFK LHR 2026-10-01 2026-11-30            # one-way
cheapdates JFK LHR 2026-10-01 2026-11-30 -r 7       # round trip, 7 nights
cheapdates JFK LHR 2026-10-01 2026-11-30 --nonstop --json
cheapdates JFK LHR 2026-10-01 2026-11-30 -b sweep   # force fast-flights

MCP (Claude Code)

claude mcp add cheapdates -- uv run --directory /path/to/cheapdates cheapdates-mcp

Tool: cheapest_dates_tool(origin, destination, start, end, trip_length?, currency?, nonstop?, seat?, backend?).

Python

import datetime as dt
from cheapdates import cheapest_dates
r = cheapest_dates("JFK", "LHR", dt.date(2026,10,1), dt.date(2026,11,30), trip_length=7)
print(r.cheapest)

Предостережения

Обратная разработка; Google может изменить страницу или ответ в любой момент. Парсер покрыт фикстурными тестами (pytest), а бэкенд graph при сбое откатывается к sweep.

Available Tools

1 tool
cheapest_dates_toolA

Cheapest fare for each departure date between start and end (YYYY-MM-DD) on origin→destination.

trip_length: None for one-way, or N for a round trip returning N days after departure. Returns {cheapest, days:[{depart, ret, price, airlines}], backend, warnings}. The 'graph' backend reads Google Flights' own price calendar (fast, ~60 days per call); 'sweep' searches each date individually. 'auto' picks graph when a browser is available.

ParametersJSON Schema
NameRequiredDescriptionDefault
endYes
seatNoeconomy
startYes
originYes
backendNoauto
nonstopNo
currencyNoUSD
destinationYes
trip_lengthNo

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden. It discloses the behavior of different backends (graph vs sweep vs auto) and mentions speed implications, which is useful. However, it does not disclose any data limitations, rate limits, or potential variability in results, which would be helpful for a tool using different search backends.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and provides structured information about trip_length and backend behavior. It uses bullet-like structure within paragraphs effectively, with no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 parameters and no output schema, the description provides a solid overview but lacks detailed parameter explanations and behavioral notes. It covers the essential usage and return format but could be more complete by describing the meaning of the warning field, typical use cases, and edge cases like date boundaries.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 9 parameters but the description does not explicitly map each parameter beyond trip_length and backend. Schema description coverage is 0%, so the description must compensate, but it only explains a couple of parameters. The return structure is described, but parameter semantics for origin, destination, start, end, seat, nonstop, currency are left to the schema, which has no description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool finds the cheapest fare for each departure date over a date range for a given route, distinguishing it from typical one-off price lookup tools. It specifies input format and return structure, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains the trip_length parameter (one-way vs round trip) and backend options, but does not explicitly state when to prefer this tool over alternatives. Since no sibling tools are provided, we cannot evaluate differentiation, but the description does give context on how to use different backends.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 1 tool updatev0.1.0
    • First observedcheapest_dates_tool

TDQS

A3.7/5.0
Disambiguation5/5

With only one tool, there is zero ambiguity—an agent cannot confuse it with any other. The tool's purpose is clearly described.

Naming Consistency4/5

The single tool name 'cheapest_dates_tool' is descriptive but uses a bare noun with a redundant 'tool' suffix rather than a verb_noun pattern. Since there is no set of names to compare, it is not inconsistent, but the naming style is slightly unconventional.

Tool Count3/5

The server exposes only one tool, which is at the borderline of being too thin. While the tool encapsulates a coherent function, a larger set (e.g., specific date lookup, fare alerts) could better justify a dedicated MCP server.

Completeness4/5

The tool fully covers the stated purpose—finding cheapest fares across a date range. It supports one-way and round-trip queries, provides pricing and airline details, and handles backend selection automatically. Minor gaps like booking integration or fare alerts are outside its shown scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Integrates Google Flights data into AI workflows for natural language flight searches, price comparisons, flexible date searches, and multi-city itinerary planning with support for various cabin classes and passenger types.
    9
    4
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables flight search and fare calendar exploration by interacting with Google Flights' API, supporting detailed filters for origin, destination, dates, cabin class, airlines, and more.
    3,128
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to search for real-time flights between airports using the SearchAPI.io Google Flights API, returning prices, schedules, airlines, and carbon emissions.
    -

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/afgoes/cheapdates'

If you have feedback or need assistance with the MCP directory API, please join our Discord server