Skip to main content

MCP server for Obsidian vaults — file-based note management with SQLite indexing

Project description

obsidian-vault-sql-mcp

MCP server for Obsidian vaults. Works directly with .md files on disk — no Obsidian app needed. Each vault gets its own SQLite index for fast note lookup by name.

How it works

your-vault/
├── notes/
│   └── my-note.md
├── projects/
│   └── project-alpha.md
└── data-base-sqlite/       ← created automatically
    └── notes.db            ← SQLite index (name → path)

When you call index_vault, the server scans all .md files and stores their names and paths in SQLite. After that, finding a note by name is instant — no directory traversal needed. When you create, move or delete notes through the server, the index updates automatically.

Multiple vaults are supported — each has its own database inside it.


Installation

Requires uv installed.

uvx obsidian-vault-sql-mcp --help

No manual install needed — uvx handles everything on first run.


Configuration

Option A — inline vaults

uvx obsidian-vault-sql-mcp --vault personal=/path/to/my-vault --vault work=/path/to/work-vault

Option B — config file

Create config.json:

{
  "vaults": {
    "personal": "/path/to/my-vault",
    "work": "/path/to/work-vault"
  }
}
uvx obsidian-vault-sql-mcp --config /path/to/config.json

Claude Code setup

Add to your Claude Code MCP settings (~/.claude/settings.json):

{
  "mcpServers": {
    "obsidian": {
      "command": "uvx",
      "args": [
        "obsidian-vault-sql-mcp",
        "--config", "/path/to/config.json"
      ]
    }
  }
}

Or with inline vaults:

{
  "mcpServers": {
    "obsidian": {
      "command": "uvx",
      "args": [
        "obsidian-vault-sql-mcp",
        "--vault", "personal=C:/Users/you/Documents/MyVault"
      ]
    }
  }
}

Tools

Tool Description
list_vaults() List all configured vault names
index_vault(vault_name) Scan vault and build/update SQLite index
list_notes(vault_name) List all indexed notes
search_notes(vault_name, query) Search notes by name (case-insensitive substring)
read_note(vault_name, note_name) Read note content (exact or fuzzy name match)
create_note(vault_name, name, content, folder?) Create a new .md note
update_note(vault_name, note_name, content) Overwrite note content
move_note(vault_name, note_name, new_folder) Move note to a different folder
delete_note(vault_name, note_name) Delete note from disk and index

First-time setup

  1. Start the server with your vault path
  2. Call index_vault("personal") once — this scans all existing notes
  3. Done — all other tools work immediately

After that, index_vault only needs to be called again if you add/move notes outside this server (e.g. manually in Obsidian).


Example usage

search_notes("personal", "yandex")
→ [{ "name": "conspect-yandex-tracker", "relative_path": "notes/conspect-yandex-tracker.md" }]

read_note("personal", "conspect-yandex-tracker")
→ { "content": "# Конспект Yandex Tracker\n..." }

create_note("personal", "new-idea", "# New Idea\nText here", "inbox")
→ { "path": "inbox/new-idea.md" }

move_note("personal", "new-idea", "projects/2026")
→ { "new_path": "projects/2026/new-idea.md" }

License

MIT

Project details


Download files

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

Source Distribution

obsidian_vault_sql_mcp-0.1.0.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

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

obsidian_vault_sql_mcp-0.1.0-py3-none-any.whl (6.9 kB view details)

Uploaded Python 3

File details

Details for the file obsidian_vault_sql_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: obsidian_vault_sql_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for obsidian_vault_sql_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 4eb2a22e034184a538408fcbd73a920dfd084045e5f3f0853a2fc0f9a430e082
MD5 a72c811ef9e59424098b7d5f22174ad7
BLAKE2b-256 d6d651db7f0e379eb4f9dbec8bedf4d14514971ede894fc489998a2cad7382c4

See more details on using hashes here.

File details

Details for the file obsidian_vault_sql_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: obsidian_vault_sql_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 6.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.12 {"installer":{"name":"uv","version":"0.10.12","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for obsidian_vault_sql_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 9fe3765de81e93b6572f973d0a71a606c8e59dcb1837b05f919746a022f9c0ca
MD5 bff41922a973435309179a7773ae1a34
BLAKE2b-256 69287f8a6ad9b3b037f5fbc0b2b2556bd6948d75837f67ab24065e5abc1bc58b

See more details on using hashes here.

Supported by

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