Obsidian
mcp-obsidian is a community MCP server that lets an AI client read, search and write notes in an Obsidian vault. It does not talk to the vault folder directly; it talks over HTTP to the Local REST API plugin running inside the Obsidian desktop app, which means the app has to be open and the plugin has to be installed and enabled.
How we started it
uvx mcp-obsidianWe ran it with a clean environment and it never reached the initialize handshake: it raised on import because OBSIDIAN_API_KEY was missing, and exited with code 1. That is a config failure, not a broken package, and it is a reasonable one for a server that is useless without a vault to point at. Use it if you already live in Obsidian on the same machine as your agent and are fine keeping the desktop app running as a background dependency; skip it if you wanted something that reads markdown files off disk, because that is not the shape of this thing.
Use it if
Skip it if
The bill for your context window
Our run produced no token figure at all. The process died before initialize, so tools/list was never sent and the measured payload is empty rather than small; read the zero as "unknown", not "free". For what it is worth, the failure itself costs your agent nothing, because a server that exits during startup just shows up as a dead connection in your client rather than as tokens in your window. Once you supply the key, expect a handful of note-search and note-write tools with short descriptions, which in this batch's terms should land well under the heavyweight vendor servers rather than near them. We will republish the real number when we can run it against a live vault.
Setup reality
The stderr is unusually polite about what is wrong: mcp_obsidian/tools.py raises at import time with the message that OBSIDIAN_API_KEY is required, and it prints the working directory it was launched from, which is a nice touch when your client swallows logs. So the setup is three steps in the right order. Install the Local REST API community plugin inside Obsidian, copy the key it generates, and pass it as OBSIDIAN_API_KEY in the env block of your MCP client config. Some setups also need the host and port if you changed the plugin defaults or are using the non-HTTPS listener; the plugin's docs cover which certificate warning you are about to see. Transport is stdio, launched by uvx, and uv pulled 34 packages before hitting the error, so first start on a cold cache is not instant.
OBSIDIAN_API_KEYQuestions people ask
Why did the Obsidian MCP server exit with code 1 on startup?
It raised a ValueError while importing its tools module because OBSIDIAN_API_KEY was not set. Our harness runs every server with a clean environment and no credentials, so this is expected. Set the key from the Local REST API plugin in your client config and the import succeeds.
Do I need the Obsidian desktop app running?
Yes. This server is an HTTP client for the Local REST API plugin, which lives inside the app. Close Obsidian and the tools start failing on connection, even though the server process itself stays alive and keeps advertising them.
Can I skip the plugin and just read the vault as files?
For read-only work, yes, and often you should. A filesystem MCP server pointed at the vault directory needs no key and no GUI. You lose Obsidian's own search semantics and its handling of properties and links, which is the main reason to pay the plugin tax.
Other productivity servers we started
How this page is made: the server is spawned as an unprivileged user with a clean environment and no credentials, then asked for its tools, resources and prompts over stdio. Token figures are estimates at four characters per token, not a tokenizer count. One run, one machine. Corrections: contact the desk.