UNPKG

mcp-omnisearch

Version:

MCP server for integrating Omnisearch with LLMs

26 lines (25 loc) 1.35 kB
import { ErrorType, ProviderError, } from '../../common/types.js'; import { ExaAnswerProvider } from '../ai_response/exa_answer/index.js'; import { KagiFastGPTProvider } from '../ai_response/kagi_fastgpt/index.js'; import { PerplexityProvider } from '../ai_response/perplexity/index.js'; export class UnifiedAISearchProvider { constructor() { this.name = 'ai_search'; this.description = 'AI-powered search with reasoning. Supports perplexity (real-time + reasoning), kagi_fastgpt (quick answers), exa_answer (semantic AI).'; this.providers = new Map(); this.providers.set('perplexity', new PerplexityProvider()); this.providers.set('kagi_fastgpt', new KagiFastGPTProvider()); this.providers.set('exa_answer', new ExaAnswerProvider()); } async search(params) { const { provider, ...searchParams } = params; if (!provider) { throw new ProviderError(ErrorType.INVALID_INPUT, 'Provider parameter is required', this.name); } const selectedProvider = this.providers.get(provider); if (!selectedProvider) { throw new ProviderError(ErrorType.INVALID_INPUT, `Invalid provider: ${provider}. Valid options: ${Array.from(this.providers.keys()).join(', ')}`, this.name); } return selectedProvider.search(searchParams); } }