Reproducible benchmark

Benchmarked against
the whole field.

Every number on this page comes from an open-source harness run on a real 1,955-note vault, 20 runs per query. Nothing here is a marketing estimate — clone the repo and verify each figure on your own vault.

Benchmarked, not claimed

The only Obsidian MCP server
with published numbers.

Measured against 5 popular servers on a real vault — 1,955 notes, 20 runs each. The harness is open source; run it on your own vault and verify every figure.

575× smaller search payloads ~3 KB vs ~1.75 MB via REST
1.4–3.2ms warm search latency in-process MiniSearch index
160× faster than the slowest no subprocess, no HTTP
Warm search latency — median lower is better milliseconds
Seekstone fastest in-process index
2.4ms
obsidian-mcp-server REST API
58ms
mcp-obsidian REST API
81ms
obsidian-mcp-pro fs subprocess
104ms
mcpvault fs subprocess
199ms
obsidian-mcp fs subprocess
219ms
Where it's actually won

Latency is nice. Payload is the point.

The Obsidian Local REST API plugin returns full note content for every search hit — megabytes the model has to read. Seekstone returns short ranked excerpts. Same query, ~575× less to send.

Metric Seekstone REST API plugin
Search payload, median ~3 KB ~1.75 MB
Context tokens per search ~800 ~459,000
Warm search latency 1.4–3.2 ms 58–219 ms
Obsidian app required No Yes
Local REST API plugin required No Yes
Network calls Zero HTTP to localhost
Search matching Fuzzy + prefix Exact / plugin-dependent
Frontmatter write safety Byte-identical Varies

REST and subprocess servers span 58–219 ms median search latency in the chart above; Seekstone's in-process index serves the same queries in 1.4–3.2 ms.

Methodology

Run it yourself.

The harness lives in the Seekstone repo. It runs each query set against every adapter and reports cold (run 1) and warm (runs 2–N) distributions separately — a cheap warm number can't hide a brutal cold start.

  • Vault1,955 notes, mixed frontmatter density — a real working vault, not a synthetic best case.
  • Runs20 per query; warm latency reported as the median (p50).
  • PayloadBytes measured on the actual MCP tool response, not an idealized excerpt.
  • FieldCompared against obsidian-mcp-server, mcp-obsidian, obsidian-mcp-pro, mcpvault, and obsidian-mcp.
Terminal
git clone https://github.com/shaqmughal/seekstone cd seekstone npm install npm run harness -- bench --runs 20
Honest accounting

Where Seekstone isn't the answer.

No tool wins every axis. Here's where the trade-offs land — so you can decide with eyes open.

It keeps an index in memory.

Seekstone builds a small in-process search index (a few MB for a typical vault). If you run many MCP servers at once, that's real RAM the REST plugin offloads to the already-running Obsidian process.

The first query is the slow one.

Cold start warms the index in a few seconds. Every query after that is the millisecond latency you see above — but the very first call pays for the index build.

It's lexical, not semantic.

Search is fuzzy + prefix matching, not embedding-based semantic search. That's deliberate: no local model, no API key, no extra dependency — at the cost of pure meaning-based recall.