mcpField
O
Obsidian Mcp For Claude.ai (web)

Obsidian Mcp For Claude.ai (web)

ローカル
github.com/BoweyLouメモリ・ナレッジ3715 週間前に更新

Obsidian Mcp For Claude.ai (web) について

Enhanced Obsidian MCP Server は、Obsidian Local REST API プラグインを介して Obsidian ボールトの読み書き、検索、管理を行う MCP サーバーです。Claude.ai からローカルのボールトにリモートでアクセスしたいユーザー向けで、複数ボールト対応と Tailscale によるアクセスを備えます。

主な機能

  1. 01ノートファイルの読み取り、更新、検索、削除
  2. 02frontmatter とタグの管理
  3. 03Dataview クエリとタスククエリ
  4. 04複数の Obsidian ボールトへの接続
  5. 05Claude.ai リモート MCP 向けのステートレス HTTP モード
  6. 06Tailscale Funnel によるリモートアクセス

活用シーン

  1. 01Claude.ai から Obsidian ノートをリモートで読み取りおよび更新
  2. 02AI ワークフローを使った個人用ナレッジベースの検索と整理
  3. 03Tailscale を使い別のデバイスからローカルのボールトにアクセス

MCP 対応

本プロジェクトは MCP サーバーとして、Obsidian ノート向けのファイル、検索、タスクのツールを Claude.ai リモート MCP や Claude Desktop などの MCP クライアントに提供します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

インストール方法は未掲載です

このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。

リポジトリ

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

Obsidian MCP Server - Enhanced

TypeScript Model Context Protocol Version License Status Original

Claude.ai のリモート連携、Tailscale 対応、高度なクエリ機能を備えた拡張版 Obsidian MCP サーバーです!

🔥 拡張フォークのお知らせ: これは優れた cyanheads/obsidian-mcp-server に、Claude.ai とのリモート連携、高度なタスク検索、Tailscale によるセキュリティに特化した機能を追加した拡張版です。

Obsidian Vault に包括的にアクセスできる MCP(Model Context Protocol)サーバーです。Obsidian Local REST API plugin を通じて、LLM や AI エージェントがノートやファイルの読み取り、書き込み、検索、管理を行えるようにします。

cyanheads/mcp-ts-template をベースに構築されており、堅牢なエラー処理、ロギング、セキュリティ機能を備えたモジュラーアーキテクチャを採用しています。

🚀 拡張機能(このフォーク)

🏛️ 複数 Vault のサポート

単一の MCP サーバーを介して、複数の Obsidian Vault に同時にアクセスできます。

  • 複数 Vault の管理:異なるポートで複数の Obsidian インスタンスに同時接続できます
  • Vault ごとのルーティング:vault パラメーターに基づき、ツールが適切な Vault に自動的にルーティングします
  • 個別認証:各 Vault に個別の API キーを設定し、MCP 認証は一元管理します
  • 後方互換性:既存の単一 Vault 構成は変更せずに引き続き使用できます
  • 動的構成:検証とエラー処理に対応した JSON ベースの Vault 構成
🌐 Claude.ai リモート連携

Claude.ai の Remote MCP 機能とシームレスに連携できます。

  • ステートレス HTTP モード:Claude.ai との互換性を実現する専用のステートレス転送(MCP_HTTP_STATELESS=true)
  • セッションベースモード:その他の MCP クライアント向けの従来型セッション管理
  • シンプルな認証:サーバーへのアクセスに専用の MCP_AUTH_KEY を使用します
  • 構成不要:Claude.ai Remote MCP サーバーですぐに利用できます
  • 本番環境対応:エンタープライズグレードの安定性とエラー処理
🔒 Tailscale による安全なリモートアクセス

どこからでも Obsidian Vault に安全にアクセスできます。

  • Tailscale Funnel 連携:証明書を自動取得する安全な HTTPS エンドポイント
  • エンドツーエンド暗号化:すべての通信を Tailscale ネットワーク経由で暗号化します
  • ポートフォワーディング不要:ネットワーク構成は一切必要ありません
  • アクセス制御:エンタープライズセキュリティ向けの Tailscale ACL を標準でサポート
📊 強化されたタスク・クエリシステム

従来版を超える高度なクエリ機能を備えています。

  • Tasks プラグイン連携:Obsidian Tasks プラグインと深く連携します
  • 高度な日付解析:自然言語による日付認識
  • 優先度の検出:視覚的およびテキストベースの優先度解析
  • 複数の出力形式:テーブル、リスト、サマリー表示
🔧 本番環境の監視と信頼性

エンタープライズグレードの監視機能と自動再起動機能を備えています。

  • ヘルスチェックスクリプト:コンポーネントを包括的に検証します(scripts/health-check.sh)
  • インテリジェントな監視:プロセスのライフサイクル管理による自動再起動を行います(scripts/monitor-mcp.sh)
  • macOS の自動起動:システム起動時に実行するためのランチエージェント設定です(scripts/setup-autostart.sh)
  • 動的なポート管理:ポートの競合を自動的に解決します(3010-3013 の範囲)
  • 強化されたログ記録:接続の詳細なデバッグと API キーの検証を行います

🚀 コア機能:Obsidian ツール 🛠️

このサーバーは、Obsidian の保管庫を操作するための専用ツールを AI に提供します。

ツール名説明主な機能
obsidian_read_file指定したファイルの内容とメタデータを取得します。- markdown または json 形式で読み取ります。
- 大文字と小文字を区別しないパスでフォールバックします。
- ファイル情報(作成日時/更新日時)を含みます。
obsidian_update_fileファイル全体を対象とした操作でノートを変更します。- 内容を append、prepend、または overwrite します。
- ファイルが存在しない場合は作成できます。
- パス、アクティブなノート、または定期ノートを指定してファイルを操作します。
obsidian_search_replace対象のノート内で検索と置換を実行します。- 文字列または正規表現による検索に対応します。
- 大文字と小文字の区別、単語単位での検索、すべての一致箇所の置換を設定できます。
obsidian_global_search保管庫全体を検索します。- テキストまたは正規表現による検索。
- パスと更新日で絞り込みます。
- 検索結果をページ分割します。
obsidian_list_files指定した保管庫フォルダー内のファイルとサブディレクトリを一覧表示します。- ファイル拡張子または名前の正規表現で絞り込みます。
- ディレクトリを整形されたツリー形式で表示します。
obsidian_manage_frontmatterノートの YAML フロントマターをアトミックに管理します。- フロントマターのキーを get、set、または delete します。
- メタデータの変更時にファイル全体を書き換えません。
obsidian_manage_tagsノートのタグを追加、削除、または一覧表示します。- YAML フロントマターとインラインコンテンツの両方のタグを管理します。
obsidian_delete_file指定したファイルを保管庫から完全に削除します。- 安全のため、大文字と小文字を区別しないパスでフォールバックします。
obsidian_dataview_query保管庫に対して Dataview DQL クエリを実行します。- Dataview 構文で TABLE、LIST クエリを実行します。
- タグ、フロントマター、日付を条件にノートを検索します。
- レポートと分析結果を生成します。
obsidian_task_query保管庫全体のタスクを検索して分析します。- ステータス、日付範囲、優先度で絞り込みます。
- 複数の出力形式に対応します。
- タスクのメタデータ(期限、タグ)を抽出します。

目次

| 概要 | 機能 | インストール | | 設定 | プロジェクト構成 | Vault キャッシュサービス | | ツール | リソース | 開発 | ライセンス |

概要

Obsidian MCP Server は、Model Context Protocol(MCP)を理解するアプリケーション(MCP クライアント)と Obsidian Vault の間をつなぐブリッジとして機能します。高度な AI アシスタント(LLM)、IDE 拡張機能、カスタムスクリプトなどのアプリケーションが、Obsidian Vault と直接、安全にやり取りできるようになります。

複雑なスクリプトや手動での操作の代わりに、ツールからこのサーバーを利用して、次のことができます。

  • Vault 管理を自動化:ノートの読み取り、コンテンツの更新、フロントマターやタグの管理、ファイル横断検索、ディレクトリの一覧表示、プログラムによるファイルの削除を行えます。
  • Obsidian を AI ワークフローに統合:LLM が、リサーチ、執筆、コーディングのタスクの一環としてナレッジベースにアクセスし、変更できるようにします。
  • カスタム Obsidian ツールを構築:新しい方法で Vault のデータとやり取りする外部アプリケーションを作成できます。

堅牢な mcp-ts-template を基盤として構築されたこのサーバーは、MCP 標準を介して Obsidian の機能を公開するための、標準化された、安全で効率的な方法を提供します。これは、Vault 内で動作する強力な Obsidian Local REST API plugin と通信することで実現されています。

開発者向けメモ:このリポジトリには .clinerules ファイルが含まれています。このファイルは、コードベースのパターン、ファイルの場所、コードスニペットをすばやく参照できる、LLM コーディングエージェント向けの開発者用チートシートです。

機能

コアユーティリティ

mcp-ts-template が提供する堅牢なユーティリティを活用しています。

  • ロギング:機密データのマスキングに対応した、構造化された設定可能なロギング(ファイルローテーション、コンソール、MCP 通知)。
  • エラー処理:エラー処理の一元化、標準化されたエラー型(McpError)、自動ロギング。
  • 設定:包括的な検証を伴う環境変数の読み込み(dotenv)。
  • 入力検証/サニタイズ:スキーマ検証に zod を使用し、カスタムのサニタイズロジックを適用します。
  • リクエストコンテキスト:一意のリクエスト ID による操作の追跡と関連付け。
  • 型安全性:TypeScript と Zod スキーマによって厳格な型付けを適用します。
  • HTTP トランスポートオプション:セッション管理、CORS 対応、API キー認証を備えた、Node.js ネイティブの HTTP サーバー。
Obsidian 連携
  • Obsidian Local REST API 連携:ObsidianRestApiService が管理する HTTP リクエストを介して、Obsidian Local REST API plugin と直接通信します。
  • 包括的なコマンド対応:主要な Vault 操作を MCP ツールとして公開します(ツールセクションを参照)。
  • Vault とのやり取り:読み取り、更新(追記、先頭への追加、上書き)、検索(全体テキスト/正規表現、検索/置換)、一覧表示、削除、フロントマターやタグの管理に対応します。
  • 柔軟な対象指定:パス、Obsidian で現在アクティブなファイル、または定期ノート(日次、週次など)を対象としてツールを実行できます。
  • Vault キャッシュサービス:パフォーマンスと耐障害性を高める、インメモリのインテリジェントキャッシュです。Vault のコンテンツをキャッシュし、ライブ API が失敗した場合は全体検索ツールのフォールバックとして機能します。また、定期的に更新して同期状態を保ちます。
  • 安全機能:ファイル操作での大文字と小文字を区別しないパスのフォールバックと、変更の種類(追記、上書きなど)の明確な区別を備えています。

インストール

前提条件
  1. Obsidian:Obsidian をインストールする必要があります。
  2. Obsidian Local REST API Plugin:Obsidian の保管庫内にObsidian Local REST API プラグインをインストールして有効にします。
  3. API Key:Obsidian の Local REST API プラグインの設定で API キーを構成します。サーバーの設定にこのキーが必要です。
  4. Node.js & npm:Node.js(v18 以降を推奨)と npm がインストールされていることを確認します。
  5. Tailscale(リモートアクセス用):Tailscale をインストールし、安全なリモート Claude.ai 連携のために Tailscale Funnel を有効にします。

💡 クイックセットアップ:起動時に自動で開始する設定については、インストール後に自動起動セットアップガイドをご覧ください。

インストール
  1. この拡張版リポジトリをクローンします:
    git clone https://github.com/BoweyLou/obsidian-mcp-server-enhanced.git
    cd obsidian-mcp-server-enhanced
    
  2. 依存関係をインストールします:
    npm install
    
  3. プロジェクトをビルドします:
    npm run build
    
    これにより TypeScript コードが dist/ ディレクトリ内の JavaScript にコンパイルされ、エントリーポイントが実行可能になります。

設定

環境変数

環境変数を使用してサーバーを設定します。

これらの変数は、MCP クライアントの設定(例:cline_mcp_settings.json)で設定するか、サーバーの起動前に環境内で設定する必要があります(サーバーを直接実行する場合)。

サーバーを直接実行する場合は、プロジェクトのルートにある .env ファイル、または環境内で直接設定できます。

変数説明必須デフォルト
MCP_AUTH_KEYClaude.ai リモート MCP アクセス用の認証キーです。openssl rand -hex 32 で生成しますはい(リモート)undefined
OBSIDIAN_VAULTSマルチ Vault モード用の Vault 設定の JSON 配列です。はい(マルチ)undefined
OBSIDIAN_API_KEYObsidian プラグインの API キーです(シングル Vault モードのみ)。はい(シングル)undefined
OBSIDIAN_BASE_URLObsidian API のベース URL です(シングル Vault モードのみ)。はい(シングル)http://127.0.0.1:27123
MCP_TRANSPORT_TYPEサーバーのトランスポートです。stdio または http を指定します。いいえhttp
MCP_HTTP_PORTHTTP サーバーのポートです。いいえ3010
MCP_HTTP_HOSTHTTP サーバーのホストです。いいえ127.0.0.1
MCP_HTTP_STATELESSClaude.ai との互換性のためにステートレスモードを有効にします。いいえfalse
MCP_ALLOWED_ORIGINSCORS 用の、カンマ区切りのオリジンです。本番環境では設定してください。いいえ(なし)
CHATGPT_LAYER_ENABLEDChatGPT マニフェストと JSON アクションエンドポイントを提供するには、true に設定します。いいえfalse
CHATGPT_MANIFEST_PATHChatGPT マニフェスト JSON を公開する HTTP パスです。いいえ/.well-known/obsidian-chatgpt-manifest.json
CHATGPT_ACTIONS_PATHChatGPT JSON アクション用の HTTP パスです(POST)。いいえ/chatgpt/actions
CHATGPT_FACADE_TOKEN_TTL_SECONDSChatGPT ファサードのアクセストークンの有効期間です。いいえ3600
CHATGPT_FACADE_REFRESH_TOKEN_TTL_SECONDSChatGPT ファサードのリフレッシュトークンの有効期間です。いいえ2592000
CHATGPT_FACADE_SCOPESChatGPT ファサードのスコープをカンマ区切りで指定します。書き込みスコープは、明示的に信頼されたクライアントにのみ追加してください。いいえobsidian:read
MCP_LOG_LEVELログレベルです(debug、info、error など)。いいえinfo
OBSIDIAN_VERIFY_SSLSSL 検証を無効にするには、false に設定します。いいえtrue
OBSIDIAN_ENABLE_CACHEインメモリ Vault キャッシュを有効にするには、true に設定します。いいえtrue
OBSIDIAN_CACHE_REFRESH_INTERVAL_MINVault キャッシュの更新間隔を分単位で指定します。いいえ10
マルチ Vault 設定

サーバーは、シングル Vault モード(後方互換性あり)とマルチ Vault モードの両方をサポートしています。

シングル Vault モード(レガシー)
# .env file
MCP_AUTH_KEY=your-generated-mcp-auth-key
OBSIDIAN_API_KEY=your-obsidian-plugin-api-key
OBSIDIAN_BASE_URL=http://127.0.0.1:27123
MCP_TRANSPORT_TYPE=http
MCP_HTTP_STATELESS=true
マルチ Vault モード(推奨)
# .env file
MCP_AUTH_KEY=your-generated-mcp-auth-key
OBSIDIAN_VAULTS='[
  {
    "id": "work",
    "name": "Work Vault", 
    "apiKey": "work-vault-api-key",
    "baseUrl": "http://127.0.0.1:27123",
    "verifySsl": false
  },
  {
    "id": "personal",
    "name": "Personal Vault",
    "apiKey": "personal-vault-api-key", 
    "baseUrl": "http://127.0.0.1:27122",
    "verifySsl": false
  }
]'
MCP_TRANSPORT_TYPE=http
MCP_HTTP_STATELESS=true
セットアップ手順
  1. MCP 認証キーを生成する:openssl rand -hex 32
  2. 複数の Obsidian インスタンスを設定する:異なるポートに Local REST API プラグインをインストールします
  3. API キーを取得する:各 Obsidian インスタンスのプラグイン設定から API キーを取得します
  4. 保管庫を設定する:.env の OBSIDIAN_VAULTS JSON 設定を更新します
  5. サーバーを起動する:npm run start:http
  6. Claude.ai からアクセスする:MCP_AUTH_KEY と Tailscale URL を使用します
Obsidian API への接続
単一保管庫モード

単一保管庫モードで接続するには、ベース URL(OBSIDIAN_BASE_URL)と API キー(OBSIDIAN_API_KEY)を設定します。Obsidian Local REST API プラグインでは、2 種類の接続方式を利用できます。

  1. 暗号化(HTTPS):

    • 安全な https:// エンドポイントを使用します(例:https://127.0.0.1:27124)
    • 自己署名証明書を使用する場合は、OBSIDIAN_VERIFY_SSL=false が必要です
  2. 非暗号化(HTTP)— 推奨:

    • http:// エンドポイントを使用します(例:http://127.0.0.1:27123)
    • 設定がより簡単で、SSL 検証は不要です
複数保管庫モード

複数保管庫モードでは、各保管庫の API キーとベース URL を個別に設定し、OBSIDIAN_VAULTS JSON 配列に追加します。各保管庫では、必要に応じて HTTP または HTTPS を使用できます。

設定例:

HTTP を使用する単一保管庫:

"env": {
  "MCP_AUTH_KEY": "your-generated-mcp-auth-key",
  "OBSIDIAN_API_KEY": "your-obsidian-api-key",
  "OBSIDIAN_BASE_URL": "http://127.0.0.1:27123"
}

複数保管庫の設定:

"env": {
  "MCP_AUTH_KEY": "your-generated-mcp-auth-key",
  "OBSIDIAN_VAULTS": "[{\"id\":\"work\",\"name\":\"Work\",\"apiKey\":\"work-key\",\"baseUrl\":\"http://127.0.0.1:27123\"},{\"id\":\"personal\",\"name\":\"Personal\",\"apiKey\":\"personal-key\",\"baseUrl\":\"http://127.0.0.1:27122\"}]"
}
ローカル MCP クライアントの設定(任意)

注:Claude.ai のリモート MCP 統合を利用する場合は、このセクションをスキップし、代わりに Tailscale リモートアクセスの設定 を使用してください。

ローカル MCP クライアント(例:Cline)では、設定に追加します(例:cline_mcp_settings.json)。

単一保管庫の設定:

{
  "mcpServers": {
    "obsidian-mcp-server": {
      "command": "node",
      "args": ["/path/to/your/obsidian-mcp-server-enhanced/dist/index.js"],
      "env": {
        "MCP_AUTH_KEY": "your-generated-mcp-auth-key",
        "OBSIDIAN_API_KEY": "your-obsidian-api-key",
        "OBSIDIAN_BASE_URL": "http://127.0.0.1:27123",
        "OBSIDIAN_ENABLE_CACHE": "true"
      }
    }
  }
}

複数保管庫の設定:

{
  "mcpServers": {
    "obsidian-mcp-server": {
      "command": "node",
      "args": ["/path/to/your/obsidian-mcp-server-enhanced/dist/index.js"],
      "env": {
        "MCP_AUTH_KEY": "your-generated-mcp-auth-key",
        "OBSIDIAN_VAULTS": "[{\"id\":\"work\",\"name\":\"Work Vault\",\"apiKey\":\"work-api-key\",\"baseUrl\":\"http://127.0.0.1:27123\"},{\"id\":\"personal\",\"name\":\"Personal Vault\",\"apiKey\":\"personal-api-key\",\"baseUrl\":\"http://127.0.0.1:27122\"}]",
        "OBSIDIAN_ENABLE_CACHE": "true"
      }
    }
  }
}

🌐 リモートアクセスの設定(Tailscale)

どこからでも Obsidian の保管庫にリモートアクセスするには、Tailscale を使用して MCP サーバーをインターネット経由で安全に公開できます。

前提条件
  1. Tailscale アカウント:tailscale.com で登録します
  2. Tailscale のインストール:MCP サーバーを実行するマシンに Tailscale をインストールします
  3. Tailscale Funnel の有効化:アカウントで Tailscale Funnel を有効にします
セットアップ手順
  1. MCP 認証キーを生成する:

    openssl rand -hex 32
    
  2. 環境を設定する:生成したキーを使って .env ファイルを設定します:

    MCP_AUTH_KEY=your-generated-auth-key
    MCP_TRANSPORT_TYPE=http
    MCP_HTTP_PORT=3010
    MCP_HTTP_STATELESS=true
    
  3. 保管庫を設定する:単一または複数保管庫の設定を行います(複数保管庫の設定 を参照)

  4. MCP サーバーを起動する:

    npm run build && npm run start:http
    
  5. Tailscale Funnel を有効にする:

    tailscale funnel 3010
    
  6. 公開 URL を取得する:Tailscale デバイスの URL を確認します:

    tailscale status --self | grep "Funnel on"
    
Claude.ai リモート MCP の設定

MCP 認証キーを使って、Claude.ai のリモート MCP サーバーに追加します。

単一保管庫の設定:

{
  "url": "https://your-device.your-tailnet.ts.net/mcp?api_key=your-mcp-auth-key",
  "name": "Obsidian Vault"
}

複数保管庫の設定:

{
  "url": "https://your-device.your-tailnet.ts.net/mcp?api_key=your-mcp-auth-key",
  "name": "Obsidian Multi-Vault"
}

認証に関する注記:Claude.ai のリモート MCP では、サーバー認証に MCP_AUTH_KEY を使用します。個々の保管庫での操作には、環境で設定した保管庫ごとの API キーを使用します。

セキュリティに関する考慮事項
  • 二重認証:MCP_AUTH_KEY による MCP サーバー認証と、個別の API キーによる保管庫認証
  • Tailscale による暗号化:すべての通信は Tailscale によってエンドツーエンドで暗号化されます
  • プライベートネットワーク:Tailscale ネットワーク経由でサーバーにアクセスできるのは本人のみです
  • SSL の自動設定:Tailscale Funnel により HTTPS 証明書が自動的に提供されます
  • 保管庫の分離:安全なアクセス制御のため、各保管庫で専用の API キーを使用します
使用例

セットアップが完了すると、Claude.ai からリモートでツールを使用できます。

単一保管庫のコマンド(デフォルトの保管庫を使用):

Use obsidian_task_query to show me tasks due today with format="table"

複数保管庫のコマンド(保管庫を指定):

Use obsidian_task_query with vault="work" to show me work tasks due today
Use obsidian_read_file with filePath="daily-note.md" and vault="personal" 
Use obsidian_dataview_query with vault="work" to run: TABLE file.name FROM #meeting WHERE file.cday = date(today)

🚀 プロのヒント:本番環境で使用する場合は、起動時の自動起動 を設定すると、手動で操作しなくてもサーバーと Tailscale Funnel が自動的に起動します。

ChatGPT コネクターファサード

Claude とローカル MCP クライアントは、/mcp に直接接続できます。ホスト型 ChatGPT コネクターでは、代わりに専用の obsidian-chatgpt ファサードを使用してください。このファサードは、既存の vault、検索、タスクのロジックを内部で再利用しますが、独自のプロセス、ポート、OAuth/PKCE 認可フロー、スコープ設定された機能、書き込み監査ログを備えています。

パブリック HTTPS または Tailscale Funnel のルートには、このファサードを使用してください。明示的なローカル/開発テストを行う場合を除き、完全な MCP サーバーは localhost またはプライベートな tailnet 限定のルートに留めてください。

ファサードの起動

パブリックリソース URL と管理者承認シークレットを設定してから、ファサードを起動します。

export CHATGPT_FACADE_PUBLIC_URL="https://your-device.your-tailnet.ts.net"
export CHATGPT_FACADE_ADMIN_SECRET="$(openssl rand -hex 24)"
npm run build
npm run start:chatgpt

同じ Funnel ホスト名で別の ChatGPT コネクターも公開する場合は、https://your-device.your-tailnet.ts.net/obsidian のようなパスをスコープとするリソース URL をこのファサードに設定し、/obsidian プレフィックスをファサードのポートにルーティングしてください。この構成では、ファサードはルートとパス指定の両方の well-known メタデータパスを提供します。この共有ホスト構成では、https://your-device.your-tailnet.ts.net/obsidian/mcp を指定してコネクターを作成します。

ヘルスチェックを行います。

curl "http://127.0.0.1:3020/health"

稼働中の Obsidian API を使わずにファサードの HTTP サーフェステストを行うには、CHATGPT_FACADE_SKIP_OBSIDIAN_CHECK=true を設定してください。通常の運用では設定を解除したままにしてください。

Funnel を通じて公開するのはファサードだけにしてください。

make tailscale-funnel-chatgpt
OAuth とスコープ

ファサードは OAuth ディスカバリーメタデータを公開します。

  • /.well-known/oauth-protected-resource
  • /.well-known/oauth-authorization-server
  • /.well-known/openid-configuration

認可コード、アクセストークン、リフレッシュトークンのハッシュを、トークンそのものではなく、CHATGPT_FACADE_STORE_PATH の下にローカル保存します。初回のトークン交換には PKCE S256 を必須とし、リフレッシュトークンのローテーションに対応しています。また、アクションの実行前に、リソース、有効期限、スコープに基づいてベアラートークンを検証します。

スコープ:

  • obsidian:read:search、fetch、task_query、latest_note
  • obsidian:write:create_task、update_task、append_note、create_note、create_daily_note
  • obsidian:dangerous-write:overwrite_note

読み取り専用コネクターの設定がデフォルトであり、obsidian:read のみを付与することで利用できます。 overwrite_note は、obsidian:dangerous-write が明示的に付与されない限り利用できません。

Facade Actions

すべてのアクションは、Authorization: Bearer <token> を指定して POST /chatgpt/actions を使用します。 任意の vault フィールドを指定できます。デフォルトの公開インターフェースは、意図的にローカルの MCP ツールセット全体よりも小さくなっています。

アクションスコープ説明
searchobsidian:readスニペット付きの、範囲を限定したグローバル検索です。
fetchobsidian:readvault のパスを指定して、範囲を限定したノートの内容を取得します。
task_queryobsidian:readTasks プラグインに対応したタスククエリです。
latest_noteobsidian:readパスで範囲を指定することもできる、最終更新ノートの取得です。
create_taskobsidian:writeTasks プラグインに対応したタスクを作成します。
update_taskobsidian:write既存のタスクを更新します。
append_noteobsidian:writeノートの内容を追記または先頭に追加します。
create_noteobsidian:write既存の内容を上書きせずにノートを作成します。
create_daily_noteobsidian:writeデイリーノートのテンプレートから、今日または指定した日付のデイリーノートを作成します。
overwrite_noteobsidian:dangerous-write明示的に信頼されたクライアント向けの、ノート全体の上書きです。

アクションが成功した場合、HTTP アクションとファサードの MCP ツール呼び出しで同じ形式のレスポンスが返されます。

{
  "success": true,
  "action": "create_daily_note",
  "vault": "default",
  "resultPath": "Daily/2026-07-03.md",
  "data": {
    "filePath": "Daily/2026-07-03.md"
  }
}

書き込みアクションでは、対象の vault パスが判明している場合に resultPath が含まれます。 タスクの作成および更新アクションでは、行番号が取得できる場合に taskLineNumber も含まれます。

書き込み内容は、ローカルの JSONL 監査ログ CHATGPT_FACADE_AUDIT_PATH に追加されます。監査エントリには、アクション、クライアント ID、スコープ、対象パス、モード、結果パス、ステータス、上限を設けた入力の要約が記録されます。ChatGPT の生の会話やノート本文全体は保存されません。運用担当者は、次のコマンドで最近のエントリを確認できます。

curl "http://127.0.0.1:3020/audit/recent?admin_secret=$CHATGPT_FACADE_ADMIN_SECRET"
レガシーのインプロセスレイヤー

CHATGPT_LAYER_ENABLED=true に設定すると、ローカル/開発環境との互換性のため、メインの HTTP トランスポートで従来のインプロセスのマニフェスト/アクションレイヤーが引き続き有効になります。このレイヤーでは、クエリ文字列で MCP_AUTH_KEY を使った認証が行われ、ページの上書きを含む、より広範なアクションが公開されます。ホスト型 ChatGPT コネクターとして推奨される方法ではないため、このレイヤーは使用しないでください。

プロジェクト構成

このコードベースは、src/ ディレクトリ内でモジュール化された構成になっています。

src/
├── index.ts           # Entry point: Initializes and starts the server
├── config/            # Configuration loading (env vars, package info)
│   └── index.ts
├── mcp-server/        # Core MCP server logic and capability registration
│   ├── server.ts      # Server setup, transport handling, tool/resource registration
│   ├── resources/     # MCP Resource implementations (currently none)
│   ├── tools/         # MCP Tool implementations (subdirs per tool)
│   └── transports/    # Stdio and HTTP transport logic, auth middleware
├── services/          # Abstractions for external APIs or internal caching
│   ├── obsidianRestAPI/ # Typed client for Obsidian Local REST API
│   └── vaultManager/    # Multi-vault configuration and service management
├── types-global/      # Shared TypeScript type definitions (errors, etc.)
└── utils/             # Common utility functions (logger, error handler, security, etc.)

ファイルツリーの詳細については、npm run tree を実行するか、docs/tree.md を参照してください。

Vault キャッシュサービス

このサーバーには、vault とのやり取りのパフォーマンスと回復性を高めるために設計された、インテリジェントなインメモリキャッシュが含まれています。

目的と利点
  • パフォーマンス:ファイルの内容とメタデータをキャッシュすることで、特に大規模な vault での検索処理を大幅に高速化できます。Obsidian Local REST API への直接リクエスト数が減るため、より快適に利用できます。
  • 回復性:キャッシュは obsidian_global_search ツールのフォールバックとして機能します。ライブ API の検索が失敗またはタイムアウトした場合、サーバーはキャッシュをシームレスに使用して結果を提供するため、Obsidian API が一時的に応答しない場合でも検索機能を利用できます。
  • 効率性:キャッシュは効率的に動作するよう設計されています。起動時に初期構築を行い、その後はバックグラウンドで定期的にファイルの変更を確認して更新するため、頻繁に負荷の高い API ポーリングを行わずに、キャッシュを適度に最新の状態に保てます。
仕組み
  1. 初期化:有効にすると、VaultCacheService はボルト内のすべての .md ファイルを対象にインメモリマップを構築し、各ファイルの内容と更新日時を保存します。
  2. 定期的な更新:キャッシュは設定可能な間隔(デフォルトは10分)で自動的に更新されます。更新時には、前回の確認以降に新規作成または変更されたファイルの内容のみを取得します。
  3. 積極的な更新:obsidian_update_file などのツールを通じてファイルが変更された後、サービスはそのファイルのキャッシュを積極的に更新し、即座に整合性を保ちます。
  4. 検索のフォールバック:obsidian_global_search ツールは、まずライブ API 検索を試みます。失敗した場合は、インメモリキャッシュを使った検索に自動的に切り替えます。
設定

キャッシュはデフォルトで有効ですが、環境変数で設定できます。

  • OBSIDIAN_ENABLE_CACHE:キャッシュサービスを有効または無効にするには、true(デフォルト)または false を設定します。
  • OBSIDIAN_CACHE_REFRESH_INTERVAL_MIN:定期的なバックグラウンド更新の間隔を分単位で指定します。デフォルトは 10 です。

ツール

Obsidian MCP Server は、Model Context Protocol を介して呼び出し可能な、ボルトとの連携に使う一連のツールを提供します。

複数の Vault のサポート

すべてのツールは、操作対象の Vault を指定するためのオプションの vault パラメーターをサポートしています。

  • デフォルトの動作:vault パラメーターがない場合、ツールは設定されている最初の Vault を使用します
  • 特定の Vault:特定の Vault を対象にするには、vault: "vault-id" を追加します
  • 例:obsidian_read_file(filePath="note.md", vault="work")
ツール名説明主な引数
obsidian_read_fileファイルの内容とメタデータを取得します。filePath、vault?、format?、includeStat?
obsidian_update_fileファイルへの追記、先頭への追加、または上書きにより変更します。targetType、content、vault?、targetIdentifier?、wholeFileMode
obsidian_search_replaceノート内で検索と置換を実行します。targetType、replacements、vault?、useRegex?、replaceAll?
obsidian_global_searchVault 全体のコンテンツを検索します。query、vault?、searchInPath?、useRegex?、page?、pageSize?
obsidian_list_filesフォルダー内のファイルとサブディレクトリを一覧表示します。dirPath、vault?、fileExtensionFilter?、nameRegexFilter?
obsidian_manage_frontmatterノートのフロントマターのキーを取得、設定、または削除します。filePath、operation、key、vault?、value?
obsidian_manage_tagsノートのタグを追加、削除、または一覧表示します。filePath、operation、tags、vault?
obsidian_delete_fileVault からファイルを完全に削除します。filePath、vault?
obsidian_dataview_queryVault に対して Dataview DQL クエリを実行します。query、vault?、format?
obsidian_task_queryVault 全体のタスクを検索し、分析します。vault?、status?、dateRange?、folder?、priority?、format?
obsidian_periodic_notes日次、週次、月次、年次のノートを作成、管理します。operation、periodType、vault?、date?、content?、append?
obsidian_block_referenceブロック参照と見出しの操作を行います。operation、filePath、vault?、heading?、content?、blockId?
obsidian_graph_analysisノート間のつながりと Vault の関連性を分析します。operation、vault?、filePath?、minConnections?、maxDepth?
obsidian_template_system変数を置換してテンプレートからファイルを作成します。operation、vault?、templatePath?、targetPath?、variables?
obsidian_smart_linkingインテリジェントなリンク候補と推奨を取得します。operation、vault?、filePath?、content?、maxSuggestions?

注:すべてのツールは包括的なエラー処理と複数の Vault へのルーティングをサポートし、構造化された JSON レスポンスを返します。

ライセンス

このプロジェクトは Apache License 2.0 の下でライセンスされています。詳細は LICENSE ファイルをご覧ください。

クレジット

この拡張版は、元の obsidian-mcp-server プロジェクトにおける cyanheads の優れた成果を基にしています。すべての中核機能とアーキテクチャは、元の作者に帰属します。

このフォークでの拡張機能:

  • 複数の Vault のサポート:Vault ごとのルーティングにより、複数の Obsidian Vault に同時にアクセスできます
  • Claude.ai Remote MCP との統合および互換性の修正
  • 安全なリモートアクセスを実現する Tailscale Funnel との統合
  • 認証を分離した拡張 HTTP トランスポート層(MCP_AUTH_KEY)
  • Tasks プラグインとの統合による高度なタスク検索
  • 5 つの新しい高度なツール:定期ノート、ブロック参照、グラフ分析、テンプレートシステム、スマートリンク
  • エンタープライズ利用向けの本番環境対応設定

Model Context Protocol を使用して構築
Claude.ai Remote Integration 向けに拡張

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。