Skip to main content
Glama

FetchSERP MCP Server

Official
by fetchSERP

get_serp_text

Extract text content from search engine results pages (SERPs) by query, search engine, country, and page count for SEO analysis and keyword research.

Instructions

Get search engine results with text content

Input 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

Input Schema (JSON Schema)

{ "properties": { "country": { "default": "us", "description": "The country to search from. Default: us", "type": "string" }, "pages_number": { "default": 1, "description": "The number of pages to search (1-30). Default: 1", "maximum": 30, "minimum": 1, "type": "integer" }, "query": { "description": "The query to search", "type": "string" }, "search_engine": { "default": "google", "description": "The search engine to use (google, bing, yahoo, duckduckgo). Default: google", "type": "string" } }, "required": [ "query" ], "type": "object" }

Implementation Reference

  • Handler case for the 'get_serp_text' tool. It invokes the makeRequest helper to call the FetchSERP API endpoint '/api/v1/serp_text' with the provided arguments.
    case 'get_serp_text': return await this.makeRequest('/api/v1/serp_text', 'GET', args, null, token);
  • Input schema definition for the 'get_serp_text' tool, specifying parameters like query (required), search_engine, country, and pages_number.
    { name: 'get_serp_text', description: 'Get search engine results with text 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 'makeRequest' that handles API calls to FetchSERP, including authentication, parameter handling, and error management. This is the core logic executed for the 'get_serp_text' tool.
    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