home / mcp / obsidian mcp server

Obsidian MCP Server

Provides programmatic access to Obsidian vaults via 26 MCP tools for reading, writing, and organizing notes.

Installation
Add the following to your MCP client configuration file.

Configuration

View docs
{
  "mcpServers": {
    "dickiedyce-obsidian-ts-mcp": {
      "command": "node",
      "args": [
        "/absolute/path/to/obsidian-ts-mcp/dist/server.js"
      ],
      "env": {
        "OBSIDIAN_VAULT": "My Vault"
      }
    }
  }
}

You can run the Obsidian Vault MCP server to enable AI agents to read, write, search, and manage notes inside an Obsidian vault by wrapping the official Obsidian CLI. This server exposes a set of 26 tools that interact with Obsidian data through an MCP client such as VS Code or Claude Desktop, making vault automation practical and secure for your workflows.

How to use

To use the Obsidian MCP server, run it in stdio mode and connect your MCP client to it. You will target a specific vault by setting the OBSIDIAN_VAULT environment variable. Once connected, your client can list the available tools, invoke them, and receive results as text blocks. The server handles input validation, invokes the Obsidian CLI, and returns the CLI output for your client to consume.

How to install

Prerequisites must be installed before you set up the MCP server. You need Node.js version 18 or newer, the Obsidian desktop app version 1.12 or newer with CLI enabled, and a Catalyst licence if you plan to access the Obsidian CLI via Catalyst.

Install steps you can follow locally are shown in the example commands.

# Clone the project
git clone https://github.com/dickiedyce/obsidian-ts-mcp.git
# Enter the project directory
cd obsidian-ts-mcp
# Install dependencies
npm install
# Build the server
npm run build

Configuration

Configure your MCP clients to connect to the Obsidian MCP server. You will use a local stdio configuration that launches the Node process running the server script and sets the vault name to target.

{
  "servers": {
    "obsidian": {
      "type": "stdio",
      "command": "node",
      "args": ["/absolute/path/to/obsidian-ts-mcp/dist/server.js"],
      "env": {
        "OBSIDIAN_VAULT": "My Vault"
      }
    }
  }
}

If you are using Claude Desktop, configure the MCP server similarly, pointing to the same server script and vault name.

{
  "mcpServers": {
    "obsidian": {
      "command": "node",
      "args": ["/absolute/path/to/obsidian-ts-mcp/dist/server.js"],
      "env": {
        "OBSIDIAN_VAULT": "My Vault"
      }
    }
  }
}

Environment variables

The following environment variable is used to target the vault by default for every CLI call.

OBSIDIAN_VAULT=My Vault

Security and usage notes

Be aware that the server has full read/write access to every note in the targeted vault. Limit OBSIDIAN_VAULT to only those vaults you are comfortable exposing to AI agents. The stdio transport has no built-in authentication, so access control depends on who can launch the server process. All tool inputs are validated against their defined schemas before execution, and the Obsidian CLI is invoked directly with careful argument handling.

If you store secrets, avoid placing them in environment variables visible to the server process.

Troubleshooting

Common issues and fixes include checking that the Obsidian CLI is accessible on PATH, confirming the Obsidian desktop app is running, and ensuring the vault name matches the exact vault name shown in Obsidian’s vault switcher.

If you encounter a timeout, ensure the Obsidian app is running and accessible by the CLI. If the CLI reports that a catalyst licence is required, acquire a licence from Obsidian and retry.

Notes

This MCP server integrates with a local Obsidian installation and requires that the Obsidian desktop app be running while it is in use.

Available tools

create_note

Create a new note, optionally from a template.

read_note

Read the full markdown contents of a note.

append_to_note

Append content to the end of a note.

prepend_to_note

Prepend content after the frontmatter of a note.

search_vault

Full-text search with Obsidian query syntax.

daily_note

Get or create today's daily note.

daily_append

Append content to today's daily note.

get_vault_info

Return vault name, path, and counts for files/folders.

list_files

List files with optional folder or extension filters.

get_tags

List all tags with occurrence counts.

get_backlinks

Find notes that link to a given note.

get_outline

Provide the heading structure of a note.

set_property

Set a frontmatter property on a note.

read_property

Read a frontmatter property value.

list_tasks

List tasks with filters by status, file, or daily note.

toggle_task

Toggle a task checkbox on or off.

daily_read

Read the contents of today's daily note.

daily_prepend

Prepend content after the frontmatter of the daily note.

list_templates

List all available templates in the vault.

read_template

Read the contents of a template, optionally resolved.

get_links

List all outgoing links from a note.

list_properties

List all frontmatter properties used across the vault.

remove_property

Remove a frontmatter property from a note.

get_tag_info

Get detailed info about a specific tag and its files.

move_file

Move or rename a file; Obsidian updates internal links.

query_base

Query an Obsidian Base and return structured results.