NestDaddy

Obsidian Mcp Server

io.github.cyanheads/obsidian-mcp-server · v3.9.0

Read, write, search, and surgically edit Obsidian notes, tags, and frontmatter via MCP.

Connect Runs on your machine

Terminal
claude mcp add obsidian-mcp-server -e OBSIDIAN_API_KEY=<OBSIDIAN_API_KEY> -e OBSIDIAN_BASE_URL=<OBSIDIAN_BASE_URL> -e OBSIDIAN_VERIFY_SSL=<OBSIDIAN_VERIFY_SSL> -e OBSIDIAN_REQUEST_TIMEOUT_MS=<OBSIDIAN_REQUEST_TIMEOUT_MS> -e OBSIDIAN_ENABLE_COMMANDS=<OBSIDIAN_ENABLE_COMMANDS> -e OBSIDIAN_READ_PATHS=<OBSIDIAN_READ_PATHS> -e OBSIDIAN_WRITE_PATHS=<OBSIDIAN_WRITE_PATHS> -e OBSIDIAN_DENY_PATHS=<OBSIDIAN_DENY_PATHS> -e OBSIDIAN_READ_ONLY=<OBSIDIAN_READ_ONLY> -e OBSIDIAN_DELETE_ELICITATION=<OBSIDIAN_DELETE_ELICITATION> -e OBSIDIAN_OMNISEARCH_URL=<OBSIDIAN_OMNISEARCH_URL> -e MCP_LOG_LEVEL=<MCP_LOG_LEVEL> -- npx -y [email protected]
claude_desktop_config.json
{
  "mcpServers": {
    "obsidian-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
        "OBSIDIAN_BASE_URL": "<OBSIDIAN_BASE_URL>",
        "OBSIDIAN_VERIFY_SSL": "<OBSIDIAN_VERIFY_SSL>",
        "OBSIDIAN_REQUEST_TIMEOUT_MS": "<OBSIDIAN_REQUEST_TIMEOUT_MS>",
        "OBSIDIAN_ENABLE_COMMANDS": "<OBSIDIAN_ENABLE_COMMANDS>",
        "OBSIDIAN_READ_PATHS": "<OBSIDIAN_READ_PATHS>",
        "OBSIDIAN_WRITE_PATHS": "<OBSIDIAN_WRITE_PATHS>",
        "OBSIDIAN_DENY_PATHS": "<OBSIDIAN_DENY_PATHS>",
        "OBSIDIAN_READ_ONLY": "<OBSIDIAN_READ_ONLY>",
        "OBSIDIAN_DELETE_ELICITATION": "<OBSIDIAN_DELETE_ELICITATION>",
        "OBSIDIAN_OMNISEARCH_URL": "<OBSIDIAN_OMNISEARCH_URL>",
        "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>"
      }
    }
  }
}
~/.cursor/mcp.json
{
  "mcpServers": {
    "obsidian-mcp-server": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
        "OBSIDIAN_BASE_URL": "<OBSIDIAN_BASE_URL>",
        "OBSIDIAN_VERIFY_SSL": "<OBSIDIAN_VERIFY_SSL>",
        "OBSIDIAN_REQUEST_TIMEOUT_MS": "<OBSIDIAN_REQUEST_TIMEOUT_MS>",
        "OBSIDIAN_ENABLE_COMMANDS": "<OBSIDIAN_ENABLE_COMMANDS>",
        "OBSIDIAN_READ_PATHS": "<OBSIDIAN_READ_PATHS>",
        "OBSIDIAN_WRITE_PATHS": "<OBSIDIAN_WRITE_PATHS>",
        "OBSIDIAN_DENY_PATHS": "<OBSIDIAN_DENY_PATHS>",
        "OBSIDIAN_READ_ONLY": "<OBSIDIAN_READ_ONLY>",
        "OBSIDIAN_DELETE_ELICITATION": "<OBSIDIAN_DELETE_ELICITATION>",
        "OBSIDIAN_OMNISEARCH_URL": "<OBSIDIAN_OMNISEARCH_URL>",
        "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>"
      }
    }
  }
}
.vscode/mcp.json
{
  "servers": {
    "obsidian-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<OBSIDIAN_API_KEY>",
        "OBSIDIAN_BASE_URL": "<OBSIDIAN_BASE_URL>",
        "OBSIDIAN_VERIFY_SSL": "<OBSIDIAN_VERIFY_SSL>",
        "OBSIDIAN_REQUEST_TIMEOUT_MS": "<OBSIDIAN_REQUEST_TIMEOUT_MS>",
        "OBSIDIAN_ENABLE_COMMANDS": "<OBSIDIAN_ENABLE_COMMANDS>",
        "OBSIDIAN_READ_PATHS": "<OBSIDIAN_READ_PATHS>",
        "OBSIDIAN_WRITE_PATHS": "<OBSIDIAN_WRITE_PATHS>",
        "OBSIDIAN_DENY_PATHS": "<OBSIDIAN_DENY_PATHS>",
        "OBSIDIAN_READ_ONLY": "<OBSIDIAN_READ_ONLY>",
        "OBSIDIAN_DELETE_ELICITATION": "<OBSIDIAN_DELETE_ELICITATION>",
        "OBSIDIAN_OMNISEARCH_URL": "<OBSIDIAN_OMNISEARCH_URL>",
        "MCP_LOG_LEVEL": "<MCP_LOG_LEVEL>"
      }
    }
  }
}

Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.

Tools

This server runs locally, so its tools are listed by your MCP client once it starts.

Environment variables

NameDescription
OBSIDIAN_API_KEY
Required
Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).
OBSIDIAN_BASE_URL
Optional
Base URL of the Obsidian Local REST API. Default: http://127.0.0.1:27123 (enable "Non-encrypted (HTTP) Server" in plugin settings). Use https://127.0.0.1:27124 for the always-on HTTPS port (self-signed cert; pair with OBSIDIAN_VERIFY_SSL=false).
OBSIDIAN_VERIFY_SSL
Optional
Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.
OBSIDIAN_REQUEST_TIMEOUT_MS
Optional
Milliseconds one request attempt (headers and body) may take before it fails with obsidian_timeout. GET, PUT, and DELETE retry a timed-out attempt; all the requests of one tool call share a 45 s budget, or this value when it is longer.
OBSIDIAN_ENABLE_COMMANDS
Optional
Opt-in flag for the command-palette pair (obsidian_list_commands + obsidian_execute_command). Off by default — Obsidian commands are opaque and can be destructive.
OBSIDIAN_READ_PATHS
Optional
Optional comma-separated vault-relative folder allowlist for reads. Prefix-based with implicit recursion; case-insensitive; backslashes read as slashes, repeated and trailing slashes and '.' segments dropped, and names normalized to Unicode NFC; an entry naming the vault root ('.') is rejected at s…
OBSIDIAN_WRITE_PATHS
Optional
Optional comma-separated vault-relative folder allowlist for writes. Same syntax as OBSIDIAN_READ_PATHS. Unset = full vault, or the read scope when reads are restricted; paths in OBSIDIAN_DENY_PATHS stay denied. Example: 'projects/,scratch/'.
OBSIDIAN_DENY_PATHS
Optional
Optional comma-separated vault-relative paths withheld from reads and writes. Same syntax as OBSIDIAN_READ_PATHS. Wins over both allowlists; denied paths are left out of listings, search results, and tag counts. Unset = nothing denied. Example: 'private/,journal/therapy/'.
OBSIDIAN_READ_ONLY
Optional
Global read-only kill switch. When true, every write is denied regardless of OBSIDIAN_WRITE_PATHS, and the command-palette pair is suppressed (commands can mutate). Useful for shared or public-facing deployments.
OBSIDIAN_DELETE_ELICITATION
Optional
Opt-in delete confirmation. When true, obsidian_delete_note asks the user to confirm each delete through an elicitation round (the client must support elicitation), and HTTP startup requires a stateful session unless OBSIDIAN_READ_ONLY=true disables the tool. Off by default — the delete runs on the…
OBSIDIAN_OMNISEARCH_URL
Optional
Override URL for the Omnisearch plugin HTTP server. Unset derives from OBSIDIAN_BASE_URL host with port 51361. Required only if the Omnisearch plugin is not on the default port. Under OBSIDIAN_READ_PATHS or OBSIDIAN_DENY_PATHS the URL is never called and the omnisearch search mode is withheld.
MCP_LOG_LEVEL
Optional
Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

Details

Package[email protected] (NPM, stdio)
Package[email protected] (NPM, streamable-http)
First published11 Nov 2026
Last updated11 Nov 2026
Registry nameio.github.cyanheads/obsidian-mcp-server

More productivity servers See all

Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.