Package

obsidian-mcp-server

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

io.github.cyanheads/obsidian-mcp-serverSource repository
Version3.8.0latest catalog version
ConnectionPackagenpm
PublishedOct 31, 2026catalog
UpdatedOct 31, 2026catalog
Overview

What this server provides

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

Install

Packages

2
Package 1npm
obsidian-mcp-server3.8.0
  • OBSIDIAN_API_KEY

    Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).

    Format: string
    Required
  • 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).

    Format: string · Default: http://127.0.0.1:27123
    Optional
  • OBSIDIAN_VERIFY_SSL

    Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.

    Format: string · Default: false
    Optional
  • OBSIDIAN_REQUEST_TIMEOUT_MS

    Per-request timeout in milliseconds.

    Format: string · Default: 30000
    Optional
  • 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.

    Format: string · Default: false
    Optional
  • 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/'.

    Format: string
    Optional
  • 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/'.

    Format: string
    Optional
  • 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/'.

    Format: string
    Optional
  • 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.

    Format: string · Default: false
    Optional
  • 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.

    Format: string · Default: false
    Optional
  • 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.

    Format: string
    Optional
  • MCP_LOG_LEVEL

    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

    Format: string · Default: info
    Optional
Package 2npm
obsidian-mcp-server3.8.0
http://localhost:3010/mcp
  • OBSIDIAN_API_KEY

    Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).

    Format: string
    Required
  • 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).

    Format: string · Default: http://127.0.0.1:27123
    Optional
  • OBSIDIAN_VERIFY_SSL

    Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.

    Format: string · Default: false
    Optional
  • OBSIDIAN_REQUEST_TIMEOUT_MS

    Per-request timeout in milliseconds.

    Format: string · Default: 30000
    Optional
  • 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.

    Format: string · Default: false
    Optional
  • 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/'.

    Format: string
    Optional
  • 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/'.

    Format: string
    Optional
  • 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/'.

    Format: string
    Optional
  • 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.

    Format: string · Default: false
    Optional
  • 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.

    Format: string · Default: false
    Optional
  • 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.

    Format: string
    Optional
  • MCP_HTTP_HOST

    The hostname for the HTTP server.

    Format: string · Default: 127.0.0.1
    Optional
  • MCP_HTTP_PORT

    The port to run the HTTP server on.

    Format: string · Default: 3010
    Optional
  • MCP_HTTP_ENDPOINT_PATH

    The endpoint path for the MCP server.

    Format: string · Default: /mcp
    Optional
  • MCP_AUTH_MODE

    Authentication mode to use: 'none', 'jwt', or 'oauth'.

    Format: string · Default: none
    Optional
  • MCP_LOG_LEVEL

    Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').

    Format: string · Default: info
    Optional
View server metadata