search_google_videos
Search Google Videos to find video content across the web using customizable filters for location, language, time period, and safety settings.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | 搜索查询 | |
| device | No | 设备类型 | desktop |
| location | No | 位置 | |
| uule | No | 位置编码 | |
| google_domain | No | Google域名 | google.com |
| gl | No | 地理位置 | us |
| hl | No | 语言 | en |
| lr | No | 语言限制 | |
| cr | No | 国家限制 | |
| nfpr | No | 不进行拼写检查 | 0 |
| filter | No | 过滤结果 | 1 |
| safe | No | 安全搜索 | off |
| time_period | No | 时间段 | |
| time_period_min | No | 最小时间段 | |
| time_period_max | No | 最大时间段 | |
| num | No | 结果数量 | 10 |
| page | No | 页码 | 1 |
Implementation Reference
- src/index.js:623-668 (registration)Registration of the 'search_google_videos' MCP tool using server.tool(), including inline schema and handler function.server.tool( 'search_google_videos', { q: z.string().describe('搜索查询'), device: z.string().default('desktop').describe('设备类型'), location: z.string().optional().describe('位置'), uule: z.string().optional().describe('位置编码'), google_domain: z.string().default('google.com').describe('Google域名'), gl: z.string().default('us').describe('地理位置'), hl: z.string().default('en').describe('语言'), lr: z.string().optional().describe('语言限制'), cr: z.string().optional().describe('国家限制'), nfpr: z.string().default('0').describe('不进行拼写检查'), filter: z.string().default('1').describe('过滤结果'), safe: z.string().default('off').describe('安全搜索'), time_period: z.string().optional().describe('时间段'), time_period_min: z.string().optional().describe('最小时间段'), time_period_max: z.string().optional().describe('最大时间段'), num: z.string().default('10').describe('结果数量'), page: z.string().default('1').describe('页码') }, async (args) => { const params = { engine: 'google_videos', q: args.q }; // 添加可选参数 const optionalParams = [ 'device', 'location', 'uule', 'google_domain', 'gl', 'hl', 'lr', 'cr', 'nfpr', 'filter', 'safe', 'time_period', 'time_period_min', 'time_period_max', 'num', 'page' ]; 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:644-667 (handler)Handler function that prepares search parameters for Google Videos engine using searchapi.io API and returns JSON-formatted results.async (args) => { const params = { engine: 'google_videos', q: args.q }; // 添加可选参数 const optionalParams = [ 'device', 'location', 'uule', 'google_domain', 'gl', 'hl', 'lr', 'cr', 'nfpr', 'filter', 'safe', 'time_period', 'time_period_min', 'time_period_max', 'num', 'page' ]; 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:625-642 (schema)Zod-based input schema defining parameters for Google Videos search, including query and various optional filters.{ q: z.string().describe('搜索查询'), device: z.string().default('desktop').describe('设备类型'), location: z.string().optional().describe('位置'), uule: z.string().optional().describe('位置编码'), google_domain: z.string().default('google.com').describe('Google域名'), gl: z.string().default('us').describe('地理位置'), hl: z.string().default('en').describe('语言'), lr: z.string().optional().describe('语言限制'), cr: z.string().optional().describe('国家限制'), nfpr: z.string().default('0').describe('不进行拼写检查'), filter: z.string().default('1').describe('过滤结果'), safe: z.string().default('off').describe('安全搜索'), time_period: z.string().optional().describe('时间段'), time_period_min: z.string().optional().describe('最小时间段'), time_period_max: z.string().optional().describe('最大时间段'), num: z.string().default('10').describe('结果数量'), page: z.string().default('1').describe('页码')
- src/index.js:29-57 (helper)Shared utility function to make HTTP requests to searchapi.io API, handles errors and adds API key; used by search_google_videos tool.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 }; } }