Search for obsidian mcp and you get three different projects with nearly the same name. They take different routes into your vault, need different plugins, and behave differently when Obsidian is closed. This guide compares the three, recommends one for each kind of user, and walks through setup for Claude Desktop and Claude Code, plus a section on keeping an AI agent from damaging your notes.
The three Obsidian MCP servers
| mcp-obsidian (MarkusPfundstein) | obsidian-mcp-server (cyanheads) | obsidian-mcp (StevenStavrakis) | |
|---|---|---|---|
| Vault access | Local REST API plugin | Local REST API plugin | Direct filesystem |
| Obsidian must be open | Yes | Yes | No |
| Language and runner | Python, uvx |
TypeScript, npx |
TypeScript, npx |
| Tools | 7 | 14 | 11 |
| Frontmatter and tags | No | Yes | Tags yes |
| Multiple vaults | No | No | Yes, up to 10 |
| GitHub stars | 4,300 | 670 | 720 |
| Last push | May 2026 | Aug 2026 | Aug 2026 |
| MCPVault grade | B | A | A |
Stars and dates come from the vault on 2 September 2026. All three are unclaimed listings, so none has the verified badge yet. The grades come from repository signals, as described in how MCPVault grades servers.
mcp-obsidian by MarkusPfundstein
MCP Obsidian on MCPVault is the original and by far the most starred. It is a Python server distributed on PyPI as mcp-obsidian, and it talks to the Obsidian Local REST API plugin. Seven tools cover list, read, search, append, patch, and delete. It has not had a release since spring 2026, which is why it grades B despite the stars.
Pick it if you already have the REST API plugin and want the smallest tool surface.
obsidian-mcp-server by cyanheads
Obsidian MCP Server on MCPVault uses the same REST API plugin but exposes 14 tools, including obsidian_manage_frontmatter, obsidian_manage_tags, obsidian_replace_in_note, and obsidian_execute_command, which can trigger any Obsidian command from the agent. Version 3.5 supports stdio and streamable HTTP transports and is Apache 2.0 licensed.
Pick it if you want the agent to work with properties, tags, and Obsidian commands, not just note text.
obsidian-mcp by StevenStavrakis
Obsidian MCP on MCPVault skips the plugin entirely and reads the vault folder as Markdown files. Obsidian does not need to be running. It refuses symlinks, blocks .obsidian, .git, and .backup directories, sends deletions to a trash folder, and supports up to ten vaults from one config. Eleven tools cover notes, directories, search, and tags.
Pick it if you want vault access from a headless machine, a scheduled job, or any workflow where keeping Obsidian open is a nuisance.
A fourth route: the server inside Obsidian
aaronsb's Obsidian MCP Plugin runs the MCP server as an Obsidian plugin on http://localhost:3001/mcp, with no external process and no REST API plugin. Claude Code connects with one command, and Claude Desktop installs it as a bundle from the plugin's settings. It is the lightest setup of the four, at the cost of being tied to Obsidian's own process.
Which one should you use
- Most people, Claude Desktop, want it simple: obsidian-mcp by StevenStavrakis. No plugin, works with Obsidian closed, safer defaults.
- Power users who live in properties and tags: obsidian-mcp-server by cyanheads.
- Already on the REST API plugin and happy: mcp-obsidian by MarkusPfundstein. No reason to migrate if it works.
- Claude Code inside the same machine as Obsidian: the in-Obsidian plugin by aaronsb.
The rest of this guide sets up the first two, since they cover the two access models.
Setup A: direct filesystem (obsidian-mcp)
You need Node 18 or newer and the absolute path to your vault. No plugin.
Claude Desktop. Open claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\) and add:
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["-y", "obsidian-mcp@2", "serve", "--vault", "notes=/absolute/path/to/vault"]
}
}
}
Quit and reopen Claude Desktop, then ask: "List the vaults you can see." A second vault is one more --vault work=/path/to/other argument.
Claude Code:
claude mcp add obsidian -- npx -y obsidian-mcp@2 serve --vault notes=/absolute/path/to/vault
Use --scope user if you want it in every project.
Setup B: through the Local REST API plugin (obsidian-mcp-server)
- In Obsidian, open Settings, Community plugins, and install Local REST API. Enable it.
- In the plugin's settings, copy the API key. Note the port: the non-encrypted endpoint is
http://127.0.0.1:27123by default, and the HTTPS one is on 27124. - Keep Obsidian open. The plugin only runs while the app does.
Claude Desktop:
{
"mcpServers": {
"obsidian-mcp-server": {
"command": "npx",
"args": ["-y", "obsidian-mcp-server@latest"],
"env": {
"OBSIDIAN_API_KEY": "your-local-rest-api-key",
"OBSIDIAN_BASE_URL": "http://127.0.0.1:27123"
}
}
}
}
Claude Code:
claude mcp add obsidian-mcp-server -e OBSIDIAN_API_KEY=your-key -e OBSIDIAN_BASE_URL=http://127.0.0.1:27123 -- npx -y obsidian-mcp-server@latest
If you would rather use the original Python server, the same plugin settings apply and the command becomes uvx mcp-obsidian with OBSIDIAN_API_KEY and OBSIDIAN_HOST in the environment. Install uv first with curl -LsSf https://astral.sh/uv/install.sh | sh.
See the listings on MCPVault for grades, tools, and install details: obsidian-mcp and obsidian-mcp-server.
Safe vault permissions
An MCP server that can write and delete notes gives an agent a shell in your second brain. Four habits keep it safe:
Scope the vault. With the filesystem server, point --vault at a subfolder rather than the whole vault if the agent only needs one project. With the REST API servers, create a second vault for AI work and sync in what you want it to see.
Keep a real backup. Obsidian Sync history, git, or a nightly copy. The filesystem server moves deletions to .trash, but a bad edit_note is not a deletion.
Watch the write tools. In Claude Desktop, tool calls that change files ask for approval the first time. Do not click "always allow" on delete_note or obsidian_delete_note.
Remember where the text goes. Every note the agent reads is sent to the model provider as part of the conversation. Keep credentials, client data, and anything under an NDA in a vault the server cannot see.
Frequently Asked Questions
Does an Obsidian MCP server work if Obsidian is closed?
Only the filesystem-based one, obsidian-mcp by StevenStavrakis. mcp-obsidian and obsidian-mcp-server both go through the Local REST API plugin, which stops when Obsidian quits, and the in-Obsidian plugin by definition needs the app running.
Which Obsidian MCP server works with Cursor and VS Code?
All of them. The configs above use Claude Desktop and Claude Code, but the JSON block is the same for Cursor's mcp.json and Windsurf's mcp_config.json. VS Code uses a servers key instead of mcpServers.
Can Claude create new notes, not just edit existing ones?
Yes. obsidian-mcp has obsidian_create_note, obsidian-mcp-server has obsidian_write_note, and mcp-obsidian creates a file when you append_content to a path that does not exist yet.
Is my vault sent to Anthropic?
The notes the agent reads are included in the conversation sent to the model provider, so yes for those notes, and no for notes the agent never touches. Scope the vault if that matters to you.
What is the difference between mcp-obsidian and obsidian-mcp-server?
Same plugin, different depth. mcp-obsidian is seven tools of read, search, and write in Python. obsidian-mcp-server is 14 tools in TypeScript that add frontmatter, tags, in-note replace, and command execution, with more recent maintenance.
Your server in the vault.
If you built one of these servers, claim the listing and get it in front of developers who are actively looking. Free to claim. Verification is free during early access and earns a do-follow link to your project.
Claim your listing or submit a server if it is not indexed yet. You can also browse the vault for every Obsidian MCP server.
