Skip to main content
Glama
obsidian-mcp

obsidian-mcp

by ZethicTech

Obsidian MCP

npm License: MIT Node.js CodeQL CI Conventional Commits CodeRabbit

Access your Obsidian vault from Claude Desktop, Claude Code, and other AI tools that support the Model Context Protocol.

Obsidian 1.12 introduced a powerful CLI, but it isn't directly accessible from GUI-based AI tools like Claude Desktop. This MCP server bridges that gap — giving any MCP-compatible client full access to your vault through 34 tools and prompt templates.

Features: read/write/search notes, manage properties and tasks, run pre-built prompt workflows — all validated with Zod schemas and powered by the official Obsidian CLI.

Prerequisites

  • Obsidian 1.12+ (tested through 1.12.7) with the CLI enabled: Settings → General → Advanced → Command Line Interface → Enable

  • Obsidian app must be running (the CLI communicates with the app)


Related MCP server: Obsidian MCP Server

Setup

Install the package from npm and configure your MCP client to use it. The server runs locally on your machine and communicates with the Obsidian app via its CLI.

How it works

Your machine
┌─────────────────────────────┐
│ Claude Desktop / Claude Code│
│   ↕ stdio (stdin/stdout)    │
│ obsidian-mcp (Node.js)      │ ──CLI──→  Obsidian App (running)
└─────────────────────────────┘

Each user runs the server locally via npx. The server receives tool calls from Claude over stdio and executes Obsidian CLI commands against the running app.

Claude Desktop

Add to your claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "obsidian": {
      "command": "npx",
      "args": ["-y", "@zethictech/obsidian-mcp"],
      "env": {
        "OBSIDIAN_VAULT": "MyVault"
      }
    }
  }
}

Restart Claude Desktop after saving.

Claude Code

claude mcp add obsidian --env OBSIDIAN_VAULT="My Vault" -- npx -y @zethictech/obsidian-mcp

To make it available across all projects, add --scope user:

claude mcp add obsidian --scope user --env OBSIDIAN_VAULT="My Vault" -- npx -y @zethictech/obsidian-mcp

The -- separator is required so the command and its args aren't parsed as claude mcp add flags.

Environment Variables

Variable

Required

Description

OBSIDIAN_VAULT

Yes

Vault name or ID

OBSIDIAN_CLI_PATH

No

Override path to obsidian binary (auto-detected by default)

OBSIDIAN_TIMEOUT

No

CLI timeout in milliseconds (default: 30000)


Available Tools (34)

Read-only tools (20)

Tool

Description

read_note

Read the full content of a note

get_file_info

Get metadata about a file

list_files

List files in the vault

list_folders

List folders in the vault

search

Search the vault for text

search_with_context

Search with surrounding line context

get_backlinks

List incoming links to a note

get_links

List outgoing links from a note

find_unresolved_links

Find broken/unresolved links

find_orphan_notes

Find notes with no incoming links

get_outline

Get heading structure of a note

get_properties

List frontmatter properties

read_property

Read a specific property value

list_tags

List tags in the vault or a note

list_tasks

List tasks (checkboxes)

daily_read

Read today's daily note

daily_path

Get the daily note file path

get_vault_info

Get vault info (name, path, size)

wordcount

Count words/characters in a note

get_help

Get CLI help for any command

Write tools (9)

Tool

Description

create_note

Create a new note

append_note

Append content to a note

prepend_note

Prepend content to a note

set_property

Set a frontmatter property

daily_create

Open/create today's daily note

daily_append

Append to today's daily note

daily_prepend

Prepend to today's daily note

update_task

Toggle or update a task's status

add_bookmark

Add a bookmark

Destructive tools (5)

Tool

Description

move_note

Move a note (updates all links)

rename_note

Rename a note (updates all links)

delete_note

Delete a note (trash or permanent)

remove_property

Remove a frontmatter property

run_command

Run any CLI command directly

run_command is an escape hatch that gives you access to all ~100 CLI commands not covered by the structured tools above (sync, plugins, themes, templates, workspaces, publish, dev tools, etc.). Use get_help to discover available commands.

All tool inputs are validated at runtime using Zod schemas. Invalid inputs return clear error messages before any CLI command is executed.


Prompts

Five pre-built MCP Prompts provide templated workflows. These gather vault data via CLI calls and return structured messages for the LLM.

Prompt

Arguments

Description

analyze_vault

—

Vault health overview: orphan notes, unresolved links, tags

summarize_note

file required

Read and summarize a specific note

find_related

file required

Find related notes via backlinks, links, and shared tags

daily_review

—

Review today's daily note and suggest follow-up actions

suggest_links

file required

Suggest wikilinks to add based on note content


Troubleshooting

Server not starting?

  • Verify OBSIDIAN_VAULT is set and matches your vault name exactly

  • Ensure Obsidian 1.12+ is installed with the CLI enabled

  • Run npx @zethictech/obsidian-mcp --version to verify the package loads

Obsidian app not detected?

  • The CLI requires Obsidian to be running — start the app and try again

  • If Obsidian just launched, wait a few seconds for it to fully initialize

Stale npx cache?

npx --yes @zethictech/obsidian-mcp

License

MIT

Built by Zethic

obsidian-mcp is built and maintained by Zethic, a software and AI engineering studio in Bengaluru.

Need AI assistants built on your team's knowledge? We do agentic AI development — hire dedicated engineers or talk to us about consulting →

Available Tools

34 tools
add_bookmarkA

Add a bookmark to a file, folder, search, or URL.

Inputs: file, path, folder, search, +2 more.

append_noteA

Append content to the end of a note.

Inputs: content (required), file, path, inline.

create_noteA

Create a new note. Can optionally use a template and set initial content.

Inputs: name, path, content, template, +3 more.

daily_appendB

Append content to today's daily note.

Inputs: content (required), inline, paneType, open.

daily_createA
Idempotent

Open/create today's daily note in Obsidian.

Inputs: paneType.

daily_pathA
Read-onlyIdempotent

Get the expected file path for today's daily note.

Inputs: no named parameters.

daily_prependA

Prepend content to today's daily note (after frontmatter).

Inputs: content (required), inline, paneType, open.

daily_readB
Read-onlyIdempotent

Read today's daily note content.

Inputs: no named parameters.

delete_noteA
Destructive

Delete a note. By default moves to trash; use permanent=true to skip trash.

Inputs: file, path, permanent.

find_orphan_notesA
Read-onlyIdempotent

Find notes with no incoming links (orphans).

Inputs: total.

get_file_infoB
Read-onlyIdempotent

Get metadata about a file (size, dates, type).

Inputs: file, path.

get_helpA
Read-onlyIdempotent

Get help for Obsidian CLI commands. Omit command for the full command list.

Inputs: command.

get_outlineA
Read-onlyIdempotent

Get the heading structure/outline of a note.

Inputs: file, path, format, total.

get_propertiesA
Read-onlyIdempotent

List properties (frontmatter) of a note or across the vault.

Inputs: file, path, name, sort, +4 more.

get_vault_infoA
Read-onlyIdempotent

Get information about the current vault (name, path, file count, size).

Inputs: info.

list_filesA
Read-onlyIdempotent

List files in the vault, optionally filtered by folder or extension.

Inputs: folder, ext, total.

list_foldersB
Read-onlyIdempotent

List folders in the vault.

Inputs: folder, total.

list_tagsB
Read-onlyIdempotent

List tags used in the vault or a specific note.

Inputs: file, path, sort, total, +3 more.

list_tasksC
Read-onlyIdempotent

List tasks (checkboxes) in the vault or a specific note.

Inputs: file, path, daily, status, +6 more.

move_noteB
Destructive

Move or rename a note to a new path. Automatically updates all links.

Inputs: to (required), file, path.

prepend_noteB

Prepend content to a note (after frontmatter).

Inputs: content (required), file, path, inline.

read_noteA
Read-onlyIdempotent

Read the full content of a note. Provide either file (wikilink name) or path (exact vault path).

Inputs: file, path.

read_propertyA
Read-onlyIdempotent

Read the value of a specific property from a note.

Inputs: name (required), file, path.

remove_propertyB
DestructiveIdempotent

Remove a frontmatter property from a note.

Inputs: name (required), file, path.

rename_noteA
Destructive

Rename a note (preserves extension). Updates all links.

Inputs: name (required), file, path.

run_commandA
Destructive

Run any Obsidian CLI command directly. Use get_help to discover available commands. This is an escape hatch for the ~80 CLI commands not exposed as dedicated tools (sync, plugins, themes, templates, workspaces, publish, dev tools, etc.).

Inputs: command (required), args, flags.

search_with_contextA
Read-onlyIdempotent

Search the vault with surrounding line context for each match.

Inputs: query (required), path, limit, format, +1 more.

set_propertyB
Idempotent

Set a frontmatter property on a note.

Inputs: name (required), value (required), file, path, +1 more.

update_taskB
Idempotent

Update a task's status (toggle, mark done/todo, or set custom status).

Inputs: file, path, daily, ref, +5 more.

wordcountB
Read-onlyIdempotent

Count words and/or characters in a note.

Inputs: file, path, words, characters.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

    TDQS

    B3.4/5.0

    Scored across 34 tools

    Disambiguation4/5

    Most tools have clearly distinct purposes, such as create_note vs append_note vs prepend_note. However, a few pairs like get_properties (retrieve all properties) and read_property (single property value) could cause minor confusion, but descriptions clarify the difference.

    Naming Consistency5/5

    The naming follows a highly consistent verb_noun pattern (e.g., create_note, delete_note, list_files, search_with_context). The only minor outlier is 'wordcount', but it is still descriptive and does not break the overall pattern.

    Tool Count2/5

    With 34 tools, the server exceeds the typical well-scoped range (3-15) and enters the 'too many' category. While the domain is rich, the large number may overwhelm agents and suggests some tools could be consolidated.

    Completeness4/5

    The tool set covers most CRUD operations for notes, properties, daily notes, links, tasks, and tags. Notable gaps include no explicit folder creation/deletion tools, but the run_command escape hatch provides flexibility, and core workflows are well supported.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Exposes Obsidian vault tools via Model Context Protocol (MCP) server over stdio, HTTP, or SSE transports, enabling AI assistants to read, write, search, and manage vault notes with 28+ built-in tools and CLI bridge integration.
      1
      PolyForm Noncommercial 1.0.0
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables reading, writing, searching, and managing Obsidian vault notes through MCP tools and prompts, allowing AI agents to interact with local knowledge bases.
      -