Skip to main content
Glama
nekko4044-lgtm

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 上の MCP Server。この側は意図的に堅牢に作られています。stdout は Claude Code への純粋な JSON-RPC チャネルであり、プロセスが uncaughtException / unhandledRejection を捕捉するため、Obsidian 側の何かがそれをクラッシュさせたり、stdio パイプを閉じたりすることは絶対にできません。

  • 上流側(Obsidian に向かう側): Obsidian プラグインのローカルサーバーを指す SSEClientTransport 上の MCP Client。この側は独自の無限再接続ループを実行します。失敗または切断があれば、3 秒待って再試行し、ブリッジプロセスが生きている限り、永遠に繰り返します。

  • Obsidian に到達できない間、Claude Code からのツール呼び出しはクラッシュもハングもしません。「Obsidian は現在起動していないため、自動的に再接続します」という丁寧なエラーを含む通常の MCP ツール結果を返します。そのため Claude はツールエラーを見るだけで、MCP 接続全体を失う代わりに、少し待って再試行できます。

ブリッジ自体は Claude Code から決して切断されないため、Claude Code はセッションごとに一度だけ起動すれば済みます。その後は Obsidian が何度でも閉じられ、開き直され、再起動されても、ブリッジは数秒以内にバックグラウンドで静かに再接続します。

このリポジトリの内容

  • index.mjspackage.json - レジリエントなブリッジ本体です。このリポジトリのために新規に作成され、MIT ライセンスです。

  • obsidian-plugin/ - iansinnott による "Claude Code MCP" Obsidian プラグイン(ID claude-code-mcp)の同梱コピーです。元のリポジトリは obsidian-claude-code-mcp(0BSD ライセンス)です。これは実際に Obsidian 内部で動作し、vault を http://localhost:22360 の MCP ツールとして公開するプラグインです。このリポジトリをクローンするだけで必要なものがすべて揃うように、(未変更の main.jsmanifest.jsonstyles.css)としてそのまま同梱しています。追加で探したり信頼したりするリポジトリは不要です。帰属情報については obsidian-plugin/LICENSE と下記の「クレジット」の節を参照してください。

AI エージェントとしてセットアップを代行する場合

次の手順を順番に実行してください。ステップ 1、2、3、5 は自分で実行できます。ステップ 4 だけは実行できません。GUI のクリック操作であり、人間にしかできないためです。

  1. このリポジトリを恒久的なフォルダにクローンします(一時ディレクトリは不可。ステップ 5 の設定は、セットアップの存続期間中ずっとこの正確なパスを指します):

    git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git
    cd obsidian-mcp-resilient-bridge
  2. 依存関係をインストールします:

    npm install
  3. 同梱のプラグインをユーザーの 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/"
  4. ユーザーに手動でプラグインを有効化してもらいます。 Obsidian で:設定 → コミュニティプラグイン → "Claude Code MCP" を見つけて → オンに切り替えます。これは代わりに実行できない GUI 操作です。

  5. ~/.claude.json~/.claude/settings.jsonmcpServers にある obsidian エントリを追加または更新します。 ステップ 1 でクローンした index.mjs への絶対パスを使用します:

    "obsidian": {
      "type": "stdio",
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/CLONE/index.mjs"]
    }
  6. ユーザーに Claude Code セッションを一度だけ再起動してもらいます。 MCP サーバーの設定はセッション開始時にしか読み込まれないため、この 1 回の再起動が必要です。以降、Obsidian が閉じられたり、開き直されたり、再起動されたりしても、Claude Code を再起動する必要はありません。ブリッジが今後は自動で処理します。

人間向けの手動セットアップ手順

AI エージェントに任せていない場合は、同じ手順を手動で行います:

  1. このリポジトリを恒久的な場所(Downloads や一時フォルダではない場所)にクローンします:

    git clone https://github.com/nekko4044-lgtm/obsidian-mcp-resilient-bridge.git
    cd obsidian-mcp-resilient-bridge
    npm install
  2. プラグインを 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/"
  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"]
    }

    上記のプレースホルダーではなく、ステップ 1 の index.mjs への実際のフルパスを使用してください。

  5. 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/listtools/callresources/listresources/readprompts/listprompts/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.mjspackage.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 にするだけです。

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