Home › Knowledge & Memory › cyanheads/obsidian-mcp-server
cyanheads/obsidian-mcp-server
Read, write, search, and surgically edit Obsidian notes, tags, and frontmatter via MCP.
Connect
Review any command before running it. Package names and URLs come from the server's own registry entry.
Package (npm 3.9.0)
npx -y [email protected]
Or add to your MCP client config:
{
"mcpServers": {
"obsidian-mcp-server": {
"command": "npx",
"args": [
"-y",
"[email protected]"
],
"env": {
"OBSIDIAN_API_KEY": "<YOUR_VALUE>"
}
}
}
}
OBSIDIAN_API_KEYrequired — Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).OBSIDIAN_BASE_URL— 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— Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.OBSIDIAN_REQUEST_TIMEOUT_MS— 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— 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 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 startup. Unset = full vault. Write paths are implicitly readable. Example: 'public/,projects/'.OBSIDIAN_WRITE_PATHS— 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 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— 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— 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 first call, bounded by OBSIDIAN_WRITE_PATHS and OBSIDIAN_READ_ONLY.OBSIDIAN_OMNISEARCH_URL— 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— Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').
Package (npm 3.9.0)
Package: npm obsidian-mcp-server
MCP_TRANSPORT_TYPE— Selects the HTTP transport.OBSIDIAN_API_KEYrequired — Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).OBSIDIAN_BASE_URL— 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— Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.OBSIDIAN_REQUEST_TIMEOUT_MS— 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— 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 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 startup. Unset = full vault. Write paths are implicitly readable. Example: 'public/,projects/'.OBSIDIAN_WRITE_PATHS— 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 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— 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— 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 first call, bounded by OBSIDIAN_WRITE_PATHS and OBSIDIAN_READ_ONLY.OBSIDIAN_OMNISEARCH_URL— 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_HTTP_HOST— The hostname for the HTTP server.MCP_HTTP_PORT— The port to run the HTTP server on.MCP_HTTP_ENDPOINT_PATH— The endpoint path for the MCP server.MCP_AUTH_MODE— Authentication mode to use: 'none', 'jwt', or 'oauth'.MCP_LOG_LEVEL— Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').
Related servers
Context7
Up-to-date docs for AI agents
mempalace/mempalace
The best-benchmarked open-source AI memory system. And it's free.
hindsight
Hindsight: long-term memory for AI agents modeled on human memory.
cognee
Memory manager for AI apps and agents using graph and vector stores, with ingestion from many data sources.
Skill_Seekers
Turn docs, GitHub repos, PDFs, videos, Confluence, Notion and Slack/Discord into AI skills and RAG knowledge, exportable to vector…
basic-memory
Local-first knowledge management with bi-directional LLM sync via Markdown files.
Data from the Official MCP Registry