doc_find
Search and retrieve documents from local storage using queries to find relevant information quickly.
Instructions
Alias of doc.find
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | ||
| top | No | ||
| limit | No |
Implementation Reference
- src/tools/doc.ts:85-99 (handler)Core handler function for document search using MiniSearch index. Loads index, builds if missing, searches, and extracts snippets.export async function docFind(q: string, top = 5) { let idx = loadIndex(); if (!idx) { await indexBuild(CONFIG.sandboxDir); idx = loadIndex(); } if (!idx) return []; const res = idx.mini.search(q, { prefix: true, fuzzy: 0.2, boost: { title: 2 } }).slice(0, top); return res.map((r: any) => { const doc = idx.docs.find(d => d.id === r.id)!; const text = doc.text || ''; const i = text.toLowerCase().indexOf(q.toLowerCase()); const start = Math.max(0, i - 80); const end = Math.min(text.length, i + 80); const snippet = text.slice(start, end).replace(/\s+/g, ' '); return { path: doc.path, score: r.score, snippet }; }); }
- src/server.ts:104-108 (schema)Zod input schema defining parameters for doc_find: query string and optional top/limit numbers.const docFindShape = { q: z.string(), top: z.number().int().optional(), limit: z.number().int().optional() };
- src/server.ts:116-121 (registration)MCP server registration for the 'doc_find' tool, alias calling the docFind handler.server.tool('doc_find', 'Alias of doc.find', docFindShape, OPEN, async ({ q, top, limit }) => { const res = await docFind(q, top ?? limit ?? 5); return { content: [{ type: 'text', text: JSON.stringify(res) }] }; }
- src/server.ts:109-115 (registration)Primary MCP server registration for 'doc.find' tool using the same handler and schema.server.tool('doc.find', 'Search local documents within sandbox directory. Builds index if missing.', docFindShape, OPEN, async ({ q, top, limit }) => { const res = await docFind(q, top ?? limit ?? 5); return { content: [{ type: 'text', text: JSON.stringify(res) }] }; } );
- src/tools/doc.ts:78-83 (helper)Helper function to load the document index from cache file, used by docFind.function loadIndex() { if (!fssync.existsSync(INDEX_PATH)) return null; const payload = JSON.parse(fssync.readFileSync(INDEX_PATH, 'utf-8')); const mini = MiniSearch.loadJSON(payload.index, { fields: ['title','text'], storeFields: ['path','title'] }); return { mini, docs: payload.docs as DocRecord[] }; }