Skip to main content
Glama
flyanima

Open Search MCP

by flyanima

search_startpage

Search the web privately using Startpage to get Google results without tracking. Filter results by time range, language, and quantity for focused research.

Instructions

Search using Startpage - Google results with privacy protection

Input Schema

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

Implementation Reference

  • Execute handler for 'search_startpage' tool. Parses input arguments, calls the underlying searchStartpage client method, formats results with timing, metadata, privacy info, and handles errors with suggestions.
    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'
            ]
          }
        };
      }
  • Core helper method that generates mock search results for Startpage using generateSearchResults, adds privacy metadata, simulates Google proxy without tracking.
    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)}`);
      }
    }
  • Input schema for search_startpage tool defining query (required), maxResults (1-20), language, and timeRange parameters.
    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']
    },
  • Tool registration block for 'search_startpage' including name, description, category, source, inputSchema, and execute 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'
              ]
            }
          };
        }
      }
    });
  • src/index.ts:241-241 (registration)
    Top-level call to registerAlternativeSearchEngines which includes the search_startpage tool registration.
    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