Reported issues for obsidian-sync-mcp
Pod holds 11 of 11 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.
Back to obsidian-sync-mcp.
Most discussed
Content-Type response header missing charset=utf-8 — non-ASCII content (Cyrillic, CJK) renders as mojibake in some clients
Labels: enhancement
Description
When retrieving notes containing non-ASCII characters (e.g., Cyrillic / Russian text) via the MCP HTTP Stream transport, the text may render as mojibake (garbled multibyte sequences) in HTTP clients that do not default to UTF-8 decoding. The underlying data in CouchDB is correctly stored and the E2EE decryption pipeline (HKDF v2) produces valid UTF-8 output. The issue is isolated to the HTTP response layer.
Environment
- obsidian-sync-mcp v0.6.2
- D
Read the thread · 2026-08-21 · open · external user · 4 comments
"Unknown client"
After some time, I get Unknown client from the server and I need to manually setup another MCP server since it does not allow to authenticate again.
Read the thread · 2026-08-12 · closed · external user · 4 comments
Feature Request: Write Access to single folder instead of all or nothing.
Currently obsidian-sync-mcp has a all or nothing option (for write access) when you play with READ_ONLY=true or false. It would be nice if we could grant write access to a single folder (or multiple), for example MCP and have read only for the remaining folders/files.
We could add the option for MCP_INSTRUCTIONS like this but this might not be respected by all AI clients
MCP_INSTRUCTIONS: "Write, modify, or delete ONLY files within the 'MCP/' folder. Other folders are read-only for you."
Is t
Read the thread · 2026-07-26 · closed · external user · 3 comments
CouchDB mode: list_notes finds notes but read_note returns "Note not found" for every path
Summary
In CouchDB / Self-hosted LiveSync mode, the server builds the search index and lists notes correctly, but read_note returns Note not found for every note, including paths returned by list_notes.
This makes the MCP unusable for reliable reading or editing of an existing vault.
Environment
- obsidian-sync-mcp version:
0.5.7 - Deployment: Docker
- Backend: Self-hosted LiveSync / CouchDB
- E2EE: enabled
- Server starts successfully:
Vault ready.- `Synchronisation p
Read the thread · 2026-07-21 · closed · external user · 3 comments
list_notes silently omits zero-byte notes that exist in the vault
Running v0.5.5, CouchDB remote mode, obfuscation + E2EE on.
If a note has zero bytes of content, list_notes never returns it, even though it shows up in Obsidian's own file list and in vault.listNotesWithMtime().
The mechanics: main.ts only indexes a note when content is truthy (if (content) searchIndex.update(...)), so "" gets dropped. list_notes reads from the index first and the fallback to vault.listNotesWithMtime() only runs when the index is totally empty, so once anything is indexed, em
Read the thread · 2026-07-07 · closed · external user · 3 comments
write_note silently fails with E2E encrypted vault - chunks unprocessable by LiveSync client
Hi,
I wanted to use your MCP server but found an issue that prevented from writing notes when the vault is encrypted. I was helped from AI agents and it generated this issue report.
Environment
obsidian-sync-mcpv0.5.3 (CouchDB mode)- CouchDB 3.5.0
- Self-hosted LiveSync (latest)
LiveSync configuration
E2EEAlgorithm: v2chunkSplitterVersion: v3-rabin-karphashAlg: xxhash64customChunkSize: 60Property Encryption: true
Describe the bug
write_note returns
Read the thread · 2026-05-24 · closed · external user · 5 comments
Pass _rev for optimistic concurrency on writes
Currently write_note / edit_note have no staleness check. If two agents edit the same note concurrently, last-write-wins and one side's changes are silently lost.
CouchDB already tracks _rev on every document. Suggestion:
- Return the
_rev(as an opaquerevisiontoken) fromread_note/get_note_metadata. - Accept an optional
expected_revisiononwrite_note/edit_note. If provided and stale, reject with something like{ error: "stale_revision", current_revision: "..." }s
Read the thread · 2026-04-17 · open · external user · 2 comments
Feature Request: READ_ONLY mode to disable write tools
Feature Request: READ_ONLY mode to disable write tools
Summary
Add a READ_ONLY environment variable that prevents the server from registering write tools (write_note, edit_note, delete_note, move_note). When READ_ONLY=true, only read tools are exposed via MCP.
Motivation
When exposing the MCP server to multiple AI clients (e.g. Claude via claude.ai connector + a self-hosted agent like OpenClaw), there is currently no way to restrict access at the server level. All conne
Read the thread · 2026-04-12 · closed · external user · 3 comments
Most recent
v0.6.4 breaks the MCP endpoint — every session dies with TypeError in @modelcontextprotocol/server installDiscoverHandler ("Connection closed" client-side)
Summary
Upgrading ghcr.io/es617/obsidian-sync-mcp from v0.6.3 to v0.6.4 makes the MCP endpoint unusable. Every client (Claude.ai / Claude iOS, reached through an OAuth-shim proxy) fails immediately with Connection closed. Rolling the image tag back to v0.6.3 — nothing else changed — fully restores it.
Environment
- Image:
ghcr.io/es617/obsidian-sync-mcp:v0.6.4(linux/arm64, Raspberry Pi 5, Node 22.23.2 in-image) - CouchDB mode (LiveSync),
MCP_AUTH_TOKENset, reached thro
Read the thread · 2026-08-30 · closed · external user · 1 comment
Enable private vulnerability reporting
Hi @es617 @miltonnetofastpays ,
I have a security finding to share privately. Could you enable private vulnerability reporting on this repo?
Thanks
Read the thread · 2026-07-08 · closed · external user · 1 comment
list_notes silently omits zero-byte notes that exist in the vault
Running v0.5.5, CouchDB remote mode, obfuscation + E2EE on.
If a note has zero bytes of content, list_notes never returns it, even though it shows up in Obsidian's own file list and in vault.listNotesWithMtime().
The mechanics: main.ts only indexes a note when content is truthy (if (content) searchIndex.update(...)), so "" gets dropped. list_notes reads from the index first and the fallback to vault.listNotesWithMtime() only runs when the index is totally empty, so once anything is indexed, em
Read the thread · 2026-07-07 · closed · external user · 0 comments
The remaining reports are on the project's issue tracker.