cheapdates-mcp
cheapdates
특정 노선을 이용하기에 가장 저렴한 날짜, Google Flights에서 바로 확인하세요. CLI + MCP 서버.
이것이 존재하는 이유: Google의 가격 달력(GetCalendarGraph)은 BotGuard가 요청별로 서명하므로,
모든 순수 HTTP 클라이언트(fli dates, google-flights-mcp, …)는 2026년 중반 이후 빈 결과를 반환해 왔습니다.
cheapdates에는 두 가지 백엔드가 있습니다:
graph — 헤드리스 Chromium을 노선 페이지로 이동시켜 가격 그래프를 열고, 페이지 자체가 수신하는 달력을 읽습니다. 한 번 호출 ≈ 60개의 출발 날짜, 편도 또는 왕복. 60일당 ~3초.
sweep — 날짜당 fast-flights 검색 한 번, 브라우저 불필요. 워커 4개로 날짜당 ~0.5초; 또한 항공사도 알려줍니다.
auto (기본값)는 Playwright + Chromium이 설치되어 있으면 graph를 사용하고, 그렇지 않으면 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 backendRelated MCP server: google-flights-mcp
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-flightsMCP (Claude Code)
claude mcp add cheapdates -- uv run --directory /path/to/cheapdates cheapdates-mcp도구: 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 toolcheapest_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.
| Name | Required | Description | Default |
|---|---|---|---|
| end | Yes | ||
| seat | No | economy | |
| start | Yes | ||
| origin | Yes | ||
| backend | No | auto | |
| nonstop | No | ||
| currency | No | USD | |
| destination | Yes | ||
| trip_length | No |
TDQS
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.
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.
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.
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.
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.
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.
1 tool update
v0.1.0- First observed
cheapest_dates_tool
TDQS
Scored across 1 tool
With only one tool, there is zero ambiguity—an agent cannot confuse it with any other. The tool's purpose is clearly described.
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.
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.
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
Related MCP Connectors
Google Flights for any route and date: price, airlines, flight numbers, times, stops, layovers, aircraft, legroom and CO2. One way or round trip, any cabin and currency. Runs on Apify, $0.20 per 1,000 flights.
Google Flights prices for any route and date: round trips, cabins, stops, airlines, cheapest dates.
whentofly: flexible-date economy/business flight search + price-level context for AI agents
Real-time Google Flights fares for agents. Three things people do with this server. Scan for deals: one call takes a date range and a list of destination airports, expands every combination server side, and returns each fare with Google's own low, typical or high verdict. Put live search in your app: flat JSON with a bookable link on every result, and round trips priced as paired legs. Run a 24/7 AI travel agent: add the server, sign in with Google, and schedule it. No ads, no sponsored content. You bring your own RapidAPI key, so every search is billed to your plan and never to anyone else's. Add https://flights.flightpowers.com/mcp , click Sign in, sign in with Google, and paste your RapidAPI key once on the page that opens. Scripts and clients without a sign-in button send the key as x-rapidapi-key on the same URL.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables flight search and fare calendar exploration by interacting with Google Flights' API, supporting detailed filters for origin, destination, dates, cabin class, airlines, and more.5,092 PyPI3,234MIT
- AlicenseAqualityFmaintenanceEnables searching and analyzing Google Flights data including prices, emissions, cabin classes, layovers, and price tracking, all without an API key.12116 npm5ISC
- AlicenseAqualityBmaintenanceEnables searching Google Flights for one-way, round-trip, and multi-city itineraries, plus fare tracking and price alerts via SerpAPI.9MIT
- FlicenseAqualityAmaintenanceEnables LLMs to search Google Flights for one-way and round-trip flights, with configurable filters for airports, dates, passengers, cabin, stops, airlines, price, bags, and more, returning booking links and detailed trip information.1-