Skip to main content
Glama
SearchProviderFactory.ts1.75 kB
import { BraveSearchProvider } from './BraveSearchProvider.js'; import { SearchProvider, SearchProviderConfig } from './SearchProvider.js'; export class SearchProviderFactory { private static providers = new Map<string, SearchProvider>(); private static defaultProviderName: string | null = null; /** * Add a provider to the registry */ static add(provider: SearchProvider, makeDefault = false): void { const name = provider.getName().toLowerCase(); this.providers.set(name, provider); if (makeDefault || !this.defaultProviderName) { this.defaultProviderName = name; } } /** * Get a provider by name */ static get(name: string): SearchProvider { const provider = this.providers.get(name.toLowerCase()); if (!provider) { throw new Error(`Provider not found: ${name}`); } return provider; } /** * Get the default provider */ static getDefault(): SearchProvider { if (!this.defaultProviderName || this.providers.size === 0) { throw new Error('No search providers available'); } return this.get(this.defaultProviderName); } /** * Set which provider is the default */ static setDefault(name: string): void { // Make sure the provider exists before setting it as default this.get(name); this.defaultProviderName = name.toLowerCase(); } /** * Get names of all available providers */ static getAvailableProviders(): string[] { return Array.from(this.providers.keys()); } /** * Setup with Brave Search (convenience method) */ static setupBraveSearch(config: SearchProviderConfig): void { const brave = new BraveSearchProvider(); brave.initialize(config); this.add(brave, true); } }

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/gabrimatic/mcp-web-search-tool'

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