kb_search
Search your knowledge base using semantic queries to find relevant information quickly and accurately.
Instructions
Search knowledge base using semantic search
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results to return | |
| query | Yes | Search query |
Implementation Reference
- src/index.ts:749-760 (handler)Handler for kb_search tool: extracts query and limit, calls KnowledgeManager.search(), limits results, and returns JSON string.case 'kb_search': { const { query, limit = 10 } = args as any; const results = km.search(query).slice(0, limit); return { content: [ { type: 'text', text: JSON.stringify(results, null, 2) } ] }; }
- src/index.ts:252-270 (schema)Tool registration and input schema definition for kb_search.{ name: 'kb_search', description: 'Search knowledge base using semantic search', inputSchema: { type: 'object', properties: { query: { type: 'string', description: 'Search query' }, limit: { type: 'number', default: 10, description: 'Maximum results to return' } }, required: ['query'] } },
- src/KnowledgeManager.ts:262-276 (helper)Core search implementation using Fuse.js fuzzy search on flattened knowledge base items.search(query: string): SearchResult[] { if (!this.fuse) { this.initializeSearch(); } const results = this.fuse!.search(query); return results.map(result => ({ category: result.item.category, field: result.item.field, value: result.item.original || result.item.value, relevance: 1 - (result.score || 0), context: this.getContext(result.item.category, result.item.field) })); }
- src/KnowledgeManager.ts:79-122 (helper)Flattens the entire knowledge base into searchable items for Fuse.js indexing.private flattenKnowledgeBase(): any[] { const items: any[] = []; // Flatten personal info Object.entries(this.kb.personal).forEach(([field, value]) => { if (value !== undefined) { items.push({ category: 'personal', field, value, original: value }); } }); // Flatten professional info Object.entries(this.kb.professional).forEach(([field, value]) => { if (value !== undefined) { items.push({ category: 'professional', field, value, original: value }); } }); // Flatten preferences Object.entries(this.kb.preferences).forEach(([field, value]) => { if (value !== undefined) { items.push({ category: 'preferences', field, value, original: value }); } }); // Flatten projects Object.entries(this.kb.projects).forEach(([field, value]) => { if (value !== undefined) { items.push({ category: 'projects', field, value, original: value }); } }); // Add custom knowledge this.kb.custom.forEach(item => { items.push({ category: 'custom', field: item.key, value: item.value, tags: item.metadata?.tags || [], original: item }); }); return items; }