obsidian-vault-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@obsidian-vault-mcpsearch my vault for 'meeting notes'"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
An MCP server for Obsidian vaults that doesn't hang on iCloud.
Read, search, create and update notes from your assistant — and see exactly how much of the vault iCloud has actually left on disk. Seven tools, no daemon, no index to rebuild.
Why another one
Because the obvious implementation breaks on iCloud Drive, and breaks in the worst possible way: it hangs forever.
If your vault lives in iCloud with Optimize Mac Storage on, macOS evicts note bodies
and leaves dataless placeholders behind. They look like ordinary files — stat reports
a real size — but the first read() blocks while macOS fetches the content over the
network. On an evicted vault, a naive search hits hundreds of those in a row and never
returns. No error, no timeout, just a search that never finishes.
A deadline alone doesn't fix it: a single blocking read never yields control back, so the
between-files clock check is never reached. The only reliable signal is stat's block
count — a dataless placeholder reports blocks == 0 despite a non-zero size.
This server checks that before every read, and bounds total search time on top. Evicted notes are skipped and reported, not waited on:
{
"matches": [ ... ],
"scanned": 112,
"total": 486,
"unavailable": 43,
"incomplete": true,
"note": "Searched 112/486 notes; 43 are not downloaded from iCloud yet and were skipped. Results may be incomplete."
}incomplete: true means "there may be more" — rather than silently returning partial
results as if they were the whole answer. The counts distinguish the two reasons: notes
that weren't materialised (unavailable) versus hitting the time budget.
Reading one specific evicted note fails honestly with "not downloaded from iCloud" instead of blocking.
Related MCP server: obsidian-mcp
Install
Point your MCP client at it:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "obsidian-icloud-mcp"],
"env": {
"OBSIDIAN_VAULTS": "{\"Personal\":\"/Users/you/Documents/Notes\"}"
}
}
}
}Or from source: git clone https://github.com/QEbellavita/obsidian-icloud-mcp and point
command: node, args: [/absolute/path/to/obsidian-icloud-mcp/server.js] at the checkout.
Formerly named obsidian-vault-mcp; renamed because that npm name belongs to an unrelated
project by another author — npx obsidian-vault-mcp is not this server. The old GitHub URL
redirects here.
OBSIDIAN_VAULTS is a JSON object of name → absolute path. Multiple vaults are fine:
"OBSIDIAN_VAULTS": "{\"Personal\":\"/Users/you/Notes\",\"Work\":\"/Users/you/Work/vault\"}"With no vaults configured the server starts and advertises zero tools, rather than crashing in a way your host reports as a broken server.
Tools
Tool | |
| List Markdown notes, optionally under a subdirectory |
| Full-text search with path, line number and excerpt |
| Read one note |
| Create a note; refuses to overwrite |
| Atomic overwrite of an existing note |
| Materialized vs evicted counts, bytes pending, largest evicted notes — stat-only, never blocks |
| Opt-in background downloads for evicted notes, bounded per call |
Safety
The vault boundary is enforced, not assumed:
Paths must be relative and stay inside the configured vault —
../is rejectedSymlinks that resolve outside the vault are rejected, not followed
Only
.mdfiles are read or writtencreaterefuses to clobber;updaterefuses to createWrites are atomic (temp file + rename), so an interrupted write can't truncate a note
Directory walking skips anything that can't hold notes — .git, node_modules,
.obsidian — which also stops a vault that happens to be a source checkout from taking
minutes to list. And it never descends into a stalling bundle directory, where even
readdir can block indefinitely on iCloud.
Tests
npm test23 tests. Nineteen cover the service directly — including every iCloud failure mode above,
driven through an injected fs so eviction is simulated deterministically rather than
depending on your actual sync state. Four drive the real server over a real stdio
transport.
Citing
If this server is useful in your workflow, cite it via the repo's CITATION.cff (GitHub's "Cite this repository" button), or the Zenodo DOI, 10.5281/zenodo.21485168 — a concept DOI that always resolves to the latest archived version.
Licence
MIT — see LICENSE.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceAn MCP server that provides semantic search and vault operations for Obsidian notes, enabling agents to recall and manage notes with provenance and low token usage.Last updated3316ISC
- Alicense-qualityCmaintenanceMCP server that provides read and write access to an Obsidian vault by interacting directly with markdown files on disk. Supports searching, listing, reading, creating, editing, and appending notes without requiring any Obsidian plugins.Last updated3,424ISC
- Flicense-qualityCmaintenanceAn MCP server that provides full read/write access to an Obsidian vault, enabling searching, task management, wiki-link graph analysis, and attachment organization from an MCP client like Claude Code.Last updated
- FlicenseAqualityBmaintenanceA filesystem-based MCP server for Obsidian vaults that enables LLMs to browse, search, read, write, and edit Markdown notes directly on disk without requiring Obsidian to be running.Last updated61,3011
Related MCP Connectors
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Cloud-hosted MCP server for durable AI memory
Markdown-first MCP server for Notion API with 8 composite tools and 39 actions.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/QEbellavita/obsidian-icloud-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server