MCP server for LogosDB: local semantic memory, file indexing, and hybrid search for Claude Code, Cursor, and other MCP clients
LogosDB MCP server demonstrates solid definition quality with well-structured tool schemas and comprehensive parameter documentation. All 6 tools have clear descriptions (194 - 392 chars, within baseline range) and properly typed input schemas with detailed parameter annotations. Naming follows verb_noun convention (logosdb_index, logosdb_search, logosdb_delete). However, output schemas are not explicitly documented in the provided source, and error handling guidance is minimal. Tool composition is clean (each tool has one responsibility), but descriptions lack explicit recovery hints for failure cases.
Delete all stored rows in a namespace, or delete specific rows by ID. Useful for cleanup or removing outdated indexed content.
Store a piece of text in a LogosDB namespace for later semantic retrieval. Use this to persist knowledge, code snippets, notes, or any textual context across sessions. Optional `tags` attach structured key/value metadata (strings, numbers, booleans) that can be filtered at search time using the `filter` parameter of logosdb_search.
Read a file OR directory from disk, chunk each file, embed the chunks, and store them in a namespace. When given a directory it walks recursively, skipping hidden paths and node_modules. When a Git working tree is detected the walker honours `.gitignore` (root + nested + `.git/info/exclude` + global excludes); disable with `respect_gitignore=false` or `LOGOSDB_RESPECT_GITIGNORE=0`. Supports any UTF-8 text file (source code, markdown, plain text). With incremental=true, skips files unchanged since last index (mtime+size+chunk_size+chunking), re-indexes modified files after deleting their previous chunk rows, and when indexing a directory removes DB rows for files that disappeared from disk. Chunking strategy is selected automatically per file type ("auto"): code → line-window (~50 lines, 10-line overlap), markdown/rst → section-aware, everything else → paragraph/char. Override with `chunking`.
Get metadata about a namespace: row count, live row count, vector dimension, and list of indexed file paths (if incremental indexing was used).
Output schemas not documented. Tool descriptions state what is returned (e.g., 'most relevant stored texts ranked by similarity') but do not specify the structure of response objects, field types, or pagination metadata. LLMs cannot plan downstream tool calls without knowing response shape.
logosdb_delete lacks error recovery guidance. Description does not explain what happens if namespace does not exist, or how to verify deletion. No mention of dry-run or confirmation step for destructive operation.
logosdb_list_namespaces has empty input schema (no properties). Description is brief (70 chars) and does not explain when to call this tool or what structure it returns.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
List all namespaces (collections) currently stored under LOGOSDB_PATH.
Semantic search over a LogosDB namespace. Returns the most relevant stored texts ranked by similarity. Optional ISO 8601 bounds (`ts_from` / `ts_to`, inclusive) restrict candidates to a timestamp window. Optional `hybrid: true` blends ANN vector similarity with BM25-lite lexical matching (see `fusion`, `lexical_weight`). Optional `filter` applies structured metadata predicates to post-filter results (requires rows indexed with `tags`).
Parameter descriptions in logosdb_search (e.g., 'fusion', 'lexical_weight') assume familiarity with hybrid search concepts (RRF, BM25). LLMs may not understand when to use these parameters or how they interact.
No pagination or result-limiting guidance in logosdb_search. While top_k defaults to 5, description does not state maximum allowed value or warn about context window impact of large result sets.