Skip to main content
Glama

mcp-omnisearch

env.ts5.24 kB
// 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; export const GITHUB_API_KEY = process.env.GITHUB_API_KEY; export const EXA_API_KEY = process.env.EXA_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; export const FIRECRAWL_BASE_URL = process.env.FIRECRAWL_BASE_URL; // 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 }, github: { api_key: GITHUB_API_KEY, base_url: 'https://api.github.com', timeout: 20000, // 20 seconds }, exa: { api_key: EXA_API_KEY, base_url: 'https://api.exa.ai', timeout: 30000, // 30 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 }, exa_answer: { api_key: EXA_API_KEY, base_url: 'https://api.exa.ai', 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: FIRECRAWL_BASE_URL ? `${FIRECRAWL_BASE_URL}/v1/scrape` : 'https://api.firecrawl.dev/v1/scrape', timeout: 60000, // 60 seconds - web scraping can take longer }, firecrawl_crawl: { api_key: FIRECRAWL_API_KEY, base_url: FIRECRAWL_BASE_URL ? `${FIRECRAWL_BASE_URL}/v1/crawl` : 'https://api.firecrawl.dev/v1/crawl', timeout: 120000, // 120 seconds - crawling can take even longer }, firecrawl_map: { api_key: FIRECRAWL_API_KEY, base_url: FIRECRAWL_BASE_URL ? `${FIRECRAWL_BASE_URL}/v1/map` : 'https://api.firecrawl.dev/v1/map', timeout: 60000, // 60 seconds }, firecrawl_extract: { api_key: FIRECRAWL_API_KEY, base_url: FIRECRAWL_BASE_URL ? `${FIRECRAWL_BASE_URL}/v1/extract` : 'https://api.firecrawl.dev/v1/extract', timeout: 60000, // 60 seconds }, firecrawl_actions: { api_key: FIRECRAWL_API_KEY, base_url: FIRECRAWL_BASE_URL ? `${FIRECRAWL_BASE_URL}/v1/scrape` : 'https://api.firecrawl.dev/v1/scrape', timeout: 90000, // 90 seconds - actions can take longer }, exa_contents: { api_key: EXA_API_KEY, base_url: 'https://api.exa.ai', timeout: 30000, // 30 seconds }, exa_similar: { api_key: EXA_API_KEY, base_url: 'https://api.exa.ai', timeout: 30000, // 30 seconds }, }, 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: string[] = []; const available_keys: string[] = []; // 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 (!GITHUB_API_KEY) missing_keys.push('GITHUB_API_KEY'); else available_keys.push('GITHUB_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'); if (!EXA_API_KEY) missing_keys.push('EXA_API_KEY'); else available_keys.push('EXA_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.`, ); } };

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/spences10/mcp-omnisearch'

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