Production-grade MCP server for Obsidian vault management - Transform your vault into an intelligent knowledge system for AI agents
TurboVault demonstrates solid foundational quality with 25 well-named tools covering vault operations, search, analysis, and audit capabilities. Tool naming follows verb_noun conventions consistently (read_note, write_note, delete_note, search, etc.). Most tools have descriptions present. However, several critical gaps undermine production readiness: (1) Parameter descriptions are often minimal or missing detail about constraints and formats. For example, write_note's 'mode' enum is documented but lacks guidance on when to use each mode. (2) Output schemas are not visible in the source code provided, descriptions mention what tools return, but structured output documentation is absent. (3) Error handling and recovery guidance is not evident in tool definitions. (4) Security implications for destructive operations (delete_note, write_note with overwrite mode) lack permission gates or confirmation patterns. (5) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) visible despite turbomcp 3.3.0 supporting them. The server is well-architected (multiple focused crates, proper separation of concerns) and tool coverage is comprehensive for a vault system, but definition quality lacks the LLM-optimization depth expected of A-grade tooling.
Execute multiple coordinated operations as a single atomic batch
Delete a note from the vault
Detect cycles (mutual linking patterns) in the vault
Find all notes that link to a given note
Find all notes that a given note links to
Comprehensive vault health analysis including graph metrics, statistics, and recommendations
Get audit statistics
Get connectivity metrics including link density and connectivity rate
Output schemas not visible in source code. No structured documentation of return types for any tool. LLMs cannot infer what fields to expect in responses, breaking downstream tool chaining and planning.
No tool annotations visible despite turbomcp 3.3.0 support. Missing readOnlyHint, destructiveHint (critical for delete_note, write_note with overwrite), and idempotentHint. LLMs cannot determine which operations are safe to retry.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 67 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Get link density (total links / possible links) for the vault
Get vault context for progressive disclosure and OKF bundles
Get vault statistics including total files, links, orphaned files
List all orphaned notes (no incoming or outgoing links)
List all files in the vault
Move or rename a note and update all wikilinks to it
Query frontmatter using SQL syntax (GlueSQL)
Query audit log with filters
Query note metadata with frontmatter filtering
Quick health check of the vault graph (orphans, broken links, cycles)
Read backlinks for a note
Read forward links from a note
Read a note from the vault with full metadata
Execute a rollback operation
Preview a rollback operation (dry run)
Full-text search across vault notes using Tantivy search engine
Write or create a note in the vault with optional fuzzy matching
Destructive operations (delete_note, write_note with overwrite mode, batch_execute, rollback_execute) lack confirmation patterns or dry-run capabilities. No permission gates visible. Agents can irreversibly destroy vault data without safeguards.
Error handling and recovery guidance absent from tool definitions. No documentation of what errors each tool can raise, whether they are retryable, or what the LLM should do next. Examples: batch_execute can partially fail, are per-operation results returned? What if delete_note hits a permission error?
Parameter descriptions lack constraint documentation. write_note's 'mode' enum (create|overwrite|upsert) has no guidance on when to use each. query_frontmatter_sql accepts arbitrary SQL with no mention of supported schema or injection guards. list_vault_files 'limit' has no min/max bounds.
query_frontmatter_sql and batch_execute accept complex structured input (GlueSQL queries, operation arrays) but descriptions and parameter schemas lack detail. No examples of valid input formats. LLMs will struggle to construct valid payloads.
Audit and security tools (query_log, rollback_execute) lack permission/scope documentation. No evidence that the server enforces who can query logs or execute rollbacks. Agents may be able to reverse operations they shouldn't.
Pagination strategy unclear. search, list_vault_files, query_log, and query_metadata accept 'limit' parameters but no cursor, offset, or next_page guidance visible. How do agents iterate large result sets? Potential context window exhaustion.