Skip to main content
Glama
fetchSERP

FetchSERP MCP Server

Official
by fetchSERP

get_serp_html

Extract HTML content from search engine results pages (SERPs) for specific queries, search engines, and countries using the FetchSERP MCP Server.

Instructions

Get search engine results with HTML content

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
countryNoThe country to search from. Default: usus
pages_numberNoThe number of pages to search (1-30). Default: 1
queryYesThe query to search
search_engineNoThe search engine to use (google, bing, yahoo, duckduckgo). Default: googlegoogle

Implementation Reference

  • Handler implementation for the 'get_serp_html' tool. It calls the shared makeRequest method with the specific API endpoint '/api/v1/serp_html'.
    case 'get_serp_html': return await this.makeRequest('/api/v1/serp_html', 'GET', args, null, token);
  • Input schema defining parameters for the 'get_serp_html' tool: query (required), search_engine, country, pages_number.
    inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The query to search', }, search_engine: { type: 'string', description: 'The search engine to use (google, bing, yahoo, duckduckgo). Default: google', default: 'google', }, country: { type: 'string', description: 'The country to search from. Default: us', default: 'us', }, pages_number: { type: 'integer', description: 'The number of pages to search (1-30). Default: 1', default: 1, minimum: 1, maximum: 30, }, }, required: ['query'], },
  • index.js:355-385 (registration)
    Registration of the 'get_serp_html' tool in the ListTools response, including name, description, and input schema.
    { name: 'get_serp_html', description: 'Get search engine results with HTML content', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'The query to search', }, search_engine: { type: 'string', description: 'The search engine to use (google, bing, yahoo, duckduckgo). Default: google', default: 'google', }, country: { type: 'string', description: 'The country to search from. Default: us', default: 'us', }, pages_number: { type: 'integer', description: 'The number of pages to search (1-30). Default: 1', default: 1, minimum: 1, maximum: 30, }, }, required: ['query'], }, },
  • Shared helper method that performs authenticated HTTP requests to the FetchSERP API using node-fetch, used by all tools including get_serp_html.
    async makeRequest(endpoint, method = 'GET', params = {}, body = null, token = null) { const fetchserpToken = token || process.env.FETCHSERP_API_TOKEN; if (!fetchserpToken) { throw new McpError( ErrorCode.InvalidRequest, 'FETCHSERP_API_TOKEN is required' ); } const url = new URL(`${API_BASE_URL}${endpoint}`); // Add query parameters for GET requests if (method === 'GET' && Object.keys(params).length > 0) { Object.entries(params).forEach(([key, value]) => { if (value !== undefined && value !== null) { if (Array.isArray(value)) { value.forEach(v => url.searchParams.append(`${key}[]`, v)); } else { url.searchParams.append(key, value.toString()); } } }); } const fetchOptions = { method, headers: { 'Authorization': `Bearer ${fetchserpToken}`, 'Content-Type': 'application/json', }, }; if (body && method !== 'GET') { fetchOptions.body = JSON.stringify(body); } const response = await fetch(url.toString(), fetchOptions); if (!response.ok) { const errorText = await response.text(); throw new McpError( ErrorCode.InternalError, `API request failed: ${response.status} ${response.statusText} - ${errorText}` ); } return await response.json(); }

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/fetchSERP/fetchserp-mcp-server-node'

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