Koskamo

obsidian-mcp-server

An MCP server that allows agents to interact with an Obsidian vault via the Local REST API plugin. It supports reading, writing, searching, and surgically editing notes, tags, and frontmatter fields. It also provides tools to manage tags, execute commands, and open files in the Obsidian UI.

Package and access

Local package with source-attributed installation metadata. Koskamo does not execute packages during review.

obsidian-mcp-server logo, by cyanheadsCommunity listingLocal stdioSource reviewed; not executedPublished by cyanheads
Vendor documentation

Checks and signals

Each line is separate evidence, not a trust score.

  • Popularity 698 GitHub stars

What you can do with it

  • Read note content and metadata
  • Search notes by text or JSONLogic
  • Edit specific headings or frontmatter fields
  • Manage tags and execute commands

Source and maintenance

Community listingRegistry 3.8.0Apache-2.0
Last repository push
Latest release
v3.8.0
Maintenance checked

Packages and installation

Source-provided package data. Koskamo has not executed or live-probed this package.

obsidian-mcp-server 3.8.0

npmnpx
obsidian-mcp-server package definition
{
  "version": "3.8.0",
  "transport": "stdio",
  "identifier": "obsidian-mcp-server",
  "runtimeHint": "npx",
  "registryType": "npm",
  "registryBaseUrl": "https://registry.npmjs.org",
  "environmentVariables": [
    {
      "name": "OBSIDIAN_API_KEY",
      "format": "string",
      "isRequired": true,
      "description": "Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API)."
    },
    {
      "name": "OBSIDIAN_BASE_URL",
      "format": "string",
      "default": "http://127.0.0.1:27123",
      "description": "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)."
    },
    {
      "name": "OBSIDIAN_VERIFY_SSL",
      "format": "string",
      "default": "false",
      "description": "Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert."
    },
    {
      "name": "OBSIDIAN_REQUEST_TIMEOUT_MS",
      "format": "string",
      "default": "30000",
      "description": "Per-request timeout in milliseconds."
    },
    {
      "name": "OBSIDIAN_ENABLE_COMMANDS",
      "format": "string",
      "default": "false",
      "description": "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."
    },
    {
      "name": "OBSIDIAN_READ_PATHS",
      "format": "string",
      "description": "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/'."
    },
    {
      "name": "OBSIDIAN_WRITE_PATHS",
      "format": "string",
      "description": "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/'."
    },
    {
      "name": "OBSIDIAN_DENY_PATHS",
      "format": "string",
      "description": "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/'."
    },
    {
      "name": "OBSIDIAN_READ_ONLY",
      "format": "string",
      "default": "false",
      "description": "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."
    },
    {
      "name": "OBSIDIAN_DELETE_ELICITATION",
      "format": "string",
      "default": "false",
      "description": "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."
    },
    {
      "name": "OBSIDIAN_OMNISEARCH_URL",
      "format": "string",
      "description": "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."
    },
    {
      "name": "MCP_LOG_LEVEL",
      "format": "string",
      "default": "info",
      "description": "Sets the minimum log level for output (e.g., 'debug', 'info', 'warn')."
    }
  ]
}

Tools

Reported by the attributed source; not independently observed by Koskamo.

No tool definitions available.

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · repository · passed · metadata changed · updated
  • · backfill · recorded · Pre-expansion baseline; unobserved rich metadata remains unknown

Connect from your client

Each snippet configures the same source-provided package; replace placeholders before use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Cursor

Merge this local stdio configuration, replace every placeholder environment value, and restart Cursor. Koskamo has not executed this package.
Cursor configuration
{
  "mcpServers": {
    "obsidian-mcp-server-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "obsidian-mcp-server@3.8.0"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<YOUR_OBSIDIAN_API_KEY>",
        "OBSIDIAN_BASE_URL": "<YOUR_OBSIDIAN_BASE_URL>",
        "OBSIDIAN_VERIFY_SSL": "<YOUR_OBSIDIAN_VERIFY_SSL>",
        "OBSIDIAN_REQUEST_TIMEOUT_MS": "<YOUR_OBSIDIAN_REQUEST_TIMEOUT_MS>",
        "OBSIDIAN_ENABLE_COMMANDS": "<YOUR_OBSIDIAN_ENABLE_COMMANDS>",
        "OBSIDIAN_READ_PATHS": "<YOUR_OBSIDIAN_READ_PATHS>",
        "OBSIDIAN_WRITE_PATHS": "<YOUR_OBSIDIAN_WRITE_PATHS>",
        "OBSIDIAN_DENY_PATHS": "<YOUR_OBSIDIAN_DENY_PATHS>",
        "OBSIDIAN_READ_ONLY": "<YOUR_OBSIDIAN_READ_ONLY>",
        "OBSIDIAN_DELETE_ELICITATION": "<YOUR_OBSIDIAN_DELETE_ELICITATION>",
        "OBSIDIAN_OMNISEARCH_URL": "<YOUR_OBSIDIAN_OMNISEARCH_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

Cline

Merge this local stdio configuration, replace every placeholder environment value, and restart Cline. Koskamo has not executed this package.
Cline configuration
{
  "mcpServers": {
    "obsidian-mcp-server-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "obsidian-mcp-server@3.8.0"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<YOUR_OBSIDIAN_API_KEY>",
        "OBSIDIAN_BASE_URL": "<YOUR_OBSIDIAN_BASE_URL>",
        "OBSIDIAN_VERIFY_SSL": "<YOUR_OBSIDIAN_VERIFY_SSL>",
        "OBSIDIAN_REQUEST_TIMEOUT_MS": "<YOUR_OBSIDIAN_REQUEST_TIMEOUT_MS>",
        "OBSIDIAN_ENABLE_COMMANDS": "<YOUR_OBSIDIAN_ENABLE_COMMANDS>",
        "OBSIDIAN_READ_PATHS": "<YOUR_OBSIDIAN_READ_PATHS>",
        "OBSIDIAN_WRITE_PATHS": "<YOUR_OBSIDIAN_WRITE_PATHS>",
        "OBSIDIAN_DENY_PATHS": "<YOUR_OBSIDIAN_DENY_PATHS>",
        "OBSIDIAN_READ_ONLY": "<YOUR_OBSIDIAN_READ_ONLY>",
        "OBSIDIAN_DELETE_ELICITATION": "<YOUR_OBSIDIAN_DELETE_ELICITATION>",
        "OBSIDIAN_OMNISEARCH_URL": "<YOUR_OBSIDIAN_OMNISEARCH_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

VS Code

Merge this local stdio configuration, replace every placeholder environment value, and restart VS Code. Koskamo has not executed this package.
VS Code configuration
{
  "servers": {
    "obsidian-mcp-server-mcp": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "obsidian-mcp-server@3.8.0"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<YOUR_OBSIDIAN_API_KEY>",
        "OBSIDIAN_BASE_URL": "<YOUR_OBSIDIAN_BASE_URL>",
        "OBSIDIAN_VERIFY_SSL": "<YOUR_OBSIDIAN_VERIFY_SSL>",
        "OBSIDIAN_REQUEST_TIMEOUT_MS": "<YOUR_OBSIDIAN_REQUEST_TIMEOUT_MS>",
        "OBSIDIAN_ENABLE_COMMANDS": "<YOUR_OBSIDIAN_ENABLE_COMMANDS>",
        "OBSIDIAN_READ_PATHS": "<YOUR_OBSIDIAN_READ_PATHS>",
        "OBSIDIAN_WRITE_PATHS": "<YOUR_OBSIDIAN_WRITE_PATHS>",
        "OBSIDIAN_DENY_PATHS": "<YOUR_OBSIDIAN_DENY_PATHS>",
        "OBSIDIAN_READ_ONLY": "<YOUR_OBSIDIAN_READ_ONLY>",
        "OBSIDIAN_DELETE_ELICITATION": "<YOUR_OBSIDIAN_DELETE_ELICITATION>",
        "OBSIDIAN_OMNISEARCH_URL": "<YOUR_OBSIDIAN_OMNISEARCH_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

Claude Desktop

Merge this local stdio configuration, replace every placeholder environment value, and restart Claude Desktop. Koskamo has not executed this package.
Claude Desktop configuration
{
  "mcpServers": {
    "obsidian-mcp-server-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "obsidian-mcp-server@3.8.0"
      ],
      "env": {
        "OBSIDIAN_API_KEY": "<YOUR_OBSIDIAN_API_KEY>",
        "OBSIDIAN_BASE_URL": "<YOUR_OBSIDIAN_BASE_URL>",
        "OBSIDIAN_VERIFY_SSL": "<YOUR_OBSIDIAN_VERIFY_SSL>",
        "OBSIDIAN_REQUEST_TIMEOUT_MS": "<YOUR_OBSIDIAN_REQUEST_TIMEOUT_MS>",
        "OBSIDIAN_ENABLE_COMMANDS": "<YOUR_OBSIDIAN_ENABLE_COMMANDS>",
        "OBSIDIAN_READ_PATHS": "<YOUR_OBSIDIAN_READ_PATHS>",
        "OBSIDIAN_WRITE_PATHS": "<YOUR_OBSIDIAN_WRITE_PATHS>",
        "OBSIDIAN_DENY_PATHS": "<YOUR_OBSIDIAN_DENY_PATHS>",
        "OBSIDIAN_READ_ONLY": "<YOUR_OBSIDIAN_READ_ONLY>",
        "OBSIDIAN_DELETE_ELICITATION": "<YOUR_OBSIDIAN_DELETE_ELICITATION>",
        "OBSIDIAN_OMNISEARCH_URL": "<YOUR_OBSIDIAN_OMNISEARCH_URL>",
        "MCP_LOG_LEVEL": "<YOUR_MCP_LOG_LEVEL>"
      }
    }
  }
}

Let your agent find its tools

Find servers like obsidian-mcp-server from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.