UNPKG

mcp-omnisearch

Version:

MCP server for integrating Omnisearch with LLMs

74 lines (73 loc) 3.21 kB
import { available_providers } from './tools.js'; export const setup_handlers = (server) => { // Provider Status Resource server.resource({ name: 'provider-status', description: 'Current status of all search providers', uri: 'omnisearch://providers/status', }, async () => { return { contents: [ { uri: 'omnisearch://providers/status', mimeType: 'application/json', text: JSON.stringify({ status: 'operational', providers: { search: Array.from(available_providers.search), ai_response: Array.from(available_providers.ai_response), processing: Array.from(available_providers.processing), enhancement: Array.from(available_providers.enhancement), }, available_count: { search: available_providers.search.size, ai_response: available_providers.ai_response.size, processing: available_providers.processing.size, enhancement: available_providers.enhancement.size, total: available_providers.search.size + available_providers.ai_response.size + available_providers.processing.size + available_providers.enhancement.size, }, }, null, 2), }, ], }; }); // Provider Info Resource Template server.resource({ name: 'provider-info', description: 'Information about a specific search provider', uri: 'omnisearch://search/{provider}/info', }, async (uri) => { // Handle provider info template const providerMatch = uri.match(/^omnisearch:\/\/search\/([^/]+)\/info$/); if (providerMatch) { const providerName = providerMatch[1]; // Check if provider is available const isAvailable = available_providers.search.has(providerName) || available_providers.ai_response.has(providerName); if (!isAvailable) { throw new Error(`Provider not available: ${providerName} (missing API key)`); } return { contents: [ { uri, mimeType: 'application/json', text: JSON.stringify({ name: providerName, status: 'active', capabilities: ['web_search', 'news_search'], rate_limits: { requests_per_minute: 60, requests_per_day: 1000, }, }, null, 2), }, ], }; } throw new Error(`Unknown resource URI: ${uri}`); }); };