Skip to main content
Glama

search_google_flights

Search for flight options on Google Flights by specifying departure, destination, dates, and travel preferences to find available itineraries.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
departure_idYes出发地ID
arrival_idYes目的地ID
outbound_dateYes出发日期
flight_typeNo航班类型round_trip
return_dateNo返程日期
glNo地理位置
hlNo语言
currencyNo货币
travel_classNo舱位等级
stopsNo中转次数
sort_byNo排序方式
adultsNo成人数量
childrenNo儿童数量
multi_city_jsonNo多城市行程JSON
show_cheapest_flightsNo显示最便宜航班
show_hidden_flightsNo显示隐藏航班
max_priceNo最高价格
carry_on_bagsNo随身行李
checked_bagsNo托运行李
included_airlinesNo包含的航空公司
excluded_airlinesNo排除的航空公司
outbound_timesNo出发时间范围
return_timesNo返程时间范围
emissionsNo排放量
included_connecting_airportsNo包含的中转机场
excluded_connecting_airportsNo排除的中转机场
layover_duration_minNo最短中转时间
layover_duration_maxNo最长中转时间
max_flight_durationNo最长飞行时间
separate_ticketsNo分开的机票
infants_in_seatNo占座婴儿数量
infants_on_lapNo不占座婴儿数量
departure_tokenNo出发令牌
booking_tokenNo预订令牌

Implementation Reference

  • The handler function for the search_google_flights tool. It constructs the request parameters for the 'google_flights' engine based on input args, handles validation for different flight types (multi_city, round_trip, one_way), adds optional parameters dynamically, calls the makeSearchapiRequest helper, and returns the API response as formatted JSON text content.
    const params = { engine: 'google_flights', flight_type: args.flight_type }; // 处理flight_type不同情况下的必填参数 if (args.flight_type === 'multi_city') { if (!args.multi_city_json) { return { content: [{ type: 'text', text: JSON.stringify({ error: '多城市行程需要"multi_city_json"参数' }) }], isError: true }; } params.multi_city_json = args.multi_city_json; } else { params.departure_id = args.departure_id; params.arrival_id = args.arrival_id; params.outbound_date = args.outbound_date; if (args.flight_type === 'round_trip') { if (!args.return_date) { return { content: [{ type: 'text', text: JSON.stringify({ error: '往返行程需要"return_date"参数' }) }], isError: true }; } params.return_date = args.return_date; } } // 添加其他可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'travel_class', 'stops', 'sort_by', 'adults', 'children', 'show_cheapest_flights', 'show_hidden_flights', 'max_price', 'carry_on_bags', 'checked_bags', 'included_airlines', 'excluded_airlines', 'outbound_times', 'return_times', 'emissions', 'included_connecting_airports', 'excluded_connecting_airports', 'layover_duration_min', 'layover_duration_max', 'max_flight_duration', 'separate_tickets', 'infants_in_seat', 'infants_on_lap', 'departure_token', 'booking_token' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; }
  • Zod schema defining the input validation for the search_google_flights tool, with required parameters like departure_id, arrival_id, outbound_date, and numerous optional parameters for customizing flight searches.
    { departure_id: z.string().describe('出发地ID'), arrival_id: z.string().describe('目的地ID'), outbound_date: z.string().describe('出发日期'), flight_type: z.string().default('round_trip').describe('航班类型'), return_date: z.string().optional().describe('返程日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), travel_class: z.string().optional().describe('舱位等级'), stops: z.string().optional().describe('中转次数'), sort_by: z.string().optional().describe('排序方式'), adults: z.string().optional().describe('成人数量'), children: z.string().optional().describe('儿童数量'), multi_city_json: z.string().optional().describe('多城市行程JSON'), show_cheapest_flights: z.string().optional().describe('显示最便宜航班'), show_hidden_flights: z.string().optional().describe('显示隐藏航班'), max_price: z.string().optional().describe('最高价格'), carry_on_bags: z.string().optional().describe('随身行李'), checked_bags: z.string().optional().describe('托运行李'), included_airlines: z.string().optional().describe('包含的航空公司'), excluded_airlines: z.string().optional().describe('排除的航空公司'), outbound_times: z.string().optional().describe('出发时间范围'), return_times: z.string().optional().describe('返程时间范围'), emissions: z.string().optional().describe('排放量'), included_connecting_airports: z.string().optional().describe('包含的中转机场'), excluded_connecting_airports: z.string().optional().describe('排除的中转机场'), layover_duration_min: z.string().optional().describe('最短中转时间'), layover_duration_max: z.string().optional().describe('最长中转时间'), max_flight_duration: z.string().optional().describe('最长飞行时间'), separate_tickets: z.string().optional().describe('分开的机票'), infants_in_seat: z.string().optional().describe('占座婴儿数量'), infants_on_lap: z.string().optional().describe('不占座婴儿数量'), departure_token: z.string().optional().describe('出发令牌'), booking_token: z.string().optional().describe('预订令牌') }, async (args) => {
  • src/index.js:84-174 (registration)
    The MCP server.tool call that registers the search_google_flights tool, specifying its name, input schema, and handler function.
    server.tool( 'search_google_flights', { departure_id: z.string().describe('出发地ID'), arrival_id: z.string().describe('目的地ID'), outbound_date: z.string().describe('出发日期'), flight_type: z.string().default('round_trip').describe('航班类型'), return_date: z.string().optional().describe('返程日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), travel_class: z.string().optional().describe('舱位等级'), stops: z.string().optional().describe('中转次数'), sort_by: z.string().optional().describe('排序方式'), adults: z.string().optional().describe('成人数量'), children: z.string().optional().describe('儿童数量'), multi_city_json: z.string().optional().describe('多城市行程JSON'), show_cheapest_flights: z.string().optional().describe('显示最便宜航班'), show_hidden_flights: z.string().optional().describe('显示隐藏航班'), max_price: z.string().optional().describe('最高价格'), carry_on_bags: z.string().optional().describe('随身行李'), checked_bags: z.string().optional().describe('托运行李'), included_airlines: z.string().optional().describe('包含的航空公司'), excluded_airlines: z.string().optional().describe('排除的航空公司'), outbound_times: z.string().optional().describe('出发时间范围'), return_times: z.string().optional().describe('返程时间范围'), emissions: z.string().optional().describe('排放量'), included_connecting_airports: z.string().optional().describe('包含的中转机场'), excluded_connecting_airports: z.string().optional().describe('排除的中转机场'), layover_duration_min: z.string().optional().describe('最短中转时间'), layover_duration_max: z.string().optional().describe('最长中转时间'), max_flight_duration: z.string().optional().describe('最长飞行时间'), separate_tickets: z.string().optional().describe('分开的机票'), infants_in_seat: z.string().optional().describe('占座婴儿数量'), infants_on_lap: z.string().optional().describe('不占座婴儿数量'), departure_token: z.string().optional().describe('出发令牌'), booking_token: z.string().optional().describe('预订令牌') }, async (args) => { const params = { engine: 'google_flights', flight_type: args.flight_type }; // 处理flight_type不同情况下的必填参数 if (args.flight_type === 'multi_city') { if (!args.multi_city_json) { return { content: [{ type: 'text', text: JSON.stringify({ error: '多城市行程需要"multi_city_json"参数' }) }], isError: true }; } params.multi_city_json = args.multi_city_json; } else { params.departure_id = args.departure_id; params.arrival_id = args.arrival_id; params.outbound_date = args.outbound_date; if (args.flight_type === 'round_trip') { if (!args.return_date) { return { content: [{ type: 'text', text: JSON.stringify({ error: '往返行程需要"return_date"参数' }) }], isError: true }; } params.return_date = args.return_date; } } // 添加其他可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'travel_class', 'stops', 'sort_by', 'adults', 'children', 'show_cheapest_flights', 'show_hidden_flights', 'max_price', 'carry_on_bags', 'checked_bags', 'included_airlines', 'excluded_airlines', 'outbound_times', 'return_times', 'emissions', 'included_connecting_airports', 'excluded_connecting_airports', 'layover_duration_min', 'layover_duration_max', 'max_flight_duration', 'separate_tickets', 'infants_in_seat', 'infants_on_lap', 'departure_token', 'booking_token' ]; for (const key of optionalParams) { if (args[key] !== undefined) { params[key] = args[key]; } } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } );
  • Shared helper function used by search_google_flights (and other tools) to make HTTP requests to the searchapi.io API, automatically adds the API key from env, handles timeouts and errors gracefully, returning data or error object.
    async function makeSearchapiRequest(params) { // 确保API Key被添加到参数中 params.api_key = SEARCHAPI_API_KEY; try { const response = await axios.get(SEARCHAPI_URL, { params, timeout: 30000 // 30秒超时 }); return response.data; } catch (error) { let errorDetail = null; if (error.response) { try { errorDetail = error.response.data; } catch (e) { errorDetail = error.response.statusText; } } const errorMessage = `调用searchapi.io时出错: ${error.message}`; if (errorDetail) { return { error: `${errorMessage}, 详情: ${JSON.stringify(errorDetail)}` }; } return { error: errorMessage }; } }

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/lianshuang-photo/searchapi-mcp-nodejs'

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