Skip to main content
Glama

Google Flights MCP 서버

호스팅되는 Model Context Protocol(MCP) 서버로, Claude, Cursor, Windsurf 및 기타 모든 MCP 클라이언트에 Google Flights 도구 하나를 제공합니다. 편도, 왕복, 다중 도시 일정을 요금, 항공 구간, 탄소 배출량, 가격 내역과 함께 구조화된 JSON으로 검색할 수 있으며, Google 계정이나 지원 종료된 여행 API를 우회할 필요가 없습니다.

https://mcp.hasdata.com/api/mcp?apis=google_travel_flights

Glama score tool contract MCP Tools npm PyPI License

목차

Related MCP server: SkyOdyssey MCP

필요한 것

MCP 클라이언트와 대시보드에서 만든 HasData API 키가 필요합니다. 키 생성은 무료이며 카드가 필요 없고, 체험판은 15크레딧 요율로 약 66회 호출을 지원합니다. 이 서버는 원격 서버이므로 가장 간단한 방법은 URL과 x-api-key 헤더를 사용하는 것입니다. 실행할 컨테이너도, 흐름 어디에도 Google 계정도 필요 없습니다. stdio만 지원하는 클라이언트는 아래에 표시된 얇은 런처를 통해 접근합니다. 이 런처는 npm의 @hasdata/google-flights-mcp와 PyPI의 hasdata-google-flights-mcp로 게시되어 있습니다.

빠른 시작

서버 URL은 모든 클라이언트에서 동일합니다. 우리는 Claude Code와 Claude Desktop에서 직접 실행합니다. 다른 블록은 각 클라이언트가 문서화한 원격 서버 형식을 따릅니다.

필드

값

URL

https://mcp.hasdata.com/api/mcp?apis=google_travel_flights

전송

HTTP, streamable

인증 헤더

x-api-key: HASDATA_API_KEY

OAuth를 지원하는 클라이언트는 동일한 URL을 커넥터로 추가하고 설정 파일에 키를 넣지 않고 로그인할 수 있습니다.

claude mcp add --transport http google-flights "https://mcp.hasdata.com/api/mcp?apis=google_travel_flights" \
  --header "x-api-key: HASDATA_API_KEY"

설정에서 커넥터로 이동한 뒤 사용자 지정 커넥터 추가를 선택하고 https://mcp.hasdata.com/api/mcp?apis=google_travel_flights을 붙여넣고 로그인합니다.

구성 파일 경로의 경우 Claude Desktop은 로컬(stdio) 서버만 로드하므로 stdio 런처를 통해 원격 서버에 접근합니다. @hasdata/google-flights-mcp 패키지가 바로 그 런처이며, 환경 변수에서 키를 읽습니다. claude_desktop_config.json에 다음을 추가하세요.

{
  "mcpServers": {
    "google-flights": {
      "command": "npx",
      "args": ["-y", "@hasdata/google-flights-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

Node 대신 Python을 사용한다면 런처를 PyPI 패키지로 바꾸세요. uvx는 수동 설치 없이 이 패키지를 실행합니다.

{
  "mcpServers": {
    "google-flights": {
      "command": "uvx",
      "args": ["hasdata-google-flights-mcp"],
      "env": { "HASDATA_API_KEY": "YOUR_KEY" }
    }
  }
}

모든 프로젝트에 적용하려면 ~/.cursor/mcp.json, 단일 프로젝트에는 .cursor/mcp.json을 사용하세요.

{
  "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는 url이 아닌 serverUrl 필드를 사용합니다.

{
  "mcpServers": {
    "google-flights": {
      "serverUrl": "https://mcp.hasdata.com/api/mcp?apis=google_travel_flights",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

작업 영역의 .vscode/mcp.json:

{
  "servers": {
    "google-flights": {
      "type": "http",
      "url": "https://mcp.hasdata.com/api/mcp?apis=google_travel_flights",
      "headers": { "x-api-key": "HASDATA_API_KEY" }
    }
  }
}

예시 프롬프트

코드가 아니라 프롬프트입니다. 하나를 붙여넣으면 에이전트가 도구를 직접 선택합니다. 각 호출은 성공할 때마다 15크레딧이 들기 때문에 각 프롬프트에는 필요한 호출 횟수가 표시되어 있습니다.

9월 15일 JFK에서 런던 히드로행 편도 항공편을 가격순으로 찾아서, 가장 저렴한 세 가지를 항공사와 탄소 배출량 추정치와 함께 알려줘.

호출 1회, 15크레딧. 요금, 구간, 배출량이 모두 함께 반환됩니다.

같은 노선이지만 직항만, 비즈니스석으로, 어떤 옵션의 배출량이 가장 낮은지 알려줘.

호출 1회, 15크레딧. 좌석 등급과 경유 수는 하나의 요청에 대한 필터입니다.

가격 내역을 볼 때 지금 JFK에서 LHR까지 $295는 좋은 가격인가요?

호출 1회, 15크레딧. 응답에는 일반적인 범위와 가격 수준이 포함된 priceInsights가 담깁니다.

JFK에서 LHR까지 왕복, 출발 9월 15일, 귀국 9월 22일, 가장 저렴한 요금으로.

호출 2회, 30크레딧. Google은 먼저 출발편 옵션을 반환하며, 귀국 구간은 선택한 옵션으로 두 번째 호출에서 가져옵니다.

왕복은 설계상 두 번의 호출입니다. 첫 번째 호출은 각각 departureToken을 포함한 출발 일정을 반환하며, 그 토큰을 다시 전달하면 해당 귀국 항공편을 얻습니다. 편도와 가격 확인은 각각 한 번의 호출입니다.

도구

도구는 하나이며 읽기 전용입니다. 아래 샘플은 실제 호출에서 일부만 추린 것으로, 요금은 수시로 변합니다. 이를 하나의 형태로 생각하세요. 도구 이름을 클릭하면 전체 매개변수 목록이 있는 엔드포인트 참조 문서로 이동합니다.

샘플은 응답 전체가 아니라 페이로드입니다. tools/call 결과에는 텍스트 블록 하나가 들으며, 그 텍스트 자체가 url, status, text, json을 담은 JSON입니다. 스크래핑된 데이터는 json 아래 있습니다. 원시 JSON-RPC 응답에서 경로는 result.content[0].text를 파싱한 다음 .json입니다. 채팅 클라이언트는 이를 자동으로 풀어 주지만, 엔드포인트에 직접 통신하는 코드는 그렇지 않습니다.

Google Flights 결과 가져오기

hasdata_google_travel_flights_getGoogleFlights

노선과 날짜에 대한 일정으로, 요금, 항공 구간, 배출량, 가격 내역을 포함합니다.

매개변수

유형

필수

설명

departureId

string

예

JFK 같은 IATA 코드 또는 /m/02_286 같은 위치 kgmid. 여러 공항은 쉼표로 구분

arrivalId

string

예

departureId와 동일한 형식

outboundDate

string

예

YYYY-MM-DD

type

string

기본값 roundTrip, oneWay, 또는 multiCityJson을 사용하는 multiCity

returnDate

string

type이 roundTrip일 때 필수

travelClass

string

economy, premiumEconomy, business 또는 first

stops

string

nonStop, oneStopOrFewer 또는 twoStopsOrFewer

sortBy

string

기본값 topFlights, 추가로 price, duration, emissions, departureTime, arrivalTime

adults / children / infantsInSeat / infantsOnLap

number

승객 구성

maxPrice / maxDuration / bags

number

상한선 및 기내 반입 수하물 수

includeAirlines / excludeAirlines

string

쉼표로 구분된 IATA 항공사 코드, 둘 중 하나만 사용 (동시에 불가)

departureToken

string

출발편 옵션을 선택하고 해당 귀국편 또는 다음 구간을 가져오기

bookingToken

string

선택한 일정의 예약 옵션 가져오기

currency / gl / hl

string

통화와 검색 대상 국가 및 언어

deepSearch

boolean

브라우저에서 Google이 표시하는 결과와 일치, 응답이 더 느림

참조 문서에는 includeConnections, excludeConnections, layoverDuration, outboundTimes, returnTimes, showHidden, lessEmissions, multiCityJson도 설명되어 있습니다.

결과는 bestFlights와 otherFlights로 나뉩니다. 각 일정에는 price, type, 분 단위의 totalDuration, 항공 구간 배열인 flights, carbonEmissions 객체, bookingToken이 포함됩니다. 각 구간에는 departureAirport와 arrivalAirport(각각 id, name, 현지 time 포함), duration, airline, flightNumber, airplane, legroom, travelClass, extensions 배열, 그리고 Google이 표시하는 구간의 oftenDelayedByOver30Min이 들어 있습니다. 직항 일정은 구간이 하나이고, 경유 일정은 여러 개입니다.

carbonEmissions는 킬로그램이 아닌 그램 단위입니다. thisFlight: 433000은 433kg입니다. differencePercent는 이를 typicalForThisRoute와 비교하므로 음수는 평균보다 더 친환경적인 항공편을 의미합니다.

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

priceInsights는 일정 옆에 있으며 lowestPrice, typicalPriceRange, typical 같은 priceLevel, [timestamp, price] 포인트로 된 priceHistory를 포함합니다. airports는 확인된 출발지와 도착지 공항을 도시와 국가와 함께 반영합니다.

오류 및 실패 경로

도구 호출에서 클라이언트가 HTTP 오류 코드를 보는 경우는 거의 없습니다. MCP 계층이 200으로 응답하고 실패를 결과 안에 넣으며, isError는 true로 설정되고 사유는 텍스트로 전달됩니다. 에이전트는 상태 줄을 기대했을 곳에서 메시지를 읽습니다.

잘못된 키는 연결 실패가 아니라 도구 출력으로 나타납니다. tools/list는 비어 있지 않은 모든 키를 받아들이고 도구를 반환하므로 클라이언트는 핸드셰이크를 완료하고 정상으로 표시합니다. 그러면 첫 번째 도구 호출이 isError: true와 함께 HasData API error: 401 Unauthorized 텍스트로 돌아옵니다. 흐름 초반에는 이 문제를 알리는 것이 없으므로 이 문자열을 주의하세요.

키가 없으면 실제 HTTP 오류가 발생합니다. 인증은 모든 도구보다 먼저 실해되며 연결 자체가 401로 실패합니다. CORS 헤더가 있으므로 브라우저 클라이언트는 불투명한 네트워크 오류가 아닌 상테 코드를 읽습니다.

도구 스키마에 위배되는 인자는 스크래핑이 시작되기 전에 거부됩니다. 서버는 isError: true와 함께 MCP error -32602: Input validation error 텍스트로 응답하며 잘못된 필드를 지정합니다. returnDate 없는 roundTrip 또는 includeAirlines와 excludeAirlines를 함께 사용하는 경우가 여기서 걸러집니다.

해당 날짜에 항공편이 없는 노선은 오류가 아니라 일정 배열이 비어 있는 성공 결과를 반환합니다. requestMetadata.status는 여전히 ok입니다. 항공편을 순위로 매기기 전에 먼저 확인하세요.

잘못된 공항 코드는 400을 반환하며 requestMetadata.status는 error로 설정됩니다. 도시 이름이 아니라 IATA 코드나 kgmids를 사용하세요.

데이터를 포함한 결과에는 지원 문의에서 인용할 만한 requestMetadata.id도 함게 포함됩니다.

요금, 무료 등급 및 한도

모든 Google Flights 호출은 성공적인 호출당 15크레딧이 소요됩니다. 응답 크기에 따라 가격이 바지 않으며, 심층 검색도 일방 검색과 동일한 비용입니다.

무료 평가판은 카드 없이 30일 동안 1,000크레딧으로, 약 66회의 항공편 검색에 해당합니다. 이후 활성 계정은 잔액이 100 미만으로 떨어질 때마다 매일 100크레딧을 충전받으므로, 사용량이 적은 에이전트는 무료 등급에서 무기한 실횅될 수 있습니다.

유료 요금제는 월 $49부터 시작하며 200,000크레딧을 제궁하는데, 이는 약 13,000회 검색에 해당합니다. 단위 가격은 사용량에 따라 낮아져서, 입문 요금제의 1,000회 호출당 $3.68부터 Business $1.49, Growth $1.25, 그리고 가장 큰 대용량 요금제의 $1.12까지입니다.

요금제는 동시성도 결정합니다. 무료 평가판은 한 번에 1개의 요청을 허용하며, Startup은 15, Business는 30, Growth는 50, 대용량 요금제는 200~1,500입니다. 무인으로 실행되는 모든 작업에서는 한도 초과 상황을 방어적으로 처리하세요.

200이 아닌 상태로 돌아온 요청은 청구되지 않습니다. 왕복 항공편은 두 번의 호출이므로 예산에 반영하세요.

도구 선택

apis 쿼리 파라미터는 에이전트가 보게 될 도구를 결정합니다. 도구가 적을수록 도구 정의에 사용되는 컨텍스트가 줄어들고, 모델이 잘못된 도구를 선택할 가능성도 줄어듭니다.

?apis=google_travel_flights          the one tool in this repo
?apis=google_travel                   add Google Hotels
?apis=google_travel_flights,airbnb    flights plus Airbnb stays

이 파라미터는 google_travel 같은 공급자 이름과 google_travel_flights 같은 개별 API 이름을 받습니다. 철자가 틀린 이름은 무시됩니다. 모든 이름이 잘못되면 요청은 400으로 실패하며, 응답 본문에는 인식하지 못한 값과 유효한 모든 값이 나열됩니다. 파라미터를 생략하면 같은 엔드포인트가 HasData의 57개 도구를 모두 노출합니다.

비교

Google은 2018년 QPX Express 항공편 API를 종료했고 대체 API를 내놓지 않았으므로, 공식 Google Flights API는 존재하지 않습니다. 남은 방법은 공개 결과를 스크래핑하거나 원시 GDS 요금 데이터를 라이선스하는 것인데, 둘 다 무겁고 비용이 많입니다. 이 서버는 사이트가 보여주는 것과 동일한 결과를 읽어 JSON으로 반환합니다.

공식 Google API

이 서버

가용성

2018년 QPX Express 종료 이후 없음

실시간 결과에 대한 유지보수 스키마

탄소 배출량 데이터

제궁되지 않음

노선 평균과 비교한 여정별 데이터

가격 이력

제공되지 않음

일방적인 범위를 포함한 priceInsights

설정

존해하지 않으므로 설정할 것 없음

키 1개와 URL 1개

비용

해당 없음

평가판 이후 유료, 호출당 15크레딧

이 서버가 하지 않늠 일. 예매도 결제도 없습니다. 요금, 구간, 그리고 Google이 예매로 넘어갈 때 사용하는 토큰을 읽어서, 예매 단계는 여러분에게 돌려드립니다.

FAQ

공식 Google Flights API가 있나요?

아니요. Google은 2018년 QPX Express를 종료했고 대체품을 출시하지 않았습니다. 모든 옵션은 웹사이트가 제궁하는 동일한 공개 결과를 읽습니다. 이 서버는 HasData가 유지보수하며, 이를 구조화된 JSON으로 반환합니다.

Google Flights MCP 서버란 무엇인가요?

Google Flights를 AI 클라인트가 호출할 수 있는 도구로 노출하는 서버입니다. 클라인트는 Model Context Protocol을 통해 도구 호출을 보내고, 서버는 여정을 가져와 구조화된 JSON을 반환하며, 모델은 그 결과를 가지고 작업합니다. 이 서버는 단일 도구를 노출하며 원격으로 실횅됩니다.

왕복 항공편이 두 번의 호출인 이유는 무엇인가요?

Google은 먼저 각각 departureToken이 있는 출발 옵션을 반환합니다. 하나를 선택하고 해당 토큰을 다신 전달하면 그와 짝을 이루는 귀국 항공편을 얻을 수 있습니다. 이는 사이트가 동작하는 방식을 그대로 반영하며, 왕복 항공편에 30크레딧이 드는 이유입니다.

탄소 수치는 킬로그램 단위인가요?

아니요, 그램 단위입니다. thisFlight: 433000은 433kg을 의미하며, differencePercent는 이를 노선 평균과 비합니다.

심층 검색이란 무엇인가요?

브라우저에 Google Flights가 표시하는 것과 정확히 동일한 결과를 반환하는 더 늘린 모드입니다. 속도를 원하면 두고, 사이트와 동일한 결과가 필요할 때 세요.

다한 HasData API와 함게 사용할 수 있나요?

네. apis 파라미터는 목록을 받으며, ?apis=google_travel은 항공편과 함게 Google Hotles도 추가합니다. 파라미터를 생략하면 모드 것을 얻을 수 있습니다.

규정 준수 및 개인 데이터

HasData는 공개적으로 이욕 가능한 데이터에만 접근합니다. 플랫폼의 이욕 약관이 자동화된 접근을 제한할 수 있으며, 규정 준수에 대한 책임은 사용자 본인에게 있습니다.

HasData 링크

제품 페이지 및 요청 빌더

Google Flights API

서버 문서

MCP 서버 문서

하나의 서버에 담긴 57개 도구

HasData/hasdata-mcp

클라인트 둘러보기

MCP 클라인트 및 통합

우리가 스크래핑하는 다한 모든 것

Google Flights API 및 54개 더

요금제 및 크레딧 비용

요금제 및 크레딧 비용

키 및 사용량

HasData 대시보드

npm의 Node 런처

@hasdata/google-flights-mcp

PyIPI의 Python 런처

hasdata-google-flights-mcp

개발

이 저장소는 원격 서버의 구성 및 문서입니다. 빌드 단계도, 컨테이너화할 대상도 없습니다.

test/의 테스트는 이곳의 커밋 없이도 깨질 수 있는 부분, 즉 도구 계약을 검증합니다. 테스트는 ?apis=google_travel_flights가 정확히 하나의 도구를 반환하는지, 필수 매개변수를 여전히 선언하는지, 이름이 변경되지 않았는지, 그리고 사용 중인 키가 실제로 승인되는지 확인합니다. 마지막 검증은 도구를 실제로 호출하며 15크레딧이 드는데, 이는 올바른 이유로 실패할 수 있는 카나리의 비용입니다.

# macOS and Linux
HASDATA_API_KEY=your_key_here npm test

# Windows PowerShell
$env:HASDATA_API_KEY="your_key_here"; npm test

동일한 테스트 스위트는 푸시할 때마다, 그리고 주 1회 예약된 일정으로 CI에서 실횅됩니다. 업스트림 도구 목록은 아무도 이 저장소를 수정하지 않아도 바뀔 수 있기 때문입니다. 실패는 도구 목록이 이동했거나, 키가 작동을 멈췄거나, 엔드포인트에 도달할 수 없음을 의미하며, 실패 메시지가 어떤 경우인지 알려줍니다.

기여

매개변수 표와 응답 샘플에 대한 수정이 가장 유용한 기여입니다. 이 부분들이 원래 내용에서 벗어나기 쉽기 때문입니다. 직접 수행한 호출과 받은 응답을 포함하세요. 포크에서 온 풀 리퀘스트는 키 없이 스위트를 실행하며, 라이브 검사는 실패 처리되는 대신 건너니다.

라이선스

MIT. LICENSE를 참조하세요.

Available Tools

1 tool
hasdata_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
glNoThe 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`.
hlNoThe 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`.
bagsNoNumber of carry-on bags per passenger.
typeNoSpecifies 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`.
stopsNoRestrict the number of stops (layovers) in the flight itinerary.
adultsNoNumber of adult passengers (>= 1 if specified).
sortByNoSort the flight results based on price, departure time, arrival time, etc.
childrenNoNumber of child passengers.
currencyNoParameter defines the currency of the returned prices Provide one exact documented value (71 allowed), e.g. `ALL`, `DZD`.
maxPriceNoMaximum price limit for the flight search, in the selected currency.
arrivalIdYesSpecifies 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`).
deepSearchNoEnable deep search. Returns the same results as Google Flights in a browser, but takes longer to respond. Default is `false`.
returnDateNoThe return travel date in 'yyyy-MM-dd' format. Required when **type** is `roundTrip`.
showHiddenNoIndicates whether to include hidden options in the results.
departureIdYesSpecifies 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`).
maxDurationNoThe maximum total flight duration in minutes.
returnTimesNoSet 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
travelClassNoThe travel class for the flight (Economy, Premium Economy, Business, or First).
bookingTokenNoUsed to request booking options for selected flights. This token is found in the flight results and cannot be used with `departureToken`.
infantsOnLapNoNumber of infants sitting on an adult's lap.
outboundDateYesThe outbound travel date in 'yyyy-MM-dd' format.
infantsInSeatNoNumber of infants occupying seats.
lessEmissionsNoPrefer flight options with lower carbon emissions.
multiCityJsonNoThis 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.
outboundTimesNoSet 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
departureTokenNoUsed to select a flight and retrieve return flights for a round trip or the next leg of the itinerary for a multi-city trip.
excludeAirlinesNoA 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.
includeAirlinesNoA 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.
layoverDurationNoSet 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.
excludeConnectionsNoA comma separated list of specific airports to exclude as connections.
includeConnectionsNoA comma separated list of specific airports to allow as connections.

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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. 1 tool updatev1.0.0
    • First observedhasdata_google_travel_flights_getGoogleFlights

TDQS

A3.9/5.0

Scored across 1 tool

Disambiguation5/5

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.

Naming Consistency3/5

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.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables searching and retrieving flight information using Duffel API, supporting one-way, round-trip, and multi-city queries with flexible search parameters.
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI clients to explore cheapest destinations, optimize multi-leg flight itineraries, and reference airport/region data via MCP tools and resources.
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    Enables 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.
    10
    73 npm
    54 PyPI
    18
    MIT