MCP server for managing and searching knowledge bases across multiple Obsidian-compatible directories with backup and logging capabilities
Three tools with basic schemas and descriptions, but significant gaps in parameter documentation, error guidance, and LLM-optimized descriptions. Tool names are action-oriented (search_, read_, safe_kb_write) but descriptions are minimal (10-50 chars, well below the 50-200 char baseline for A+ tools). Parameters lack type constraints and validation guidance. Error responses are generic strings rather than actionable recovery hints. No output schemas documented. The write tool has a critical security concern: it accepts arbitrary file paths despite get_safe_path validation, and mode='replace_after_header' has undocumented behavior. Overall structure is functional but falls short of production-grade tool design.
Читает содержимое файла.
КРИТИЧЕСКИ ВАЖНО: Используй ТОЛЬКО этот инструмент для изменения файлов. Он создает бэкапы. mode: 'append' (в конец), 'full_replace' (полная замена), 'replace_after_header' (после заголовка).
Ищет файлы во всех подключенных базах знаний. Используй 1-3 ключевых слова для точного поиска.
Descriptions are too short (10-50 chars vs. 50-200 char baseline). 'Читает содержимое файла' (reads file content) lacks context on when to use it, what it returns, or prerequisites. LLMs cannot reliably select tools without richer descriptions.
No output schemas documented. Callers cannot predict response structure (e.g., does search_notes return JSON array or plain text? What fields?). LLMs must guess, risking parsing errors and wasted tokens.
Error responses are generic strings ('Ошибка поиска: {e}', 'Ошибка чтения: {e}') with no recovery guidance. LLMs cannot determine if errors are retryable, user-fixable, or fatal. No actionable next steps provided.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 42 | <=2025-11-25 | v2 |
Parameter 'mode' in safe_kb_write has no enum constraint. LLMs can hallucinate invalid modes (e.g., 'prepend', 'insert'). Should declare enum: ['append', 'full_replace', 'replace_after_header'].
Parameter 'target_header' in safe_kb_write is marked optional but required when mode='replace_after_header'. Undocumented dependency. LLMs will pass mode='replace_after_header' without target_header, causing silent failures.