mcpField
D
dify-mcp-client

dify-mcp-client

ローカル
github.com/3dify-project開発ツール17269 週間前に更新

dify-mcp-client について

dify-mcp-client は、MCP クライアントを Dify のエージェント戦略として実装したプラグインです。Dify ワークフローの ReAct エージェントノードから MCP サーバーに接続できます。UI-TARS SDK を組み込み、GUI の自動操作にも対応しています。

主な機能

  1. 01MCP のツール、リソース、プロンプトを Dify ツールに変換
  2. 02SSE と Streamable HTTP による接続に対応
  3. 03config_json で複数の MCP サーバーを設定
  4. 04GUI 自動操作のための UI-TARS SDK 統合
  5. 05GUI 操作回数の上限設定

活用シーン

  1. 01Dify ワークフローから外部 MCP サーバーを呼び出す
  2. 02Chatflow のエージェントノードにツール機能を追加する
  3. 03UI-TARS を使ってローカルデスクトップの画面操作を行う

MCP 対応

Dify のエージェント戦略プラグインとして動作する MCP クライアントです。MCP サーバーに接続し、選択した LLM が ReAct ループ内でそのツール、リソース、プロンプトを呼び出せるようにします。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"dify-mcp-client": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"build"
]
}
}
}
起動コマンドdocker run -i --rm build

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
ocibuild

ツール

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

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

詳細

dify-mcp-client

Computer Using Agent(UI-TARS-SDK)に対応した、エージェント戦略プラグインとしてのMCP Clientです。

重要

DifyはMCP Serverではなく、MCP Hostです。

showcase1

仕組み

各MCP client(ReAct Agent)ノードは、MCP serversに接続できます。

  1. Tool、Resource、Promptの一覧をDify Toolsに変換します。
  2. 選択したLLMは、それらのname、description、argument typeを参照できます。
  3. 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 difyUI1

⬇️.difypkg ファイルからプラグインをインストールする

プラグインのインストール中に発生したエラーへの対処方法

問題: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 を使用できません) asAgentStrategiesNode

設定

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"
        }
    }
}

警告

Chatflow の例

showcase2

警告

  • 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

  1. 名前を dify.exe に変更します。
  2. mkdir "C\User\user\.local\bin"(Windows)を実行し、システムパスに登録します。
  3. 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

初期設定は次のとおりです。 InitialDifyPluginSetting

ディレクトリを変更する
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

ヒント

MCP クライアントの例
https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py

メモ

Dify プラグインには、Python モジュールを自動的にインストールする requirements.txt があります。
最新の mcp を含めているため、MCP SDK を別途ダウンロードする必要はありません。

コメント

MCP は初めてですか?

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

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