shaqmughal avatar

Seekstone

shaqmughal/seekstone

Connects Claude directly to your Obsidian vault through filesystem reads and writes, no plugin or running Obsidian app required. Exposes eight tools: full-text search that returns ranked excerpts instead of complete documents, read/create/delete/move operations, targeted append without touching frontmatter, and surgical YAML patches that preserve formatting. The key win is search efficiency. Where REST API wrappers return every matched note in full (megabytes, hundreds of thousands of tokens), this returns ~200-character snippets and lets Claude decide what to read completely. Builds an in-memory index on startup and keeps it live. Works across macOS, Linux, and Windows. If you're burning context on vault searches or want Claude to work with notes while Obsidian is closed, this is the implementation to try.

GitHub stars
35
tools
25
auth
Required
transport
STDIO
env var
1
last updated
Nov 11, 2026

Tools

25 tools

Public tool metadata for what this MCP can expose to an agent.

searchFull-text search. Returns ranked excerpts (default ~120 chars, tunable via `excerptLength`), not full notes. Fuzzy and prefix matching; with `SEEKSTONE_SEMANTIC=1`, `mode: "semantic"`/`"hybrid"` searches by meaning via a local embedding model (nothing leaves your machine).

Full-text search. Returns ranked excerpts (default ~120 chars, tunable via `excerptLength`), not full notes. Fuzzy and prefix matching; with `SEEKSTONE_SEMANTIC=1`, `mode: "semantic"`/`"hybrid"` searches by meaning via a local embedding model (nothing leaves your machine).

No parameter schema in public metadata yet.

query_notesStructured metadata query. Filter by frontmatter key/value predicates (`eq`, `ne`, `contains`, `exists`, `missing`, `gt`/`gte`/`lt`/`lte`), tag, folder, modified time, and size; sort and select the fields you need. Returns compact rows (path + title by default), not note content.

Structured metadata query. Filter by frontmatter key/value predicates (`eq`, `ne`, `contains`, `exists`, `missing`, `gt`/`gte`/`lt`/`lte`), tag, folder, modified time, and size; sort and select the fields you need. Returns compact rows (path + title by default), not note content.

No parameter schema in public metadata yet.

context_packAnswer-ready context for a natural-language question in one call, hard-capped at a byte budget (default 2 KB): ranked excerpts, linked neighbor notes with one-line summaries, and follow-up source paths — replaces a search → read → get_backlinks round-trip loop. Scopable by `fo...

Answer-ready context for a natural-language question in one call, hard-capped at a byte budget (default 2 KB): ranked excerpts, linked neighbor notes with one-line summaries, and follow-up source paths — replaces a search → read → get_backlinks round-trip loop. Scopable by `fo...

No parameter schema in public metadata yet.

read_noteRead the full content of a note by vault-relative path. Supports returning a single section, block, or line range.

Read the full content of a note by vault-relative path. Supports returning a single section, block, or line range.

No parameter schema in public metadata yet.

read_notesRead up to 20 notes (or sections, blocks, line ranges) in one call under a total byte budget (default 16 KB). Over budget, each note is cut to a fair share and marked `truncated`; one bad path returns its own error without failing the batch.

Read up to 20 notes (or sections, blocks, line ranges) in one call under a total byte budget (default 16 KB). Over budget, each note is cut to a fair share and marked `truncated`; one bad path returns its own error without failing the batch.

No parameter schema in public metadata yet.

list_notesList notes, optionally filtered by folder prefix or tag.

List notes, optionally filtered by folder prefix or tag.

No parameter schema in public metadata yet.

list_tagsList all tags in the vault sorted by usage count (or alphabetically).

List all tags in the vault sorted by usage count (or alphabetically).

No parameter schema in public metadata yet.

list_tasksList Markdown checkbox tasks as compact structured rows (path, line, state, text, nearest heading) — vault-wide or filtered by note, folder, tag, state, or modified time. Custom markers (`- [/]`, `- [-]`, …) are first-class single-char states.

List Markdown checkbox tasks as compact structured rows (path, line, state, text, nearest heading) — vault-wide or filtered by note, folder, tag, state, or modified time. Custom markers (`- [/]`, `- [-]`, …) are first-class single-char states.

No parameter schema in public metadata yet.

outline_noteReturn a note's heading and block structure without its full content — cheap navigation before a targeted read.

Return a note's heading and block structure without its full content — cheap navigation before a targeted read.

No parameter schema in public metadata yet.

get_backlinksFind all notes that link to a given note.

Find all notes that link to a given note.

No parameter schema in public metadata yet.

get_linksList all outgoing wikilinks and markdown links from a note.

List all outgoing wikilinks and markdown links from a note.

No parameter schema in public metadata yet.

resolve_noteTurn a note name, path, or frontmatter alias into its canonical vault path(s) — with provenance per match, all candidates when ambiguous, and did-you-mean suggestions when nothing matches.

Turn a note name, path, or frontmatter alias into its canonical vault path(s) — with provenance per match, all candidates when ambiguous, and did-you-mean suggestions when nothing matches.

No parameter schema in public metadata yet.

get_periodic_noteRead today's (or any date's) daily, weekly, monthly, quarterly, or yearly note — path resolved from your vault config, no Obsidian required.

Read today's (or any date's) daily, weekly, monthly, quarterly, or yearly note — path resolved from your vault config, no Obsidian required.

No parameter schema in public metadata yet.

list_writesRecent writes from the journal — seq, timestamp, tool, touched paths, and whether each is still undoable. Metadata only, never note content.

Recent writes from the journal — seq, timestamp, tool, touched paths, and whether each is still undoable. Metadata only, never note content.

No parameter schema in public metadata yet.

create_noteCreate a note (optional frontmatter + body); parent directories are created automatically.

Create a note (optional frontmatter + body); parent directories are created automatically.

No parameter schema in public metadata yet.

delete_noteMove a note to the vault's `.trash/` folder (Obsidian-compatible, restorable). Pass `permanent: true` to skip the trash — the write journal still lets `undo_write` restore it.

Move a note to the vault's `.trash/` folder (Obsidian-compatible, restorable). Pass `permanent: true` to skip the trash — the write journal still lets `undo_write` restore it.

No parameter schema in public metadata yet.

move_noteMove or rename a note — wikilinks and markdown links in other notes that point at it are rewritten so nothing breaks (`rewriteLinks: false` to opt out); destination directories are created automatically.

Move or rename a note — wikilinks and markdown links in other notes that point at it are rewritten so nothing breaks (`rewriteLinks: false` to opt out); destination directories are created automatically.

No parameter schema in public metadata yet.

rename_headingRename a heading in a note — every `[[note#heading]]` wikilink and embed across the vault is rewritten so references keep working (aliases preserved, fenced code blocks left alone).

Rename a heading in a note — every `[[note#heading]]` wikilink and embed across the vault is rewritten so references keep working (aliases preserved, fenced code blocks left alone).

No parameter schema in public metadata yet.

append_noteAppend text to a note body without touching frontmatter.

Append text to a note body without touching frontmatter.

No parameter schema in public metadata yet.

patch_frontmatterSet, update, or delete frontmatter keys without reordering existing keys or changing quote style.

Set, update, or delete frontmatter keys without reordering existing keys or changing quote style.

No parameter schema in public metadata yet.

patch_noteAppend, prepend, or replace text at a heading or block reference (`createIfMissing` to add the section) — frontmatter untouched.

Append, prepend, or replace text at a heading or block reference (`createIfMissing` to add the section) — frontmatter untouched.

No parameter schema in public metadata yet.

replace_in_noteFind and replace text in the note body — literal or regex, case sensitivity, whole-word matching, optional `limit` (replaces **all** occurrences by default), and a dry-run preview.

Find and replace text in the note body — literal or regex, case sensitivity, whole-word matching, optional `limit` (replaces **all** occurrences by default), and a dry-run preview.

No parameter schema in public metadata yet.

append_periodic_noteAppend to today's periodic note, creating it from a template if it doesn't yet exist.

Append to today's periodic note, creating it from a template if it doesn't yet exist.

No parameter schema in public metadata yet.

update_taskSet one checkbox's state by path + line (from `list_tasks`) — rewrites exactly one character, leaving every other byte untouched. An `expectText` guard refuses if the task text changed since it was listed.

Set one checkbox's state by path + line (from `list_tasks`) — rewrites exactly one character, leaving every other byte untouched. An `expectText` guard refuses if the task text changed since it was listed.

No parameter schema in public metadata yet.

undo_writeRevert a journaled write: every file it touched goes back to its byte-identical pre-write state (a multi-file move or heading rename is restored whole; a delete is restored even if it was `permanent`). Defaults to the most recent write; refuses with `undo_conflict` if a file c...

Revert a journaled write: every file it touched goes back to its byte-identical pre-write state (a multi-file move or heading rename is restored whole; a delete is restored even if it was `permanent`). Defaults to the most recent write; refuses with `undo_conflict` if a file c...

No parameter schema in public metadata yet.

Sponsors

Configuration

SEEKSTONE_VAULT*

Absolute path to your Obsidian vault.

Readme

Seekstone

The Obsidian MCP server that needs no plugin, no running Obsidian app — and doesn't blow your context window.

Filesystem-direct · single-digit-ms keyword search · ~26 ms semantic · ~2 KB payloads · 25 tools · macOS · Linux · Windows

seekstone.dev →


View the full README on GitHub

Details

Repository
github.com/shaqmughal/seekstone
Categories
Developer Tools, Documents & Knowledge, Search & Web Crawling
Package
seekstone
Transport
STDIO
Auth
Required
Registry
MCP registry, active

Related Developer Tools MCP servers

View all
1daghis avatarTeamcitydaghis/teamcity-mcpMCP server exposing JetBrains TeamCity CI/CD workflows to AI coding assistants32stars
2beycom avatarOneTool MCPbeycom/onetool-mcpOne MCP for devs incl Brave,Google,Tavily,Context7,AWS,Excalidraw,DB,GitHub,DevTools,Playwright20stars
3amenophis1er avatarElefanteamenophis1er/elefanteOpen, Git-native memory protocol for MCP agents. Portable, versioned, human-editable.15stars
4ghcardhq avatarGitHubCardghcardhq/githubcard-mcpCreate GitHub profile and repository cards for READMEs, link previews and social posts.15stars
5jinning6 avatarNoospherejinning6/noosphereCommunity of Consciousness MCP Server — upload and explore collective wisdom via GitHub.15stars
6xchucx avatarAgent Memoryxchucx/agent-memoryGit-native project memory for AI coding agents: Markdown source of truth, reviewable, secret-safe.15stars