# 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](/mcp/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](https://github.com/es617/obsidian-sync-mcp/issues/16) · 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](https://github.com/es617/obsidian-sync-mcp/issues/13) · 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](https://github.com/es617/obsidian-sync-mcp/issues/11) · 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](https://github.com/es617/obsidian-sync-mcp/issues/10) · 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](https://github.com/es617/obsidian-sync-mcp/issues/5) · 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-mcp` v0.5.3 (CouchDB mode)
- CouchDB 3.5.0
- Self-hosted LiveSync (latest)

## LiveSync configuration
- `E2EEAlgorithm: v2`
- `chunkSplitterVersion: v3-rabin-karp`
- `hashAlg: xxhash64`
- `customChunkSize: 60`
- `Property Encryption: true`

## Describe the bug

`write_note` returns

[Read the thread](https://github.com/es617/obsidian-sync-mcp/issues/4) · 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 opaque `revision` token) from `read_note` / `get_note_metadata`.
- Accept an optional `expected_revision` on `write_note` / `edit_note`. If provided and stale, reject with something like `{ error: "stale_revision", current_revision: "..." }` s

[Read the thread](https://github.com/es617/obsidian-sync-mcp/issues/2) · 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](https://github.com/es617/obsidian-sync-mcp/issues/1) · 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_TOKEN` set, reached thro

[Read the thread](https://github.com/es617/obsidian-sync-mcp/issues/18) · 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](https://github.com/es617/obsidian-sync-mcp/issues/9) · 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](https://github.com/es617/obsidian-sync-mcp/issues/6) · 2026-07-07 · closed · external user · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/es617/obsidian-sync-mcp.git/issues).
