dify-mcp-client について
dify-mcp-client は、MCP クライアントを Dify のエージェント戦略として実装したプラグインです。Dify ワークフローの ReAct エージェントノードから MCP サーバーに接続できます。UI-TARS SDK を組み込み、GUI の自動操作にも対応しています。
主な機能
- 01MCP のツール、リソース、プロンプトを Dify ツールに変換
- 02SSE と Streamable HTTP による接続に対応
- 03config_json で複数の MCP サーバーを設定
- 04GUI 自動操作のための UI-TARS SDK 統合
- 05GUI 操作回数の上限設定
活用シーン
- 01Dify ワークフローから外部 MCP サーバーを呼び出す
- 02Chatflow のエージェントノードにツール機能を追加する
- 03UI-TARS を使ってローカルデスクトップの画面操作を行う
MCP 対応
Dify のエージェント戦略プラグインとして動作する MCP クライアントです。MCP サーバーに接続し、選択した LLM が ReAct ループ内でそのツール、リソース、プロンプトを呼び出せるようにします。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
dify-mcp-client
Computer Using Agent(UI-TARS-SDK)に対応した、エージェント戦略プラグインとしてのMCP Clientです。
重要
Difyは
MCP Serverではなく、MCP Hostです。

仕組み
各MCP client(ReAct Agent)ノードは、MCP serversに接続できます。
Tool、Resource、Promptの一覧をDify Toolsに変換します。- 選択したLLMは、それらの
name、description、argument typeを参照できます。 - LLMはReActループ(Reason → Act → Observe)に基づいてToolsを呼び出します。
メモ
このリポジトリのコードの大部分は、以下のファイルに含まれています。
Dify公式プラグイン/エージェント戦略
https://github.com/langgenius/dify-official-plugins/tree/main/agent-strategies/cot_agent
✅ 実施した内容
ReAct.pyをコピーし、ファイル名をmcpReAct.pyに変更mcpReAct.yamlとclass mcpReActParams()を編集して、config_jsonのGUI入力フィールドを追加
mcpReAct.pyに追加した内容
- MCP用の新しい関数を12個追加
AsyncExitStackとevent loopを初期化する__init__()- MCP用の
_handle_invoke_action()内のコードを追加 _invoke()にMCPのセットアップとクリーンアップを追加
重要
ReActのwhileループは変更していません。
🔄 更新履歴
- SSE MCPクライアントを追加(v0.0.2)
- 複数のSSEサーバーに対応(v0.0.3)
- Pythonモジュールを更新し、依存関係を簡素化(v0.0.4)
- mcp(v1.1.2→v1.6.0+)
- dify_plugin(0.0.1b72→v0.1.0)
- GUI自動化機能のため、UI-TARS SDKとの統合を追加(v0.0.5)
- Streamable HTTP MCPクライアントに対応
- SSEパラメーターの機能:
/sse?key=value(v0.0.6)
🤖 UI-TARSとの統合
このプラグインには、GUI自動化機能のためのUI-TARS SDKとの統合が含まれています。
警告
UI-TARS-SDKとの統合は、Difyプラグインのローカルデバッグデプロイでのみサポートされています。 https://github.com/3dify-project/dify-mcp-client#-how-to-develop-and-deploy-plugin
通常のdifypkgインストールでは動作しません。UI-TARSにはOSネイティブAPIが必要ですが、Difyプラグイン環境はLinuxのDockerコンテナだからです。
Streamable HTTP MCPを使った代替方法を検討しています。
主な機能
- 必要に応じたGUI自動化:UI-TARSは必要な場合にのみ呼び出され、トークン消費を抑えます。
- 実行時間の制御:タスクごとの最大ループ回数を設定し、自動化処理が際限なく続くのを防ぎます。
既知の制限事項
- 単一モニターのみ対応:UI-TARSは現在、プライマリモニターのみを認識します。マルチモニター構成には対応していません。
- MacのRetinaディスプレイの問題:Retinaディスプレイ搭載のmacOSでは、UI-TARSが正しく動作するよう、ディスプレイ解像度を最高画質設定ではなく「デフォルト」に設定する必要があります。そうしないと、誤った(w,h)座標がクリックされます。https://github.com/bytedance/UI-TARS-desktop/issues/591
実行時間パラメーター
life_timeパラメーターは、UI-TARSが実行できるGUI操作の最大数を制御します。
- デフォルト:10回
ui_tars_max_life_time_countでユーザーが最大値を設定可能- 選択したLLMは、タスクの複雑さに応じて、ユーザーが設定した上限の範囲内で値を動的に調整できます
メモ
現在は、コストと性能のバランスを最適化するため、UI-TARS-1.5-7Bモデルをハードコードで指定しています。
🐳 ビルド済みNode.jsを使ったDockerデプロイ
Dockerイメージのビルド
このプルダウンガイドは、TypeScript stdio MCPサーバーのユーザー向けです
docker build -t dify-mcp-client:latest .
または、ビルド済みのイメージを使用してください:
# In your docker-compose.yml
services:
plugin-daemon:
image: memedayo/dify-plugin-daemon:latest # with Pre-built Node.js
# ... rest of configuration
コンテナにNode.jsがない場合、TypeScript stdio MCPのサポートが失われます。
UI-TARSの設定
UI-TARSの詳細なセットアップについては、UI-TARS Desktopのデプロイガイドを参照してください。
プラグインは、ReActループ内のツールとしてUI-TARSを自動的に設定します。以下を指定する必要があります。
- Hugging Face Inference EndpointのURL
- APIキー(hf_xxxxxなど)
- (任意)エージェントパラメーターの
ui_tars_max_life_time_countを調整
⚠️ 注意事項と制限
注意
このプラグインは、デフォルトでは人間が介在する仕組みを実装していないため、信頼できる MCP サーバーのみに接続してください。
これを避けるには、max itereations(デフォルト:3)を1に減らし、このエージェントノードを Chatflow で繰り返し使用してください。
ただし、エージェントのメモリはワークフローの終了時にリセットされます。
Conversaton Variableを使用して履歴を保存し、QUERY に渡してください。
INSTRUCTION に「ツールを呼び出すときはユーザーの許可を求める」などのフレーズを忘れずに追加してください。
このプラグインの使い方
🛜GitHub からプラグインをインストールする
- 次の GitHub リポジトリ名を入力します
https://github.com/3dify-project/dify-mcp-client/
- Dify > PLUGINS > + Install plugin > INSTALL FROM > GitHub

⬇️.difypkg ファイルからプラグインをインストールする
- Releases にアクセスします:https://github.com/3dify-project/dify-mcp-client/releases
- 適切なバージョンの
.difypkgを選択します - Dify > PLUGINS > + Install plugin > INSTALL FROM > Local Package File

プラグインのインストール中に発生したエラーへの対処方法
問題:plugin verification has been enabled, and the plugin you want to install has a bad signature というエラーメッセージが表示された場合、どのように対処すればよいですか?
解決方法:/docker/.env を開き、true を false に変更します:
FORCE_VERIFYING_SIGNATURE=false
次のコマンドを実行して、Dify サービスを再起動します:
cd docker
docker compose down
docker compose up -d
この項目を追加すると、Dify Marketplace に掲載されていない(そのため検証されていない)すべてのプラグインを、Dify プラットフォームにインストールできるようになります。
このプラグインはどこに表示されますか?
- インストールには数分かかります
- インストール後、ワークフローでエージェントノードとして使用できます
- 「mcpReAct」ストラテジーを選択します(選択しないと MCP を使用できません)

設定
MCP Agent Plugin ノードでは、MCP サーバーに接続するコマンドまたは URL を指定するために、次のような config_json が必要です
{
"mcpServers":{
"name_of_server1":{
"url": "http://host.docker.internal:8080/sse"
},
"name_of_server2":{
"url": "http://host.docker.internal:8008/mcp"
}
}
}
警告
- 各サーバーのポート番号は、8080、8008 など、それぞれ異なる番号にしてください
- stdio MCP サーバーを使用する場合は、3 つの方法があります
- mcp-proxy を使用して Streamable HTTP MCP サーバーに変換します https://github.com/sparfenyuk/mcp-proxy?tab=readme-ov-file#1-stdio-to-ssestreamablehttp
- ソースコードを使用してデプロイします(.difypkg または GitHub リポジトリ名によるインストールは不可) https://github.com/3dify-project/dify-mcp-client/edit/main/README.md#-how-to-develop-and-deploy-plugin
- dify-plugin の Docker 内に Node.js を事前インストールします(TypeScript の stdio サーバーのみ)
Chatflow の例

警告
- Tools フィールドを空欄のままにしないでください。「current time」などのDify ツールを選択してください。
このプラグインをテストするための Dify ChatFlow .yml を用意しました。
https://github.com/3dify-project/dify-mcp-client/tree/main/test/chatflow
DSL(yml)ファイルをダウンロードしたら、Dify にインポートして「Everything MCP server」を使用して MCP をテストできます
https://github.com/modelcontextprotocol/servers/tree/main/src/everything
stdio MCP サーバーを Streamable HTTP(または SSE)に変換する方法
オプション1️⃣:MCP サーバーのコードを編集する
fastMCP サーバーの場合は、次のように変更します
if __name__ == "__main__":
- mcp.run(transport="stdio")
+ mcp.run(transport="streamable-http")
オプション2️⃣:mcp-proxy を使用する
警告
非推奨の SSE ではなく、Streamable HTTP を推奨します 以下の旧式の SSE 設定は動作しません。https://github.com/sparfenyuk/mcp-proxy を参照してください。
SSE の設定(Streamable HTTP ではありません)
\mcp-proxy>uv venv -p 3.12
.venv\Scripts\activate
uv tool install mcp-proxy
Node.js がインストールされていることと npx(.cmd) のパスを確認する
(Mac/Linux)
which npx
(Windows)
where npx
結果
C:\Program Files\nodejs\npx
C:\Program Files\nodejs\npx.cmd
C:\Users\USER_NAME\AppData\Roaming\npm\npx
C:\Users\USER_NAME\AppData\Roaming\npm\npx.cmd
claude_desktop_config.json が次のスキーマに従っている場合、
{
"mcpServers": {
"SERVER_NAME": {
"command": CMD_NAME_OR_PATH
"args": {VALUE1, VALUE2}
}
}
}
このコマンドで stdio MCP サーバーを起動する
mcp-proxy --sse-port=8080 --pass-environment -- CMD_NAME_OR_PATH --arg1 VALUE1 --arg2 VALUE2 ...
OS が Windows の場合は、npx の代わりに npx.cmd を使用してください。以下は、mcp-proxy を介して stdio の「everything MCP server」を SSE に変換するコマンドの例です。
mcp-proxy --sse-port=8080 --pass-environment -- C:\Program Files\nodejs\npx.cmd --arg1 -y --arg2 @modelcontextprotocol/server-everything
同様に、別のコマンドラインで(v0.0.3 用のサンプル Chatflow を使用する場合)
pip install mcp-simple-arxiv
mcp-proxy --sse-port=8008 --pass-environment -- C:\Users\USER_NAME\AppData\Local\Programs\Python\Python310\python.exe -m -mcp_simple_arxiv
以下は mcp-proxy のセットアップログです。
(mcp_proxy) C:\User\USER_NAME\mcp-proxy>mcp-proxy --sse-port=8080 --pass-environment -- C:\Program Files\nodejs\npx.cmd --arg1 -y --arg2 @modelcontextprotocol/server-everything
DEBUG:root:Starting stdio client and SSE server
DEBUG:asyncio:Using proactor: IocpProactor
DEBUG:mcp.server.lowlevel.server:Initializing server 'example-servers/everything'
DEBUG:mcp.server.sse:SseServerTransport initialized with endpoint: /messages/
INFO: Started server process [53104]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://127.0.0.1:8080 (Press CTRL+C to quit)
🔨 プラグインの開発とデプロイ方法
公式プラグイン開発ガイド
https://github.com/3dify-project/dify-mcp-client/blob/main/GUIDE.md
Dify プラグイン SDK デーモン
OS が Windows で、CPU が Intel または AMD の場合は、最新の dify-plugin-windows-amd64.exe をダウンロードする必要があります。
お使いの OS に対応するバージョンはこちらから選択してください。
https://github.com/langgenius/dify-plugin-daemon/releases
- 名前を dify.exe に変更します。
- mkdir "C\User\user\.local\bin"(Windows)を実行し、システムパスに登録します。
dify.exeを dify-mcp-client/ の下にコピーします。
ヒント
次のガイドが参考になります。 https://docs.dify.ai/plugins/quick-start/develop-plugins/initialize-development-tools
参考
https://docs.dify.ai/plugins/quick-start/develop-plugins/initialize-development-tools
メモ
このリポジトリのコードを pull またはダウンロードした場合、この手順は省略できます。
dify plugin init初期設定は次のとおりです。
ディレクトリを変更する
cd dify-mcp-client
Python モジュールをインストールする
Python3.12 以降に対応しています。venv と uv は必須ではありませんが、推奨します。
uv venv -p 3.12
.venv\Scripts\activate
プラグイン開発用の Python モジュールをインストールします。
uv pip install -r requirements.txt
UI-TARS-SDK のユーザーのみ(Node.js v22 LTS のインストール後)
npm install
env.example を複製し、複製したファイルの名前を .env に変更する
REMOTE_INSTALL_HOST を debug.dify.ai から localhost に変更しました。
(Docker Compose 環境)
🪲bug アイコンボタンをクリックすると、これらの情報を確認できます。
Dify プラグインを有効化する
python -m main
(停止するには ctrl+C を押します)
ヒント
.envの REMOTE_INSTALL_KEY は頻繁に変わります。handshake failed, invalid keyのようなエラーメッセージが表示された場合は、キーを更新してください。
.difypkg にパッケージ化する
./dify-mcp-client はデフォルトのルート名です。
dify plugin package ./ROOT_OF_YOUR_PROJECT
開発者向けの便利な GitHub リポジトリ
Dify プラグイン SDK
https://github.com/langgenius/dify-plugin-sdks
MCP Python SDK
https://github.com/modelcontextprotocol/python-sdk
ヒント
メモ
Dify プラグインには、Python モジュールを自動的にインストールする
requirements.txtがあります。
最新のmcpを含めているため、MCP SDK を別途ダウンロードする必要はありません。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。
