Replies: 1 comment 1 reply
|
DeerFlow 的 MCP 集成并不只支持 stdio(命令行子进程)这一种传输方式,它同时支持 sse 和 http(streamable HTTP) 两种远程传输——这两种都是通过 url 字段连接到一个已经在外部跑起来的 MCP 服务器,而不会在容器内启动子进程。所以「容器运行时之外启动的 MCP 服务器」正是 sse/http 类型的用途。
extensions_config.example.json 只给了 stdio 示例,但配置 schema(backend/packages/harness/deerflow/config/extensions_config.py)里 McpServerConfig.type 接受 stdio / sse / http 三种;sse 和 http 只需要 url(外加可选的 headers / oauth),不需要 command/args。 type 也可以写成 MCP 规范里的 transport(二者互为别名,type 优先)。这是专门修过的回归(对应 issue #3238):以前只用 transport: sse 会被误判成 stdio。
容器里的 localhost 指的是容器自己,连不到宿主机。DeerFlow 的 docker/docker-compose.yaml 已经给 gateway 服务配好了: extra_hosts:
所以容器内直接用 http://host.docker.internal:<端口> 就能回连宿主机(这一项在 config.example.yaml 里也有说明:模型 base_url 在 Docker 部署时同样要改成 host.docker.internal)。NO_PROXY 也已经把 host.docker.internal 加进去了,不会走代理。
一句话总结:把那个外部 MCP 服务器用 type: "http"(或 "sse")+ url 配进 extensions_config.json,URL 用 host.docker.internal:<端口> 指向宿主机(并确保该服务器监听 0.0.0.0),reload 配置即可,不需要把它搬进容器。 |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
如图所示:

有鉴于MCP集成文档中给到的好像都是基于命令行启动的MCP服务器,也就是在Docker RT内部的,如果我在容器运行时之外启动了一个MCP服务器,那么这个时候应该如何集成到容器内你呢?
All reactions