Note-Taking · Knowledge Management

Obsidian MCP Server logo

Obsidian MCP Server

cyanheads/obsidian-mcp-server

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

Install

bunx obsidian-mcp-server@latest

Client configuration

{
  "mcpServers": {
    "obsidian-mcp-server": {
      "command": "bunx",
      "args": [
        "obsidian-mcp-server@latest"
      ],
      "env": {
        "MCP_TRANSPORT_TYPE": "<MCP_TRANSPORT_TYPE>",
        "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>",
        "OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>"
      }
    }
  }
}

Environment variables

MCP_TRANSPORT_TYPEMCP_LOG_LEVELOBSIDIAN_API_KEY
GitHub stars
65
Category
Note-Taking, Knowledge Management
License
Apache-2.0
Updated
Oct 6, 2026

About Obsidian MCP Server

Obsidian vault notes over the Local REST API plugin. Read, search, and write notes, edit single headings, blocks, and frontmatter fields in place, and manage tags, with folder-scoped read/write permissions built in. Runs as a stdio process or a local Streamable HTTP server.

Features

  • Typed client for the Obsidian Local REST API plugin; section writes speak markdown-patch 2.0 to plugin v5.0 and later and 1.x to v4.x, chosen from the reported plugin version

  • Heading targets take a full Parent::Child path or a bare leaf name; writes reject an ambiguous one with ambiguous_section and its candidates, unless exactly one match is a top-level heading. On…

  • Folder-scoped read/write permissions, a read-only switch, and an opt-in command-palette pair (see Path policy); server-level instructions on initialize report the active policy

  • Regex inputs are capped (nameRegex at 256 chars, useRegex at 1024) and rejected with regex_unsafe when they nest quantifiers

  • Backlinks have no dedicated tool; obsidian_search_notes in jsonlogic mode finds them with {"regexp": ["\\[\\[Target Note(\\\\?\\||#|\\]\\])", {"var": "content"}]}, which also matches the table-safe…

  • Recovery-guided errors: every declared failure carries a reason, a JSON-RPC code, and a recovery.hint written for that case

  • Size deltas: every mutating tool returns previousSizeInBytes / currentSizeInBytes, so a caller can spot an accidental clobber without a follow-up read

  • Ambiguity surfaced as data: shared heading names return candidates, and tag operations report applied vs. skipped

  • Discriminated output contracts: format on obsidian_get_note, mode on obsidian_search_notes, operation on obsidian_manage_frontmatter and obsidian_manage_tags

Tools (22)

  • obsidian_get_note

    Read a note as raw content, full structured form, document map, or a single section

  • obsidian_list_notes

    List notes and folders under a vault path, recursively, with extension and name filters

  • obsidian_list_tags

    List vault tags with usage counts, most-used first

  • obsidian_search_notes

    Search by text, JSONLogic, or BM25-ranked Omnisearch when that plugin is reachable

  • obsidian_write_note

    Create a note, replace one section, or overwrite a whole file with overwrite: true

  • obsidian_append_to_note

    Append to a note (creating it if missing) or to one heading, block, or frontmatter field

  • obsidian_patch_note

    Append, prepend, or replace against one heading, block reference, or frontmatter field

  • obsidian_replace_in_note

    Literal or regex search-replace inside one note, body-only by default

  • obsidian_manage_frontmatter

    Get, set, or delete one frontmatter key

  • obsidian_manage_tags

    Add, remove, or list a note's tags in frontmatter, inline, or both

  • obsidian_delete_note

    Permanently delete a note, optionally after the user confirms (OBSIDIAN_DELETE_ELICITATION)

  • obsidian_open_in_ui

    Open a file in the Obsidian app, optionally in a new pane

  • obsidian_list_commands

    List command-palette commands (opt-in via OBSIDIAN_ENABLE_COMMANDS)

  • obsidian_execute_command

    Run a command-palette command by ID (opt-in via OBSIDIAN_ENABLE_COMMANDS)

  • target

    is a vault path, the active file, or a periodic note (daily through yearly, optional date); format is content, full, document-map, or section, and full takes…

  • result.format

    discriminates the payload; a section read that matches several headings returns the first and lists every full path in candidates

  • nameRegex

    (≤256 chars) and minCount narrow the set, then tags are ranked by count and capped at limit (default 200, max 10000); hierarchical parents count (work/tasks…

  • result.mode

    discriminates the payload; every mode reports totalCount and pages via nextCursor, and a text hit clipped to maxMatchesPerHit carries truncated and totalMatches

  • get

    returns exists and value (null when absent); set and delete return the full frontmatter after the change, and a delete against unparseable YAML fails with…

  • add

    remove report applied, skipped, and the resulting tags; list returns frontmatter, inline, and all

  • createdIfMissing

    reports which branch ran

  • commandId

    from obsidian_list_commands; returns executed: true, or fails with command_unknown for an unregistered ID

Details on this page are taken from the project's README. Open README

Supported clients

Clients mentioned in this server's README:

View all
Claude Desktop logo

Claude Desktop

Desktop · Freemium · Proprietary

Anthropic's official Claude AI desktop application. Supports MCP servers to extend functionality.

WindowsMacOS
Cursor logo

Cursor

Desktop · Freemium · Proprietary

The first agentic IDE. The Cursor editor truly merges how developers and AI work together, delivering a magical coding experience.

WindowsMacOSLinux
VS Code GitHub Copilot logo

VS Code GitHub Copilot

Desktop · Freemium · MIT

VS Code integrates MCP with GitHub Copilot through agent mode, allowing direct interaction with MCP-provided tools in your agentic coding workflow. Configure servers in Claude Desktop, workspace, or user settings, with guided MCP installation and secure handling of secrets in input variables to avoid leaking hardcoded keys.

WindowsMacOSLinuxWeb

Related MCP servers

More servers
Notion MCP Server (Official) logo

Notion MCP Server (Official)

makenotion/notion-mcp-server

1.5k

For the best experience, use Remote Notion MCP, our official hosted MCP server. This repository is a separate, self-hosted MCP server implementation that is no longer actively maintained or supported. Please use Remote Notion MCP instead.

Note-Taking
MCP Obsidian logo

MCP Obsidian

MarkusPfundstein/mcp-obsidian

750

MCP server to interact with Obsidian via the Local REST API community plugin.

Note-Taking
MCP Notion Server logo

MCP Notion Server

suekou/mcp-notion-server

671

This server targets the Notion API 2026-03-11 and uses the current database/data source model. It exposes MCP tools, prompts, resources, structured tool results, and optional MCP Apps for interactive Notion workflows.

Note-Taking
Obsidian MCP logo

Obsidian MCP

StevenStavrakis/obsidian-mcp

261

A local Model Context Protocol server that lets MCP-compatible assistants safely read and modify explicitly configured Obsidian vaults.

Note-Taking
MCP Apple Notes logo

MCP Apple Notes

RafalWilinski/mcp-apple-notes

187

A Model Context Protocol (MCP) server that enables semantic search and RAG (Retrieval Augmented Generation) over your Apple Notes. This allows AI assistants like Claude to search and reference your Apple Notes during conversations.

Note-Taking
notion_mcp logo

notion_mcp

danhilse/notion_mcp

171

A simple Model Context Protocol (MCP) server that integrates with Notion's API to manage my personal todo list through Claude. This is a basic implementation tailored specifically for my minimalist todo list setup in Notion.

Note-Taking