Skip to main content
Glama

Open Search MCP

by flyanima

search_brave

Perform privacy-focused web searches using Brave Search, retrieving up to 20 results with customizable safe search and region settings for precise and secure queries.

Instructions

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

Input Schema

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

Input Schema (JSON Schema)

{ "properties": { "maxResults": { "default": 10, "description": "Maximum number of results to return (1-20)", "maximum": 20, "minimum": 1, "type": "number" }, "query": { "description": "Search query for Brave Search", "type": "string" }, "region": { "default": "us", "description": "Search region (e.g., \"us\", \"uk\", \"de\")", "type": "string" }, "safeSearch": { "default": "moderate", "description": "Safe search setting: strict, moderate, off", "enum": [ "strict", "moderate", "off" ], "type": "string" } }, "required": [ "query" ], "type": "object" }

Implementation Reference

  • The main handler/execute function for the 'search_brave' tool. It processes input arguments, calls the searchBrave helper, formats the response with metadata, and handles errors.
    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 definition for the 'search_brave' tool, specifying parameters like 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'] },
  • Registration of 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 method in AlternativeSearchClient that generates simulated 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 registration call in the main server that invokes registerAlternativeSearchEngines, which registers search_brave 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