obsidian-mcp-resilient-bridge
obsidian-mcp-resilient-bridge
Obsidian が閉じている場合、再起動された場合、またはセッションの開始時にまだ起動していなかった場合でも、Claude Code を Obsidian vault に接続し続ける、永続的な MCP ブリッジです。
問題
Claude Code を Obsidian に接続する標準的な方法は、Obsidian プラグイン "Claude Code MCP" が公開しているローカルサーバーである http://localhost:22360 を指す npx mcp-remote を使うことです。これは機能しますが、特定の点で壊れやすいです:
mcp-remoteは、Claude Code がセッションを開始した瞬間に、その上流サーバーへちょうど一度だけ接続します。その瞬間に Obsidian が閉じている場合、またはセッションの途中で Obsidian が閉じられるか再起動される場合、その接続試行は失敗するか、既存の接続が切断されます。
Claude Code は、失敗した、または切断された MCP サーバートランスポートを自分では再接続しません。接続を取り戻す唯一の方法は、Claude Code セッション全体を再起動することです。
実際には、Claude Code を開始してから数秒後に Obsidian を開くか、セッション中に Obsidian がクラッシュ、更新、終了したりすると、セッション全体を再起動するまで Obsidian のツールは使えなくなります。
Related MCP server: obsidian-mcp-server
解決策
index.mjs は、@modelcontextprotocol/sdk の上に構築された小さな永続的な Node.js プロセスで、Claude Code と Obsidian プラグインの間に位置し、Obsidian が原因で停止することはありません:
下流側(Claude Code に向かう側):
StdioServerTransport上の MCPServer。この側は意図的に堅牢に作られています。stdout は Claude Code への純粋な JSON-RPC チャネルであり、プロセスがuncaughtException/unhandledRejectionを捕捉するため、Obsidian 側の何かがそれをクラッシュさせたり、stdio パイプを閉じたりすることは絶対にできません。上流側(Obsidian に向かう側): Obsidian プラグインのローカルサーバーを指す
SSEClientTransport上の MCPClient。この側は独自の無限再接続ループを実行します。失敗または切断があれば、3 秒待って再試行し、ブリッジプロセスが生きている限り、永遠に繰り返します。Obsidian に到達できない間、Claude Code からのツール呼び出しはクラッシュもハングもしません。「Obsidian は現在起動していないため、自動的に再接続します」という丁寧なエラーを含む通常の MCP ツール結果を返します。そのため Claude はツールエラーを見るだけで、MCP 接続全体を失う代わりに、少し待って再試行できます。
ブリッジ自体は Claude Code から決して切断されないため、Claude Code はセッションごとに一度だけ起動すれば済みます。その後は Obsidian が何度でも閉じられ、開き直され、再起動されても、ブリッジは数秒以内にバックグラウンドで静かに再接続します。
このリポジトリの内容
index.mjs、package.json- レジリエントなブリッジ本体です。このリポジトリのために新規に作成され、MIT ライセンスです。obsidian-plugin/- iansinnott による "Claude Code MCP" Obsidian プラグイン(IDclaude-code-mcp)の同梱コピーです。元のリポジトリは obsidian-claude-code-mcp(0BSD ライセンス)です。これは実際に Obsidian 内部で動作し、vault をhttp://localhost:22360の MCP ツールとして公開するプラグインです。このリポジトリをクローンするだけで必要なものがすべて揃うように、(未変更のmain.js、manifest.json、styles.css)としてそのまま同梱しています。追加で探したり信頼したりするリポジトリは不要です。帰属情報についてはobsidian-plugin/LICENSEと下記の「クレジット」の節を参照してください。
AI エージェントとしてセットアップを代行する場合
次の手順を順番に実行してください。ステップ 1、2、3、5 は自分で実行できます。ステップ 4 だけは実行できません。GUI のクリック操作であり、人間にしかできないためです。
このリポジトリを恒久的なフォルダにクローンします(一時ディレクトリは不可。ステップ 5 の設定は、セットアップの存続期間中ずっとこの正確なパスを指します):
git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git cd obsidian-mcp-resilient-bridge依存関係をインストールします:
npm install同梱のプラグインをユーザーの vault にインストールします。 vault のパスがまだ分からない場合は、ユーザーに確認してください。次に、
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" を見つけて → オンに切り替えます。これは代わりに実行できない GUI 操作です。
~/.claude.jsonと~/.claude/settings.jsonのmcpServersにあるobsidianエントリを追加または更新します。 ステップ 1 でクローンしたindex.mjsへの絶対パスを使用します:"obsidian": { "type": "stdio", "command": "node", "args": ["/ABSOLUTE/PATH/TO/CLONE/index.mjs"] }ユーザーに Claude Code セッションを一度だけ再起動してもらいます。 MCP サーバーの設定はセッション開始時にしか読み込まれないため、この 1 回の再起動が必要です。以降、Obsidian が閉じられたり、開き直されたり、再起動されたりしても、Claude Code を再起動する必要はありません。ブリッジが今後は自動で処理します。
人間向けの手動セットアップ手順
AI エージェントに任せていない場合は、同じ手順を手動で行います:
このリポジトリを恒久的な場所(
Downloadsや一時フォルダではない場所)にクローンします:git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git cd obsidian-mcp-resilient-bridge npm installプラグインを vault にコピーします。
<vault>は Obsidian vault の完全なパスに置き換えます: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"] }上記のプレースホルダーではなく、ステップ 1 の
index.mjsへの実際のフルパスを使用してください。Claude Code セッションを終了して再起動します。必要になる再起動はこれだけです。以降は、Obsidian を閉じたり開き直したりしても、再起動は不要です。
仕組み
アーキテクチャとしては、index.mjs は 2 つの独立した MCP 接続を配線する単一の Node プロセスです:
Claude Code <--stdio (JSON-RPC)--> [ this bridge ] <--SSE--> Obsidian plugin (localhost:22360)起動時に、ブリッジは
StdioServerTransportを直ちに、かつ無条件に Claude Code に接続します。この側は、Claude Code セッション全体を通じて接続されたままであることを想定しています。次に、単一のバックグラウンドループ(
maintainUpstreamConnection)を開始します。このループだけが上流への接続試行を開始できる唯一の場所であるため、進行中の接続試行が同時に 2 つ以上になることはありません。切断または失敗した試行があるたびに、RECONNECT_DELAY_MS(3000ms)待ってから再試行します。これを無期限に繰り返します。すべての下流 MCP リクエスト(
tools/list、tools/call、resources/list、resources/read、prompts/list、prompts/getなど)は、転送する前に現在の上流接続状態をチェックします。上流が接続されていない場合、リスト系のリクエストは空の結果に縮退し、call / read / get 系のリクエストはハングしたり例外を投げたりせず、明確なエラーを返します。上流への再接続に成功すると、ブリッジは下流へ
notifications/tools/list_changed通知を送信し、Claude Code が利用可能なツールの表示を更新できるようにします。すべてのログは
stderrにのみ出力されます。stdoutは Claude Code との JSON-RPC プロトコルのために排他的に予約されています。それ以外のものを書くと stdio トランスポートが壊れるためです。上流 URL は
OBSIDIAN_MCP_URL環境変数で上書きできます。Obsidian プラグインがデフォルトのhttp://localhost:22360/sse以外の場所で待ち受けるように設定されている場合に使用できます。
ライセンス
ブリッジ自体(index.mjs、package.json、リポジトリのルートにあるすべてのもの)は MIT ライセンスです。LICENSE を参照してください。
obsidian-plugin/ は、第三者プロジェクトの独立した同梱コピーであり、0BSD ライセンスです。obsidian-plugin/LICENSE を参照してください。これはルートの MIT ライセンスの対象ではありません。
クレジット
obsidian-plugin/ には、iansinnott による "Claude Code MCP" Obsidian プラグイン(元のリポジトリ: obsidian-claude-code-mcp、0BSD ライセンス)が、変更せずに同梱されています。単一のクローンだけで全体のセットアップが機能するようにするためです。Obsidian が初めて MCP を話せるようにした功績はすべてそのプロジェクトにあります。このリポジトリは、接続の Claude Code 側を resilient にするだけです。
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