Exposes your Obsidian vault as a Model Context Protocol server for AI assistants
Strong foundation with 17 well-named tools following verb_noun convention (get_, set_, insert_, delete_, list_, check_, execute_). All tools have descriptions (avg ~80 chars, within baseline 34-392). Input schemas present for all tools with type definitions and parameter descriptions. Tool annotations (readOnlyHint, destructiveHint) correctly applied. Key gaps: output schemas not documented in source; some descriptions lack WHEN/WHY context; no error recovery guidance visible; parameter constraints (e.g., line/ch bounds) not validated in descriptions.
Delete text in a range in the active editor.
Get the vault-relative path of the active file.
Get the full text content of the active editor.
Get the current cursor position in the active editor.
Get the number of lines in the active editor.
Get the current selection in the active editor.
Insert text at a specific position in the active editor.
Output schemas not documented. Tool descriptions state WHAT is returned (e.g., 'Get the full text content') but not the structure (fields, types, pagination). LLMs cannot plan downstream calls without knowing response shape.
Parameter constraints not validated in descriptions. Line/ch parameters accept zero-based indices but no bounds stated (e.g., 'line must be 0 to line_count-1'). Numeric ranges (min/max) missing for all position parameters.
Descriptions lack WHEN/WHY context. 'Get the vault-relative path of the active file' does not explain when to call this vs other path tools, or what 'vault-relative' means to an LLM unfamiliar with Obsidian.
Inferred effective spec: 2025-06-18+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2025-06-18+ | v2 |
Replace text in a range in the active editor.
Set the cursor position in the active editor.
Set the selection in the active editor.
Get the current local datetime as an ISO-8601 string with timezone offset.
Check whether a plugin is installed and enabled.
Describe a Dataview-JS query without executing it.
Execute a Dataview DQL query and return the rendered markdown.
Execute an Obsidian command by id.
List every installed community plugin with its enabled flag.
Describe a Templater template without executing it.
No error recovery guidance. Descriptions do not state what happens on failure (e.g., 'If no active editor, returns error X. Call editor_get_active_path first to verify a file is open.').
responseFormat parameter present on 11 read-only tools but not documented. LLMs do not know when to request 'json' vs 'text' or what the difference is.