mcp-omnisearch
Version:
MCP server for integrating Omnisearch with LLMs
29 lines (28 loc) • 1.7 kB
JavaScript
import { ErrorType, ProviderError, } from '../../common/types.js';
import { FirecrawlActionsProvider } from '../processing/firecrawl_actions/index.js';
import { FirecrawlCrawlProvider } from '../processing/firecrawl_crawl/index.js';
import { FirecrawlExtractProvider } from '../processing/firecrawl_extract/index.js';
import { FirecrawlMapProvider } from '../processing/firecrawl_map/index.js';
import { FirecrawlScrapeProvider } from '../processing/firecrawl_scrape/index.js';
export class UnifiedFirecrawlProvider {
constructor() {
this.name = 'firecrawl_process';
this.description = 'Extract web content with Firecrawl. Modes: scrape (single page), crawl (deep crawl), map (URL discovery), extract (structured data), actions (interactive).';
this.providers = new Map();
this.providers.set('scrape', new FirecrawlScrapeProvider());
this.providers.set('crawl', new FirecrawlCrawlProvider());
this.providers.set('map', new FirecrawlMapProvider());
this.providers.set('extract', new FirecrawlExtractProvider());
this.providers.set('actions', new FirecrawlActionsProvider());
}
async process_content(url, extract_depth = 'basic', mode = 'scrape') {
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);
}
}