MCP Directory

obsidian-mcp-server (cyanheads)

Surgical Obsidian vault editing — read, write, search, and patch notes, tags, and frontmatter.

Verified
stdio (local)
API key
TypeScript

Add to your client

Copy the config for your MCP client and paste it into its config file.

Install / run
npx -y obsidian-mcp-server@latest

Paste into ~/Library/Application Support/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "obsidian-mcp-server-cyanheads": {
      "command": "npx",
      "args": [
        "-y",
        "obsidian-mcp-server@latest"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<your-obsidian-rest-api-key>",
        "OBSIDIAN_BASE_URL": "http://127.0.0.1:27123",
        "OBSIDIAN_VERIFY_SSL": "false"
      }
    }
  }
}

Before you start

  • Bun v1.3.11+ or Node.js v24+ (run via bunx/npx, no global install needed)
  • Obsidian desktop app with the Local REST API community plugin v4.0.0+ installed and enabled
  • An API key generated in the Local REST API plugin settings, supplied as OBSIDIAN_API_KEY
  • The plugin's base URL (defaults to http://127.0.0.1:27123); Obsidian must be running for the server to work
  • Optional: the Omnisearch plugin for BM25-ranked semantic search

About obsidian-mcp-server (cyanheads)

obsidian-mcp-server (by cyanheads) is a stdio/HTTP MCP server that gives AI agents structured, surgical access to an Obsidian vault. It connects to Obsidian through the Local REST API community plugin, so all reads and writes go through your running Obsidian instance rather than touching files on disk directly.

Beyond plain read/write, it specializes in section-aware editing: you can target specific headings, block references, or frontmatter fields and patch them in place instead of rewriting whole notes. Search is multi-mode — plain text, structured JSONLogic queries, and BM25-ranked Omnisearch when that plugin is installed.

It is built for safety in agentic workflows: folder-scoped read/write permissions, a global read-only kill switch, human-in-the-loop confirmation for destructive deletes, and case-forgiving path resolution that offers "did you mean?" suggestions when a note path is slightly off.

Tools & capabilities (14)

obsidian_get_note

Read a note's content and metadata by path

obsidian_list_notes

List notes, optionally scoped to a folder

obsidian_list_tags

Enumerate all tags used across the vault

obsidian_search_notes

Multi-mode search: text, JSONLogic, or BM25 Omnisearch

obsidian_write_note

Create or overwrite a note at a given path

obsidian_append_to_note

Append content to the end of an existing note

obsidian_patch_note

Surgically edit a note targeting a heading or block reference

obsidian_replace_in_note

Find-and-replace text within a note

obsidian_manage_frontmatter

Read and update YAML frontmatter fields

obsidian_manage_tags

Add or remove tags on a note

obsidian_delete_note

Delete a note (with human-in-the-loop confirmation)

obsidian_open_in_ui

Open a note in the Obsidian UI

obsidian_list_commands

List available Obsidian command-palette commands

obsidian_execute_command

Run an Obsidian command (opt-in via OBSIDIAN_ENABLE_COMMANDS)

When to use it

  • Use it when you want an agent to update a specific section of a note (a heading or block) without rewriting the whole file
  • Use it when you need to maintain frontmatter metadata or tags programmatically across many notes
  • Use it when you want AI-assisted search over a large vault using text, structured JSONLogic, or BM25 ranking
  • Use it when you need folder-scoped permissions or read-only mode so an agent can't touch sensitive areas of the vault
  • Use it when you want to append daily-log entries or capture notes into Obsidian from an assistant

Quick setup

  1. 1In Obsidian, install and enable the Local REST API community plugin and copy its API key
  2. 2Add the server to your MCP client config with command `bunx`/`npx` and args `obsidian-mcp-server`
  3. 3Set the OBSIDIAN_API_KEY env var (and OBSIDIAN_BASE_URL if not the default 127.0.0.1:27123)
  4. 4Optionally set OBSIDIAN_READ_PATHS / OBSIDIAN_WRITE_PATHS and OBSIDIAN_READ_ONLY to scope access
  5. 5Restart your MCP client (Claude Desktop, etc.) and confirm the obsidian_* tools appear
  6. 6Verify by calling obsidian_list_notes or obsidian_get_note on a known note

Security notes

Needs the Obsidian Local REST API plugin's bearer token (OBSIDIAN_API_KEY) with full vault access; keep it in env vars. SSL verification is off by default (OBSIDIAN_VERIFY_SSL=false) because the plugin uses a self-signed cert, so only connect to a trusted local host.

obsidian-mcp-server (cyanheads) FAQ

Why does it need the Local REST API plugin instead of reading files directly?

The server talks to Obsidian over HTTP through that plugin, which keeps the vault index and plugins in sync and lets it use features like the command palette and Omnisearch. Obsidian must be running.

How do I authenticate?

Generate an API key in the Local REST API plugin settings and pass it as the OBSIDIAN_API_KEY environment variable. The MCP server itself can optionally add JWT/OAuth, but by default no extra auth is required for stdio.

Can I stop an agent from deleting or overwriting notes?

Yes. Set OBSIDIAN_READ_ONLY for a global write kill switch, scope writes with OBSIDIAN_WRITE_PATHS, and deletes require human-in-the-loop confirmation.

Does it support running Obsidian commands?

Yes, via obsidian_list_commands and obsidian_execute_command, but command execution is opt-in and gated behind the OBSIDIAN_ENABLE_COMMANDS environment variable.

Will it work with both stdio and HTTP clients?

Yes. It supports STDIO (the default for desktop clients) and Streamable HTTP transport for remote/hosted setups.

Alternatives to obsidian-mcp-server (cyanheads)

Self-hosted MCP server for Jira and Confluence Cloud and Server/Data Center.

Verified
stdio (local)
API key
Python
11 tools
Updated 2 months agoRepo

Official Notion server to read, search, create, and update pages and databases in your workspace.

Verified
stdio (local)
API key
TypeScript
9 tools
Updated 4 months agoRepo

Read, search, and edit your Obsidian vault through the Local REST API community plugin.

Verified
stdio (local)
API key
Python
7 tools
Updated 4 months agoRepo