Разработчик столкнулся с типичной проблемой: заметки в Obsidian и ИИ-агенты, используемые для программирования (Claude, Codex), существовали в параллельных мирах. Чтобы передать контекст из заметок в ассистент, приходилось вручную копировать текст. Решением стал самописный MCP-сервер, работающий поверх CouchDB — базы данных, в которой Obsidian хранит заметки благодаря плагину Self-hosted LiveSync.

MCP (Model Context Protocol) — это стандарт, позволяющий ИИ-клиентам вызывать внешние инструменты: искать файлы, читать документы, создавать записи. Большинство готовых MCP-решений для Obsidian работают только с локальными файлами — vault должен находиться на той же машине, что и агент. Автор же хотел сохранить синхронизацию между устройствами и доступность агента из разных клиентов без привязки к облаку.

КлиентПротоколПуть
Obsidian DesktopHTTPнапрямую к CouchDB
Obsidian MobileHTTPS (через KeenDNS)к CouchDB
MCP-серверHTTPнапрямую к CouchDB

Поэтому он развернул на домашнем сервере Ubuntu CouchDB (без Docker, через systemd на порту 5443) и настроил плагин Obsidian LiveSync для синхронизации vault через эту базу. Возникла проблема с HTTPS на мобильных клиентах — KeenDNS при проксировании срезал CORS-заголовки. Десктопное приложение Obsidian смогло работать напрямую по HTTP, а мобильные устройства пришлось пустить через отдельный KeenDNS-поддомен с HTTPS. MCP-сервер на сервере обращается к CouchDB напрямую по HTTP.

В основе лежит CouchDB, синхронизирующая заметки через плагин Self-hosted LiveSync.

Сам MCP-сервер выступает прослойкой: он не требует запущенного Obsidian Desktop на сервере и не копирует vault. Вместо этого он по HTTP-запросам обращается к CouchDB и преобразует внутренний формат LiveSync (заметки разбиты на манифест и множество чанков) в обычный markdown. Сейчас сервер предоставляет 20 инструментов: поиск, чтение, создание и обновление заметок, работа с тегами, свойствами, графом связей, canvas и шаблонами. Первым клиентом стал Claude, вторым — Codex.

В процессе разработки обнаружился неочевидный баг: при определённых условиях MCP-сервер тихо удалял куски заметок. Он был связан с особенностями формата LiveSync и порядком обработки children-документов. Баг удалось локализовать и исправить.

Проект интересен как пример self-hosted интеграции ИИ-агентов с заметочной системой без коммерческих облачных сервисов. Решение может быть воспроизведено разработчиками, готовыми развернуть свой сервер и разобраться в формате LiveSync.