mcp-omnisearch
Version:
MCP server for integrating Omnisearch with LLMs
138 lines (137 loc) • 4.71 kB
JavaScript
// Environment variable configuration for the MCP Omnisearch server
// Search provider API keys
export const TAVILY_API_KEY = process.env.TAVILY_API_KEY;
export const BRAVE_API_KEY = process.env.BRAVE_API_KEY;
export const KAGI_API_KEY = process.env.KAGI_API_KEY;
// AI provider API keys
export const PERPLEXITY_API_KEY = process.env.PERPLEXITY_API_KEY;
// Content processing API keys
export const JINA_AI_API_KEY = process.env.JINA_AI_API_KEY;
export const FIRECRAWL_API_KEY = process.env.FIRECRAWL_API_KEY;
// Provider configuration
export const config = {
search: {
tavily: {
api_key: TAVILY_API_KEY,
base_url: 'https://api.tavily.com',
timeout: 30000, // 30 seconds
},
brave: {
api_key: BRAVE_API_KEY,
base_url: 'https://api.search.brave.com/res/v1',
timeout: 10000, // 10 seconds
},
kagi: {
api_key: KAGI_API_KEY,
base_url: 'https://kagi.com/api/v0',
timeout: 20000, // 20 seconds
},
},
ai_response: {
perplexity: {
api_key: PERPLEXITY_API_KEY,
base_url: 'https://api.perplexity.ai',
timeout: 60000, // 60 seconds
},
kagi_fastgpt: {
api_key: KAGI_API_KEY,
base_url: 'https://kagi.com/api/v0/fastgpt',
timeout: 30000, // 30 seconds
},
},
processing: {
jina_reader: {
api_key: JINA_AI_API_KEY,
base_url: 'https://api.jina.ai/v1/reader',
timeout: 30000, // 30 seconds
},
kagi_summarizer: {
api_key: KAGI_API_KEY,
base_url: 'https://kagi.com/api/v0/summarize',
timeout: 30000, // 30 seconds
},
tavily_extract: {
api_key: TAVILY_API_KEY,
base_url: 'https://api.tavily.com',
timeout: 30000, // 30 seconds
},
firecrawl_scrape: {
api_key: FIRECRAWL_API_KEY,
base_url: 'https://api.firecrawl.dev/v1/scrape',
timeout: 60000, // 60 seconds - web scraping can take longer
},
firecrawl_crawl: {
api_key: FIRECRAWL_API_KEY,
base_url: 'https://api.firecrawl.dev/v1/crawl',
timeout: 120000, // 120 seconds - crawling can take even longer
},
firecrawl_map: {
api_key: FIRECRAWL_API_KEY,
base_url: 'https://api.firecrawl.dev/v1/map',
timeout: 60000, // 60 seconds
},
firecrawl_extract: {
api_key: FIRECRAWL_API_KEY,
base_url: 'https://api.firecrawl.dev/v1/extract',
timeout: 60000, // 60 seconds
},
firecrawl_actions: {
api_key: FIRECRAWL_API_KEY,
base_url: 'https://api.firecrawl.dev/v1/scrape',
timeout: 90000, // 90 seconds - actions can take longer
},
},
enhancement: {
kagi_enrichment: {
api_key: KAGI_API_KEY,
base_url: 'https://kagi.com/api/v0/enrich',
timeout: 20000, // 20 seconds
},
jina_grounding: {
api_key: JINA_AI_API_KEY,
base_url: 'https://api.jina.ai/v1/ground',
timeout: 20000, // 20 seconds
},
},
};
// Validate required environment variables
export const validate_config = () => {
const missing_keys = [];
const available_keys = [];
// Check search provider keys
if (!TAVILY_API_KEY)
missing_keys.push('TAVILY_API_KEY');
else
available_keys.push('TAVILY_API_KEY');
if (!BRAVE_API_KEY)
missing_keys.push('BRAVE_API_KEY');
else
available_keys.push('BRAVE_API_KEY');
if (!KAGI_API_KEY)
missing_keys.push('KAGI_API_KEY');
else
available_keys.push('KAGI_API_KEY');
if (!PERPLEXITY_API_KEY)
missing_keys.push('PERPLEXITY_API_KEY');
else
available_keys.push('PERPLEXITY_API_KEY');
if (!JINA_AI_API_KEY)
missing_keys.push('JINA_AI_API_KEY');
else
available_keys.push('JINA_AI_API_KEY');
if (!FIRECRAWL_API_KEY)
missing_keys.push('FIRECRAWL_API_KEY');
else
available_keys.push('FIRECRAWL_API_KEY');
// Log available keys
if (available_keys.length > 0) {
console.error(`Found API keys for: ${available_keys.join(', ')}`);
}
else {
console.error('Warning: No API keys found. No providers will be available.');
}
// Log missing keys as informational
if (missing_keys.length > 0) {
console.warn(`Missing API keys for: ${missing_keys.join(', ')}. Some providers will not be available.`);
}
};