MCP server exposing an Obsidian vault as agent-readable memory: search, read, graph, guarded capture.
Five well-named, read-focused tools with strong descriptions (avg 180 chars) and complete Zod schemas. brain_map, brain_search, brain_read, brain_graph all follow verb_noun naming and include parameter descriptions. brain_capture is the only write tool with proper risk annotation. Schemas use proper type constraints (enums, min/max, defaults). Output structure is implicit (text-based responses) rather than formally documented. Error handling is present but minimal, most errors return plain text without recovery guidance. No tool annotations (readOnlyHint/destructiveHint) despite clear risk profiles.
Append to the capture queue (incoming or proposals). The only write path: canonical notes are never modified. Writes are guarded: you control what gets captured, the model proposes.
Show how a note connects: outgoing wikilinks (resolved and broken), backlinks from other notes, and sibling notes sharing its tags. Use it to widen context around a topic after brain_search finds an entry point.
Boot context for the vault: the root CLAUDE.md and Home.md routing docs, every note with its size and tags, and the tag index. Call this first in a session, then use brain_search / brain_read to pull only what the task needs.
Read a note by name (wikilink style, e.g. 'Meeting Notes') or vault path. Pass `section` to read one heading's content instead of the whole file. Notes larger than the read budget return their outline first, so you never blow the context window on a big note by accident.
Lexical search across every note: title, tags, headings and body. Returns ranked notes with line-numbered snippets so you can decide what to read. Filter by tag or folder to narrow scope. Use this instead of guessing filenames.
Output schemas not formally documented. Tools return TextResult (text-based responses) but LLMs cannot infer structure. No documented field names, types, or pagination for list results.
Error responses lack recovery guidance. brain_search returns 'Invalid query: <error>' and brain_read returns 'No note matches' but do not suggest next steps (e.g., 'Try brain_search() with a partial name').
Tool annotations missing. brain_capture is destructive (write to vault) and brain_map/brain_search/brain_read are read-only, but no destructiveHint or readOnlyHint annotations present in schema registration.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 64 | 2026-07-28+ | v2 |
brain_search result limit capped at 100 but no guidance on pagination or cursor-based continuation. Large result sets may truncate without the LLM knowing more matches exist.
brain_capture lacks confirmation/dry-run pattern for write operations. Agents can append to vault without preview, risking unintended captures.