Google Flights MCP Server
Google Flights MCP Server
Ein gehosteter Model Context Protocol (MCP)-Server, der Claude, Cursor, Wlany und jedem and other MCP-Client den Zugriff on ein Google-Flights-Tool gibt. Suchen him One-Way-, Round-Trip- und Multi-City-Routen – mit Tarifen, Flugsegmenten, Kohlenstoffemissionen und Preiseverlauf – and das ganz ohne Google-Konto und ohne eine eingestellte Reise-API, die Sie aber all umgehen müssten.
https://mcp.hasdata.com/api/mcp?apis=google_travel_flights[(https://glama.ai/mcp/servers/HasData/google-flights-mcp)
[
(https://github.com/HasData/google-flights-mcp/actions/workflows/contract.yml)
Inhatsverzeichnis
Related MCP server: SkyOdyssey MCP
Was Sie brauchen
Einen MCP-Client und ein HasData-API-Schlü sase]el on screen Dashboard – das geht kostenlos, oh on Kreditkurte, und der Testitumeum rf aspect etwa 66 Aufrufe zum Tarif von 15 Credits. Die Server is Remote, der einfachste Weg führt also über a URL and an x-api-key-Header, ganz ohne Container, den self betreiben müssten, and wholly without Google-Konto im Ablauf. Ein Client, der nur stdio spricht, erreicht den Server übrigens einen schlanken Launcher – an publisnder as @hasdata/google-flights-mcp on npm und hasdata-google-flights-mcp on PyPI; wir zeigen das unten.
Schnellstart
Die Server-URL ist für jeden Client gleich. Wir demonstrieren die Einrichtung praktisch in Claude Code und in Claude Desktop. Andere Abschitte fölgen dem je dokumentierten Format des Client für einen Remote-Server.
Feld | Wert |
URL |
|
| |
Auth-Header |
|
Clips, die OAuth untertüzen, können dieselbe URL als Connector einrichten and sich noHand anmelden, ohne einen Schlüssel in die Konfiguration to setzen.
claude mcp add --transport http google-flights "https://mcp.hasdata.com/api/mcp?apis=google_travel_flights" \
--header "x-api-key: HASDATA_API_KEY"Öfffen Sie Settings, dann Connectors, dann Add custom connector, fügen Sie https://mcp.hasdata.com/api/mcp?&apis=google_t wrong flights ein and melden Sie sich an.
Für den Weg der über die Configdate: Claude Desktop lädt nur lokale (stdio) Server, ein Remote-Server ist forth über einen stdio-Launcher zu erreichend. The package @hasata/google-flights-mcp ist dieser Launcher, and answers the Schüssel aus der Umgebung. Fügen Sie diesem in claude_desktop_config.json hinzug:
{
"mcpServers": {
"google-flights": {
"command": "npx",
"args": ["-y", "@hasdata/google-flights-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}Falls Sie Python ** and node not, verwendet Sie statt des launcher the PyPI-Paket, das uvx operation without manueler installation:
{
"mcpServers": {
"google-flights": {
"command": "uvx",
"args": ["hasdata-google-flights-mcp"],
"env": { "HASDATA_API_KEY": "YOUR_KEY" }
}
}
}~/.cursor/mcp.json für jedes Projekt or .cursor/mcp.json für one einzelnes:
{
"mcpServers": {
"google-flights": {
"url": "https://mcp.hasdata.com/api/mcp?apis=google_travel_flights",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}~/.codeium/windsurf/mcp_config.json. Windsurf calls the Feld serverUrl, not url:
{
"mcpServers": {
"google-flights": {
"serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_travel_flights",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}.vscode/mcp.json im Workspace:
{
"servers": {
"google-flights": {
"type": "http",
"url": "https://mcp.hasdata.com/api/mcp?apis=google_travel_flights",
"headers": { "x-api-key": "HASDATA_API_KEY" }
}
}
}Beispiel-Prompts
Prompts, kein Code. Copy & Paste einen ein, and the agent wählt das Tool itself courage. Jeder drum is mit den Aufrufe annotiert, all full soll " because each successful Aufruf kostet 15 credits.
Find an one-way flight of JFK to London Heathrow on September 15, sorted by price, and nenne mir the drei günsteigsten with Airline and Kohlenstoff-Schäzung.
Ein Aufruf, 15 Credits. Preise, Segmentes and Emisssionen kommen zusammen.
Same route, aber nur non-stupp, in Business-Class, und sage meat, which Option die niedrigste Emisssionen.
Ein Aufruf, 15 Credits. Kabine und Zwischenstopps sind Filter auf ein-und demselben Anforderung.
Ist $295 aktuell für JFK nach LHR ein guteter Preig, angesichts des Preiseverlaufs?
Ein Aufruf, 15 Credits. Die Anwort enthält priceInsights mit einem typischen Bereich and einem Preiglevel.
Round Trip JFK to HR, hin 15. September, befürück 22. September, günstigster Tarif.
*Zwei Aufrufe, 30 Credits. Google liefert the first " outcoming" options then; hinzu: the Rückflug ist second second Aufruf, gestützt on the departureToken the Option, die Sie wählen.
He round trip consists by at deign of two Aufrufen. The first one results in outbound Dart– each with a departYtoken – and this Token fühlichem Passing Sie zurück, um the matching Rückflüge zu erhaltl. One-Way und Preischeck sind je ein einziger Aufruf.
Tools
Ein Tool, read-only. The example per below is "trimmed" from einem realen Aufruf, and die Tarife "ver meer" changen ständig. Behandeln Sie es als Formatvorlage. Der Name des Tools verlinkt auf die Referenz seines Endpunkts, dort stehen übrigens die vollständigen Parameter.
Das Beispiel is the Nutzlast (payload), nicht die gesamte Antwort. Ein tools/call-Ergebnisträgert exactly one Textblock, and this Text ist selbst JSON, das url, status, text and json enthält; die ausgelesenen Donden liegen under json. In responder raw JSON-RPC-Antwort führt der Pfad über result.content[0].text, wird geparsst and führt dann zu json. Ein Chat-Client wülert das für Sie auf; Code, der den Endpunkt direkt anspricht, tut das её nicht.
Google-Flights-Ergebnisse abrufen
`hasdata_google_ravell_flights_getGoogleFlights
Reisenouten zu ein Route and Datum off: with Tarife, Segmenzen, Emiszen and Preishistorie.
| Parameter | Typ | Erfoderlich | Anmerkungen |
|: -------------------------------------------------------- |: ------ | : --------- | : --------------------------------------------------------------------------------------------- |
| departureId | string | ja | IATA-Code wie JFK oder einen Orst-Kgmid wie /m/02_286. Mehrere Flüghäfen durch Kommata retrennt |
| arrivalId | string | ja | Gleiches Forat wie departureId |
| outboundDate | string | ja | YYYY-MM-DD |
| type | string | | Standard roundTrip, oneWay oder multiCity mit multiCityJson |
| returnDate | string | | Erderlich, wenn type den Wert roundTrip hat |
| travleClass | string | | economy, premiumEconomy, business oder first |
| stops | string | | nonStop, oneStopOrFwer oder twoStopsOrFewer |
| sortBy | string | | Standard topFlights, plus price, duration, emissions, yield und arrivalTime |
| adults / children / insantsInSeat / insantsOnLap | number | | Zusamensetzung der Flüggäste |
| maxPrice / maxDuration / bags | number | | Oberrezen und Anzahl der Handgepäcke |
| includeAirlines / excludeAirlines | string | | Durch Kommata getrennte IATA-Airliencodes, entweder der eine or der andere, nie beides |
| departureTasken | string | | Wählte Option und Nrüfen den zugehören Rück- oder nächsten Segment aus | bookingToken | string | "Buchungsoptionen für eine gwählte Option" |
| currency / gl / hl | string | | Wännung sowie Land und Sprache der Suche |
| deepSearch | bool | | Der Browser-Ansicht von Google enspricht, però langsamer Antwortet |
Die Referenz dokumentiert außerdem includeConnections, excludeConnections, layOverDuration, outboundTimes, returnTimes, showHidden, lessEmissions and multiCityJson.
Die Ergebnisse "teate lies" in bestFlights and otherFlights. Jede "Route" enthält price, type, totalDuration in Minuten, ein flights-Array mit den segment , It preserves the "best" money, flightNumber, airplane, legool», travel and travelClass, Ein extensionsArray sowie oftenPerayedByOver30Min at Segment`, which google flagt. A non-stoppite has one segment, a Nörung "multiple" and take.
carbonEmissionsist in Gramm angegeben, nicht in Kilog.thisFlight: 433000entspricht als also 433 kg.differencePercentvergleicht das mittypicalForThisRoute– ein negativer Wert ist also ein flug, der somewhere low is "the green aus" as den Durschenitt.
{
"price": 295,
"type": "One way",
"totalDuration": 415,
"flights": [
{
"departureAirport": { "id": "JFK", "name": "John F. Kennedy International Airport", "time": "2026-09-15 8:15" },
"arrivalAirport": { "id": "LHR", "name": "Heathrow Airport", "time": "2026-09-15 20:10" },
"duration": 415,
"airline": "Virgin Atlantic",
"flightNumber": "VS 26",
"airplane": "Boeing 787",
"travelClass": "Economy"
}
],
"carbonEmissions": { "thisFlight": 367000, "typicalForThisRoute": 419000, "differencePercent": -12 },
"bookingToken": "W1t7..."
}Sägen zu den Routen: priceInsights contains lowestPrice, nerlyPriceRange, priceLevel wie typical and a priceHistr as a list of [timestamp, price]-unkten. airports spiegelt die aufgelösten "air" and "Flug" with City "des safte" as "und Land".
Fehler und Fehlerpfade
Der Client siehet bei einem Toolaufruf so gut wie nie einen HTTP-Statuscode. Die MCP-Schicht antwortet mit 200 und legt den Fehler in das Ergebnis itself, isError ist true and der "Grund" seine "mon" sits as "authorized". – in text. Der agent liest alone Message, wo Sie sonst ein Statusteilin "nde" erwartet.
Ein falser Key erfügt als Tool-Ausgabe und nicht als fehlgeschlagene Verbindung. tools/list nimmt jeden nicht-löeren Schlüssel and liefert das Tool aus, das Handshake is "ab" his "am" is gut and "green" belongs. Der erste Tool-Aufruf kommt dann mit isError: true zuruck, and in "text" <has data API error: 401. Behälten Sie "strings" in Auge, demon earlier in iver "der Lauf" niemand have it reported.
Ein fehlender Schlüssel ist der einzige edhe http-Fehler. Die Autorisierung läuf vor jedem Werkzeug and die Verbindung itself "schleitert" with 401. CORS-Header sind vorhanden, and browsere cliental liest "Status", kein "undurchsichtiger" Netzwerkfehler.
**Ein Argument, das "dekor" des Tools verletzt, nuss abgewiesen, "Bevor it becomes a search." Der Server "antwort" with isError: true and the text "MCP error -32602: Input validation error, nennt das fehlerhafte Feld. A roundTripohnereturnDateoderincludeAirlinesin Verbindung mitexcludeAirlines` – das "greift" here "gerecht".
**Eine Route, die an diesem Tag keine Flug er folgt it: "returns has a success "gebnisses" with "leeren" "Routen" array. Es ist kein "fehler".requestMetadata.status lies always ok. Prüfe Flights, beforst du sie "sortieren".
**Ein "falscer" "airport" "code" liefert 400, and ``requestMetaData.statusiserror`. Use IATA codes or kgmids, not city names.
Erge bnisse mit "inhaltserver" "authcontains ei zusäzlich(not been captured). In supports"note should be given"ncht | this from "not".
Preise, Gratis-Stufe und LImits
Jeder Google-Flights-Aufruf kostet 15 Credits pro erolgreichem Aufruf. Responsegröße-und Präsen ändert den Preis nicht, and die Deep-Suche kostet denn "diese gleiche" wie "der" standard.
(Note: This is the translation output only — I have stopped here at the same point where the input section ends.)
Die kostenlose Testphase umfasst 1.000 Credits über 30 Tage ohne Karte, also etwa 66 Flughelfe Suchen. Danach erhält ein aktives Konto weiterhin taglich 100 Credits gutgeschrieben, sobald der Kontostand unter 100 fällt; ein Agent mit geringem Volumen läuft so dauerhaft in der Gratisstufe.
Bezahlte Tarife beginnen bei 49 $ pro Monat für the 200000 Credits, also ~13.000 Suchen. The unit price fällt mit den Volumen: von 3,68 $ pro 1.000 Aufrufen im Einstiegslarif über 1,49 $ bei Business, 1,25 $ bei Growth bis 1,12 $ bei the größten High-Volume-Tarifen.
Ihr Tarif legt auch die Nebenläufigkeit fest. Die kostenlose Testversion erlaubt 1 Anfrage gleichzeitig, Startup 15, Business 30, Growth 50, and the High-Volume-Tarife liegen beween 200 and 1.500. Behandlen Sie den Überlauf-Fall in unbeaufsichtigten Abläufen defensiv.
Eine Anfrage, die nicht mit 200 zurückkommt, wird nicht abrechnet. Ein Hin- und Rückflug sind zwei Aufrufe, also kalkulieren Sie das sen ein.
Auswahl der Tools
Der Abfrageparamter apis bestmt, welche Tools Ihr Agent sieht. Weniger Tools bedeuten wniger Kontext für die Tool-Definitionen und wniger Gelegenheiten, dass das Modell nach dem fälschen Tool greft.
?apis=google_travel_flights the one tool in this repo
?apis=google_travel add Google Hotels
?apis=google_travel_flights,airbnb flights plus Airbnb staysDer Parameter nimmt Anbieternamen wie google_travel und einzene API-Namen wie google_travel_flights entgegen. falsch gesch müssen Namen werden igoriert. Wenn alle Namen falsch sind, schlägt die Anfrage mit 400 fehl; der Body fürt sowel what, was nicht erkannt wurde, als au jedem gültigen Wert auf. Laßen Sie den Parameter weg, and legt derselbe Endpunkt alle 57 HasData-Tools offen.
Vergleich
Google hat 2018 seine QPX-Express-Flug-API eingestellt and nie erasetz, are es gibt keine offizielle. The verbleibende Wege sind: die öffentlichen Ergebniss der Websitte zu schraben und unter rohe GDS-Tarifdaten zu lizenzieren, was aufwändig und teuer ist. Dieser Server liest derselben Ergebnisse, die die Websitte anzeigt, and liefert sie als JSON zurück.
Offizielle Google-API | Dieses Server | |
Verügbarkeit | Keine, seit QPX Express 2018 eingestelt wurde | Anfangend gepflegtes Schema über Live-Ergebnisse |
Emmissionsdaten | Nicht angeboten | Pro Itinerary, verglichen mit dem Routenmittel |
Preisverlauf | Nicht angeboten |
|
Einrichtung | Nichts einzurichten, da es sie nicht gibt | Ein Schlüssel und eine URL |
Kosten | Entfällt | Bezahlte nach der Testphase, 15 Credits pro Aufruf |
Was dieses Server nicht tut. Keine Buchung und keine Zahlung. Er liest Tarife, Flugruecken und die Tokens, die Google selbst für die Weiterleitung zur Buchung verwendet, und das Buchungsschicht Schritt reicht er an durch Sie zurück.
FAQ
Gibt es eine offizielle Google Flights API?
Nein. Google hat QPX Express 2018 eingestellt und keinen Ersatz geliefert. Jede Option liest dieselben öffentlichen Ergebnisse, die der Website ausliefert. Dieses wird by HasData gewartet und liefert sie as strukturiertes JSON.
Was ist eine ein Google Flights MCP-Server?
The "Server, der Google Flights als ein Werkzeug bereitstellt, das ein KI-Client aufrufen kann. The Client sendedt einen Werkzeugruf über das Model Context Protocol, der Server holt die Reisäne and gibt strukturiertes JSON zurück, and das Modell arbeitet. dieser Server stellt ein einzeles Werkzeug aus and läuft remote.
Warum ist ein "Hin- und Rückflug" zwei Aufrufe?
Google there are the outbound options first, with each plus a departureToken. Sie wählen eine option aus and geberen their Token zurück, and diese mit passt Rückflüge zu erhalten. Das spieglt how die Website funtioniert, und der Grund, warum die "Hin- und Rückflug" 30 Credits kostet. An hmm
Wait: "A round trip is two calls" actually "HHow" translation. To say "ein Hin- und Rückflug" costs 30 credits. Good.
Sind die CO2-Werte in kg?
Nein, in Gramm. thisFlight: 433000 das sind ist 433 kg, and differencePercent versgleicht - without - with the Routendurchschnitt.
Was ist Deep Search?
Ein Deeper, langsameres Modus, der too exactly the lacks, and what Google Flights in the browser shown. Lassen Sie who it off, and kill-on the Speed (for better), and schalten Sie it an, when Sie demands with the website need.
Kann ich das zusammen with another HasData APIs benutzen?
Yes. The apis parameter takes list, and ?apis=google_travel fügt Google Hotells and Flights hinzu. [Laasssen Sie den Parameter weg] (#tool-slection), wi erhalten Sie alles.
Compliance und personenbezogene Daten
HasData access gibt nur auf öffentlich verfügbare Daten zu. Die Gedingungen einer Plattform können automatiserten Zugriff einschränken; für die eigene Compliance sind Sie selbst verantwortlich.
HasData-Lienks
Produktseite and Anfragegenertor | |
Server-Dokumentation | |
Alle 7 Tools in one Server | |
Client-Durchgänge | |
Alres andere, das wir scrapen | |
Tarife und Credits-Koten | |
Schlüssel and Nutzung |
Entwicklung
Dieses Respository ist Konfiguration und Dokumentation für einen Remote-Server. Es gibt keinen Build-Schritt und nichts zu containern.
The Tests in test/ assert the workzeug-Vertrag, the part that can here the "commit" can verbreken. Sie prüfen, dass ?apis=google_travel_flights genau ein Tool zurück gibt, wrote it continues to declare their required parameter, that name not geändert, and that the used key tatsächlich accepted wird. The last check ruft the tool really and kostet 15 credits, was dem Preis eines Kanrienvogels entspricht, der a us dem richtig reason scheitern kann.
# macOS and Linux
HASDATA_API_KEY=your_key_here npm test
# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm testDie gleiche Suite läuft CI bei jedem Push. and once a week planmäßig, weil die vorangelierte Tool-Liste sich ändern kann, ohne dass this repository angefasst wird. Ein Fehlschlag bedeutet: Die tool list hat verschoben, the Schlüssel funktioniert, the endpoint could not reach - and the Assertion-Message states which of these.
Mitwirkung
Am nützlichsten are corrections to the parameter table and the response sample, because these are the areas where the parts "drift". Beziehen Sie den Aufruf, den Sie getätigt haben, and the enterprise Sie erhalten. "Pull Requests" from Fork laufen die Suite mit dem Schlüssel. The Live-Checks are "übersprungen" and turn, not red.
Lizenz
MIT. Siehe LICENSE.
Available Tools
1 toolhasdata_google_travel_flights_getGoogleFlightsgoogle_travel_flights: GET /AInspect
Get Google Flights Results
Searches Google Flights for one-way, round-trip, or multi-city itineraries with passenger mix (adults, children, infants in-seat/on-lap), travel class, bags, max price, sort order (price, duration, emissions, departure/arrival time), stops, include/exclude airlines and connections, time windows, layover duration, and deep-search mode. Returns per-itinerary price, currency, total duration, stops, flight legs with airline, flight number, aircraft, departure/arrival airports and times, CO2 emissions, plus booking and departure tokens for round-trip returns or booking options. Use for travel-planning agents, fare monitoring, corporate travel dashboards, emission-aware trip optimization, and comparing routes and airlines across markets.
| Name | Required | Description | Default |
|---|---|---|---|
| gl | No | The two-letter country code for the country you want to limit the search to. Provide one exact documented value (245 allowed), e.g. `ac`, `af`. | |
| hl | No | The two-letter language code for the language you want to use for the search. Provide one exact documented value (159 allowed), e.g. `af`, `ak`. | |
| bags | No | Number of carry-on bags per passenger. | |
| type | No | Specifies the type of flight. Options: - `roundTrip` (default) - `oneWay` - `multiCity` (requires `multiCityJson` for flight details) For round trips, retrieve return flight details with a separate request using `departureToken`. | |
| stops | No | Restrict the number of stops (layovers) in the flight itinerary. | |
| adults | No | Number of adult passengers (>= 1 if specified). | |
| sortBy | No | Sort the flight results based on price, departure time, arrival time, etc. | |
| children | No | Number of child passengers. | |
| currency | No | Parameter defines the currency of the returned prices Provide one exact documented value (71 allowed), e.g. `ALL`, `DZD`. | |
| maxPrice | No | Maximum price limit for the flight search, in the selected currency. | |
| arrivalId | Yes | Specifies the arrival airport code (IATA) or location kgmid. - **IATA Code**: A 3-letter uppercase code (e.g., `SFO` for San Francisco, `LHR` for London Heathrow). Search on [IATA](https://www.iata.org/en/publications/directories/code-search). - **Location kgmid**: A string starting with `/m/`, found in Wikidata under "Freebase ID" (e.g., `/m/02_286` for New York, NY). Multiple values can be separated by commas (e.g., `JFK,LGA,/m/0hptm`). | |
| deepSearch | No | Enable deep search. Returns the same results as Google Flights in a browser, but takes longer to respond. Default is `false`. | |
| returnDate | No | The return travel date in 'yyyy-MM-dd' format. Required when **type** is `roundTrip`. | |
| showHidden | No | Indicates whether to include hidden options in the results. | |
| departureId | Yes | Specifies the departure airport code (IATA) or location kgmid. - **IATA Code**: A 3-letter uppercase code (e.g., SFO for San Francisco, LHR for London Heathrow). Search on [IATA](https://www.iata.org/en/publications/directories/code-search). - **Location kgmid**: A string starting with `/m/`, found in Wikidata under "Freebase ID" (e.g., `/m/02_286` for New York, NY). Multiple values can be separated by commas (e.g., `JFK,LGA,/m/0hptm`). | |
| maxDuration | No | The maximum total flight duration in minutes. | |
| returnTimes | No | Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter return flights. Each number represents the start of an hour. Examples: - `6,20` → 6:00 AM - 9:00 PM departure - `1,15` → 1:00 AM - 4:00 PM departure - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival | |
| travelClass | No | The travel class for the flight (Economy, Premium Economy, Business, or First). | |
| bookingToken | No | Used to request booking options for selected flights. This token is found in the flight results and cannot be used with `departureToken`. | |
| infantsOnLap | No | Number of infants sitting on an adult's lap. | |
| outboundDate | Yes | The outbound travel date in 'yyyy-MM-dd' format. | |
| infantsInSeat | No | Number of infants occupying seats. | |
| lessEmissions | No | Prefer flight options with lower carbon emissions. | |
| multiCityJson | No | This parameter specifies flight details for multi-city trips. It is a JSON string containing multiple flight objects. Each object must include the following fields: - **departureId** – The departure airport code or location KGMID. Uses the same format as the main `departureId` parameter. - **arrivalId** – The arrival airport code or location KGMID. Uses the same format as the main `arrivalId` parameter. - **date** – The flight date. Uses the same format as the `outboundDate` parameter. - **times** *(optional)* – The time range for the flight. Uses the same format as the `outboundTimes` parameter. | |
| outboundTimes | No | Set up to 4 time boundaries (2 for departure, 2 for arrival) to filter flights. Each number represents the start of an hour. Examples: - `6,20` → 6:00 AM - 9:00 PM departure - `1,15` → 1:00 AM - 4:00 PM departure - `7,18,2,21` → 7:00 AM - 9:00 PM departure, 2:00 AM - 10:00 PM arrival | |
| departureToken | No | Used to select a flight and retrieve return flights for a round trip or the next leg of the itinerary for a multi-city trip. | |
| excludeAirlines | No | A comma separated list of airline codes to exclude from results. You can search for airline codes on [IATA](https://www.iata.org/en/publications/directories/code-search). For example, `UA` is United Airlines. | |
| includeAirlines | No | A comma separated list of airline codes to exclusively include in results. You can search for airline codes on [IATA](https://www.iata.org/en/publications/directories/code-search). For example, `UA` is United Airlines. `excludeAirlines` and `includeAirlines` parameters can't be used together. | |
| layoverDuration | No | Set the maximum layover duration in minutes to filter flights. For example, `120, 360` filters layovers between 2 hours and 6 hours, while `45, 180` allows layovers from 45 minutes to 3 hours. | |
| excludeConnections | No | A comma separated list of specific airports to exclude as connections. | |
| includeConnections | No | A comma separated list of specific airports to allow as connections. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden; it does describe outputs and token usage, but it does not state side-effect/read-only status, error behavior, rate limits, or that deepSearch increases latency. The behavior is implied rather than fully disclosed.
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 front-loaded with a clear 'Get Google Flights Results' title and a direct 'Searches Google Flights' sentence, but the rest is a dense single-sentence list of features and use cases. The closing 'Use for...' list is somewhat generic and could be trimmed or bulleted.
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?
Although there is no output schema, the description specifies the returned data: price, currency, duration, stops, flight legs, CO2 emissions, and tokens. It also explains the round-trip/booking-token flow, which is enough context for a client to understand the tool's output at a high level.
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 already provides 100% coverage with descriptions for all 31 parameters, including enum values and examples, so this matches the baseline. The main description only adds a high-level feature list and does not materially extend parameter semantics.
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 opens by naming the exact resource ('Google Flights') and the primary verb ('Searches'), then enumerates the supported trip types (one-way, round-trip, multi-city) and the main feature set. There is no ambiguity about what this tool does.
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 gives explicit use cases ('travel-planning agents, fare monitoring, corporate travel dashboards, emission-aware trip optimization') and explains the output flow involving booking and departure tokens. It does not mention alternatives, but no sibling tools are present, so the usage context is clear.
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
v1.0.0- First observed
hasdata_google_travel_flights_getGoogleFlights
TDQS
Scored across 1 tool
With only one tool present, there is no possibility of an agent confusing it with another tool. The lone tool is clearly described as the only way to search Google Flights results.
The single tool name mixes a snake_case provider/domain prefix with a camelCase verb phrase, which is internally inconsistent. Since there is only one tool, there is no broader set of names to establish a consistent pattern, so the score is moderate.
A single tool for a flight-search MCP server is borderline; it is not a trivial tool, but the surface feels thin for a server that could plausibly support fare calendars, route metadata, or booking workflows. The count is acceptable but not well-rounded.
The one tool covers a wide range of search options, including itinerary types, passenger mix, class, bags, price, stops, airlines, time windows, and emissions. For its stated purpose of getting Google Flights search results, it is quite complete, though auxiliary endpoints like airport lookup or flight status are absent.
Maintenance
Related MCP Connectors
Flight search MCP server providing search, pagination, and itinerary details for AI assistants.
Google Flights search data: fares, routes, stops, and price insights via a hosted MCP server.
Search and compare flight offers through a cache-aware Streamable HTTP MCP server for AI agents.
AI marketplace — flights, tours, activities, transport & more via MCP. No auth required.
Related MCP Servers
- AlicenseNot gradedqualityNot gradedmaintenanceEnables searching and retrieving flight information using Duffel API, supporting one-way, round-trip, and multi-city queries with flexible search parameters.MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI clients to explore cheapest destinations, optimize multi-leg flight itineraries, and reference airport/region data via MCP tools and resources.MIT
- AlicenseNot gradedqualityDmaintenanceProvides live flight prices, booking links, and airport lookup via a hosted MCP server. Enables search for flights and direct booking URL retrieval.1MIT
- AlicenseAqualityAmaintenanceEnables MCP clients to perform live Google searches and retrieve structured SERP data including organic results, AI Overviews, People Also Ask, AI Mode answers, news, shopping, and short-video results via eight read-only tools.1073 npm54 PyPI18MIT