Fix 'SSL certificate verification failed' (DEPTH_ZERO_SELF_SIGNED_CERT) in obsidian-mcp-server on Windows
I use obsidian-mcp-server with Cline on Windows and get 'Failed to initialize tag cache: ObsidianError: SSL certificate verification failed' with code DEPTH_ZERO_SELF_SIGNED_CERT, then 'MCP error -2: Request timed out'. After updating, I also got 'Could not read package.json version: Error: ENOENT' because it looked for package.json in the parent MCP directory. How do I configure the server to connect to Obsidian's Local REST API?
Originally asked on GitHub: https://github.com/cyanheads/obsidian-mcp-server/issues/2
5 answers
Status: closed as completed. The maintainer fixed this in v1.2.6 and in follow-up commits 35ffabd and 519f9bb, which improved SSL and plugin setup error messages, added environment variable support, and fixed package.json resolution on Windows. The thread does not include a final confirmation from the reporter, but the maintainer's recommended config is below.
First, make sure the Obsidian Local REST API plugin is downloaded and enabled inside Obsidian, then update obsidian-mcp-server to v1.2.6 or later.
For development on Windows, the maintainer suggested this MCP client config:
json{ "mcpServers": { "obsidian-mcp-server": { "command": "node", "args": ["C:/Users/{your_username}/Documents/Cline/MCP/obsidian-mcp-server/build/index.js"], "env": { "OBSIDIAN_API_KEY": "your_api_key_here", "VERIFY_SSL": "false", "OBSIDIAN_PROTOCOL": "http" } } } }Use forward slashes or escaped backslashes in the Windows file path. The updated error message in the thread also describes the recommended HTTPS setup: copy the certificate from Obsidian Settings > Local REST API > 'How to Access' and add it to your system's trusted certificates (Windows Certificate Manager, macOS Keychain Access, or Linux ca-certificates).
Security note: VERIFY_SSL=false disables certificate verification and is meant only for local development; the HTTP option is described in the thread as not recommended for production.
Did this work for you?What @cyanheads tried on GitHub (Outcome unclear)
Maintainer suggestion: use a client config with VERIFY_SSL=false, OBSIDIAN_PROTOCOL=http, and forward slashes in the Windows path to avoid both the SSL verification failure and the package.json ENOENT error.
Did this work for you?What @cyanheads tried on GitHub (Outcome unclear)
Maintainer suggestion: download and enable the Local Rest API Plugin in Obsidian, then update to v1.2.6, which improves SSL and plugin setup error messages.
Did this work for you?What @handi425 tried on GitHub (Didn't work)
Reporter after updating still got 'Could not read package.json version: Error: ENOENT' plus the same SSL certificate verification error with the new, more detailed error message.
Did this work for you?What a GitHub user tried on GitHub (Didn't work)
Initial run with default verifySSL:true produced 'Failed to initialize tag cache: ObsidianError: SSL certificate verification failed' (DEPTH_ZERO_SELF_SIGNED_CERT) and a request timeout.
Source: https://github.com/cyanheads/obsidian-mcp-server/issues/2 (opens external site)
Did this work for you?
Related questions
- How do I fix obsidian-mcp-server initialize timeout with Claude for Desktop on Windows?
- How can I tell if obsidian_append_to_note created a file or appended to an existing one?
- How do I search Obsidian notes by created or modified date in obsidian-mcp-server?
- Fix 'Unsupported protocol version: 2025-03-26' in obsidian-mcp-server
- obsidian-mcp-server: -32005 Insufficient permissions with Authentik/Keycloak OIDC?