Skip to main content
Glama

Open Search MCP

by flyanima

search_startpage

Conduct private web searches using Startpage to retrieve Google results securely. Specify queries, maximum results, language, and time range for precise, protected search outcomes.

Instructions

Search using Startpage - Google results with privacy protection

Input Schema

NameRequiredDescriptionDefault
languageNoSearch language (e.g., "en", "de", "fr")en
maxResultsNoMaximum number of results to return (1-20)
queryYesSearch query for Startpage
timeRangeNoTime range filter: any, day, week, month, yearany

Input Schema (JSON Schema)

{ "properties": { "language": { "default": "en", "description": "Search language (e.g., \"en\", \"de\", \"fr\")", "type": "string" }, "maxResults": { "default": 10, "description": "Maximum number of results to return (1-20)", "maximum": 20, "minimum": 1, "type": "number" }, "query": { "description": "Search query for Startpage", "type": "string" }, "timeRange": { "default": "any", "description": "Time range filter: any, day, week, month, year", "enum": [ "any", "day", "week", "month", "year" ], "type": "string" } }, "required": [ "query" ], "type": "object" }

Implementation Reference

  • The execute handler for the search_startpage tool. It extracts parameters, calls the searchStartpage client method, formats the response with metadata, and handles errors.
    execute: async (args: any) => { try { const { query, maxResults = 10, language = 'en', timeRange = 'any' } = args; const startTime = Date.now(); const result = await client.searchStartpage(query, { maxResults, language, timeRange }); const searchTime = Date.now() - startTime; return { success: true, data: { source: 'Startpage', query, language, timeRange, totalResults: result.results.length, results: result.results, searchTime, timestamp: Date.now(), privacy: result.privacy, features: result.features, searchMetadata: { engine: 'Startpage', basedOn: 'Google results', tracking: false, logging: false } } }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Startpage search failed', data: { source: 'Startpage', query: args.query, results: [], suggestions: [ 'Try different search terms', 'Check spelling and grammar', 'Use more specific keywords' ] } }; }
  • Input schema defining the parameters for the search_startpage tool: query (required), maxResults, language, timeRange.
    inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for Startpage' }, maxResults: { type: 'number', description: 'Maximum number of results to return (1-20)', default: 10, minimum: 1, maximum: 20 }, language: { type: 'string', description: 'Search language (e.g., "en", "de", "fr")', default: 'en' }, timeRange: { type: 'string', description: 'Time range filter: any, day, week, month, year', default: 'any', enum: ['any', 'day', 'week', 'month', 'year'] } }, required: ['query'] },
  • Local registration of the search_startpage tool in the alternative search engines module, including description, category, source, schema, and handler.
    registry.registerTool({ name: 'search_startpage', description: 'Search using Startpage - Google results with privacy protection', category: 'search', source: 'Startpage', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query for Startpage' }, maxResults: { type: 'number', description: 'Maximum number of results to return (1-20)', default: 10, minimum: 1, maximum: 20 }, language: { type: 'string', description: 'Search language (e.g., "en", "de", "fr")', default: 'en' }, timeRange: { type: 'string', description: 'Time range filter: any, day, week, month, year', default: 'any', enum: ['any', 'day', 'week', 'month', 'year'] } }, required: ['query'] }, execute: async (args: any) => { try { const { query, maxResults = 10, language = 'en', timeRange = 'any' } = args; const startTime = Date.now(); const result = await client.searchStartpage(query, { maxResults, language, timeRange }); const searchTime = Date.now() - startTime; return { success: true, data: { source: 'Startpage', query, language, timeRange, totalResults: result.results.length, results: result.results, searchTime, timestamp: Date.now(), privacy: result.privacy, features: result.features, searchMetadata: { engine: 'Startpage', basedOn: 'Google results', tracking: false, logging: false } } }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : 'Startpage search failed', data: { source: 'Startpage', query: args.query, results: [], suggestions: [ 'Try different search terms', 'Check spelling and grammar', 'Use more specific keywords' ] } }; } } });
  • Helper method in AlternativeSearchClient that generates simulated search results for Startpage.
    async searchStartpage(query: string, options: any = {}) { try { // Startpage是Google结果的隐私代理,我们使用模拟数据 const results = this.generateSearchResults(query, 'Startpage', options.maxResults || 10); return { success: true, results, source: 'Startpage', privacy: 'Google results without tracking', features: ['No IP logging', 'No cookies', 'Anonymous proxy'] }; } catch (error) { throw new Error(`Startpage search failed: ${error instanceof Error ? error.message : String(error)}`); } }
  • src/index.ts:241-241 (registration)
    Top-level registration call in the main server initialization that invokes the module to register search_startpage among others.
    registerAlternativeSearchEngines(this.toolRegistry); // 3 tools: search_startpage, search_brave, search_ecosia

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/flyanima/open-search-mcp'

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