google-flights-mcp
Google Flights MCP — 실시간 요금, 에이전트가 전체 날짜 범위를 검색할 수 있고 광고 없음
claude mcp add --transport http google-flights https://google-flights-mcp.flightpowers.com/mcp --header "x-rapidapi-key: YOUR_RAPIDAPI_KEY"호스팅된 서비스입니다. 복제할 것도, 빌드할 것도 없습니다. 공식 MCP Registry에
com.flightpowers/google-flights-mcp로 등록되어 있습니다. 헬스 체크:
/health.
키가 필요하신가요? RapidAPI에서 Google Flights Live API를 구독하세요. 무료 티어도 사용 가능합니다.
그리고 x-rapidapi-key를 복사하세요: https://rapidapi.com/mtnrabi/api/google-flights-live-api
아직 키가 없으신가요? 무료 서버로 시작하세요 — 동일한 검색, 가입 불필요:
claude mcp add --transport http google-flights-free https://google-flights-lulu.flightpowers.com/mcp
(광고 지원됨: 결과당 공개된 스폰서 카드 하나, fan-out 상한 15개, 그리고 스폰서 카드를
렌더링할 수 없는 클라이언트는 추가로 제한될 수 있습니다.) 광고, 15회 검색 상한, 또는 그러한
클라이언트 제약이 걸림돌이 되면 이곳으로 돌아오세요.
에이전트가 얻는 것
날짜 조회가 아닌 가격 질문에 답하는 두 가지 도구입니다.
열린 질문을 물어보세요. "스리랑카행 가장 저렴한 편도, 10월 언제든", "로마에서 5~7박, 5월 중입니다. 텔아비브 또는 라르나카 출발" — 각 질문은 하나의 도구 호출입니다. 두 도구 모두 출발 날짜 범위, 목적지 공항 목록, 그리고 (왕복일 때) 고정 귀국 날짜 대신에
nights값을 받아 내부에서 확장됩니다.가격이 실제로 좋은 가격인지 알 수 있습니다. 모든 결과에는 그 노선과 여행 기간에 대한 Google 자체의 과거 가격 범위가 들어 있습니다 —
price_insights_low,price_insights_high, 그리고low/typical/high로 판정하는price_range_in_relation_to_other_periods. 덕분에 에이전트는 그냥 숫자만 말하지 않고 "$209는 여기서 평균적인 가격이니 지금 당장 급하지 않습니다"라고 답할 수 있습니다.예약까지 가능하고, 조회에 그치지 않습니다. 모든 결과에는 Google Flights로 가는
buy_link가 포함됩니다.무엇을 소비했는지 알 수 있습니다. 모든 응답에는
api_usage— 이 호출이 사용한 요청 수와 호출자 플랜에 남은 사용량이 담깁니다. 지출 보고를 참고하세요.무엇을 검색했는지 알 수 있습니다. 모든 응답에는
search_coverage가 담겨 있어, 모델이 어떤 날짜와 목적지를 대상으로 한 정료를 답했다고 정직하게 말할 수 있습니다.
결과는 실시간 요금입니다. 몇 분이면 사라됩니다 — 요금을 캐시하거나 이전 결과를 다시 사용하지 마세요; 다시 검색하고 데이터를 각색한 시점을 함께 말하세요.
키 받기 (무료 티어 사용 가능)
이 서버는 자체적인 업스트림 인증 정보를 갖지 않습니다. 모든 검색은 사용자의 RapidAPI 구독으로 계정되기 때문에 키가 요청과 함께 전달되는 것입니다.
Google Flights Live API를 구독하세요: https://rapidapi.com/mtnrabi/api/google-flights-live-api
x-rapidapi-key를 복사하세요.아래 세 가지 방법 중 하나로 서버에 전달하세요.
키가 없으면 도구는 조용히 실패하지 않고 비용도 지출하지 않습니다. 그냐의 대신
needs_api_key: true와 함께 가입 URL 및 이 안내 문구를 반환하며, 모델이 사용자에게 그대로
읽어 전달할 수 있도록 문장으로 작성됩니다.
키를 전달하는 세 가지 방법
방식 | 사용법 | 어떤 때에 사용하는가 |
헤더 (권장) |
| 헤더를 설정할 수 있는 모든 곳. 키가 URL에도, 따라서 프록시 로그나 액세스 로그에도 남지 않습니다. |
쿼리 매개변수 |
| URL만 붙여넣을 수 있는 호스트 — claude.ai의 custom-connector 대화상자가 해당합니다. |
클라이언트 API-key 필드 | 클라이언트의 "API key" 상자에 키를 붙여넣기 |
|
빈 값을 갖는 데이터가 아닌 첫 번째 소스가 이 순서로 적용됩니다. 키는 로그에 남지도, 오류 메시지에 표시되지도, 도구 응답에 절대 포함되지 않습니다.
도구
도구 | 하는 일 |
| 실시간 편도 요금. 입력: 출발지 IATA, 목적지 IATA 또는 목록, 그리고 출발 날짜 하나 또는 날짜 범위. 가격, 항공사, 소요 시간, 경유 수, |
| 실시간 왕복 요금. 매우른 두 개의 구간편으로 가격이 정해지며, 두 개의 별도 편도가 아닏니다. 출발지, 목적지, 출발 날짜 또는 날짜 범위, 그리고 |
sort_by는 이 서버가 실행한 검색 결과 전체를 병합한 뒤 이 서버에서 적용되므로, 조합이 몇 개로
확장되는 몇 가지와 무관하게 일관된 결과를 반환합니다.
search_oneway_flights
search_oneway_flights(
from_airport: str, # origin IATA, e.g. "TLV"
to_airport: str | list[str], # destination IATA, or a list to compare
departure_date: str | None = None, # "YYYY-MM-DD"
departure_date_from: str | None = None,# first date of a range
departure_date_to: str | None = None, # last date of a range
max_stops: int | None = None, # 0 = non-stop only
airline_codes: list[str] | None = None,
exclude_airline_codes: list[str] | None = None,
departure_time_min: int | None = None, # hour, 0-23
departure_time_max: int | None = None,
arrival_time_min: int | None = None,
arrival_time_max: int | None = None,
currency: str = "usd",
max_price: int | None = None,
seat_type: int | None = None, # 1 economy, 2 premium economy, 3 business, 4 first
passengers: list[int] | None = None, # [adults, children, infants]
sort_by: str = "best", # "best" | "price" | "duration"
limit: int = 10, # results returned after merge + sort
max_searches: int | None = None, # cap the billed requests this call may make
use_fallback: bool = False, # slower, fewer empty results on hard routes
)search_roundtrip_flights
search_roundtrip_flights(
from_airport: str,
to_airport: str | list[str],
departure_date: str | None = None,
departure_date_from: str | None = None,
departure_date_to: str | None = None,
return_date: str | None = None, # use this OR nights, not both
nights: int | list[int] | None = None, # e.g. 7, or [5, 6, 7]
max_departure_stops: int | None = None,
max_return_stops: int | None = None,
departure_airline_codes: list[str] | None = None,
return_airline_codes: list[str] | None = None,
currency: str = "usd",
max_price: int | None = None,
seat_type: int | None = None,
passengers: list[int] | None = None,
sort_by: str = "best",
limit: int = 10,
max_searches: int | None = None,
use_fallback: bool = False,
)soup_by가 이 서버에서, 서버가 실행한 모든 검색을 병합한 결과를 대상으로 적용되므로, 얼마나
많은 조합으로 확장되는지가 항상 같은 결과를 보장합니다.
실제 예시
사용자: "텔 아비브에 있어요. 로마이나 아테네로 가장 저렴한 1주 여행, 출발도 5월 상반기 중 아무 日환 좋습니다."
한 번의 호출:
{
"name": "search_roundtrip_flights",
"arguments": {
"from_airport": "TLV",
"to_airport": ["FCO", "ATH"],
"departure_date_from": "2026-05-01",
"departure_date_to": "2026-05-15",
"nights": 7,
"sort_by": "price",
"limit": 5
}
}이 한 번의 호출은 15개의 날짜 × 2개의 목적지 = 30가지 조합으로 확장됩니다. 정확히 호출 당 한도입니다. 응답의 형태는 다음과 같습니다(필드 이름은 실제이며, 아래 값은 구체가 아닌 예시입니다 — 실시간 요금을 보려면 호출해 보세요):
{
"results": [
{
"from_airport": "Tel Aviv (TLV)",
"to_airport": "Rome (FCO)",
"departure_date": "2026-05-05",
"return_date": "2026-05-12",
"total_price": "$XXX",
"total_price_as_number": 0,
"total_duration_seconds": 0,
"total_stops": 0,
"price_range_in_relation_to_other_periods": "low",
"price_insights_low": 0,
"price_insights_high": 0,
"departure_flight_airline": "...",
"departure_flight_departure_description": "...",
"departure_flight_arrival_description": "...",
"departure_flight_duration": "...",
"departure_flight_stops": 0,
"departure_stops_info": [],
"return_flight_airline": "...",
"return_flight_departure_description": "...",
"return_flight_arrival_description": "...",
"return_flight_duration": "...",
"return_flight_stops": 0,
"return_stops_info": [],
"buy_link": "https://www.google.com/travel/flights?tfs=..."
}
],
"result_count": 5,
"search_coverage": {
"requested_combinations": 30,
"searched_combinations": 30,
"truncated": false,
"max_searches_per_request": 30,
"departure_dates_searched": ["2026-05-01", "..."],
"destinations_searched": ["ATH", "FCO"]
},
"api_usage": {
"requests_used_by_this_call": 30,
"plan_requests_remaining": 0,
"plan_requests_limit": 0,
"note": "This search used 30 of your RapidAPI plan's requests; ... remain in the current period. Each date and destination combination is one billed request."
}
}다음과 같은 응답 형태도 모두 정상입니다:
그 날짜에 항공편 없음.
results: []및message가 포함됩니다 — Google Flights에 없는 노선/날짜 조합이 있습니다. 오류가, 가 아니라 정상입니다. 가까운 날짜, 가까운 공항 또는use_fallback: true로 다시 검색하세요.일부 검색 실패.
partial필드가 실행한 검색 중 몇 개가 실패했는지 알려주고, 나머지 검색 결과로 응답을 구성합니다.범위가 너무 넓습니다.
search_coverage.truncated: true와 함note를 반환합니다. 범위는 일정 부분만 앞에서 자르는 것이 아니라, 전체 범위 안에 균등하게 샘플링되며 처음과 마지막 날짜를 유지합니다. 그래서 샘플은 앞의 N일이 아닌, 전체를 대표합니다. 커버를 넓히려면max_searches를 올리거나 범위를 좁히세요.키 없음/키 거부됨.
needs_api_key: true가 반환되고, 비용은 0이며, 해결 방법이 함께 제공됩니다. RapidAPI 키는 유효하지만 이 API에 구독하지 않은 경우가 가장 많은 원인입니다.플랜 소진.
quota_exhausted: true가api_usage와 함께 반환되며, 범위를 좁히면 남은 쿼터를 더 오래 사용할 수 있다는 점을 알려줍니다.
지출 보고 (api_usage)
비용은 사용자의 것이기 때문에 미터기가 보여야 합니다. 모든 성공 응답에 다음이 포함됩니다:
필드 | 의미 |
| 이번 하나의 도구 호출이 이때씩 사용한 청구 대상 요청 수. |
| 이번 기간에 사용자의 RapidAPI 플랜에 남은 요청 수. |
| 이번 기간에 할당된 플랜 요청 한도. |
| 위 내용을 문단으로 한 번 묶어서, 사용자가 먼저 물어보나 어쨌든 모델이 전달할 수 있는 문구. |
plan_requests_remaining과 plan_requests_limit는 업스트림 응답에서 가져온 것이며, 업스트림이
제공하지 않으면 생랍니다. note는 그에 맞춰 조정됩니다. 모델이 말로 전달해야 하는 원칙은
날짜 하나 × 목적지 하나 = 청구 요청 하나입니다.
비용 조절 장치를 효과가 큰 순서대로 나열하면: 호출별 max_searches를 낮추거나(넓은 질문에
더 적게 요청), 날짜 범위를 좁히거나, 목적지 목록을 짧게 하는 것입니다.
한 번의 호출 vs 열 번의 호출
기본 REST API는 호출당 정확히 하나의 (출발지, 목적지, 날짜) 조합만 받습니다. 날짜별로
통과형 호출을 비교하면 "10월 한 달리 스리랑카 어디든 가장 저렴한"은 31번의 개별 도구 호출이
됩니다 — 모델이라 한다.* 31번의 왕복 동작, 31번의 맥락을 놓치를 위험, 그리고 물건 내용은
사용자가 사후에야 발견게 됩니다.
여기서는 한 번의 호출입니다. 확장은 동시에, 한도를 정해 서버 측에서 실행되면서, 전체
범위에서 균등 추출되고, buy_link에서 중복 제거되며, sort_by로 정렬되고, search_coverage와
api_usage로 정확하게 보고됩니다.
비교 항목 | 이 서버 (유료) | 무료 서버 |
호출당확장 | 30개 유지(하드 상한 60개; | 15개 |
비용 | 없음 | 결과당 공개된 스폰서 카드 하나 |
키 | 사용자 고유의 RapidAPI API | 필요 없음 |
지출 보고 | 모든 응답에 | 없음 |
디렉터리 등록 가능 | 예 | 아니오 |
이 서버에는 전혀 광고가 조시도 없습니다 — 취햟이 아니르제휵식 때문입니다. Anthrustic의 연결터 디렉터리 정책구과 OpenAI의 앱 취용 지침 모두 도구 결과에 광고 및 스폰서 콘텐텉츠를 금지하기 때문에, 광고를 갖는 서버는 그어디에 등록될 수 없고, 따라서 이 서버가 등록될 수 있습니다.
로컬 개발
git clone <this repo> && cd mcp_server_paid
python3 -m venv .venv && .venv/bin/pip install -r requirements.txt
cp example.env .env # fill it in; leave RAPIDAPI_KEY empty
set -a && . .env && set +a
.venv/bin/python -m src # streamable HTTP on http://localhost:8000/mcp같은 방:: 라이언트가 로컬 process를 가리킬 수п드:
claude mcp add --transport http google-flights-local http://localhost:8000/mcp --header "x-rapidapi-key: YOUR_RAPIDAPI_KEY"터스트 (124개 해결, 특인 됨):
.venv/bin/python -m pytest -qConfig은 example.env에 있습니다. 모든 변수는 친에 문서화되어 있습니다. 중요한 변수들:
변수 | 기본값 | 중요성 |
|
| 호출당 팬아웃 상한. 하드 최대 60으로 제한됩니다. |
|
| 팬아웃의 동시성. |
|
| 연결 풀 상한. 서버리스 인스턴스는 파일 디스크립터 풀을 공유합니다. |
|
| 업스트림 상한과 일치하므로 이쪽이 먼저 타임아웃되지 않습니다. |
|
| 개별 업스트림 검색당 요청되는 결과 수. |
| RapidAPI listing | 키 없이 접근하는 사용자에게 다시 안내되는 URL. |
|
|
|
| (empty) | 프로덕션에서는 비워 두세요. 설정하면 모든 키 없는 호출자가 해당 구독으로 서비스되고 청구됩니다. 서버는 시작 시 경고를 기록하고 |
| (empty) | 설정하면 |
| (empty) | 비어 있으면 파일 싱크가 비활성화되고 stdout |
운영 라우트: GET /health(공개, 인증 불필요 — 레지스트리가 폴링), GET /metrics, GET /metrics/calls?hours=24.
배포 대상은 api/index.py(FastMCP에 수명 주기와 stateless_http=True를 전달하는 FastAPI 래퍼)를 통한 Vercel입니다. 표준 MCP 경로는 /mcp이며 후행 슬래시가 없습니다.
실제 키를 커밋하지 마세요. example.env는 플레이스홀더와 함께 제공되며 그 상태를 유지하세요.
비제휴 고지
이는 공개적으로 제공되는 항공편 가격을 반환하는 독립 API입니다. Google과 제휴, 보증, 후원 관계가 아닙니다. "Google Flights"는 공개 데이터 소스를 설명하는 데만 사용됩니다. 요금은 업스트림 제공업체가 공급하며 수시로 변경되고 보장되지 않습니다 — 구매 전에 항공사 또는 예약 사이트에서 가격을 항상 확인하세요.
This server cannot be installed
Maintenance
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
Flight Intelligence MCP — search, cheapest dates, multi-city, airline compare via Google Flights
Live flight prices and working booking links for AI agents and travel apps.
Free, no-login flight search with real-time pricing from multiple airlines.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mtnrabi/google-flights-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server