← Back to directory
O

Obsidian Web MCP

Community
Secure remote access to your Obsidian vault over HTTPS with OAuth 2.0 authentication.
GitHub source repository ↗
★ 163 Stars Category · Filesystem Popular Source revision cd88fdf06e36
68FMRS · C
Reliability
9/20
Security and permissions
16/20
Maintenance
14/20
Documentation
17/20
Setup experience
12/20

obsidian-web-mcp is a powerful, well-designed secure remote MCP server for Obsidian. It solves the problems of local stdio servers being inaccessible remotely and Obsidian Sync file corruption. Setup requires some technical knowledge but is well-documented. Suitable for advanced users who need cross-device note access.

Read the FMRS scoring method →

obsidian-web-mcp is a secure, remotely accessible MCP server that gives LLMs (like Claude) read/write access to your Obsidian vault from anywhere—your desktop, phone, or any network. It runs over HTTP with OAuth 2.0 authentication and uses a Cloudflare Tunnel to expose the service, so your machine is never directly exposed to the internet. The server reads and writes Markdown files on disk, parses YAML frontmatter, maintains an in-memory index for fast queries, and provides full-text search. Writes are atomic by default, ensuring compatibility with Obsidian Sync.

Tools

vault_read
Read a file, returning content, metadata, and parsed YAML frontmatter.
vault_batch_read
Read multiple files in one call; handles missing files gracefully.
vault_write
Write a file with optional frontmatter merging; creates parent directories.
vault_write_binary
Write an allowed binary file (image/PDF) from base64 content; enforces a media-type allowlist and size cap, writes atomically.
vault_edit
Patch a file with ordered exact text replacements (token-efficient partial edits); supports dry-run diff previews.
vault_append
Append content to the end of a file without resending the existing body; creates the file when missing.
vault_batch_frontmatter_update
Update YAML frontmatter fields on multiple files without touching body content.
vault_search
Full-text search across vault files (uses ripgrep if available, falls back to Python).
vault_search_frontmatter
Query the in-memory frontmatter index by field value, substring, or field existence.
vault_list
List directory contents with recursion depth, glob filtering, and file/dir toggles.
vault_move
Move or rename a file or directory within the vault.
vault_delete
Soft-delete a file by moving it to .trash/ (requires explicit confirmation).
vault_canvas_read
Read an Obsidian .canvas file and return its parsed nodes and edges.
vault_canvas_add_node
Append a node to a .canvas file (created if missing); when id omitted, generates one; preserves unknown node fields.
vault_canvas_add_edge
Append an edge to an existing .canvas file; both endpoints must reference existing node ids.
vault_daily_note_path
Resolve today's daily-note path from the configured folder/format.
vault_daily_note_read
Read today's daily note; returns an error (does not create it) when missing.
vault_daily_note_append
Append to today's daily note, creating it from the template when missing.
vault_analytics_summary
Compact vault-hygiene summary: counts and examples of missing frontmatter, broken wikilinks, near-duplicate tag variants, and non-UTF-8 files.
vault_analytics_findings
Detailed findings for one analytics category (frontmatter_missing, required_frontmatter_missing, broken_wikilinks, suspicious_tag_variants, encoding_issues, oversized_files).

Setup

  1. Clone the repo: git clone https://github.com/jimprosser/obsidian-web-mcp.git. 2. Set environment variables: VAULT_PATH (path to vault), VAULT_MCP_TOKEN (strong token), VAULT_OAUTH_PASSWORD (required for browser login). 3. Run the server with uv run vault-mcp (default binds to 127.0.0.1:8420). 4. In Claude (desktop or mobile), add an integration and enter your server URL; Claude will automatically register via OAuth and connect.

Fit and risk

Best for

  • Users who want secure remote access to their Obsidian vault from any device.
  • Integrating Claude.ai (web) or mobile with Obsidian.
  • Those needing concurrent writes with Obsidian Sync without file conflicts.

Not for

  • Users who only need local stdio MCP access without remote capabilities.
  • Those unwilling to set up an OAuth password or use a Cloudflare Tunnel.
  • Users with extremely high security requirements who distrust network exposure (though encrypted).

Required permissions

  • Read and write files in the directory specified by VAULT_PATH.
  • Perform file operations (move, delete with soft delete to .trash).
  • Create daily notes, write binary files.
  • Maintain an in-memory frontmatter index, potentially modifying index files.
  • Access the network (for Cloudflare Tunnel, heartbeat URLs).

Risks and side effects

  • Credential leakage: exposed OAuth password or MCP token could allow unauthorized access.
  • Path traversal mitigation is not infallible; keep updated.
  • Extension system is not sandboxed; loading untrusted extensions could be risky.
  • Audit log is best-effort and not tamper-evident; records may be dropped at runtime.
  • Misconfiguration may cause the server to fail to start or expose vulnerabilities.

Troubleshooting

  1. Ensure VAULT_OAUTH_PASSWORD is set; otherwise the server refuses to authorize clients.
  2. For remote deployments, set VAULT_MCP_ALLOWED_HOSTS to your hostname, otherwise DNS rebinding protection rejects requests.
  3. Set VAULT_MCP_PUBLIC_URL when using a reverse proxy to pin OAuth redirects.
  4. Ensure VAULT_AUDIT_LOG_PATH resolves outside the vault and is writable, otherwise startup fails.
  5. Verify Cloudflare Tunnel and Caddy configuration, ensuring correct ports.

Use cases

Access your Obsidian notes from anywhere with Claude, including on your phone.
Use Claude.ai (web) or Claude Mobile without a local stdio server.
Safely write concurrently with Obsidian Sync, avoiding file corruption.
Expose your vault as an MCP connector to Claude applications.

Supported clients

Claude DesktopFull support
Claude MobileFull support
Claude WebFull support