Navigation
Dify-MCP-Client: Plug-In Integration & Strategic Agility - MCP Implementation

Dify-MCP-Client: Plug-In Integration & Strategic Agility

Dify-MCP-Client empowers agent strategies as a seamless plug-in, positioning Dify as the MCP host—not server—to streamline workflows and enhance strategic agility for modern enterprises.

Research And Data
4.8(74 reviews)
111 saves
51 comments

This tool saved users approximately 6165 hours last month!

About Dify-MCP-Client

What is Dify-MCP-Client: Plug-In Integration & Strategic Agility?

The Dify-MCP-Client is a specialized plugin enabling seamless integration of Model Context Protocol (MCP) services into the Dify platform. It empowers developers to dynamically connect with MCP-compliant servers, enhancing strategic adaptability by allowing real-time context-aware computations. The plugin acts as a bridge between Dify's core functionalities and external MCP-based services, ensuring modular extensibility without compromising system integrity.

How to use Dify-MCP-Client: Plug-In Integration & Strategic Agility?

Implementation involves three core steps: 1) Installation via Docker Compose or direct Python package deployment, 2) Configuration through environment variables specifying server endpoints and security parameters, and 3) Strategic Activation by initializing the plugin within Dify's workflow engine. Advanced users may leverage the mcp-proxy tool to adapt non-SSE services into compatible formats using command-line directives.

Dify-MCP-Client Features

Key Features of Dify-MCP-Client: Plug-In Integration & Strategic Agility?

  • Protocol Compatibility: Supports both native SSE (Server-Sent Events) and legacy stdio-based MCP servers via adaptive proxy layers.
  • Dynamic Configuration: Environment-driven settings allow runtime adjustments to server URLs, authentication tokens, and logging verbosity.
  • Security Framework: Enforces CORS restrictions by default, with optional --allow-origin overrides for trusted domains.
  • Development Workflows: Integrated debugging tools and granular logging simplify plugin troubleshooting and optimization.

Use cases of Dify-MCP-Client: Plug-In Integration & Strategic Agility?

Common applications include:

  • Real-time sentiment analysis pipelines using MCP-powered NLP engines
  • Automated workflow triggers based on context-aware decision models
  • Custom AI service aggregation for multi-modal applications
  • Legacy system modernization by wrapping existing APIs into MCP-compliant endpoints

Dify-MCP-Client FAQ

FAQ from Dify-MCP-Client: Plug-In Integration & Strategic Agility?

How do I resolve CORS errors?
Adjust the CORS_ORIGIN parameter in your configuration to match your application's domain.
Can I use this with non-MCP services?
Yes, via the mcp-proxy utility which converts stdio-based outputs to SSE streams.
What logging levels are available?
Configure LOG_LEVEL to DEBUG, INFO, WARNING, or ERROR for granular visibility.
Does it support hot-reloading?
Configuration reloads automatically upon file changes, while server connections require manual restarts for URL changes.

Content

dify-mcp-client

MCP Client as Agent Strategy Plugin.

[!IMPORTANT] Dify is not MCP Server but MCP Host.

showcase1

How it works

Currently, each MCP client (ReAct Agent) node can connect a MCP server.

  1. Tool, Resource, Prompt lists are converted into Dify Tools.
  2. Your selected LLM can see their name, description, argument type
  3. The LLM calls Tools based on the ReAct loop (Reason → Act → Observe).

[!NOTE] Most of the code in this repository contains the following files.

Dify Official Plugins / Agent Strategies

https://github.com/langgenius/dify-official-plugins/tree/main/agent-strategies/cot_agent

What I did

  • Copied ReAct.py and renamed file as mcpReAct.py
  • Added config_json GUI input field by editing mcpReAct.yaml and class mcpReActParams()

in mcpReAct.py, I added

  • New 12 functions for MCP
  • __init__() for initializing AsyncExitStack and event loop
  • Some codes in _handle_invoke_action() for MCP
  • MCP setup and cleanup in _invoke()
  • Add SSE MCP client (v0.0.2)

[!IMPORTANT] ReAct while loop is as they are

Caution and Limitation

[!CAUTION] This plugin does not implement a human-in-the-loop mechanism by default, so connect reliable mcp server only.
To avoid it, decrease max itereations(default:3) to 1, and use this Agent node repeatedly in Chatflow.
However, agent memory is reset by the end of Workflow.
Use Conversaton Variable to save history and pass it to QUERY.
Don't forget to add a phrase such as "ask for user's permission when calling tools" in INSTRUCTION.

[!WARNING]

  • The Tools field should not be left blank. so select Dify tools like "current time".

How to use this plugin

Install the plugin from GitHub (online)

Install the plugin from .difypkg file (offline)

How to handle errors when installing plugins?

Issue : If you encounter the error message: plugin verification has been enabled, and the plugin you want to install has a bad signature, how to handle the issue?
Solution : Add the following line to the end of your /docker/.env configuration file:

FORCE_VERIFYING_SIGNATURE=false

Run the following commands to restart the Dify service:

cd docker
docker compose down
docker compose up -d

Once this field is added, the Dify platform will allow the installation of all plugins that are not listed (and thus not verified) in the Dify Marketplace.

[!TIP] Marketplace need Approval. If stars☆ reach 100, I'll consider to make PR for them.

Source code plugin deploy

steps are as follows. how-to-develop-and-deploy-plugin

Where does this plugin show up?

  • It takes few minutes to install
  • Once installed, you can use it any workflows as Agent node
  • Select "mcpReAct" strategy (otherwise no MCP) asAgentStrategiesNode

Config

MCP Agent Plugin node require config_json like this to command or URL to awake an MCP server

{
    "mcpservers":{
        "name_of_mcpserver":{
            "url": "http://host.docker.internal:8080/sse"
        },
    }
}

[!WARNING]

  • Currently support one MCP server per Agent node

Chatflow Example

showcase2

I provide this Dify ChatFlow for testing dify mcp plugin as .yml.

https://github.com/3dify-project/dify-mcp-client/tree/main/test/chatflow

After download DSL(yml) file, import it in Dify and you can test MCP using "Everything MCP server"

https://github.com/modelcontextprotocol/servers/tree/main/src/everything

How to convert stdio MCP server into SSE MCP server

way1: Edit MCP server's code

If fastMCP server, change like this

if __name__ == "__main__":
-    mcp.run(transport="stdio")
+    mcp.run(transport="sse")

way2: via mcp-proxy

\mcp-proxy>uv venv -p 3.12
.venv\Scripts\activate
uv tool install mcp-proxy

Check Node.js has installed and npx(.cmd) Path

(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

If claude_desktop_config.json is following schema,

{
  "mcpServers": {
    "SERVER_NAME": {
       "command": CMD_NAME_OR_PATH 
       "args": {VALUE1, VALUE2}
    }
  }
}

Wake up stdio MCP server by this command

mcp-proxy --sse-port=8080 --pass-environment -- CMD_NAME_OR_PATH --arg1 VALUE1 --arg2 VALUE2 ...

If your OS is Windows, use npx.cmd instead of npx. Following is example command to convert stdio "everything MCP server" to SSE via mcp-proxy.

mcp-proxy --sse-port=8080 --pass-environment -- C:\Program Files\nodejs\npx.cmd --arg1 -y --arg2 @modelcontextprotocol/server-everything

[!Warning] Additional argument for mcp-proxy. Be careful when you use it. There may be security risk such as XSS, CSRF. (default: no CORS allowed)

--allow-origin='*'

Following is the mcp-proxy setup log.

(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)

🔨 How to develop and deploy plugin

General plugin dev guide

https://github.com/3dify-project/dify-mcp-client/blob/main/GUIDE.md

Dify plugin SDK daemon

In my case (Windows 11) ,need to download dify-plugin-windows-amd64.exe (v0.0.3)
Choose your OS-compatible verson at here:
https://github.com/langgenius/dify-plugin-daemon/releases
Rename it as dify.exe

Reference

https://docs.dify.ai/plugins/quick-start/develop-plugins/initialize-development-tools

[!NOTE] You can skip this stage if you pull or download codes of this repo

dify plugin init

Initial settings are as follow InitialDifyPluginSetting

Install python module

Python3.12+ is compatible. Dify plugin official installation guide use pip, but I used uv.

uv init --python=python3.12
.venv\Scripts\activate

Install python modules for plugin development

uv add werkzeug==3.0.3
uv add flask
uv add dify_plugin

Copy and rename env.example to .env

I changed REMOTE_INSTALL_HOST from debug.dify.ai to localhost (Docker Compose environment) click bug icon button to see these information

Change directory

cd mcp_client

Do Once

pip install -r requirements.txt

Activate Dify plugin

python -m main

(ctrl+C to stop)

[!TIP] REMOTE_INSTALL_KEY of .env often changes. If you encounter error messages like handshake failed, invalid key, renew it.

package into .difypkg

./mcp_client is my default root name

dify plugin package ./ROOT_OF_YOUR_PROJECT

Useful GitHub repositories for developers

Dify Plugin SDKs

https://github.com/langgenius/dify-plugin-sdks

MCP Python SDK

https://github.com/modelcontextprotocol/python-sdk

[!TIP] Especially useful following MCP client example
https://github.com/modelcontextprotocol/python-sdk/blob/main/examples/clients/simple-chatbot/mcp_simple_chatbot/main.py

[!NOTE] Dify plugin has requirements.txt which automatically installs python modules.
I include mcp in it, so you don't need to download the MCP SDK separately.

Related MCP Servers & Clients