Skip to main content
Glama

Obsidian MCP

An MCP (Model Context Protocol) server that gives AI assistants (Claude, Cursor, etc.) access to your Obsidian vault. Navigate folders, read notes, create, edit, move, rename and delete them — all from your AI chat.

Requirements

  • Python 3.10+

  • uv (recommended) or pip

  • An Obsidian vault on your local machine

Installation

# Clone the repo
git clone https://github.com/your-username/obsidian-mcp
cd obsidian-mcp

# Copy the env template and set your vault path
cp .env.example .env

Edit .env and set your vault path:

OBSIDIAN_VAULT_PATH="/Users/you/Documents/MyVault"

To find your vault path in Obsidian: Settings → About → Vault path.

Running the server

Development (with MCP Inspector UI)

uv run mcp dev server.py

This opens the MCP Inspector in your browser where you can test all tools interactively.

Production

uv run server.py

Connecting to Cursor

Add this to your .cursor/mcp.json (or Cursor global MCP settings):

{
  "mcpServers": {
    "obsidian": {
      "command": "python",
      "args": ["/absolute/path/to/obsidian-mcp/server.py"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
      }
    }
  }
}

Replace /absolute/path/to/obsidian-mcp/server.py with the actual path to server.py on your machine, and /path/to/your/vault with your vault path (find it in Obsidian: Settings → About → Vault path).

Connecting to Claude Desktop

Add this to your claude_desktop_config.json:

{
  "mcpServers": {
    "obsidian": {
      "command": "uv",
      "args": ["run", "/absolute/path/to/obsidian-mcp/server.py"],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/vault"
      }
    }
  }
}

Available Tools

Tool

Description

list_folder(folder_path)

List subfolders and notes inside a vault folder. Leave empty for vault root.

read_note(note_path)

Read the full content of a note (path relative to vault root).

create_note(note_path, content)

Create a new note. Creates intermediate folders if needed.

update_note(note_path, content)

Replace the full content of an existing note.

delete_note(note_path)

Delete a note from the vault.

rename_note(note_path, new_name)

Rename a note keeping it in the same folder.

move_note(note_path, destination_path)

Move a note to a different folder. Can also rename as part of the move. Creates destination folders if needed.

delete_folder(folder_path, recursive)

Delete a folder. Use recursive=True to delete folders that contain files.

All paths are relative to the vault root, e.g. "Projects/App/roadmap.md".

License

MIT