MCP server that lets any AI agent read, search, write, and connect notes in your Obsidian vault. Runs as a local HTTP endpoint or stdio server.
Obsidian Gate demonstrates solid tool design with clear naming conventions (verb_noun pattern), comprehensive parameter schemas, and thoughtful descriptions. All 9 tools follow consistent structure with explicit input schemas and permission declarations. However, output schemas are not documented, error handling lacks recovery guidance, and some parameter descriptions could be more prescriptive about constraints and formats. Tool composition is well-designed for note management workflows.
Add a [[wikilink]] from one note to another, appending it under a '## Related' section.
Create a new note. Frontmatter from the vault template is applied automatically. Fails if the note already exists.
Find every note that links to the given note via [[wikilinks]] or relative markdown links.
Get the daily note for a date, creating it from the vault template if it does not exist yet.
List all tags used across the vault (frontmatter tags plus inline #tags), with usage counts.
List notes and folders in an Obsidian vault folder. Use this to explore the vault structure before reading.
Output schemas not documented. LLMs cannot plan downstream tool calls or extract structured data without knowing what fields to expect from each tool.
Error handling lacks recovery guidance. Errors return raw messages without actionable next steps (e.g., 'Note not found' should suggest 'Try search_notes() first').
Parameter constraints not fully specified. 'path' parameters lack format guidance (e.g., 'must not start with /', must use forward slashes). 'date' in get_daily_note lacks explicit format validation rules.
Inferred effective spec: 2026-07-28+.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 70 | 2026-07-28+ | v2 |
Read a note's full content, including parsed YAML frontmatter and the markdown body.
Full-text search across every note in the vault. Returns matching notes with line-level snippets, ranked by relevance.
Overwrite an existing note's content. Last write wins — read the note first if you intend to preserve anything.
Destructive operations (create_note, update_note, create_link) lack confirmation or dry-run support. Agents cannot preview changes before committing irreversible writes.
get_tags and get_daily_note descriptions are generic (70 chars). They lack context about when to call them vs alternatives or what structure they return.