UNPKG

@bucketeer/docs-local-mcp-server

Version:
37 lines (36 loc) 1.54 kB
import { z } from 'zod'; import { config } from '../../config/index.js'; export function createSearchTool(searchService) { return { name: 'search_docs', description: 'Search for relevant documents in the documentation.', inputSchema: z.object({ query: z.string().describe('The search query.'), limit: z .number() .optional() .default(config.searchLimitDefault) .describe('Maximum number of results to return.'), }), execute: async ({ query, limit }) => { try { console.error(`[MCP Tool] Received search_docs request: "${query}" (limit: ${limit})`); const results = await searchService.search(query, limit || config.searchLimitDefault); const responseContent = { type: 'text', text: JSON.stringify(results, null, 2), }; return { content: [responseContent] }; } catch (error) { console.error(`[MCP Tool] Error processing search_docs request for "${query}":`, error); const errorMessage = error instanceof Error ? error.message : String(error); const errorContent = { type: 'text', text: JSON.stringify({ error: `Search failed: ${errorMessage}` }), }; return { content: [errorContent], isError: true }; } }, }; }