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
Use the claude mcp add command — do not add to settings.json directly.
Single vault:
claude mcp add obsidian --scope user -- uvx obsidian-vault-sql-mcp --vault personal=/path/to/vault
Multiple vaults:
claude mcp add obsidian --scope user -- uvx obsidian-vault-sql-mcp \
--vault personal=/path/to/vault \
--vault work=/path/to/work-vault
Via config file:
claude mcp add obsidian --scope user -- uvx obsidian-vault-sql-mcp --config /path/to/config.json
--scope user makes the server available in all your projects. Use --scope project to limit it to the current project.
Verify the connection:
claude mcp get obsidian
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
- Start the server with your vault path
- Call
index_vault("personal")once — this scans all existing notes - 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
Metadata
Release files for obsidian-vault-sql-mcp 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| obsidian_vault_sql_mcp-0.1.1.tar.gz | 5.4 kB | Without provenance | Details for obsidian_vault_sql_mcp-0.1.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| obsidian_vault_sql_mcp-0.1.1-py3-none-any.whl | Python 3 | none | any | Details for obsidian_vault_sql_mcp-0.1.1-py3-none-any.whl |
Total release size: 12.4 kB
Release files / obsidian_vault_sql_mcp-0.1.1.tar.gz
| Download URL | obsidian_vault_sql_mcp-0.1.1.tar.gz |
|---|---|
| Size | 5.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
23ff8bb88b92dd4a51916af5a38caf8beba2051b5a5e553c0c1c1cb8cbf10b20
|
|
BLAKE2b-256 checksum How to use checksums |
a734ed7908d7bb3f7b2b8cc5a2a5c27ca8aeef0f60125a90d4b75d05f5093c74
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / obsidian_vault_sql_mcp-0.1.1-py3-none-any.whl
| Download URL | obsidian_vault_sql_mcp-0.1.1-py3-none-any.whl |
|---|---|
| Size | 6.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e21774f8302b6632b0b5740337e71e9114204a5435f240504a041ebe54435d62
|
|
BLAKE2b-256 checksum How to use checksums |
74c23604add214b1573d16479509ee5209f4ce0b8a463ca4d4b374b3c35b64e6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.1 {"installer":{"name":"uv","version":"0.11.1","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for obsidian-vault-sql-mcp 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.