Personal knowledge base MCP server exposing search, document reading, and browsing capabilities for Obsidian notes, book notes, PDFs, and articles
Neurocache provides 4 well-named tools with clear descriptions (avg 180 chars, within baseline 194). All tools have input schemas with types and descriptions. Naming follows verb_noun convention (search_, get_, list_, save_). However, schema completeness varies: search_knowledge_base and get_document have full parameter details, but save_to_knowledge_base lacks validation constraints (no enum for content_type despite listing valid values). Output schemas are not documented in the source. Error handling is minimal, no recovery guidance or actionable error messages visible. The knowledge base tools form a coherent chain (search → get → save), but missing output documentation and error patterns prevent higher scores.
Read the full content of a document from the knowledge base by its path. Use this after search_knowledge_base returns relevant snippets and you need the complete document. The path should match a relative_path from search results (e.g., "Brain Dump.md", "Books/Deep Work/Notes.md").
List all indexed documents in the knowledge base. Returns document paths, titles, content types, and metadata. Use this to discover what's available before searching or reading specific documents.
Save insights, decisions, or knowledge from the current conversation into the vault for future retrieval.
Search the personal knowledge base using hybrid semantic + keyword search. Returns the most relevant passages from notes, book highlights, articles, and PDFs, with numbered source attribution. Use specific key terms, concepts, author names, or book titles for best results.
Output schemas not documented. Tools return data but LLMs cannot plan downstream calls without knowing response structure (e.g., does search_knowledge_base return similarity scores, obsidian_urls, page numbers?). Code shows RAGSource construction but no formal schema in tool definitions.
save_to_knowledge_base content_type parameter lacks enum constraint. Description lists valid values ('personal_note, book_note, chat_insight') as free text, not as a formal enum. LLMs may hallucinate invalid types.
No error handling guidance. Tools provide no recovery hints (e.g., 'Document not found. Try search_knowledge_base() first.' or 'Invalid content_type, must be one of: personal_note, book_note, chat_insight'). Agents cannot self-correct on failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 65 | 2026-07-28+ | v2 |
search_knowledge_base top_k parameter lacks bounds. Description says 'max 20' but no min/max constraints in schema. LLMs could pass 0, negative, or >20 values.
list_documents and search_knowledge_base lack pagination guidance. No mention of result limits, total counts, or next_cursor. If knowledge base grows large, responses could exhaust context window.