LabscoMCP early access ↗
OleksandrKucherenkoMCP SERVER

Obsidian via REST

Search an Obsidian vault and read notes back over the Local REST API plugin, with automatic failover across several vault URLs.

by OleksandrKucherenko ↗Note-Taking & Personal Knowledge BasesCommunity

LABSCO SUMMARY

Built for the vault that is not on the same host as the agent.

Three tools is a small surface, and read-only. What earns the setup is everything around the connection: parallel URL probing, fastest-wins selection, a 30-second health check and exponential backoff, plus a published container image. If Obsidian runs on Windows and your agent runs in WSL2 or Docker, that is the part that usually breaks, and this is the piece it was written for.

What it is

An MCP server that talks to the Obsidian Local REST API plugin running in the desktop app, so an agent can search your vault and pull a note's content and metadata. Its distinguishing feature is connection handling: give it several candidate URLs and it tests them in parallel, keeps the fastest, re-checks health every 30 seconds, and fails over on its own — which is what makes it survive a WSL2 gateway IP change or a Docker network restart.

What you get

  • A note's content and metadata fetched by vault path — get_note_content
  • Notes found by a query string, and the same query run as a semantic search — obsidian_search, obsidian_semantic_search
  • Any note addressable as a resource under obsidian://{path}, so a client can reference it without a tool call
  • A /health endpoint when HTTP transport is on, reporting transport state and whether auth is enabled

Requirements

Obsidian on the desktop with the Local REST API plugin enabled, and the key it shows you in API_KEY. API_URLS takes a JSON array or semicolon-separated list of vault URLs — that is the recommended form; API_HOST and API_PORT still work as the older single-URL config but give you no failover and no health monitoring. Run it as @oleksandrkucherenko/mcp-obsidian 1.0.3 over stdio, or as the container ghcr.io/oleksandrkucherenko/obsidian-mcp:latest. Over HTTP it binds MCP_HTTP_PORT (default 3000) at MCP_HTTP_PATH (default /mcp), and it only requires an Authorization: Bearer header when you set MCP_HTTP_TOKEN — set it before the port leaves your machine.

Setup effort

One command plus a key — claude mcp add obsidian -- bunx -y @oleksandrkucherenko/mcp-obsidian, then supply credentials