obsidian-mcp
Allows reading, writing, searching, and organizing notes in an Obsidian vault directly via the filesystem, with automatic syncing when Obsidian is open.
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-mcp list my notes in the Projects folder"
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
An MCP (Model Context Protocol) server that lets AI coding agents (Claude Code, Codex CLI, etc.) read, write, search, and organize notes in an Obsidian vault. It works directly on the filesystem, so Obsidian doesn't need to be running — Obsidian picks up external changes automatically.
Community project — not affiliated with Obsidian.
Setup
git clone https://github.com/Mochiduki-0715/obsidian-mcp.git
cd obsidian-mcp
npm install
npm run buildConfiguration is done through environment variables:
Variable | Description | Default |
| Absolute path to your vault folder | (required) |
| Folder for daily notes, relative to the vault root |
|
| Folder for templates, relative to the vault root |
|
Related MCP server: Obsidian MCP Server
Registering with agents
Claude Code
claude mcp add --scope user obsidian \
--env OBSIDIAN_VAULT_PATH=$HOME/path/to/your/vault \
-- node /path/to/obsidian-mcp/dist/index.jsCodex CLI
Add to ~/.codex/config.toml:
[mcp_servers.obsidian]
command = "node"
args = ["/path/to/obsidian-mcp/dist/index.js"]
[mcp_servers.obsidian.env]
OBSIDIAN_VAULT_PATH = "/path/to/your/vault"Tools
Tool | Description |
| List notes, newest first; optionally restricted to a subfolder |
| Read a note, returning parsed frontmatter and the markdown body |
| Create a note (pass |
| Append text; with |
| Edit by exact string replacement ( |
| Update YAML frontmatter by key: merge |
| Case-insensitive full-text search, with optional |
| Move/rename a note and rewrite |
| Move a note to the vault's |
| List notes that link to a given note, with file/line/link-type |
| Get or create the daily note for today or a given date |
| Get a note's heading outline (level/text/line) and line count, skipping code fences |
| Create a note from a template in |
Testing
npm testRuns the TypeScript build followed by Node's built-in test runner
(node --test) against the compiled dist/*.test.js files.
Safety
Every path is resolved inside the vault root;
..escapes are rejectedDeleting moves notes to Obsidian's standard
.trash/folder instead of removing themcreate_notenever silently overwrites an existing note (an explicit flag is required)
License
Available Tools
6 toolsappend_noteA
Append text to a note. With 'heading', the text is inserted at the end of that heading's section (the section is created if missing).
Inputs: path (required), text (required), heading, create_if_missing.
create_noteA
Create a new markdown note (parent folders are created automatically). Fails if the note exists unless overwrite is true.
Inputs: path (required), content (required), overwrite.
edit_noteA
Edit a note by exact string replacement. Fails if old_text is not found, or is ambiguous without replace_all.
Inputs: path (required), new_text (required), old_text (required), replace_all.
list_notesA
List markdown notes in the Obsidian vault, sorted by last modified (newest first). Optionally restrict to a subfolder.
Inputs: folder.
read_noteA
Read a note from the vault. Returns the parsed frontmatter and the markdown body.
Inputs: path (required).
update_frontmatterA
Update a note's YAML frontmatter by key: merge set values (added or overwritten) and delete remove keys. The note body is left untouched.
Inputs: path (required), set, remove.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool targets a distinct action: listing, reading, creating, appending, editing, and updating frontmatter. No two tools overlap in purpose.
All tool names follow a consistent verb_noun snake_case pattern (e.g., list_notes, create_note, update_frontmatter).
With 6 tools, the set is well-scoped for managing notes in a vault, covering essential operations without being overwhelming.
The set covers create, read, and update operations, but notably lacks a delete tool, which is a significant gap for full lifecycle management.
Maintenance
Related MCP Connectors
Search and reason over your Obsidian-style Markdown vault, right from ChatGPT.
Connect AI assistants to your GitHub-hosted Obsidian vault to seamlessly access, search, and analy…
Search your Obsidian vault to quickly find notes by title or keyword, summarize related content, a…
Search, read, and safely update Markdown notes in your connected Phasoric knowledge vaults.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to interact with Obsidian vaults through direct filesystem access, supporting note management, lightning-fast search with SQLite indexing, image analysis, tag/link management, and bulk operations.MIT
- FlicenseNot gradedqualityNot gradedmaintenanceEnables AI assistants to read, write, search, and navigate Obsidian vault notes with support for CRUD operations, full-text search, graph navigation, daily notes, and frontmatter management.3,713 npm-
- AlicenseCqualityDmaintenanceEnables AI assistants to search, read, create, and modify Markdown notes in local Obsidian vaults directly through filesystem operations. Supports tag-based discovery and frontmatter parsing without requiring Obsidian to be open, facilitating integration with VS Code Copilot via stdio transport.513 npm4MIT
- AlicenseAqualityAmaintenanceStandalone MCP server for Obsidian vaults - hybrid search (FTS5 + vector + cross-encoder reranking), images and PDFs in agent-readable form, Kanban-aware tasks (Tasks-plugin + Dataview formats), structured memory with topic recall, fine-grained read/write tools for optimal token efficiency, and link graph support. Run locally, self-host, or one-click deploy for remote access. OAuth 2.1.1633636 npm38MIT