obsidian-mcp
Provides read and write access to a local Obsidian vault, enabling note creation, editing, deletion, full-text search, backlink graph, vault health analysis, and policy enforcement.
Click on "Deploy 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-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.
obsidian-mcp
MCP server exposing an Obsidian vault to LLM clients (Claude, Cursor, Continue, ...).
Why?
A Second Brain should be queryable by AI agents — without shipping your data to a third-party API. This server gives any MCP-compatible client read and write access to a local Obsidian vault via the Model Context Protocol.
Key differentiators (vs. existing Obsidian MCP servers):
Headless & filesystem-native — no Obsidian desktop app required, container-ready
Structured output schemas on every tool — LLMs know exactly what to expect
Vault graph analytics — wikilink graph, orphan detection, outlink tracing
Vault health check — automated quality scoring (broken links, untagged, TODOs, duplicates)
Policy enforcement — write log, raw/ immutability, agent locking, and wiki-index upkeep enforced at the filesystem choke point, not left to client discipline
Ranked full-text search — Whoosh-backed index with Lucene-style query syntax (fields, booleans, phrases, wildcards, fuzzy, ranges, did-you-mean)
AI-optimized tool descriptions — 5-element docstring pattern with actionable error messages
Related MCP server: obsidian-tools
Features
Read and Search notes (full-text, case-insensitive)
Create, Update, Delete notes with proper YAML frontmatter
Append to notes (upsert), patch sections under headings
Frontmatter and tag management (get/set/delete, dedup, case-insensitive)
Daily notes (YYYY-MM-DD format with date validation)
Search & replace (literal + regex with capture groups)
Backlink graph traversal (wikilinks)
Vault structure as a JSON resource
Path traversal protection on all entry points (vault sandbox)
Tag extraction (frontmatter + inline tags)
Structured output schemas for every MCP tool (22/22)
Vault write policies: write log (.vault-write-log.jsonl), raw/ immutability, agent lock (.vault-lock), wiki/index.json upkeep, link checking
archive_note: archive-instead-of-delete with backlink reporting
Incremental Whoosh full-text index (BM25, stemmed, field queries, fuzzy, did-you-mean) with configurable index directory
Vault graph analytics (nodes, edges, stats, broken links)
Vault health scoring (0–100 with actionable issue report)
Documentation
Document | Description |
Architecture walkthrough, code tour, extension guide, Docker/K8s deployment | |
Best practices for AI-optimized MCP tool descriptions | |
Notable changes with added, fixed, and changed items |
Quick Start
pip install -e .
# Point at your real vault
export OBSIDIAN_VAULT_ROOT=/path/to/your/obsidian/vault
# Run (stdio transport)
obsidian-mcpOr use the bundled mock vault (no config needed):
obsidian-mcp # uses examples/mock-vault/Client Integration
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"obsidian": {
"command": "obsidian-mcp",
"env": {
"OBSIDIAN_VAULT_ROOT": "/path/to/your/vault"
}
}
}
}Cursor
Cursor supports MCP from version 0.42+. Configure in ~/.cursor/mcp.json (same format as Claude Desktop).
Any other MCP client
The server runs on stdio. Register it with your client's standard MCP configuration
(command: obsidian-mcp or python3 -m obsidian_mcp.server, env: OBSIDIAN_VAULT_ROOT).
Tools (22)
Tool | Description |
| Read a note (title, tags, metadata, content) |
| Full-text search across title and body |
| List notes, optionally scoped to a folder |
| List note paths only (lightweight) |
| Create a note with frontmatter |
| Update body (frontmatter preserved) |
| Permanently delete a note |
| Append content (create if missing) |
| Get/set/delete a frontmatter key |
| Add/remove/list tags |
| Insert/prepend/replace under a heading |
| Read/append daily notes (YYYY-MM-DD.md) |
| Find/replace in note body |
| Find notes linking via wikilinks |
| Full vault link graph (nodes, edges, stats) |
| Notes with no incoming or outgoing wikilinks |
| Outgoing wikilinks from a note |
| Health score + issue report (0–100) |
| Move note to archive folder; report backlinks |
| Ranked Lucene-style full-text query (fields, fuzzy, ranges) |
| Rebuild the full-text index from all notes |
| Index health: docs indexed vs. vault notes |
Prompts (3)
Prompt | Arguments | Description |
|
| Review daily notes and project context before starting work |
|
| Document accomplishments, decisions, and open questions |
|
| Review and update a specific project's documentation |
Resources (1)
URI | Description |
| Folder/file tree of the vault as JSON |
Architecture
MCP Client ←—MCP stdio—→ obsidian-mcp server → vault.py → Obsidian Vault
(Claude/Cursor/...) (22 tools + 3 prompts) (filesystem) (*.md + YAML)
+ 1 resource │
policies.py ←——————┘ (write log, raw lock,
wiki index, link check)
search_index.py → Whoosh index (BM25)Design decisions:
Filesystem-native instead of REST API: headless, containerizable, no app dependency
Path traversal protection at all entry points (
_resolve(),_resolve_folder())Singleton pattern for Vault instance (testable via
set_vault())Pydantic BaseModel return types for
outputSchemaon all 22 tools
Development
pip install -e ".[dev]"
pytest tests/ # 167 tests, all passingCI runs on Python 3.10, 3.11, and 3.12 with pytest + ruff.
License
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Token-efficient MCP memory for Markdown vaults. Tiered search, GraphRAG, AI memories.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables interaction between LLMs and Obsidian vaults through the Model Context Protocol, supporting secure file operations, content management, and advanced search capabilities.5,495 npm682Apache 2.0
- FlicenseNot gradedqualityDmaintenanceEnables natural language interaction with Obsidian vaults through an MCP server, providing hybrid search, file management, and AI-powered analysis.2-
- FlicenseAqualityAmaintenanceA 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.6797 npm1-
- FlicenseNot gradedqualityAmaintenanceEnables AI clients to read, write, search, and manage files in an Obsidian vault via MCP over SSE, running standalone without the Obsidian desktop app.1-