Mycelium runs on your machine and talks to your MCP client over stdio. On Claude Desktop for macOS Apple Silicon,
use the one-click bundle. Everywhere else, use npx —
no clone, no build. Name your vaults, restart your client, then ask your assistant to call get_started.
Two essentials, one optional. Mycelium stays local; model traffic depends on the AI client you connect.
npx fetches and runs it. Any recent LTS Node works — the 74 filesystem tools run on Node alone.nomic-embed-text). Without it, every other way in — keyword, link-reading, structured query — still works.Claude Desktop on macOS Apple Silicon gets the one-click bundle. Other platforms can use npx — no clone, no build. Building from source is the contributor path, further down.
Download mcp-obsidian.mcpb, double-click it, enter your vault paths, and restart Claude Desktop. Then ask your assistant to call get_started.
The one-click bundle is built and tested on macOS Apple Silicon. It ships a prebuilt native module for that platform. On Intel Mac, Windows, or Linux, use npm/npx below instead; npm compiles the native module for your platform at install time.
Claude Code can register it directly. The npx runner fetches and runs the published package — nothing to build. Pick clear vault names; the names you choose are exactly what the AI sees.
$ claude mcp add obsidian \ -e OBSIDIAN_VAULTS='{"Work":"/path/to/work","Personal":"/path/to/personal"}' \ -- npx @wickedevolutions/mcp-obsidian
Any MCP client (Claude Desktop, Cursor, …) takes the same shape in its config. OBSIDIAN_VAULTS is a JSON object of name → path — use neutral, real names.
{
"mcpServers": {
"obsidian": {
"command": "npx",
"args": ["@wickedevolutions/mcp-obsidian"],
"env": {
"OBSIDIAN_VAULTS": "{\"Work\":\"/Users/you/vaults/work\",\"Personal\":\"/Users/you/vaults/personal\"}"
}
}
}
}
Config is read once at startup, so restart the client after any change. Then ask your assistant to call get_started first — it returns your vaults, the tool categories, and the resolver-first workflow before it touches a note.
"Call get_started, then work from there." → get_started() returns: configured_vaults your vaults, by exact name tool_categories what exists, grouped recommended_steps resolver-first, link syntax, safety
App tools: run Obsidian 1.12+ with the CLI enabled to unlock the 28 CLI-tier tools. Meaning-based search: run local Ollama with nomic-embed-text and index a vault. Both are optional; the 74 filesystem tools work on their own.
$ ollama pull nomic-embed-text → index_vault(vault="Work") # then semantic_search is live
Hacking on Mycelium itself? Clone, install and build, then point your client at the local dist/ instead of npx.
$ git clone https://github.com/Wicked-Evolutions/Mycelium-for-Obsidian $ cd Mycelium-for-Obsidian $ npm install && npm run build # then in your client config use: # "command": "node", "args": ["/path/to/Mycelium-for-Obsidian/dist/index.js"]
Ask for get_started and it hands over orientation;
discover_tools browses the surface by category, compact by default.
The full, searchable reference lives on the Toolset page.
What works without anything extra, what needs the app, and the two tools to handle deliberately.
The filesystem tier runs on plain Node and markdown. Obsidian doesn’t need to be open for these.
The CLI tier needs Obsidian 1.12+ running with the CLI enabled. If it’s closed, they fail cleanly — the 74 keep going.
Meaning-based search needs local Ollama and an index. Everything else works without it.
update_file replaces the body; update_section on an H1 reaches end-of-file. Try them on a test note and keep vaults under git.
Remove risky or unwanted tools from the exposed surface with OBSIDIAN_DISABLED_TOOLS.
Mycelium runs locally; vault, config and optional embeddings stay on your machine. What leaves depends on the AI client you connect.