mcp-omnisearch

by spences10
Verified
  • src
#!/usr/bin/env node import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { validate_config } from './config/env.js'; import { initialize_providers } from './providers/index.js'; import { setup_handlers } from './server/handlers.js'; import { register_tools } from './server/tools.js'; import { readFileSync } from 'node:fs'; import { dirname, join } from 'node:path'; import { fileURLToPath } from 'node:url'; const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const pkg = JSON.parse( readFileSync(join(__dirname, '..', 'package.json'), 'utf8'), ); const { name, version } = pkg; class OmnisearchServer { private server: Server; constructor() { this.server = new Server( { name, version, }, { capabilities: { tools: {}, resources: {}, }, }, ); // Validate environment configuration validate_config(); // Initialize and register providers initialize_providers(); // Register tools and setup handlers register_tools(this.server); setup_handlers(this.server); // Error handling this.server.onerror = (error: Error) => console.error('[MCP Error]', error); process.on('SIGINT', async () => { await this.server.close(); process.exit(0); }); } async run() { const transport = new StdioServerTransport(); await this.server.connect(transport); console.error('Omnisearch MCP server running on stdio'); } } const server = new OmnisearchServer(); server.run().catch(console.error);