A fast, Rust-based MCP server for Obsidian vaults
15 tools with complete input schemas and descriptions. Naming follows verb_noun pattern (read-note, create-note, edit-note, delete-note, search-vault, list-vaults). Descriptions are concise (50-150 chars) and action-oriented. All parameters have type definitions and descriptions. However, output schemas are not documented, LLMs cannot infer what fields to expect from responses. Error handling guidance is absent. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications. Parameter descriptions lack format constraints (e.g., 'window' object structure undefined). No pagination guidance for search-vault or list-vaults despite potential for large result sets.
Add tags to a note's frontmatter.
Create a new directory in the vault.
Create a new note in the specified vault with Markdown content.
Delete a note from the vault.
Edit a note: append, prepend, replace, or find_and_replace. Set `targetType`/`target` to edit one heading's section or one `^block-id` instead of the whole note — the rest of the file is then left untouched.
Read or write a note's YAML frontmatter.
List all available vaults.
Output schemas not documented. LLMs cannot infer response structure (fields, types, pagination). Forces agents to guess what data is available for downstream tool calls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications (READ_ONLY, WRITE, DESTRUCTIVE). Agents cannot distinguish safe from dangerous operations without reading descriptions.
Parameter 'window' in read-note lacks structure definition. Object type declared but no properties documented. LLMs cannot construct valid window objects.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2025-06-18+ | v2 |
Move or rename a note within the vault.
List recently modified notes or notes matching a query.
Read a note. `view: "outline"` returns just its headings, block references and frontmatter keys — what `edit-note` can be aimed at — instead of the whole text.
Remove tags from a note's frontmatter.
Rename a tag across all notes in a vault.
Search the vault for notes by content, filename, or tags.
Get information about a vault including note count and structure.
Get wikilinks from a note or find notes that link to a target.
search-vault and list-vaults lack pagination guidance. No limit, offset, or cursor parameters visible. Large result sets risk context window exhaustion.
No error recovery guidance. Descriptions do not explain what to do if a note is not found, vault is locked, or operation fails. Agents cannot self-correct.