search_google_maps
Search Google Maps for places and businesses using text queries and optional location coordinates to find relevant results.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 搜索查询 | |
| location_ll | No | 位置坐标,格式为"纬度,经度" |
Implementation Reference
- src/index.js:66-80 (handler)The handler function for the 'search_google_maps' tool. It constructs the API parameters (engine: 'google_maps', q: query, optional ll: location_ll), calls the makeSearchapiRequest helper, and returns the JSON-formatted result as text content.async ({ query, location_ll }) => { const params = { engine: 'google_maps', q: query }; if (location_ll) { params.ll = location_ll; } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; }
- src/index.js:62-65 (schema)Zod input schema for the tool: 'query' (string, required, search query), 'location_ll' (string, optional, location coordinates in 'lat,lng' format).{ query: z.string().describe('搜索查询'), location_ll: z.string().optional().describe('位置坐标,格式为"纬度,经度"') },
- src/index.js:60-81 (registration)Registration of the 'search_google_maps' tool via server.tool(), specifying the name, input schema, and inline handler function.server.tool( 'search_google_maps', { query: z.string().describe('搜索查询'), location_ll: z.string().optional().describe('位置坐标,格式为"纬度,经度"') }, async ({ query, location_ll }) => { const params = { engine: 'google_maps', q: query }; if (location_ll) { params.ll = location_ll; } const result = await makeSearchapiRequest(params); return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }] }; } );
- src/index.js:29-57 (helper)Shared helper function 'makeSearchapiRequest' that adds the API key, makes GET request to searchapi.io, handles errors, and returns the data or error object. Used by 'search_google_maps' and other tools.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 }; } }