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» (idclaude-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 — единственное, что вы не можете сделать: это действие в графическом интерфейсе, которое может выполнить только человек.
Клонируйте этот репозиторий в постоянную папку (не во временный каталог — конфигурация на шаге 5 будет указывать на этот точный путь всё время существования настройки):
git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git cd obsidian-mcp-resilient-bridgeУстановите зависимости:
npm installУстановите включённый плагин в хранилище человека. Если вы ещё не знаете путь к хранилищу, спросите у человека. Затем скопируйте содержимое
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/"Попросите человека включить плагин вручную. В Obsidian: «Настройки → Сторонние плагины» → найдите «Claude Code MCP» → включите его. Это действие в графическом интерфейсе, которое вы не можете выполнить за него.
Добавьте или обновите запись
obsidianв разделеmcpServersв~/.claude.jsonи~/.claude/settings.json, используя абсолютный путь кindex.mjs, который вы клонировали на шаге 1:"obsidian": { "type": "stdio", "command": "node", "args": ["/ABSOLUTE/PATH/TO/CLONE/index.mjs"] }Попросите человека один раз перезапустить сессию Claude Code. Конфигурация MCP-серверов читается только при старте сессии, поэтому этот один перезапуск обязателен. После этого из-за того, что Obsidian был закрыт, перезапущен или заново открыт, перезапуск Claude Code больше не потребуется — мост справляется с этим самостоятельно.
Ручная настройка: инструкция для людей
Если у вас нет ИИ-агента, который всё настроит, — те же шаги вручную:
Клонируйте этот репозиторий в постоянное место (не в
Downloadsи не во временную папку):git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git cd obsidian-mcp-resilient-bridge npm installСкопируйте плагин в своё хранилище. Замените
<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/"В Obsidian откройте «Настройки → Сторонние плагины» и включите плагин «Claude Code MCP». Возможно, сначала нужно перезагрузить плагины или перезапустить Obsidian, чтобы он появился в списке.
Откройте
~/.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, а не указанную выше заглушку.Выйдите и перезапустите сессию 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 обновил список доступных инструментов.Все логирование идёт только в
stderr—stdoutзарезервирован исключительно для протокола 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 устойчивой.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityDmaintenanceEnables 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.339BSD Zero Clause
- AlicenseNot gradedqualityDmaintenanceConnects Claude.ai to your local Obsidian vault for full CRUD access, search, and daily note creation via the Model Context Protocol.2114MIT
- FlicenseNot gradedqualityAmaintenanceEnables 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.
- AlicenseAqualityAmaintenanceA local MCP connector that lets Claude read, write and search any Obsidian vault directly from disk.20MIT
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).
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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