MCP server for semantic search in Obsidian vault using LanceDB
Three tools with complete schemas and basic descriptions. All tools have proper input schemas with types and required fields. Descriptions are present but generic (avg 95 chars, below 194-char baseline). Parameters lack depth: no enums for constrained values, no format specifications, no range constraints. Output schemas undocumented. Error handling returns raw error text without recovery guidance. No tool annotations (readOnlyHint, etc.). Naming is clear and verb-based (search, list, get), following conventions. Missing: parameter-level descriptions for some fields, output schema documentation, actionable error messages.
Get the full content of a specific markdown file from the vault
List all indexed files from the Obsidian vault
Semantic search in the Obsidian vault. Returns relevant document chunks based on natural language query.
Output schemas not documented. LLMs cannot plan downstream calls or extract fields without knowing response structure. obsidian_search returns JSON but format is undocumented; obsidian_list_files and obsidian_get_file similarly lack response schemas.
Error messages lack recovery guidance. CallToolRequestSchema handler returns raw error text (e.g., 'query must be a non-empty string') without suggesting next steps. Per pattern:recovery-guide, errors should guide the LLM: 'query cannot be empty. Provide a natural language search term.'
Parameter descriptions are minimal or missing. 'limit' has a description but no range constraint (code enforces MAX_SEARCH_LIMIT=100, MAX_LIST_LIMIT=500 server-side, not documented). 'file_filter' in obsidian_search lacks detail on matching behavior (partial match, regex, case-sensitive?). Per pattern:constrained-input, constraints must be explicit.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | <=2025-11-25 | v2 |
No tool annotations. Tools lack readOnlyHint, destructiveHint, or idempotentHint. All three are read-only (safe to retry), but this is not declared in the schema. Per current MCP spec (2026-07-28), tool annotations enable safer agent planning.
Pagination not implemented. obsidian_list_files accepts 'limit' but no offset/cursor. If vault has >500 files, agent cannot iterate. Per pattern:paginated-result, tools returning lists must support pagination and return total count or next_cursor.