Is this an official Obsidian MCP server?
No. mcp-obsidian is a community project by Markus Pfundstein (MarkusPfundstein on GitHub). It relies on the community Local REST API plugin, which is also not made by Obsidian.
@MarkusPfundstein
Basic information
MCP server that interacts with Obsidian via the Obsidian rest API community plugin
Add this server to your MCP-compatible client using the configuration below.
{
"mcpServers": {
"mcp-obsidian": {
"command": "uvx",
"args": [
"mcp-obsidian"
],
"env": {
"OBSIDIAN_API_KEY": "<your_api_key_here>",
"OBSIDIAN_HOST": "<your_obsidian_host>",
"OBSIDIAN_PORT": "<your_obsidian_port>"
}
}
}
}Lists all files and directories in the root directory of your Obsidian vault
Lists all files and directories in a specific Obsidian directory
Return the content of a single file in your vault.
Search for documents matching a specified text query across all files in the vault
Insert content into an existing note relative to a heading, block reference, or frontmatter field.
Append content to a new or existing file in the vault.
Delete a file or directory from your vault.
This Obsidian MCP server (mcp-obsidian, by Markus Pfundstein) is an open-source Python server that lets Claude and other MCP clients list, read, search, write and delete notes in your Obsidian vault through the Local REST API community plugin.
It is a community project, not made by Obsidian. The server never touches your vault files directly. Every operation goes through the Obsidian Local REST API plugin running inside the Obsidian app, so Obsidian must be open while you use it. It is published on PyPI as mcp-obsidian, licensed MIT, and run with uvx.
Prerequisites:
uvx) and Python 3.11 or newer.Environment variables:
OBSIDIAN_API_KEY: the key from the Local REST API plugin (required)OBSIDIAN_HOST: defaults to 127.0.0.1OBSIDIAN_PORT: defaults to 27124You can set these in the MCP server config (preferred) or in a .env file in the working directory.
Edit ~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%/Claude/claude_desktop_config.json on Windows:
{
"mcpServers": {
"mcp-obsidian": {
"command": "uvx",
"args": ["mcp-obsidian"],
"env": {
"OBSIDIAN_API_KEY": "<your_api_key_here>",
"OBSIDIAN_HOST": "127.0.0.1",
"OBSIDIAN_PORT": "27124"
}
}
}
}
If Claude cannot find uvx, run which uvx and use the full path as the command.
The README documents Claude Desktop only. Because this is a standard stdio server, other clients can run the same uvx mcp-obsidian command with the same env values, for example in .cursor/mcp.json or .vscode/mcp.json. In Claude Code, add it as a stdio server that launches uvx mcp-obsidian with those three variables set.
To avoid installing uv and Python, copy .env.example to .env, run docker compose build, then point your client at the container. MCP needs stdin attached and no TTY, so use run --rm -T, not up:
{
"mcpServers": {
"mcp-obsidian": {
"command": "docker",
"args": ["compose", "-f", "<dir_to>/mcp-obsidian/docker-compose.yml", "run", "--rm", "-T", "mcp-obsidian"]
}
}
}
In the container, OBSIDIAN_HOST defaults to host.docker.internal so it can reach Obsidian on your machine.
The current source registers 15 tools, all prefixed obsidian_. The mcp.so page and the README list the original seven.
obsidian_list_files_in_vault, obsidian_list_files_in_dir, obsidian_get_file_contents and obsidian_batch_get_file_contents.obsidian_simple_search (text match with context), obsidian_complex_search (JsonLogic queries, such as glob patterns on paths) and obsidian_search_by_tag.obsidian_append_content, obsidian_patch_content (append, prepend or replace at a heading, block or frontmatter target) and obsidian_put_content (replace the whole file).obsidian_delete_file requires confirm: true.obsidian_get_frontmatter, obsidian_get_periodic_note, obsidian_get_recent_periodic_notes and obsidian_get_recent_changes.The README suggests first telling Claude to use Obsidian so it reliably calls the tools.
Obsidian has no official MCP server, so options are community-built. mcp-obsidian works through the Local REST API plugin, which gives it heading-aware patching, periodic notes and JsonLogic search. The trade-off is that Obsidian must be running. A plain Filesystem MCP Server pointed at your vault folder works without Obsidian, but it only sees files, not Obsidian concepts like frontmatter or periodic notes. For other note apps, see Apple Notes MCP or the Notion MCP Server.
AttributeError: 'Server' object has no attribute 'list_tools': the server needs the mcp Python SDK 1.x (>=1.1.0,<2.0.0). Installing with mcp>=2.0 breaks it, so use the pinned package via uvx mcp-obsidian.uv/uvx. Put the full path from which uvx in the config.OBSIDIAN_HOST/OBSIDIAN_PORT match the plugin (default 127.0.0.1:27124).docker compose run --rm -T, not docker compose up, because MCP talks over stdin.npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-obsidian run mcp-obsidian), or tail ~/Library/Logs/Claude/mcp-server-mcp-obsidian.log on macOS.No. mcp-obsidian is a community project by Markus Pfundstein (MarkusPfundstein on GitHub). It relies on the community Local REST API plugin, which is also not made by Obsidian.
Yes. It is MIT-licensed and free, and so is the Local REST API plugin. No paid Obsidian plan is needed.
The API key generated by the Obsidian Local REST API plugin, set as `OBSIDIAN_API_KEY`. No external service or cloud key is involved.
The README only covers Claude Desktop, but any MCP client that launches stdio servers can run `uvx mcp-obsidian` with the same environment variables.
Yes. The server talks to the Local REST API plugin, which only runs while Obsidian is open with the plugin enabled.
Your notes stay in your local vault. The server reads them through the plugin on `127.0.0.1`, although whatever the AI reads is sent to your model provider as part of the conversation.
Yes. `obsidian_put_content` replaces whole files and `obsidian_delete_file` removes files or folders, though deletion requires an explicit `confirm` flag. Keep backups or version control for important vaults.
Groundwork: company memory for your AI tools. Docs public. Source closed. Public proof needs no account.
Project context your AI can query through MCP — with source evidence.

Exact, shared memory for AI agents: a hierarchical database where totals always add up, every write is attributed to the agent and person behind it, and any figure traces back to its source file. Agents create databases,

Islamic source data for assistants: Quran, hadith, tafsir, duas, prayer times and qibla. Answers come from real sources with citations instead of recalled text, so verses and hadith are not hallucinated. 36,000+ hadiths

Serve your docs to AI agents over SSH and MCP. Agents use ls, cat, grep, find, and pipes against a virtual filesystem backed by your documentation. Identity-scoped access, governed writing with human approval, and portab
Comments