はじめに
Dify というサービスを聞いたことがあるけれど、「何ができるかわからない」、「どう使うのかわからない」などの理由で使ったことがない方は多いのではないでしょうか。
そのような方のために、「Dify で何ができるのか?や Dify を使った活用事例」を紹介する記事をシリーズ化していきます。
今回は第8回目で、DifyとObsidianを連携します。
具体的には、ObsidianのMCPサーバーの構築とDifyのワークフローを作成して、自然言語を使ってObsidian ノートを操作し、必要な情報を取得する方法について紹介します。
- Dify という言葉を聞いたことがあるが、何ができるのかがわからない方
- Dify を業務に取り入れたいと検討している方
Obsidianは、Markdown形式でノートを作成・管理できるデスクトップ向けのノートアプリケーションです。
ファイルはローカルに保存され、リンクやタグを活用した双方向的な情報整理が可能です。
MCPは、アプリケーションと大規模言語モデル(LLM)を標準化された方法でツールやデータソースに接続するためのオープンプロトコルです。
例えると、MCPはAIのためのUSB-Cポートのようなものです。USB-Cが1つの規格でさまざまなデバイスをつなぐように、MCPはLLMをNotion、Slackなどのツールに簡単につなぐことができます。

環境
- macOS Sequoia 15.5
- Python 3.12.4
- Dify v1.4.3(セルフホスト版)
概要
本記事では、mcp-obsidian-sseを利用し、DifyからObsidianを自然言語で操作します。
完成イメージ
実際の使用画面
-
-
Obsidanにファイルが作成され、TODOリストが作成されました。
上記のアプリを構築するためにワークフローを作る説明をします。
一つ一つの処理を小さなブロック(ノード)としてつなぎ合わせて、一連のプロレスを自動化する機能です。
今回作成するワークフローのDifyの画面です。

このワークフローは、以下のブロックで構成されます。
graph LR A["開始<br/>(入力:text)"] --> B B["エージェント<br/>戦略:FunctionCalling<br/>モデル:gpt-4o-mini"] --> C C["終了<br/>エージェント/text"]
- 開始:ユーザからの指示をテキストで受け取ります。
- エージェント:LLMが指示をもとに、MCPを使用してタスクを実行します。
- 終了:ワークフローを終了します。
作業手順
ここからは、ワークフローの構築の手順について説明します。
手順
- Obsidianの設定
- Difyワークフローの作成
- MCPサーバーのセットアップ
- 環境変数の設定
- MCPサーバーの起動
- Difyの接続設定
- ワークフローの動作確認
1. Obsidianの設定
-
Obsidianの設定を開きます。「コミュニティプラグイン」から、コミュニティプラグインの「閲覧」を選択します。
-
「Local REST API」プラグインをインストールします。
-
プラグインを有効化します。
-
「オプション」を選択します。
-
APIキーを取得し、メモしておきます。
2. Difyワークフローの作成
- ワークフローを新規作成します。
-
「開始」ノードを選択し、「+」ボタンを押します。
入力フィールドで以下の表のように項目を設定します。
項目名 値 フィールドタイプ 段落 変数名 text(任意の文字列) ラベル名 text(任意の文字列) 最大長 256 -
「プラグイン」を選択し、「マーケットプレイスを探索する」を選択後、検索欄に「MCP」と入力します。
-
「Agent Strategies (Support MCP Tools)」を選択し、インストールします。
-
ワークフロー作成画面に戻り、「エージェント」ノードを追加します。
その後、「エージェンティック戦略」で「Support MCP Tools Agent」の「FunctionCalling(Support MCP Tools)」を選択します。
-
任意のモデルを追加します。
今回は、
gpt-4.1-mini
を選択しました。 -
「QUERY」項目で「開始」の「{x}text」を記述します。
-
「終了」ノードを追加し、「出力変数」に「エージェント」の「{x} text」を選択します。
3. MCPサーバーのセットアップ
-
GitHubから
mcp-obsidian-sse
のリポジトリをクローンします。git clone https://github.com/duncanchiu409/mcp-obsidian-sse.git cd mcp-obsidian-sse
以下のようなディレクトリ構造になっていることを確認してください。
. ├── README.md ├── main.py ├── pyproject.toml ├── src │ └── mcp_obsidian_sse │ ├── __init__.py │ ├── obsidian.py │ └── server.py └── uv.lock
-
仮想環境を作成し、有効化します。
# myenvという名前の仮想環境を作成 python3 -m venv myenv # 仮想環境を有効化 source myenv/bin/activate
-
仮想環境内でuvicornをインストールします。
pip install uv
-
依存環境をインストールします。
# uvで依存関係をインストール(uv.lock に従う) uv sync # uvに現在の仮想環境を登録 uv venv add
-
パッケージの読み込み設定を行います。
-
開発モードをインストールします。
pip install --editable .
-
PYTHONPATH
に追加します。export PYTHONPATH="${PWD}/src:${PYTHONPATH}"
-
開発モードをインストールします。
4. 環境変数の設定
プロジェクトのルートディレクトリで.env
ファイルを作成し、ファイルに以下の内容を記載してください。
OBSIDIAN_API_KEY=<YOUR-API-KEY>
5. MCPサーバーの起動
main.app
があるディレクトリで、以下のコマンドを打ちます。
uvicorn main:app --reload --host 0.0.0.0 --port 3001
これを実行することで、ポート3001
でサーバーが立ち上がります。
6. Difyの接続設定
-
Difyのワークフロー作成画面で「エージェント」ブロックを選択し、「MCP SERVERS CONFIG」で以下のコードを記述します。
{ "obsidian": { "url": "http://host.docker.internal:3001/sse" } }
7. ワークフローの動作確認
-
「公開する」を選択し、「アプリを実行」を選択します。
-
LLMに指示したい内容を入力します。
今回は以下の内容を入力します。
testフォルダのtestにいかのTODOリストを追加して - [ ] 明日の会議資料を確認・提出する - [ ] 書類スキャンしてPDF化する - [ ] メール返信(3件)
-
Obsidian内でファイルが作成されました。
応用
今回は、単純にDifyとObsidianの連携をするために最低限のワークフローを作りました。
連携を活用した応用例として、以下のようなシナリオが考えられます。
- 知識ベースとして活用: Obsidianに保存されたノートをDifyに取り込み、AIに要約や質問応答をさせることで、より効率的な情報検索が可能になる。
- 定期的なレポート生成と通知: Obsidian内のノートを自動的に生成・更新し、関係者へ通知する。
- レビューと修正: 会話を通じてObsidian内のノートをAIにレビューしてもらい、レビューを元にAIが修正もする。
おわりに
本記事では、DifyとObsidianをMCPサーバーを通じて連携する手順を紹介しました。設定が意外に難しく、現状ではローカル環境でしか実現できないという課題がありますが、両ツールの連携による可能性は非常に大きいと感じています。今後もDifyを利用したアプリの作成手順を紹介していきますので、ぜひ引き続きご覧ください。