cyanheads/obsidian-mcp-server

Read, write, search, and surgically edit Obsidian vault notes, tags, and frontmatter via MCP. STDIO or Streamable HTTP.

649 ★100 forksTypeScriptUpdated 4d ago

What you need to know

MCP server for reading, writing, searching, and surgically editing Obsidian vault notes, tags, and frontmatter via the Obsidian Local REST API plugin. Ships 14 tools and 3 resources over STDIO or Streamable HTTP.

Install

bunx obsidian-mcp-server@latest (Bun, stdio)
npx -y obsidian-mcp-server@latest (no Bun required, stdio)
MCP_TRANSPORT_TYPE=http OBSIDIAN_API_KEY=... bun run start:http (HTTP transport, listens on http://127.0.0.1:3010/mcp)
docker build -t obsidian-mcp-server . && docker run --rm -e OBSIDIAN_API_KEY=your-key -p 3010:3010 obsidian-mcp-server

Usage

  • Prerequisites: install and enable the Obsidian Local REST API plugin (v4.0.0 through v5.x) in your vault; generate an API key in Settings → Community Plugins → Local REST API and set OBSIDIAN_API_KEY
  • Enable 'Non-encrypted (HTTP) Server' in plugin settings (server defaults to http://127.0.0.1:27123); or set OBSIDIAN_BASE_URL to the HTTPS port 27124
  • Add the server to your MCP client config (stdio with bunx/npx, or http with MCP_TRANSPORT_TYPE=http)
  • Use tools like obsidian_get_note (format: content/full/document-map/section), obsidian_write_note, obsidian_patch_note, obsidian_search_notes (text/JSONLogic/Omnisearch modes)

Key features

  • 14 tools: read notes in 4 projections, list notes/tags/commands, 3-mode search (text, JSONLogic, BM25 Omnisearch), write/append/patch/replace, atomic frontmatter and tag management, delete, open in UI, execute command-palette commands
  • Section-aware surgical editing (PATCH-with-target) against headings, block references, and frontmatter fields
  • Folder-scoped read/write permissions via OBSIDIAN_READ_PATHS / OBSIDIAN_WRITE_PATHS and a global OBSIDIAN_READ_ONLY kill switch; typed path_forbidden denials
  • Opt-in command-palette tools (obsidian_list_commands + obsidian_execute_command) gated behind OBSIDIAN_ENABLE_COMMANDS=true, off by default
  • Optional human-in-the-loop confirmation for destructive deletes; resources obsidian://vault/{+path}, obsidian://tags, obsidian://status; pluggable auth on HTTP (none/jwt/oauth)

Best for

AI agents that manage a personal Obsidian vault curated with an API key — searching, reading, and surgically editing notes/frontmatter with folder-scoped permission controls.

Caveats

  • Requires the Obsidian Local REST API plugin v4.0.0 through v5.x; plugin v6.0 removes the markdown-patch wire format this server pins
  • Periodic-note targets (target: {type: 'periodic'}) need plugin v5.0.1 or earlier — v5.0.2 removed the built-in /periodic/ routes
  • Command-palette tools are off by default because Obsidian commands are opaque and can be destructive
  • Requires Bun v1.3.0+ or Node.js v24+
Platforms: macOS · Linux · WindowsClients: Claude Desktop · Cursor · VS Code · Any MCP client
Documentation ↗

Reviewed 2026-08-07

Topics

ai-toolscyanheadsknowledge-basemcpmodel-context-protocolnote-takingobsidiantypescript
View on GitHub ↗
Stars
649★
Forks
100
Language
TypeScript
License
Apache-2.0
Created
2025-01-23
Last push
2026-08-02