@bucketeer/docs-local-mcp-server
Version:
Local MCP Server to query Bucketeer documentation
37 lines (36 loc) • 1.54 kB
JavaScript
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 };
}
},
};
}