Skip to main content
Glama
Obsidian MCP Server
by Storks

Obsidian MCP Server

MCP server that gives LLM agents access to your Obsidian vault through the official Obsidian CLI. Read, create, search notes, manage tasks, tags, properties, plugins and more — all via the Model Context Protocol.

Important: This server requires the Obsidian desktop app running on your machine. The CLI is a bridge to the app's internal API — it does not work without a running Obsidian instance.

Prerequisites

1. Obsidian 1.12+

You need Obsidian version 1.12 or later (with the latest installer — 1.12.4+).

Download: https://obsidian.md/download

2. Enable CLI in Obsidian

  1. Open Obsidian

  2. Go to Settings → General

  3. Enable Command line interface

  4. Follow the prompt to register the CLI

  5. Restart your terminal for PATH changes to take effect

Verify it works:

obsidian --version

Windows users: You also need the Obsidian.com terminal redirector file, available to Catalyst members on the Obsidian Discord.

3. Python 3.11+ and uv

Install uv if you don't have it:

# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

# Windows
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

Related MCP server: Obsidian CLI MCP Server

Installation

Clone the repository and install dependencies:

git clone https://github.com/Storks/obsidian-mcp.git
cd obsidian-mcp
uv sync

Verify everything is set up:

uv run obsidian-mcp

The server communicates via stdio, so you won't see any output — it's waiting for MCP messages. Press Ctrl+C to stop.

Connecting to LLM agents

The server uses stdio transport. Every MCP client needs to know how to start the process: run uv with the project directory and the obsidian-mcp command.

Below are configuration examples for popular tools. Replace /path/to/obsidian-mcp with the actual path where you cloned the repository.


Claude Code

Add via CLI:

claude mcp add obsidian-mcp -- uv run --directory /path/to/obsidian-mcp obsidian-mcp

Or add manually to .mcp.json in your project root (or ~/.claude.json for global access):

{
  "mcpServers": {
    "obsidian-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"]
    }
  }
}

Restricting available tools

The server exposes 54 tools — you may not need all of them. Claude Code lets you allow or deny specific tools via .claude/settings.json (project-level) or ~/.claude/settings.json (global). Tools follow the naming pattern mcp__obsidian-mcp__<tool_name>.

Example: read-only mode — deny any tool that can modify the vault:

{
  "permissions": {
    "deny": [
      "mcp__obsidian-mcp__obsidian_create",
      "mcp__obsidian-mcp__obsidian_append",
      "mcp__obsidian-mcp__obsidian_prepend",
      "mcp__obsidian-mcp__obsidian_delete",
      "mcp__obsidian-mcp__obsidian_move",
      "mcp__obsidian-mcp__obsidian_rename",
      "mcp__obsidian-mcp__obsidian_property_set",
      "mcp__obsidian-mcp__obsidian_property_remove",
      "mcp__obsidian-mcp__obsidian_task",
      "mcp__obsidian-mcp__obsidian_bookmark",
      "mcp__obsidian-mcp__obsidian_base_create",
      "mcp__obsidian-mcp__obsidian_plugin_enable",
      "mcp__obsidian-mcp__obsidian_plugin_disable",
      "mcp__obsidian-mcp__obsidian_plugin_install",
      "mcp__obsidian-mcp__obsidian_plugin_reload",
      "mcp__obsidian-mcp__obsidian_workspace_save",
      "mcp__obsidian-mcp__obsidian_workspace_load"
    ]
  }
}

Example: allow only specific tools — useful when you want a minimal set:

{
  "permissions": {
    "allow": [
      "mcp__obsidian-mcp__obsidian_read",
      "mcp__obsidian-mcp__obsidian_search",
      "mcp__obsidian-mcp__obsidian_search_context",
      "mcp__obsidian-mcp__obsidian_files",
      "mcp__obsidian-mcp__obsidian_tags",
      "mcp__obsidian-mcp__obsidian_outline"
    ]
  }
}

Any tool not listed in allow will require manual confirmation before each use.


OpenCode

Add to opencode.json in your project root (or ~/.config/opencode/opencode.json for global access):

{
  "mcp": {
    "obsidian-mcp": {
      "type": "local",
      "command": ["uv", "run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"],
      "enabled": true
    }
  }
}

Codex (OpenAI)

Add via CLI:

codex mcp add obsidian-mcp -- uv run --directory /path/to/obsidian-mcp obsidian-mcp

Or add manually to ~/.codex/config.toml:

[mcp_servers.obsidian-mcp]
command = "uv"
args = ["run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"]

Configuration

Environment variables (all optional):

Variable

Default

Description

OBSIDIAN_PATH

obsidian

Path to the Obsidian CLI binary

OBSIDIAN_TIMEOUT

30

Command timeout in seconds

OBSIDIAN_VAULT

—

Default vault name (if not specified per-call)

Example with environment variables in .mcp.json:

{
  "mcpServers": {
    "obsidian-mcp": {
      "type": "stdio",
      "command": "uv",
      "args": ["run", "--directory", "/path/to/obsidian-mcp", "obsidian-mcp"],
      "env": {
        "OBSIDIAN_VAULT": "My Notes",
        "OBSIDIAN_TIMEOUT": "60"
      }
    }
  }
}

Available tools (54)

Every tool accepts an optional vault parameter to target a specific vault.

Files (12)

Tool

Description

obsidian_create

Create or overwrite a file

obsidian_read

Read file contents

obsidian_append

Append content to a file

obsidian_prepend

Prepend content after frontmatter

obsidian_delete

Delete a file

obsidian_move

Move or rename a file

obsidian_rename

Rename a file

obsidian_open

Open a file in Obsidian

obsidian_file_info

Show file info

obsidian_files

List files in the vault

obsidian_folder_info

Show folder info

obsidian_folders

List folders in the vault

Search (2)

Tool

Description

obsidian_search

Search vault for text

obsidian_search_context

Search with matching line context

Daily Notes (5)

Tool

Description

obsidian_daily

Open today's daily note

obsidian_daily_path

Get daily note file path

obsidian_daily_read

Read daily note contents

obsidian_daily_append

Append content to daily note

obsidian_daily_prepend

Prepend content to daily note

Tasks (2)

Tool

Description

obsidian_tasks

List tasks in the vault

obsidian_task

Show or update a task

Tags (2)

Tool

Description

obsidian_tags

List tags in the vault

obsidian_tag

Get tag info

Properties (4)

Tool

Description

obsidian_properties

List properties in the vault

obsidian_property_set

Set a property on a file

obsidian_property_remove

Remove a property from a file

obsidian_property_read

Read a property value

Tool

Description

obsidian_backlinks

List backlinks to a file

obsidian_links

List outgoing links from a file

obsidian_unresolved

List unresolved links

obsidian_orphans

List files with no incoming links

obsidian_deadends

List files with no outgoing links

Outline (1)

Tool

Description

obsidian_outline

Show headings for a file

Templates (1)

Tool

Description

obsidian_templates

List available templates

Bookmarks (2)

Tool

Description

obsidian_bookmarks

List bookmarks

obsidian_bookmark

Add a bookmark

Vault (1)

Tool

Description

obsidian_vault

Show vault info

Word Count (1)

Tool

Description

obsidian_wordcount

Count words and characters

Plugins (7)

Tool

Description

obsidian_plugins

List installed plugins

obsidian_plugins_enabled

List enabled plugins

obsidian_plugin_info

Get plugin info

obsidian_plugin_enable

Enable a plugin

obsidian_plugin_disable

Disable a plugin

obsidian_plugin_install

Install a community plugin

obsidian_plugin_reload

Reload a plugin

Workspace (4)

Tool

Description

obsidian_workspace

Show workspace tree

obsidian_workspaces

List saved workspaces

obsidian_workspace_save

Save current layout

obsidian_workspace_load

Load a saved workspace

Bases (3)

Tool

Description

obsidian_bases

List .base files in the vault

obsidian_base_create

Create a new item in a base

obsidian_base_query

Query a base and return results

History (2)

Tool

Description

obsidian_diff

Compare file versions

obsidian_history

List file versions

Development

# Install dev dependencies
uv sync

# Run tests
uv run pytest tests/ -v

License

MIT

Available Tools

54 tools
obsidian_appendC

Append content to a file (default: active file)

Inputs: content (required), vault, file, path, +1 more.

obsidian_base_createC

Create a new item in a base.

Inputs: vault, file, path, view, +4 more.

obsidian_base_queryD

Query a base and return results.

Inputs: vault, file, path, view, +1 more.

obsidian_basesC

List all .base files in the vault.

Inputs: vault.

obsidian_bookmarkD

Add a bookmark.

Inputs: vault, file, subpath, folder, +3 more.

obsidian_bookmarksD

List bookmarks.

Inputs: vault, total, verbose.

obsidian_createC

Create or overwrite a file

Inputs: vault, name, path, content, +4 more.

obsidian_dailyD

Open daily note.

Inputs: vault, paneType.

obsidian_daily_appendC

Append content to daily note.

Inputs: content (required), vault, paneType, inline, +1 more.

obsidian_daily_pathB

Get daily note path.

Inputs: vault.

obsidian_daily_prependC

Prepend content to daily note.

Inputs: content (required), vault, paneType, inline, +1 more.

obsidian_daily_readC

Read daily note contents.

Inputs: vault.

obsidian_deadendsB

List files with no outgoing links.

Inputs: vault, total.

obsidian_deleteC

Delete a file (default: active file, trash by default)

Inputs: vault, file, path, permanent.

obsidian_diffD

List or compare versions from file recovery and Sync.

Inputs: vault, file, path, from_, +2 more.

obsidian_file_infoC

Show file info (default: active file)

Inputs: vault, file, path.

obsidian_filesC

List files in the vault

Inputs: vault, folder, ext, total.

obsidian_folder_infoD

Show folder info

Inputs: path (required), vault, info.

obsidian_foldersC

List folders in the vault

Inputs: vault, folder, total.

obsidian_historyC

List versions from file recovery.

Inputs: vault, file, path.

obsidian_moveC

Move or rename a file (default: active file)

Inputs: to (required), vault, file, path.

obsidian_openD

Open a file

Inputs: vault, file, path, newtab.

obsidian_orphansB

List files with no incoming links.

Inputs: vault, total.

obsidian_outlineC

Show headings for the current file.

Inputs: vault, file, path, format, +1 more.

obsidian_plugin_disableC

Disable a plugin.

Inputs: id (required), vault, filter.

obsidian_plugin_enableD

Enable a plugin.

Inputs: id (required), vault, filter.

obsidian_plugin_infoD

Get plugin info.

Inputs: id (required), vault.

obsidian_plugin_installC

Install a community plugin.

Inputs: id (required), vault, enable.

obsidian_plugin_reloadC

Reload a plugin (for developers).

Inputs: id (required), vault.

obsidian_pluginsC

List installed plugins.

Inputs: vault, filter, versions.

obsidian_plugins_enabledC

List enabled plugins.

Inputs: vault, filter, versions.

obsidian_prependC

Prepend content after frontmatter (default: active file)

Inputs: content (required), vault, file, path, +1 more.

obsidian_propertiesC

List properties in the vault.

Inputs: vault, file, path, name, +5 more.

obsidian_property_readC

Read a property value from a file (default: active file).

Inputs: name (required), vault, file, path.

obsidian_property_removeB

Remove a property from a file (default: active file).

Inputs: name (required), vault, file, path.

obsidian_property_setC

Set a property on a file (default: active file).

Inputs: name (required), value (required), vault, type, +2 more.

obsidian_readB

Read file contents (default: active file)

Inputs: vault, file, path.

obsidian_renameC

Rename a file (default: active file)

Inputs: name (required), vault, file, path.

obsidian_search_contextC

Search with matching line context. Returns grep-style path:line: text output.

Inputs: query (required), vault, path, limit, +2 more.

obsidian_tagD

Get tag info.

Inputs: name (required), vault, total, verbose.

obsidian_tagsC

List tags in the vault.

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

obsidian_taskD

Show or update a task.

Inputs: vault, ref, file, path, +6 more.

obsidian_tasksC

List tasks in the vault.

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

obsidian_templatesD

List templates.

Inputs: vault, total.

obsidian_unresolvedC

List unresolved links in vault.

Inputs: vault, total, counts, verbose.

obsidian_vaultD

Show vault info.

Inputs: vault, info.

obsidian_wordcountC

Count words and characters (default: active file).

Inputs: vault, file, path, words, +1 more.

obsidian_workspaceC

Show workspace tree.

Inputs: vault, ids.

obsidian_workspace_loadD

Load a saved workspace.

Inputs: name (required), vault.

obsidian_workspacesC

List saved workspaces.

Inputs: vault, total.

obsidian_workspace_saveC

Save current layout as workspace.

Inputs: vault, name.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    C2.6/5.0

    Scored across 54 tools

    Disambiguation3/5

    The tools cover distinct Obsidian operations like file management, plugins, properties, and search, but there is notable overlap in some areas. For example, obsidian_create and obsidian_append/prepend both modify files, and obsidian_rename and obsidian_move both handle file renaming, which could cause confusion. However, descriptions help clarify specific use cases.

    Naming Consistency5/5

    All tool names follow a consistent 'obsidian_' prefix with snake_case and clear verb_noun patterns, such as obsidian_create, obsidian_read, and obsidian_plugins_list. This uniformity makes the set predictable and easy to navigate, with no deviations in naming conventions.

    Tool Count2/5

    With 54 tools, the count is excessive for an Obsidian server, leading to a bloated and potentially overwhelming interface. While Obsidian is feature-rich, many tools could be consolidated or omitted without losing functionality, making the set feel heavy and less user-friendly.

    Completeness5/5

    The tool set provides comprehensive coverage of Obsidian's core features, including file CRUD operations, plugin management, property handling, search, and workspace controls. There are no obvious gaps; agents can perform full lifecycle tasks from creation to deletion and advanced functions like version history and tagging.

    Maintenance

    ActivityInactive
    ResponsivenessLimited data

    Related MCP Connectors

    Related MCP Servers