AIモデルと外部ツールを標準化された方法で接続するプロトコル「MCP(Model Context Protocol)」。
Dify v1.6.0から、このMCPへの公式対応が追加され、プラグインなしで簡単にMCPサーバーを利用したり、逆にDifyで作成したワークフローをMCPサーバーとして公開したりすることが可能になりました。
この記事では、DifyにおけるMCPの活用方法を「公開(サーバー化)」と「利用(クライアント化)」の2つの側面から解説します。
1. DifyワークフローをMCPサーバーとして公開する
Difyで作成したワークフローやチャットフローを、外部のAI(Claude Desktopなど)から「ツール」として呼び出せるようにします。
公開手順
- アプリの公開: MCP化したいワークフロー(またはチャットボット)を作成し、まずは通常のアプリとして「公開」します。
- MCP設定: アプリの「設定」→「MCP」タブを開き、MCPサーバーとして有効化します。
- ツールの説明: 開始ノードに入力フィールドがある場合、それぞれのフィールドに説明文(Description)を追加します。これは外部AIがツールを正しく使うためのヒントになります。



設定が完了すると、MCPサーバーのURLが発行されます。このURLをコピーしておきましょう。
活用例:Claude Desktopからの利用
公開したMCPサーバーは、例えばClaude Desktopアプリから「カスタムコネクタ」として利用できます。
- Claudeの「Settings」→「Connectors」を開きます。
- 「Add custom connector」を選択し、先ほどコピーしたDifyのMCPサーバーURLを入力します。
これで、Claudeとのチャット中に「乱数を生成して」「社内規定を検索して」と指示すると、Difyのワークフローが裏側で実行され、その結果がClaudeに返されるようになります。


2. MCPサーバー機能
Dify 1.6.0では、作成したワークフローを直接MCPサーバーとして公開できるようになりました。これまでは外部のMCPサーバーを介してDifyと連携する必要がありましたが、DifyがネイティブでMCPプロトコルをサポートしたことで、シンプルな統合が可能になりました。
設定手順
- Difyでワークフローアプリを作成
- ワークフローを公開
- 管理画面でMCPサーバーのURLを確認

MCPインターフェースの調査
MCPは、JSON-RPC 2.0ベースのプロトコルで、Server-Sent Events(SSE)を使用したHTTP通信をサポートしています。基本的な通信フローは以下の通りです:
1. 初期化リクエスト
{
"jsonrpc": "2.0",
"method": "initialize",
"params": {
"protocolVersion": "2024-11-05",
"capabilities": {},
"clientInfo": { "name": "test", "version": "1.0.0" }
},
"id": 1
}
2. サーバーからのレスポンス
event:
message data: {
"jsonrpc": "2.0",
"id": 1,
"result": {
"protocolVersion": "2024-11-05",
"capabilities": { "tools": {"listChanged": false} },
"serverInfo": { "name": "Dify", "version": "1.6.0" },
"instructions": "占いをします"
}
}
レスポンスがSSE形式(event: message、data: )で返ってくることが特徴的です。これにより、リアルタイムでの双方向通信が可能になります。
3. ツール一覧の取得
{
"jsonrpc": "2.0",
"method": "tools/list",
"params": {},
"id": 2
}
4. ツールの実行
{
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"name": "uranai_workflow",
"arguments": { "query": "今日の運勢を教えて" }
},
"id": 3
}
Pythonクライアントでの動作確認
MCPサーバーの動作を確認するため、Pythonクライアントを作成しました。主な機能は以下の通りです:
SSEレスポンスのパース処理
def _parse_sse_response(self, response_text: str) ->
Optional[Dict[str, Any]]:
lines = response_text.strip().split('\n')
for
line in lines:
line = line.strip()
if line.startswith('data: '):
try:
json_data = line[6:] # 'data: ' を削除
return json.loads(json_data)
except json.JSONDecodeError as e:
print(f"JSON解析エラー: {e}")
continue
return None
実行結果
🎯 Dify MCP クライアント開始
🔌 MCPサーバーに接続中...
✅ 接続成功!
サーバー: Dify
バージョン: 1.6.0
説明: 占いをします
🔧 利用可能なツールを取得中...
✅ 1個のツールが見つかりました:
1. uranai_workflow
説明: 占いを実行します
🚀 'uranai_workflow' を実行してみます...
✅ ツール実行完了!
📋 実行結果:
{
"content":
[
{
"type": "text",
"text": "{\"text\": \"あなたの今日の運勢は****\\n\"}"
}
],
"isError": false
}
3. 外部MCPサーバーをDifyで利用する
外部で公開されているMCPサーバー(ファイル操作、データベース検索、Google検索など)をDifyのエージェントやワークフローに取り込むことも可能です。
接続手順
Difyのトップ画面から「ツール」タブを開き、「MCP」→「MCPサーバー(HTTP)を追加」を選択します。ここで利用したいMCPサーバーのURLを登録します。


エージェントでの利用
AIエージェントを作成する際、「ツール」の追加画面に登録済みのMCPツールが表示されるようになります。
ポイント: MCPツールを利用するには、アプリタイプを「チャットボット」ではなく「エージェント」にする必要があります(自律的にツールを選択・実行させるため)。


ワークフローでの利用
ワークフロー内で特定の処理としてMCPツールを組み込むことも可能です。ノード追加メニューから「MCP」を選択し、実行したいツールを指定します。

MCPツールの出力はJSON形式になることが多いため、後続のノード(コードブロックやLLMなど)でそのJSONを解析して利用する構成が一般的です。

まとめ
DifyのMCP対応により、以下のような連携が非常に簡単になりました。
- Difyで作ったナレッジ検索(RAG)を、Claudeや他のAIアプリから呼び出す
- 外部の高度なツール(ファイル操作やDB接続)を、Difyのエージェントに組み込む
「プラグイン開発」というハードルを越えることなく、URL一本で機能拡張ができるMCPは、今後のAI活用において重要な標準規格となるでしょう。ぜひDifyでその利便性を体験してみてください。
【推奨】業務システム化に有効なアイテム
生成AIを学ぶ



システム化のパートナー



VPSサーバの選定





コメント