mcp-omnisearch
Version:
MCP server for integrating Omnisearch with LLMs
74 lines (73 loc) • 3.21 kB
JavaScript
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}`);
});
};