search_google_hotels_property
Search and retrieve detailed hotel property information from Google, including pricing, availability, and booking details based on specified dates, location, and guest preferences.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| adults | No | 成人数量 | |
| check_in_date | Yes | 入住日期 | |
| check_out_date | Yes | 退房日期 | |
| children | No | 儿童数量 | |
| children_ages | No | 儿童年龄 | |
| currency | No | 货币 | |
| gl | No | 地理位置 | |
| hl | No | 语言 | |
| property_token | Yes | 物业令牌 |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adults": {
"description": "成人数量",
"type": "string"
},
"check_in_date": {
"description": "入住日期",
"type": "string"
},
"check_out_date": {
"description": "退房日期",
"type": "string"
},
"children": {
"description": "儿童数量",
"type": "string"
},
"children_ages": {
"description": "儿童年龄",
"type": "string"
},
"currency": {
"description": "货币",
"type": "string"
},
"gl": {
"description": "地理位置",
"type": "string"
},
"hl": {
"description": "语言",
"type": "string"
},
"property_token": {
"description": "物业令牌",
"type": "string"
}
},
"required": [
"property_token",
"check_in_date",
"check_out_date"
],
"type": "object"
}
Implementation Reference
- src/index.js:297-320 (handler)The handler function for the 'search_google_hotels_property' tool. It constructs the API parameters using the 'google_hotels_property' engine, includes required and optional fields, calls the shared makeSearchapiRequest helper, and returns the API response as formatted text content.async (args) => { const params = { engine: 'google_hotels_property', property_token: args.property_token, check_in_date: args.check_in_date, check_out_date: args.check_out_date }; // 添加可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'adults', 'children', 'children_ages' ]; 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) }] }; }
- src/index.js:286-296 (schema)Zod input schema defining the parameters for the 'search_google_hotels_property' tool, including required property_token, check_in_date, check_out_date, and various optional filters.{ property_token: z.string().describe('物业令牌'), check_in_date: z.string().describe('入住日期'), check_out_date: z.string().describe('退房日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), adults: z.string().optional().describe('成人数量'), children: z.string().optional().describe('儿童数量'), children_ages: z.string().optional().describe('儿童年龄') },
- src/index.js:284-321 (registration)Registration of the 'search_google_hotels_property' tool on the MCP server using server.tool(), specifying the name, input schema, and handler function.server.tool( 'search_google_hotels_property', { property_token: z.string().describe('物业令牌'), check_in_date: z.string().describe('入住日期'), check_out_date: z.string().describe('退房日期'), gl: z.string().optional().describe('地理位置'), hl: z.string().optional().describe('语言'), currency: z.string().optional().describe('货币'), adults: z.string().optional().describe('成人数量'), children: z.string().optional().describe('儿童数量'), children_ages: z.string().optional().describe('儿童年龄') }, async (args) => { const params = { engine: 'google_hotels_property', property_token: args.property_token, check_in_date: args.check_in_date, check_out_date: args.check_out_date }; // 添加可选参数 const optionalParams = [ 'gl', 'hl', 'currency', 'adults', 'children', 'children_ages' ]; 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) }] }; } );
- src/index.js:29-57 (helper)Shared helper utility function that makes HTTP requests to the SearchAPI.io endpoint, automatically adds the API key, handles timeouts and errors, and returns the data or error object. Used by the tool handler.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 }; } }