Skip to main content
Glama
nekko4044-lgtm

obsidian-mcp-resilient-bridge

obsidian-mcp-resilient-bridge

Постоянный MCP-мост, который сохраняет подключение Claude Code к вашему хранилищу Obsidian, даже если Obsidian закрыт, перезапущен или ещё не был запущен, когда сессия началась.

Проблема

Стандартный способ подключить Claude Code к Obsidian — npx mcp-remote, указывающий на http://localhost:22360, локальный сервер, который предоставляет плагин Obsidian «Claude Code MCP». Это работает, но есть конкретная уязвимость:

  • mcp-remote подключается к этому вышестоящему серверу ровно один раз, в момент старта сессии Claude Code.

  • Если Obsidian закрыт в этот момент или если Obsidian закрыт или перезапущен в любой момент во время сессии, попытка подключения не удаётся или существующее подключение обрывается.

  • Claude Code не восстанавливает транспорт MCP-сервера после сбоя или обрыва самостоятельно. Единственный способ вернуть подключение — полностью перезапустить сессию Claude Code.

На практике: откройте Obsidian через несколько секунд после запуска Claude Code или позвольте ему упасть, обновиться или закрыться в середине сессии — и ваши Obsidian-инструменты исчезнут, пока вы не перезапустите всю сессию.

Related MCP server: obsidian-mcp-server

Решение

index.mjs — небольшой долгоживущий Node.js-процесс, построенный на @modelcontextprotocol/sdk, который встаёт между Claude Code и плагином Obsidian и не умирает из-за Obsidian:

  • Сторона downstream (в сторону Claude Code): MCP-сервер Server на StdioServerTransport. Эта сторона намеренно сделана отказоустойчивой: stdout — это чистый JSON-RPC-канал к Claude Code, а процесс перехватывает uncaughtException / unhandledRejection, поэтому ничто на стороне Obsidian не может его уронить или закрыть stdio-канал.

  • Сторона upstream (в сторону Obsidian): MCP-клиент Client на SSEClientTransport, указывающий на локальный сервер плагина Obsidian. Эта сторона запускает собственный бесконечный цикл переподключения: при сбое или разрыве подождать 3 секунды и попробовать снова, и так бесконечно, пока жив процесс моста.

  • Пока Obsidian недоступен, вызовы инструментов от Claude Code не падают и не зависают — они возвращают обычный результат вызова MCP-инструмента с вежливой ошибкой «Obsidian isn't running right now, reconnecting automatically», так что Claude просто видит ошибку инструмента и может повторить попытку через мгновение, а не терять всё MCP-подключение.

Поскольку сам мост никогда не отключается от Claude Code, Claude Code должен запустить его только один раз за сессию. После этого Obsidian можно закрывать, открывать заново или перезапускать сколько угодно раз — мост молча переподключится в фоне в течение нескольких секунд.

Что в этом репозитории

  • index.mjs, package.json — сам устойчивый мост. Написан с нуля для этого репозитория, лицензия MIT.

  • obsidian-plugin/ — включённая сюда копия плагина Obsidian «Claude Code MCP» (id claude-code-mcp) автора iansinnott, оригинальный репозиторий obsidian-claude-code-mcp, лицензия 0BSD. Это плагин, который реально запускается внутри Obsidian и предоставляет ваше хранилище как MCP-инструменты на http://localhost:22360. Он включён как есть (без изменений: main.js, manifest.json, styles.css), чтобы клона одного этого репозитория было достаточно, без необходимости искать и доверять другим репозиториям. См. obsidian-plugin/LICENSE и раздел «Благодарности» ниже.

Если вы ИИ-агент и настраиваете это для другого человека

Выполните шаги по порядку. Шаги 1, 2, 3 и 5 вы можете выполнить сами. Шаг 4 — единственное, что вы не можете сделать: это действие в графическом интерфейсе, которое может выполнить только человек.

  1. Клонируйте этот репозиторий в постоянную папку (не во временный каталог — конфигурация на шаге 5 будет указывать на этот точный путь всё время существования настройки):

    git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git
    cd obsidian-mcp-resilient-bridge
  2. Установите зависимости:

    npm install
  3. Установите включённый плагин в хранилище человека. Если вы ещё не знаете путь к хранилищу, спросите у человека. Затем скопируйте содержимое obsidian-plugin/ в <vault>/.obsidian/plugins/claude-code-mcp/, например:

    mkdir -p "<vault>/.obsidian/plugins/claude-code-mcp"
    cp obsidian-plugin/main.js obsidian-plugin/manifest.json obsidian-plugin/styles.css "<vault>/.obsidian/plugins/claude-code-mcp/"
  4. Попросите человека включить плагин вручную. В Obsidian: «Настройки → Сторонние плагины» → найдите «Claude Code MCP» → включите его. Это действие в графическом интерфейсе, которое вы не можете выполнить за него.

  5. Добавьте или обновите запись obsidian в разделе mcpServers в ~/.claude.json и ~/.claude/settings.json, используя абсолютный путь к index.mjs, который вы клонировали на шаге 1:

    "obsidian": {
      "type": "stdio",
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/CLONE/index.mjs"]
    }
  6. Попросите человека один раз перезапустить сессию Claude Code. Конфигурация MCP-серверов читается только при старте сессии, поэтому этот один перезапуск обязателен. После этого из-за того, что Obsidian был закрыт, перезапущен или заново открыт, перезапуск Claude Code больше не потребуется — мост справляется с этим самостоятельно.

Ручная настройка: инструкция для людей

Если у вас нет ИИ-агента, который всё настроит, — те же шаги вручную:

  1. Клонируйте этот репозиторий в постоянное место (не в Downloads и не во временную папку):

    git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git
    cd obsidian-mcp-resilient-bridge
    npm install
  2. Скопируйте плагин в своё хранилище. Замените <vault> на полный путь к вашему хранилищу Obsidian:

    mkdir -p "<vault>/.obsidian/plugins/claude-code-mcp"
    cp obsidian-plugin/main.js obsidian-plugin/manifest.json obsidian-plugin/styles.css "<vault>/.obsidian/plugins/claude-code-mcp/"
  3. В Obsidian откройте «Настройки → Сторонние плагины» и включите плагин «Claude Code MCP». Возможно, сначала нужно перезагрузить плагины или перезапустить Obsidian, чтобы он появился в списке.

  4. Откройте ~/.claude.json и ~/.claude/settings.json, найдите раздел mcpServers (или создайте его) и добавьте или замените запись obsidian на:

    "obsidian": {
      "type": "stdio",
      "command": "node",
      "args": ["/full/path/to/obsidian-mcp-resilient-bridge/index.mjs"]
    }

    Используйте фактический полный путь к index.mjs из шага 1, а не указанную выше заглушку.

  5. Выйдите и перезапустите сессию Claude Code. Это единственный перезапуск, который потребуется: после этого закрытие или повторное открытие Obsidian не вызовет необходимости перезапускать Claude Code.

Как это работает

С архитектурной точки зрения index.mjs — это один процесс Node.js, связывающий два независимых MCP-подключения:

Claude Code  <--stdio (JSON-RPC)-->  [ this bridge ]  <--SSE-->  Obsidian plugin (localhost:22360)
  • При запуске мост немедленно и безусловно подключает свой StdioServerTransport к Claude Code. Предполагается, что эта сторона останется подключённой в течение всей сессии Claude Code.

  • Затем запускается единственный фоновый цикл (maintainUpstreamConnection) — это единственное место, которому разрешено начинать попытку подключения к upstream, поэтому одновременных попыток подключения никогда не бывает больше одной. При любом обрыве или неудачной попытке он ждёт значения RECONNECT_DELAY_MS (3000 мс) и пробует снова, бесконечно.

  • Все downstream MCP-запросы (tools/list, tools/call, resources/list, resources/read, prompts/list, prompts/get и т. д.) перед передачей проверяют текущее состояние upstream-подключения. Если upstream не подключён, запросы списочного типа возвращают пустые результаты, а запросы типа call/read/get возвращают явную ошибку, а не зависают и не выбрасывают исключение.

  • Когда upstream подключение восстанавливается, мост отправляет на downstream уведомление notifications/tools/list_changed, чтобы Claude Code обновил список доступных инструментов.

  • Все логирование идёт только в stderrstdout зарезервирован исключительно для протокола JSON-RPC с Claude Code, потому что любая другая запись в него испортила бы stdio-транспорт.

  • URL upstream можно переопределить переменной окружения OBSIDIAN_MCP_URL, если ваш плагин Obsidian настроен слушать не стандартный http://localhost:22360/sse.

Лицензия

Сам мост (index.mjs, package.json, всё по содержимое корня репозитория) лицензирован по MIT — см. LICENSE.

obsidian-plugin/ — это отдельная включённая копия стороннего проекта, которая лицензирована по 0BSD — см. obsidian-plugin/LICENSE. Корневая лицензия MIT на неё не распространяется.

Благодарности

obsidian-plugin/ содержит копию плагина Obsidian «Claude Code MCP» от iansinnott (оригинальный репозиторий: obsidian-claude-code-mcp, лицензия 0BSD), включённую здесь без изменений, чтобы вся настройка работала из одного клона. Вся заслуга за то, что Obsidian говорит на MCP в принципе, принадлежит этому проекту — данный репозиторий лишь делает сторону подключения Claude Code устойчивой.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables Claude Code and Claude Desktop to interact with Obsidian vaults through MCP protocol. Supports file operations, workspace context access, and dual transport (WebSocket and HTTP/SSE) for AI-powered assistance with your notes.
    339
    BSD Zero Clause
  • A
    license
    Not graded
    quality
    D
    maintenance
    Connects Claude.ai to your local Obsidian vault for full CRUD access, search, and daily note creation via the Model Context Protocol.
    21
    14
    MIT
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables Obsidian vault to act as an MCP server for Claude and as an MCP client to external servers like MCP ANA PJe, allowing seamless interaction between notes and legal case systems.

View all related MCP servers

Related MCP Connectors

  • Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

  • Persistent memory and cross-session learning for AI coding assistants (hosted remote MCP).

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/nekko4044-lgtm/obsidian-mcp-resilient-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server