obsidian-mcp
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 notes for references to quantum computing"
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 server that gives an AI agent read and write access to a folder of Markdown notes. Point it at an Obsidian vault, a Logseq graph, or any notes directory.
Four tools, no dependencies beyond the MCP SDK, one file.
search_notes full-text search with surrounding context
read_note read one note by relative path
list_notes enumerate notes, optionally under a subfolder
write_note create a note, or append to an existing oneSetup
pip install -r requirements.txtRegister it with Claude Code by adding a .mcp.json at the root of your
project:
{
"mcpServers": {
"vault": {
"command": "python",
"args": ["/path/to/server.py"],
"env": { "VAULT_ROOT": "/path/to/your/vault" }
}
}
}Restart your session. You'll be asked to approve the server on first use — it can write files, so that prompt is doing real work.
Related MCP server: mcp_notes
Configuration
variable | default | meaning |
| current directory | the folder to expose |
| unset | set to |
| 20 | search result cap |
| 100000 | truncation limit for |
VAULT_READONLY=1 removes the write tool from the advertised list rather than
just refusing calls, so an agent never sees a capability it can't use.
Two things worth knowing
Path traversal is checked properly. Every caller-supplied path is resolved and compared against the vault root:
p = (VAULT_ROOT / rel).resolve()
if not p.is_relative_to(VAULT_ROOT):
raise ValueError(...)Resolve-then-compare, not a string prefix test — .. and symlinks both defeat
string comparison, and without this ../../.ssh/id_rsa is a valid note path.
Errors are returned, not raised. A tool that throws takes the server down, and a dead MCP server is a silent one — the agent simply stops having the capability and carries on without mentioning it. Returning the error text means the agent can see what went wrong and tell you.
Scope
Deliberately small. No embeddings, no vector index, no frontmatter parsing, no graph traversal. Full-text search over Markdown covers most of what an agent actually needs, and it has no index to rebuild or fall out of date.
Search returns one hit per note, which keeps results readable when a term appears forty times in one file.
Licence
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Markdown-based note-taking with a hosted MCP server. Your notes serve you and your AI.
Serve a folder of Markdown notes as an MCP server: hybrid search, reading, and sourced answers.
Google Keep-style notes app with an MCP server for AI agents to read/write notes.
Agent-native MCP server over the public saagarpatel.dev corpus. Read-only, stateless.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP server for AI agents to read, write, and organize notes in a local-first, human-in-the-loop note-taking app.02MIT
- FlicenseAqualityCmaintenanceMCP server for saving, reading, and listing Markdown notes in the filesystem. Enables agents to persistently store reports or notes as plain Markdown files.3-
- AlicenseNot gradedqualityBmaintenanceExposes a personal markdown-based second brain (Obsidian-style) as an MCP server, enabling agents to search, read, and write notes with privacy controls.MIT
- FlicenseNot gradedqualityBmaintenanceA fully offline, secure MCP server that enables AI agents to search, read, write, and list local markdown notes using SQLite FTS5, with directory traversal protection.1-