dify-plugin-agent-mcp_sse icon indicating copy to clipboard operation
dify-plugin-agent-mcp_sse copied to clipboard

本地 MCP 服务无法连接

Open WingI9B1 opened this issue 6 months ago • 7 comments

Please confirm before submission 在提交之前,请确认

Dify version Dify版本

1.4.0

Plugin version 插件版本

0.1.9

Function Calling or ReAct

ReAct

HTTP with SSE or Streamable HTTP

HTTP with SSE

LLM Model LLM模型

硅基流动 Qwen/Qwen3-235B-A22B

Problem description 问题描述

我使用源码部署,中间件使用docker部署。

我正在尝试使用字节开发的 DBHub。其提供一个demo连接用于测试:https://demo.dbhub.ai/sse。

我在本地的MCP服务配置如下:

{
  "server_name1": {
    "transport": "sse",
    "url": "https://demo.dbhub.ai/sse"
  }
}

预览的结果如下:

Run failed: Failed to transform agent message: PluginInvokeError: 
{
  "args": {},
  "error_type": "Exception",
  "message": "invoke llm model failed: Post \"http://api:5001/inner/api/invoke/llm\": dial tcp: lookup api on 127.0.0.11:53: no such host"
}

是否是网络配置的问题?

即使我使用本地部署的DBHub服务:

{
  "server_name1": {
    "transport": "sse",
    "url": "http://192.168.3.196:8000/sse"
  }
}

也会报同样的错误。

Image

在Dify的云端网站,经过同样的配置(demo链接)可以调用对应工具。

请大佬帮帮🙏🙏🙏

WingI9B1 avatar May 27 '25 10:05 WingI9B1

有没有可能是网络通信的问题?Docker部署的中间件没办法连接到本地的MCP服务?

WingI9B1 avatar May 27 '25 10:05 WingI9B1

invoke llm model failed: Post "http://api:5001/inner/api/invoke/llm": dial tcp: lookup api on 127.0.0.11:53: no such host

你的模型插件出的问题

junjiem avatar May 28 '25 01:05 junjiem

invoke llm model failed: Post "[http://api:5001/inner/api/invoke/llm](http://api:5001/inner/api/invoke/llm%5C)": dial tcp: lookup api on 127.0.0.11:53: no such host

你的模型插件出的问题

@junjiem 我使用了硅基流动,Deepseek,和国内中转的API都会报这个错误。

我初步查看发现可能是Docker配置问题,应该不是Dify的问题了

WingI9B1 avatar May 28 '25 06:05 WingI9B1

由于我是通过官方教程源码部署,通过 middleware.env 进行启动中间件,而其中:

PLUGIN_DEBUGGING_PORT=5003
PLUGIN_DEBUGGING_HOST=0.0.0.0
EXPOSE_PLUGIN_DEBUGGING_HOST=localhost
EXPOSE_PLUGIN_DEBUGGING_PORT=5003

PLUGIN_DIFY_INNER_API_KEY=...
PLUGIN_DIFY_INNER_API_URL=http://api:5001

问题出现在 http://api:5001,由于 api 服务对于我来说是在本地启动,所以不是作为一个docker服务,所以插件无法正常获取。 而docker部署,api服务作为一个docker服务,所以能够被正确获取,所以不会出现这个bug。

修改为:

PLUGIN_DIFY_INNER_API_URL=http://host.docker.internal:5001

即可解决

WingI9B1 avatar May 28 '25 11:05 WingI9B1

可以啊,我就是本地搞的

Rendtime avatar May 29 '25 00:05 Rendtime

可以啊,我就是本地搞的

@Rendtime 你是本地源码部署的吗?

WingI9B1 avatar May 29 '25 01:05 WingI9B1

可以啊,我就是本地搞的

@Rendtime 你是本地源码部署的吗?

是的,我就是本地搞的,我估计是你的 ip 地址不对。要确保docker能访问你那个地址。

Rendtime avatar May 30 '25 06:05 Rendtime