{"name":"io.github.cyanheads/obsidian-mcp-server","slug":"cyanheads-obsidian-mcp-server","title":null,"description":"Read, write, search, and surgically edit Obsidian notes, tags, and frontmatter via MCP.","url":"https://mcp.market/server/cyanheads-obsidian-mcp-server","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"productivity","tags":["productivity","search"],"presence":{"score":62,"stars":690,"forks":104,"downloads_week":7786,"last_push_at":"2026-09-23T19:41:21.000Z","license":"Apache-2.0"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/cyanheads/obsidian-mcp-server","website":null,"version":"3.8.0","remotes":[],"packages":[{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"obsidian-mcp-server","version":"3.8.0","runtimeHint":"npx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).","isRequired":true,"format":"string","name":"OBSIDIAN_API_KEY"},{"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).","format":"string","default":"http://127.0.0.1:27123","name":"OBSIDIAN_BASE_URL"},{"description":"Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.","format":"string","default":"false","name":"OBSIDIAN_VERIFY_SSL"},{"description":"Per-request timeout in milliseconds.","format":"string","default":"30000","name":"OBSIDIAN_REQUEST_TIMEOUT_MS"},{"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.","format":"string","default":"false","name":"OBSIDIAN_ENABLE_COMMANDS"},{"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/'.","format":"string","name":"OBSIDIAN_READ_PATHS"},{"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/'.","format":"string","name":"OBSIDIAN_WRITE_PATHS"},{"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/'.","format":"string","name":"OBSIDIAN_DENY_PATHS"},{"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.","format":"string","default":"false","name":"OBSIDIAN_READ_ONLY"},{"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.","format":"string","default":"false","name":"OBSIDIAN_DELETE_ELICITATION"},{"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.","format":"string","name":"OBSIDIAN_OMNISEARCH_URL"},{"description":"Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').","format":"string","default":"info","name":"MCP_LOG_LEVEL"}]},{"registryType":"npm","registryBaseUrl":"https://registry.npmjs.org","identifier":"obsidian-mcp-server","version":"3.8.0","runtimeHint":"npx","transport":{"type":"streamable-http","url":"http://localhost:3010/mcp"},"environmentVariables":[{"description":"Selects the HTTP transport.","format":"string","value":"http","name":"MCP_TRANSPORT_TYPE"},{"description":"Bearer token for the Obsidian Local REST API plugin (Settings → Community Plugins → Local REST API).","isRequired":true,"format":"string","name":"OBSIDIAN_API_KEY"},{"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).","format":"string","default":"http://127.0.0.1:27123","name":"OBSIDIAN_BASE_URL"},{"description":"Whether to verify the TLS certificate on the Obsidian endpoint. Default false because the plugin uses a self-signed cert.","format":"string","default":"false","name":"OBSIDIAN_VERIFY_SSL"},{"description":"Per-request timeout in milliseconds.","format":"string","default":"30000","name":"OBSIDIAN_REQUEST_TIMEOUT_MS"},{"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.","format":"string","default":"false","name":"OBSIDIAN_ENABLE_COMMANDS"},{"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/'.","format":"string","name":"OBSIDIAN_READ_PATHS"},{"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/'.","format":"string","name":"OBSIDIAN_WRITE_PATHS"},{"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/'.","format":"string","name":"OBSIDIAN_DENY_PATHS"},{"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.","format":"string","default":"false","name":"OBSIDIAN_READ_ONLY"},{"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.","format":"string","default":"false","name":"OBSIDIAN_DELETE_ELICITATION"},{"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.","format":"string","name":"OBSIDIAN_OMNISEARCH_URL"},{"description":"The hostname for the HTTP server.","format":"string","default":"127.0.0.1","name":"MCP_HTTP_HOST"},{"description":"The port to run the HTTP server on.","format":"string","default":"3010","name":"MCP_HTTP_PORT"},{"description":"The endpoint path for the MCP server.","format":"string","default":"/mcp","name":"MCP_HTTP_ENDPOINT_PATH"},{"description":"Authentication mode to use: 'none', 'jwt', or 'oauth'.","format":"string","default":"none","name":"MCP_AUTH_MODE"},{"description":"Sets the minimum log level for output (e.g., 'debug', 'info', 'warn').","format":"string","default":"info","name":"MCP_LOG_LEVEL"}]}],"tools":[],"scan":null,"grade_history":[],"reviews":[]}