
How to add obsidian-mcp-server (cyanheads) to Windsurf
Surgical Obsidian vault editing — read, write, search, and patch notes, tags, and frontmatter. Paste the config into ~/.codeium/windsurf/mcp_config.json and restart Windsurf.
Last updated June 15, 2026 · 590★ · stdio · apikey
Windsurf config for obsidian-mcp-server (cyanheads)
npx -y obsidian-mcp-server@latest{
"mcpServers": {
"obsidian-mcp-server-cyanheads": {
"command": "npx",
"args": [
"-y",
"obsidian-mcp-server@latest"
],
"env": {
"OBSIDIAN_API_KEY": "<your-obsidian-rest-api-key>",
"OBSIDIAN_BASE_URL": "http://127.0.0.1:27123",
"OBSIDIAN_VERIFY_SSL": "false"
}
}
}
}Setup steps
- 1Open Windsurf → Cascade → the hammer/MCP icon → Configure (or edit ~/.codeium/windsurf/mcp_config.json).
- 2Paste the obsidian-mcp-server (cyanheads) config below.
- 3Fill in placeholder secrets, then save.
- 4Click Refresh in the MCP panel.
- 5obsidian-mcp-server (cyanheads)'s tools become available to Cascade.
Before you start
- Bun v1.3.11+ or Node.js v24+ (run via bunx/npx, no global install needed)
- Obsidian desktop app with the Local REST API community plugin v4.0.0+ installed and enabled
- An API key generated in the Local REST API plugin settings, supplied as OBSIDIAN_API_KEY
- The plugin's base URL (defaults to http://127.0.0.1:27123); Obsidian must be running for the server to work
- Optional: the Omnisearch plugin for BM25-ranked semantic search
What obsidian-mcp-server (cyanheads) can do in Windsurf
obsidian_get_noteRead a note's content and metadata by path
obsidian_list_notesList notes, optionally scoped to a folder
obsidian_list_tagsEnumerate all tags used across the vault
obsidian_search_notesMulti-mode search: text, JSONLogic, or BM25 Omnisearch
obsidian_write_noteCreate or overwrite a note at a given path
obsidian_append_to_noteAppend content to the end of an existing note
obsidian_patch_noteSurgically edit a note targeting a heading or block reference
obsidian_replace_in_noteFind-and-replace text within a note
Security
Needs the Obsidian Local REST API plugin's bearer token (OBSIDIAN_API_KEY) with full vault access; keep it in env vars. SSL verification is off by default (OBSIDIAN_VERIFY_SSL=false) because the plugin uses a self-signed cert, so only connect to a trusted local host.
obsidian-mcp-server (cyanheads) + Windsurf FAQ
Where is the Windsurf config file?
Windsurf reads MCP servers from ~/.codeium/windsurf/mcp_config.json. Paste the obsidian-mcp-server (cyanheads) config there under the "mcpServers" key and restart the client.
Is obsidian-mcp-server (cyanheads) safe to use with Windsurf?
Needs the Obsidian Local REST API plugin's bearer token (OBSIDIAN_API_KEY) with full vault access; keep it in env vars. SSL verification is off by default (OBSIDIAN_VERIFY_SSL=false) because the plugin uses a self-signed cert, so only connect to a trusted local host.
Why does it need the Local REST API plugin instead of reading files directly?
The server talks to Obsidian over HTTP through that plugin, which keeps the vault index and plugins in sync and lets it use features like the command palette and Omnisearch. Obsidian must be running.
How do I authenticate?
Generate an API key in the Local REST API plugin settings and pass it as the OBSIDIAN_API_KEY environment variable. The MCP server itself can optionally add JWT/OAuth, but by default no extra auth is required for stdio.
Can I stop an agent from deleting or overwriting notes?
Yes. Set OBSIDIAN_READ_ONLY for a global write kill switch, scope writes with OBSIDIAN_WRITE_PATHS, and deletes require human-in-the-loop confirmation.