Skip to main content
Glama
JonHollander

Obsidian Vault MCP Server

by JonHollander

Obsidian + Claude через Cloudflare

Получите доступ к своему Obsidian vault из Claude (веб, десктоп, Code) с помощью MCP-сервера на Cloudflare Workers + Containers.

Никаких NAS, Docker Compose или туннелей. Только инфраструктура Cloudflare с использованием Agents SDK для полноценного MCP-сервера.

Архитектура

Obsidian (phone, desktop)
        │
        │ Obsidian Sync (your existing subscription)
        ▼
Cloudflare Container (Node.js 22)
   runs `ob sync --continuous`
   serves vault files over HTTP API
        ▲
        │ container fetch (native)
        │
Cloudflare Worker (MCP server via Agents SDK)
   tools: list, read, search, write, append, delete
   auth via bearer token (or OAuth / Cloudflare Access)
        ▲
        │ MCP over Streamable HTTP
        │
Claude (web, desktop, Code)

Контейнер является единственным источником истины. Он запускает obsidian-headless для синхронизации с Obsidian Sync и предоставляет HTTP API для файловых операций. Worker проксирует все вызовы инструментов MCP к API контейнера.

Related MCP server: obsidianMCP

Инструменты MCP

Инструмент

Описание

list_notes

Список всех markdown-заметок с путями, размерами и датами

read_note

Чтение полного содержимого заметки по пути

search_notes

Полнотекстовый поиск по всем заметкам с фрагментами

write_note

Создание или перезапись заметки

append_to_note

Добавление текста в существующую заметку (или создание новой)

delete_note

Удаление заметки

create_folder

Создание папки (включая промежуточные директории)

delete_folder

Удаление папки (пустой или рекурсивно)

list_folders

Список вложенных папок по указанному пути

Предварительные требования

  • Аккаунт Cloudflare с платным тарифом Workers ($5/мес)

  • Активная подписка Obsidian Sync

  • Node.js 22+ на вашей рабочей станции

  • CLI wrangler: npm install -g wrangler

Настройка

0. Вход в Wrangler

wrangler login

Все необходимые области доступа (scopes) предоставляются по умолчанию.

1. Генерация токена аутентификации Obsidian

Разовый шаг на вашей рабочей станции:

npm install -g obsidian-headless

ob login
# Enter email, password, MFA code if enabled

ob sync-list-remote
# Note your vault name

2. Настройка окружения

Скопируйте пример файла окружения и заполните свои значения:

cp .dev.vars.example .dev.vars

Отредактируйте .dev.vars, указав свои учетные данные Obsidian и опциональный токен аутентификации MCP. Этот файл используется wrangler dev для локальной разработки и скриптом настройки для отправки секретов в Cloudflare. Он уже добавлен в .gitignore.

3. Развертывание

Запустите скрипт настройки, чтобы отправить все секреты и выполнить развертывание:

./scripts/setup.sh

Или выполните шаги по отдельности:

./scripts/setup.sh secrets         # Push secrets to Cloudflare
./scripts/setup.sh validate        # Check prerequisites
./scripts/setup.sh deploy          # Validate + install deps + deploy + restart container
./scripts/setup.sh status          # Check sync container health
./scripts/setup.sh restart         # Restart sync container
./scripts/setup.sh container-logs  # View sync container logs

Ваш MCP-сервер доступен по адресу: https://obsidian-mcp.<your-subdomain>.workers.dev/mcp

4. Подключение Claude

Claude.ai (веб)

Настройки → Коннекторы → Добавить пользовательский коннектор:

  • URL: https://obsidian-mcp.<your-subdomain>.workers.dev/mcp?token=YOUR_MCP_AUTH_TOKEN

  • Оставьте поля OAuth пустыми — токен в URL обрабатывает аутентификацию

Claude Code

claude mcp add \
  --transport http \
  --scope user \
  obsidian-vault \
  https://obsidian-mcp.<your-subdomain>.workers.dev/mcp

Claude Desktop

Добавьте в claude_desktop_config.json:

{
  "mcpServers": {
    "obsidian-vault": {
      "url": "https://obsidian-mcp.<your-subdomain>.workers.dev/mcp"
    }
  }
}

Как передаются данные

Вы редактируете заметку на телефоне:

  1. Obsidian Sync отправляет изменения

  2. ob sync --continuous в контейнере подтягивает их в /vault

  3. При следующем чтении или поиске Claude, Worker проксирует запрос к HTTP API контейнера, который считывает данные напрямую из /vault

Claude создает заметку:

  1. Worker получает вызов MCP write_note

  2. Worker проксирует его к HTTP API контейнера

  3. Контейнер записывает файл в /vault

  4. ob sync обнаруживает новый файл и отправляет его через Obsidian Sync

  5. Он появляется на вашем телефоне и компьютере

Разработка

# Local dev (MCP server only, no container)
npm run dev

# Deploy
npm run deploy

Стоимость

Сервис

Использование

Стоимость

Платный тариф Workers

Уже оплачен

$5/мес (покрывает всё)

Контейнер

1 экземпляр, в основном простаивает

Включено в тариф Workers

Итого дополнительно

$0

Структура проекта

obsidian-mcp/
├── src/
│   └── index.ts              # MCP server (Agents SDK, proxies to container)
├── sync-container/
│   ├── Dockerfile            # Headless sync container image
│   ├── entrypoint.sh         # Auth, sync startup
│   └── server.js             # HTTP API for vault file operations
├── scripts/
│   └── setup.sh              # Push secrets, deploy
├── .dev.vars.example         # Template for env vars / secrets
├── wrangler.jsonc            # Worker + Container config
└── package.json

Дальнейшие шаги

Это упражнения для укрепления настройки под ваши нужды:

Усиление аутентификации

Включенная аутентификация (секрет MCP_AUTH_TOKEN) поддерживает как заголовки Authorization: Bearer, так и параметры запроса ?token=. Использование токена в URL удобно для коннекторов Claude.ai, где пользовательские заголовки не всегда доступны.

Для общих или публичных развертываний рассмотрите более надежные варианты:

  • Cloudflare Access: Установите Zero Trust Access перед Worker для SSO на основе идентификации с журналами аудита без изменения кода

  • OAuth: Интегрируйте workers-oauth-provider для потоков OAuth GitHub/Google

Аутентификация контейнера

Проверьте, поддерживает ли obsidian-headless аутентификацию через --token или переменные окружения для ob login, чтобы избежать интерактивных запросов. Если нет, сохраняйте сессию аутентификации после разового интерактивного входа и восстанавливайте её при запуске контейнера.

Устойчивость к перезапуску контейнера

Файл состояния sqlite ob находится на эфемерном диске контейнера. Перезапуск инициирует полную повторную синхронизацию. Чтобы исправить это: добавьте перехват SIGTERM в entrypoint.sh, который сохраняет файл состояния, и восстанавливайте его при запуске.

Производительность поиска

Поиск методом перебора считывает каждый файл .md при каждом запросе — это нормально для менее чем 500 файлов. Для больших хранилищ создайте поисковый индекс в D1 или Workers KV.

Вложения

В настоящее время фильтрует только .md. Расширьте функционал для поддержки изображений, PDF и других вложений хранилища с помощью дополнительных инструментов.

Устранение неполадок

Docker должен быть запущен — Контейнер синхронизации требует Docker. Запустите docker info для проверки. Подкоманда validate проверяет это автоматически.

Два пароляOBSIDIAN_PASSWORD — это ваш пароль от аккаунта Obsidian (используется для входа на obsidian.md). VAULT_PASSWORD — это отдельный пароль сквозного шифрования (E2EE), установленный в Obsidian → Sync → Encryption. Оставьте VAULT_PASSWORD пустым, если ваше хранилище не использует E2EE.

Развертывание не перезапускает контейнерыwrangler deploy не перезапускает запущенные контейнеры. Скрипт настройки делает это автоматически. При ручном развертывании перезапустите с помощью ./scripts/setup.sh restart.

Логи контейнера не отображаются в wrangler tail — Стандартный вывод контейнера не передается через wrangler tail. Используйте ./scripts/setup.sh container-logs вместо этого.

Справочник компонентов

Компонент

Что он делает

obsidian-headless

Официальный CLI Obsidian, синхронизирует хранилище без графического интерфейса

McpAgent (Agents SDK)

Обрабатывает транспорт MCP, сессии, аутентификацию

McpServer (MCP SDK)

Регистрация инструментов, протокол JSON-RPC

Cloudflare Containers

Запускает процесс синхронизации вместе с Worker

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    This MCP server enables Claude to interact with an Obsidian vault for persistent, structured memory, providing tools for note creation, semantic search, graph traversal, and session memory.
    18
    9 npm
    13
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides Claude with read, search, and write access to an Obsidian vault through MCP tools.
    6,209 npm
    Apache 2.0
  • A
    license
    Not graded
    quality
    D
    maintenance
    Bidirectional MCP server that connects Claude with an Obsidian vault, enabling note management, full-text search, graph traversal, and daily notes operations.
    2,545 npm
    MIT