Skip to main content
Glama
flyanima

Open Search MCP

by flyanima

search_brave

Search the web using Brave Search, a privacy-focused search engine that returns results based on your query, with options to filter by region and safe search settings.

Instructions

Search using Brave Search - independent, privacy-focused search engine

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
queryYesSearch query for Brave Search
maxResultsNoMaximum number of results to return (1-20)
safeSearchNoSafe search setting: strict, moderate, offmoderate
regionNoSearch region (e.g., "us", "uk", "de")us

Implementation Reference

  • Main execution handler for the search_brave tool. Processes input arguments, calls the searchBrave helper, formats results with metadata, and handles errors gracefully.
    execute: async (args: any) => {
      try {
        const { query, maxResults = 10, safeSearch = 'moderate', region = 'us' } = args;
        
        const startTime = Date.now();
        const result = await client.searchBrave(query, { maxResults, safeSearch, region });
        const searchTime = Date.now() - startTime;
    
        return {
          success: true,
          data: {
            source: 'Brave Search',
            query,
            safeSearch,
            region,
            totalResults: result.results.length,
            results: result.results,
            searchTime,
            timestamp: Date.now(),
            privacy: result.privacy,
            features: result.features,
            searchMetadata: {
              engine: 'Brave Search',
              independent: true,
              tracking: false,
              ads: false
            }
          }
        };
      } catch (error) {
        return {
          success: false,
          error: error instanceof Error ? error.message : 'Brave search failed',
          data: {
            source: 'Brave Search',
            query: args.query,
            results: [],
            suggestions: [
              'Try simpler search terms',
              'Check your internet connection',
              'Use alternative search engines'
            ]
          }
        };
      }
  • Input schema defining parameters for the search_brave tool: query (required), maxResults, safeSearch, and region.
    inputSchema: {
      type: 'object',
      properties: {
        query: {
          type: 'string',
          description: 'Search query for Brave Search'
        },
        maxResults: {
          type: 'number',
          description: 'Maximum number of results to return (1-20)',
          default: 10,
          minimum: 1,
          maximum: 20
        },
        safeSearch: {
          type: 'string',
          description: 'Safe search setting: strict, moderate, off',
          default: 'moderate',
          enum: ['strict', 'moderate', 'off']
        },
        region: {
          type: 'string',
          description: 'Search region (e.g., "us", "uk", "de")',
          default: 'us'
        }
      },
      required: ['query']
    },
  • Registers the search_brave tool in the ToolRegistry, including name, description, schema, and execute handler.
    registry.registerTool({
      name: 'search_brave',
      description: 'Search using Brave Search - independent, privacy-focused search engine',
      category: 'search',
      source: 'Brave Search',
      inputSchema: {
        type: 'object',
        properties: {
          query: {
            type: 'string',
            description: 'Search query for Brave Search'
          },
          maxResults: {
            type: 'number',
            description: 'Maximum number of results to return (1-20)',
            default: 10,
            minimum: 1,
            maximum: 20
          },
          safeSearch: {
            type: 'string',
            description: 'Safe search setting: strict, moderate, off',
            default: 'moderate',
            enum: ['strict', 'moderate', 'off']
          },
          region: {
            type: 'string',
            description: 'Search region (e.g., "us", "uk", "de")',
            default: 'us'
          }
        },
        required: ['query']
      },
      execute: async (args: any) => {
        try {
          const { query, maxResults = 10, safeSearch = 'moderate', region = 'us' } = args;
          
          const startTime = Date.now();
          const result = await client.searchBrave(query, { maxResults, safeSearch, region });
          const searchTime = Date.now() - startTime;
    
          return {
            success: true,
            data: {
              source: 'Brave Search',
              query,
              safeSearch,
              region,
              totalResults: result.results.length,
              results: result.results,
              searchTime,
              timestamp: Date.now(),
              privacy: result.privacy,
              features: result.features,
              searchMetadata: {
                engine: 'Brave Search',
                independent: true,
                tracking: false,
                ads: false
              }
            }
          };
        } catch (error) {
          return {
            success: false,
            error: error instanceof Error ? error.message : 'Brave search failed',
            data: {
              source: 'Brave Search',
              query: args.query,
              results: [],
              suggestions: [
                'Try simpler search terms',
                'Check your internet connection',
                'Use alternative search engines'
              ]
            }
          };
        }
      }
    });
  • Helper function in AlternativeSearchClient that simulates Brave Search results using generateSearchResults.
    async searchBrave(query: string, options: any = {}) {
      try {
        // 由于Brave Search API需要特殊权限,我们使用模拟数据
        const results = this.generateSearchResults(query, 'Brave Search', options.maxResults || 10);
        return {
          success: true,
          results,
          source: 'Brave Search',
          privacy: 'High privacy protection',
          features: ['No tracking', 'Independent index', 'Ad-free results']
        };
      } catch (error) {
        throw new Error(`Brave search failed: ${error instanceof Error ? error.message : String(error)}`);
      }
  • src/index.ts:241-241 (registration)
    Top-level call in server initialization that registers the alternative search engines including search_brave.
    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