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
- 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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4eb2a22e034184a538408fcbd73a920dfd084045e5f3f0853a2fc0f9a430e082
|
|
| MD5 |
a72c811ef9e59424098b7d5f22174ad7
|
|
| BLAKE2b-256 |
d6d651db7f0e379eb4f9dbec8bedf4d14514971ede894fc489998a2cad7382c4
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9fe3765de81e93b6572f973d0a71a606c8e59dcb1837b05f919746a022f9c0ca
|
|
| MD5 |
bff41922a973435309179a7773ae1a34
|
|
| BLAKE2b-256 |
69287f8a6ad9b3b037f5fbc0b2b2556bd6948d75837f67ab24065e5abc1bc58b
|