Skip to main content
Glama
index.js2.45 kB
#!/usr/bin/env node import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; // Import tools import { kagiSearchFetch, searchToolConfig } from "./tools/search.js"; import { kagiSummarizer, summarizerToolConfig } from "./tools/summarizer.js"; import { kagiAssistant, assistantToolConfig } from "./tools/assistant.js"; /** * Kagi MCP Server using kagi-ken package * Provides search, summarization, and AI assistant capabilities compatible with official Kagi MCP */ class KagiKenMcpServer { constructor() { this.server = new McpServer({ name: "kagi-ken-mcp", version: "1.0.0", }); this.setupTools(); } /** * Register tools with the MCP server */ setupTools() { // Register search tool this.server.registerTool( searchToolConfig.name, { title: "Kagi Search", description: searchToolConfig.description, inputSchema: searchToolConfig.inputSchema, }, async (args) => await kagiSearchFetch(args), ); // Register summarizer tool this.server.registerTool( summarizerToolConfig.name, { title: "Kagi Summarizer", description: summarizerToolConfig.description, inputSchema: summarizerToolConfig.inputSchema, }, async (args) => await kagiSummarizer(args), ); // Register assistant tool this.server.registerTool( assistantToolConfig.name, { title: "Kagi Assistant", description: assistantToolConfig.description, inputSchema: assistantToolConfig.inputSchema, }, async (args) => await kagiAssistant(args), ); } /** * Start the MCP server */ async start() { try { const transport = new StdioServerTransport(); await this.server.connect(transport); console.error("Kagi Ken MCP Server started successfully"); } catch (error) { console.error("Failed to start Kagi Ken MCP Server:", error); process.exit(1); } } } // Handle uncaught exceptions process.on("uncaughtException", (error) => { console.error("Uncaught exception:", error); process.exit(1); }); process.on("unhandledRejection", (reason, promise) => { console.error("Unhandled rejection at:", promise, "reason:", reason); process.exit(1); }); // Start the server const server = new KagiKenMcpServer(); await server.start();

Latest Blog Posts

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/z23cc/kagi-mcp'

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