Local knowledge base MCP server with BM25 search
Server has 6 tools with explicit Zod schemas and descriptions. All tools are properly registered with inputSchema and descriptions. However, descriptions are generic (avg ~60 chars, well below the 194-char baseline for A+ tools), parameter descriptions lack context about constraints and use cases, and output schemas are not documented. Error handling returns JSON with isError flag but lacks recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications. Naming is verb-first and clear, but descriptions do not explain WHEN to use each tool or dependencies between them.
Delete a document and its chunks from the knowledge base.
Retrieve full content of a specific document.
Add a new document (markdown or plain text) to the knowledge base.
List all indexed documents with metadata.
Semantic search across indexed documents.
Update an existing document and reindex if content changes.
Descriptions are too brief (avg 50 chars vs 194-char baseline). Missing WHEN to use each tool, prerequisites, and dependencies. E.g., 'Semantic search across indexed documents' does not explain when to call this vs list_documents, or that it requires documents to be ingested first.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. delete_document and update_document are marked DESTRUCTIVE/WRITE but lack schema hints to guide agent behavior.
Output schemas are not documented. Tools return JSON text blobs without declaring field types, structure, or pagination. LLMs cannot plan downstream calls or extract data reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
Error messages lack recovery guidance. get_document and delete_document return 'Document not found' but do not suggest calling list_documents or search_knowledge_base to find the correct ID.
Parameter descriptions are missing or minimal. E.g., top_k has a description but no guidance on typical values or performance trade-offs. metadata parameter in ingest_document lacks examples of valid key-value structures.