Portable knowledge base with web dashboard and MCP server for AI tools. Integrates Obsidian vault indexing, full-text search, embeddings, AI classification, and safety review for destructive actions.
Knowledge Base Server has 14 tools with explicit Zod schemas and descriptions. Naming follows verb_noun convention (kb_search, kb_read, kb_write). However, several critical gaps reduce quality: (1) Output schemas are not documented, handlers return JSON strings without specifying field structure, forcing LLMs to parse unstructured text. (2) Many parameter descriptions lack format/constraint details (e.g., 'tags' accepts 'comma-separated' but no validation shown). (3) Error handling returns generic error messages without recovery guidance. (4) No pagination support on list/search tools despite potentially large result sets. (5) Tool descriptions are adequate (avg ~120 chars) but lack WHEN-to-use context. Strengths: all tools have descriptions; schemas use Zod with type safety; parameter defaults provided; security-sensitive tools (kb_classify, kb_promote) are gated via ADMIN_ONLY_TOOLS set.
Record a bug fix or solution. Captures symptom, root cause, resolution, and commands for future reference.
Record a terminal/coding session summary — what you tried, what worked, what failed, and lessons learned. IMPORTANT: Call this at the end of every significant debugging or implementation session.
Capture a web article or URL into the knowledge base. Use this whenever you find useful information during research.
Capture a YouTube video transcript into the knowledge base. Creates a structured note with metadata.
Auto-classify a document or note using AI. Assigns type, tags, and project based on content analysis.
Ingest a new document into the knowledge base from text content.
Output schemas not documented. Handlers return JSON.stringify() without specifying field structure. LLMs cannot plan downstream calls or extract typed data.
No pagination support on list/search tools. kb_search and kb_list accept 'limit' but no cursor/offset or total_count returned. Large result sets will blow context window.
Error messages lack recovery guidance. Handlers return 'Error: <message>' without suggesting next steps. E.g., kb_read returns 'Document not found' instead of 'Document not found. Try kb_search() or kb_list() to find available documents.'
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | <=2025-11-25 | v2 |
List documents in the knowledge base, optionally filtered by type or tag.
Promote a source document to structured knowledge. Extracts key insights and creates a synthesis note.
Read the full content of a specific document by its ID.
Review a destructive action (e.g. rm, DROP TABLE) against the knowledge base. Returns safety assessment and relevant context.
Search the knowledge base using full-text search. Returns ranked results with highlighted snippets.
Generate a cross-source synthesis from multiple documents. Creates a new note combining insights from related sources.
Show vault indexing status — how many notes are indexed, by type and project.
Write a new note to the Obsidian vault. Use this to capture knowledge, ideas, lessons, or research that should persist across sessions. The note will be synced to all devices via Obsidian Sync.
Parameter descriptions lack format constraints. 'tags' described as 'Comma-separated tags' but no validation shown. 'query' has no length limits or format guidance. LLMs may pass invalid input.
kb_classify and kb_promote descriptions vague. 'Auto-classify' and 'Promote' lack WHEN-to-use context. What does 'promote' mean? What does 'classify' produce? Descriptions should explain intent and output.