mcp-omnisearch
Version:
MCP server for integrating Omnisearch with LLMs
23 lines (22 loc) • 1.17 kB
JavaScript
import { ErrorType, ProviderError, } from '../../common/types.js';
import { ExaContentsProvider } from '../processing/exa_contents/index.js';
import { ExaSimilarProvider } from '../processing/exa_similar/index.js';
export class UnifiedExaProcessProvider {
constructor() {
this.name = 'exa_process';
this.description = 'Extract content with Exa. Modes: contents (full content from result IDs), similar (find similar pages).';
this.providers = new Map();
this.providers.set('contents', new ExaContentsProvider());
this.providers.set('similar', new ExaSimilarProvider());
}
async process_content(url, extract_depth = 'basic', mode = 'contents') {
if (!mode) {
throw new ProviderError(ErrorType.INVALID_INPUT, 'Mode parameter is required', this.name);
}
const selectedProvider = this.providers.get(mode);
if (!selectedProvider) {
throw new ProviderError(ErrorType.INVALID_INPUT, `Invalid mode: ${mode}. Valid options: ${Array.from(this.providers.keys()).join(', ')}`, this.name);
}
return selectedProvider.process_content(url, extract_depth);
}
}