Skip to main content

obsidian-mcp

CI Secret scan Release Python PyPI License

A focused Model Context Protocol server that gives local AI clients controlled filesystem access to an Obsidian vault. It runs over stdio, works without the Obsidian application or a REST plugin, and supports read-only operation.

Use it to: search notes, read Markdown, browse folders, and optionally create, update, move, or delete notes from any stdio-capable MCP client.

Why Obsidian MCP?

  • Local by design: no HTTP server, API token, or Obsidian plugin.
  • Vault-contained paths: resolved paths and symbolic links cannot escape the configured vault root.
  • Read-only mode: one environment variable disables every write tool.
  • Small surface area: ten predictable tools backed by ordinary Markdown files.
  • Fast search: uses ripgrep when available, with a pure-Python fallback.

[!CAUTION] The configured MCP client can read every Markdown note in the selected vault. Start with OBSIDIAN_READ_ONLY=1, and review your model provider's data-handling policy before exposing sensitive notes.

Quick Start

Requirements: Python 3.11 or newer and uv.

The package is published to PyPI as trsdn-obsidian-mcp (the PyPI name obsidian-mcp is taken by an unrelated project). The import name and the console command stay obsidian_mcp / obsidian-mcp.

export OBSIDIAN_VAULT_PATH="/path/to/your/Obsidian vault"
export OBSIDIAN_READ_ONLY=1

# run without installing
uvx --from trsdn-obsidian-mcp obsidian-mcp

# or install it
pip install trsdn-obsidian-mcp
obsidian-mcp

The server communicates over stdio and is normally started by an MCP client, not from an interactive terminal.

Client Setup

Replace /path/to/your/Obsidian vault in the examples below.

VS Code

Add the server to .vscode/mcp.json:

{
  "servers": {
    "obsidian": {
      "type": "stdio",
      "command": "uvx",
      "args": [
        "--from",
        "trsdn-obsidian-mcp",
        "obsidian-mcp"
      ],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/Obsidian vault",
        "OBSIDIAN_READ_ONLY": "1"
      }
    }
  }
}

Claude Desktop

Add the server under mcpServers in Claude Desktop's configuration:

{
  "mcpServers": {
    "obsidian": {
      "command": "uvx",
      "args": [
        "--from",
        "trsdn-obsidian-mcp",
        "obsidian-mcp"
      ],
      "env": {
        "OBSIDIAN_VAULT_PATH": "/path/to/your/Obsidian vault",
        "OBSIDIAN_READ_ONLY": "1"
      }
    }
  }
}

From a local checkout

git clone https://github.com/trsdn/obsidian-mcp.git
cd obsidian-mcp
uv sync --locked --no-dev
uv run obsidian-mcp

Restart the client after changing its MCP configuration.

Configuration

Variable Required Default Description
OBSIDIAN_VAULT_PATH Yes None Absolute path to an existing Obsidian vault
OBSIDIAN_READ_ONLY No 0 Set to 1, true, or yes to disable write tools

Read-only mode blocks write_note, append_note, move_note, and delete_note. All paths passed to tools are relative to the configured vault.

Available Tools

Tool Access Purpose
vault_info Read Return vault path, access mode, and Markdown file count
list_notes Read List Markdown files under a folder
list_folders Read List subfolders
read_note Read Read a note
search_filename Read Match text or a regular expression against note paths
search_content Read Search note bodies with text or a regular expression
write_note Write Create or overwrite a note
append_note Write Append content, creating the note when necessary
move_note Write Rename or move a note within the vault
delete_note Write Delete a note

Security Model

Obsidian MCP trusts the local process that starts it. It does not provide authentication, user-level authorization, sandboxing, or network controls. Path validation keeps MCP tool operations inside the selected vault, but it cannot restrict another local process that already has filesystem access.

For safer operation:

  1. Use only MCP clients you trust.
  2. Start with OBSIDIAN_READ_ONLY=1.
  3. Consider a dedicated vault for AI-assisted workflows.
  4. Protect the vault with normal operating-system permissions and backups.

See SECURITY.md for the full security policy and private vulnerability reporting process.

Development

uv sync --locked --all-groups
uv run ruff check .
uv run ruff format --check .
uv run pytest --cov=obsidian_mcp --cov-fail-under=85
uv build

Tests use temporary directories and never require a real Obsidian vault. CI runs on Python 3.11, 3.12, 3.13, and 3.14.

Project

Licensed under the MIT License.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

trsdn_obsidian_mcp-0.1.2.tar.gz (7.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

trsdn_obsidian_mcp-0.1.2-py3-none-any.whl (8.0 kB view details)

Uploaded Python 3

File details

Details for the file trsdn_obsidian_mcp-0.1.2.tar.gz.

File metadata

  • Download URL: trsdn_obsidian_mcp-0.1.2.tar.gz
  • Upload date:
  • Size: 7.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for trsdn_obsidian_mcp-0.1.2.tar.gz
Algorithm Hash digest
SHA256 99c9f2304c046a15895da0c4a2fd8dcd301d9891621806cc8575fef235e8b9ef
MD5 0dafacb0462a7f90263f6a03522c3305
BLAKE2b-256 cc0a40710a789ff8d1fed56f574e2dba1e55cfb5bb858beee66aa21c2c3ccb9f

See more details on using hashes here.

Provenance

The following attestation bundles were made for trsdn_obsidian_mcp-0.1.2.tar.gz:

Publisher: release.yml on trsdn/obsidian-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file trsdn_obsidian_mcp-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for trsdn_obsidian_mcp-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 602ac479225471cea6afa6e9b948888d8809e960cf374759bfe89eeac419580d
MD5 0bc6f5a867bba574c9c38ac68116abac
BLAKE2b-256 b812682dca5d8b82ff40cb64d606a44fa68a49b204c2916b64e4f77792635305

See more details on using hashes here.

Provenance

The following attestation bundles were made for trsdn_obsidian_mcp-0.1.2-py3-none-any.whl:

Publisher: release.yml on trsdn/obsidian-mcp

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 files

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page