Skip to content
Agentmart
Submit a tool

Obsidian MCP Server

Read, write, search, and surgically edit Obsidian notes, tags, and frontmatter.

Connector by cyanheads · GitHub account verified by the MCP Registry

IndexedApache-2.0Local (stdio)Remote (HTTP)★ 701
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/cyanheads-obsidian-mcp-server

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Read, write, search, and surgically edit Obsidian notes, tags, and frontmatter via MCP.

Use cases: note-taking, knowledge-base

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.

Tools
5 read · 1 write · 8 delete
Secrets
1 (API keys, tokens or passwords)
Install scripts
None found
Runs as
Node.js package

Tools by what they do 14

Read from the source code; the running server may list different tools.

Read 5 · Look things up without changing anything.

  • obsidian_get_note
  • obsidian_list_commands
  • obsidian_list_notes
  • obsidian_list_tags
  • obsidian_search_notes

Write 1 · Create, change, send or run things.

  • obsidian_open_in_ui

Delete 8 · Delete, drop, revoke or wipe things.

  • obsidian_append_to_note
  • obsidian_delete_note
  • obsidian_execute_command
  • obsidian_manage_frontmatter
  • obsidian_manage_tags
  • obsidian_patch_note
  • obsidian_replace_in_note
  • obsidian_write_note

Secrets and settings it asks for

Secrets: values you paste in that let it act as you.

  • OBSIDIAN_API_KEY

Other settings (environment variables or headers).

  • MCP_LOG_LEVEL
  • OBSIDIAN_BASE_URL
  • OBSIDIAN_DELETE_ELICITATION
  • OBSIDIAN_ENABLE_COMMANDS
  • OBSIDIAN_OMNISEARCH_URL
  • OBSIDIAN_READ_ONLY
  • OBSIDIAN_READ_PATHS
  • OBSIDIAN_REQUEST_TIMEOUT_MS
  • OBSIDIAN_VERIFY_SSL
  • OBSIDIAN_WRITE_PATHS

Network hosts it talks to 6

  • blacksmithgu.github.io · found in code
  • caseyjhand.com · found in code
  • github.com · found in code
  • json.schemastore.org · found in code
  • jsonlogic.com · found in code
  • myurl.com · found in code

Tools (14)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • obsidian_append_to_notecan change or delete data

    Append content to a note. **Without `section`: appends to the end of the file, or creates the file if it does not exist (your content becomes the full file).** When an existing file does not end in a line break, one is inserted before your content. On a case-insensitive filesystem, a path that differs from an existing note only in letter case fails with `case_variant_exists` (`existingPath` names the note when the folder listing shows exactly one case match). With `section`: appends to the end of that heading/block/frontmatter (on Local REST API v5.0 and later, content appended to a heading is…

  • obsidian_delete_notecan change or delete data

    Description is built at runtime.

  • obsidian_execute_commandcan change or delete data

    Execute an Obsidian command by ID (from `obsidian_list_commands`). Behaviour depends on the command — some are destructive (delete file, close vault), some open UI. Commands run with the same authority as a user invoking them from the keyboard.

  • obsidian_get_noteread-only

    Read a note from the vault — by path, the active file, or a periodic note. Choose a `format` projection: raw body, full object, structural document map, or a single section. A `path` with no exact match but a single case-insensitive match in its folder reads that file instead and reports the path as sent in `requestedPath`; write and delete tools match paths exactly.

  • obsidian_list_commandsread-only

    List the Obsidian command-palette commands available in the active vault, with their IDs and display names. Filter to a subset with the optional `nameRegex` matched against the display name.

  • obsidian_list_notesread-only

    Description is built at runtime.

  • obsidian_list_tagsread-only

    Description is built at runtime.

  • obsidian_manage_frontmattercan change or delete data

    Get, set, or delete a single frontmatter key on a note, atomically. `set` requires a JSON-typed `value` (string, number, boolean, array, or object).

  • obsidian_manage_tagscan change or delete data

    Add, remove, or list a note's tags. Defaults to the frontmatter `tags:` array — set `location` to `inline` or `both` to mutate the note body. `add` ensures the tag is present in the requested location(s); `remove` strips it; `both` reconciles across both representations. Inline `#tag` detection skips what Obsidian indexes no tag in: code (fenced, indented, and inline), wikilinks (`[[...]]` — so a heading anchor, block anchor, or wikilink alias is never read as a tag or rewritten by a removal), images, a markdown link's destination or label (its text is read), HTML blocks and comments (`<!-- … …

  • obsidian_open_in_ui

    Open a file in the Obsidian app UI. By default fails when the path does not exist; the `failIfMissing` flag controls the open-or-create behavior. Opening an existing file needs read access; opening a missing one creates it, so that case needs write access to the path. A path with no exact match but a single case-insensitive match in its folder opens that file instead and reports the path as sent in `requestedPath`.

  • obsidian_patch_notecan change or delete data

    Edit a heading, block reference, or frontmatter field in place — append to, prepend to, or replace the target's body. On Local REST API v5.0 and later, content appended or prepended to a heading is separated from the section’s existing content by a blank line, except a list item appended to a section that ends in a list and has no sub-headings, or prepended to one that opens with a list, which continues that list. Use `obsidian_get_note` with `format: "document-map"` to discover available targets first. Name a heading by its full `Parent::Child` path as the document map lists it, or by a bare …

  • obsidian_replace_in_notecan change or delete data

    Search and replace inside a single note, literally or by regex. Replacements run in array order, each over the previous one's output, and cover the note body only unless `scope` says otherwise — the YAML frontmatter block is left byte-identical by default, because a prose edit that lands in a scalar can silently invalidate the whole block. Use for edits that don't fit `obsidian_patch_note`'s structural targets — e.g., body-wide find-and-replace. Prefer `obsidian_manage_frontmatter` for typed edits to a single property.

  • obsidian_search_notesread-only

    Description is built at runtime.

  • obsidian_write_notecan change or delete data

    Create or overwrite a note. With `section`, replaces just that heading/block/frontmatter section in place — use `obsidian_get_note` with `format: "document-map"` to discover available targets. Name a heading by its full `Parent::Child` path as the document map lists it, or by a bare leaf name matched at any depth. A leaf shared by several headings is rejected with `ambiguous_section`, unless one of them has no parent heading, in which case the write targets that one; a full path that occurs more than once in the note is rejected with `ambiguous_section` too. Whole-file writes fail with `file_e…

Signals

Stars
701
Forks
107
Open issues
10
Last commit
Oct 24, 2026 (5 days ago)
Last release
Oct 26, 2026 (3 days ago)

From GitHub (fetched Oct 24, 2026).

Details

Registry name
io.github.cyanheads/obsidian-mcp-server
Version
3.7.2
Auth
No auth
License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 26, 2026

More from cyanheads

Cite this page

Obsidian MCP Server. Agent Mart. https://agentmart.dev/connectors/cyanheads-obsidian-mcp-server (last updated 2026-10-26)