search_knowledge
Find specific facts or documentation by searching a knowledge base with semantic capabilities. Use keywords to retrieve relevant information efficiently.
Instructions
Search the knowledge base for relevant information. Use this when you need to find specific facts or documentation.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Search query or keywords | |
| limit | No | Maximum number of results to return |
Implementation Reference
- src/index.ts:111-119 (handler)Core handler function implementing simple keyword search over the knowledge base by filtering entries where content or category matches the query (case-insensitive), then slicing to the requested limit.function searchKnowledge(query: string, limit: number = 5): KnowledgeEntry[] { const lowerQuery = query.toLowerCase(); return knowledgeBase .filter((item) => item.content.toLowerCase().includes(lowerQuery) || item.category.toLowerCase().includes(lowerQuery) ) .slice(0, limit); }
- src/index.ts:14-22 (schema)Type definition for KnowledgeEntry, which structures the data returned by the search tool.interface KnowledgeEntry { id: string; content: string; category: string; metadata: { source: string; date: string; }; }
- src/index.ts:140-154 (schema)Input schema defining the parameters for the search_knowledge tool: required 'query' string and optional 'limit' number.inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query or keywords", }, limit: { type: "number", description: "Maximum number of results to return", default: 5, }, }, required: ["query"], },
- src/index.ts:136-155 (registration)Tool registration in the ListTools response, defining name, description, and inputSchema for search_knowledge.{ name: "search_knowledge", description: "Search the knowledge base for relevant information. Use this when you need to find specific facts or documentation.", inputSchema: { type: "object", properties: { query: { type: "string", description: "Search query or keywords", }, limit: { type: "number", description: "Maximum number of results to return", default: 5, }, }, required: ["query"], }, },
- src/index.ts:251-286 (handler)MCP CallTool handler branch for search_knowledge: validates input, calls searchKnowledge, formats JSON response with results, caches it, and returns MCP content.if (name === "search_knowledge") { const query = args?.query as string; const limit = (args?.limit as number) || 5; if (!query) { throw new Error("Query parameter is required"); } const results = searchKnowledge(query, limit); const responseText = JSON.stringify( { query, resultsCount: results.length, results: results.map((r) => ({ id: r.id, content: r.content, category: r.category, })), }, null, 2 ); // Cache the response setCache(cacheKey, responseText); return { content: [ { type: "text", text: responseText, }, ], }; }