Skip to main content
Glama

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
NameRequiredDescriptionDefault
limitNoMaximum results to return
queryYesSearch query

Implementation Reference

  • 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) } ] }; }
  • 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'] } },
  • 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) })); }
  • 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; }

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/hlsitechio/mcp-instruct'

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