启动 RAGFlow MCP 服务器
从源码或通过 Docker 启动 MCP 服务器。
RAGFlow 模型上下文协议(MCP)服务器被设计为RAGFlow服务器的独立补充组件。请注意,MCP服务器必须与正常运行的RAGFlow服务器一起工作。
MCP服务器可以以自托管模式(默认)或托管模式启动
- 自托管模式:
以自托管模式启动MCP服务器时,您必须提供API密钥来验证MCP服务器与RAGFlow服务器的身份。在此模式下,MCP服务器*只能*访问RAGFlow服务器上指定租户的数据集(知识库)。 - 托管模式:
在托管模式下,每个MCP客户端都可以访问他们在RAGFlow服务器上的知识库。但是,每个客户端请求都必须包含有效的API密钥,以验证客户端与RAGFlow服务器的身份。
连接建立后,MCP服务器以MCP HTTP+SSE(Server-Sent Events)模式与其客户端通信,将来自RAGFlow服务器的响应单向实时推送给客户端。
先决条件
- 确保RAGFlow已升级到 v0.18.0 或更高版本。
- 准备好您的RAGFlow API密钥。请参阅获取 RAGFlow API 密钥。
信息
如果您希望在不升级RAGFlow的情况下试用我们的MCP服务器,社区贡献者 yiminghub2024 👏 分享了他们推荐的步骤此处。
启动 MCP 服务器
您可以从源码或通过 Docker 启动 MCP 服务器。
从源码启动
- 确保 RAGFlow 服务器 v0.18.0+ 正在正常运行。
- 启动 MCP 服务器
# Launch the MCP server to work in self-host mode, run either of the following
uv run mcp/server/server.py --host=127.0.0.1 --port=9382 --base_url=http://127.0.0.1:9380 --api_key=ragflow-xxxxx
# uv run mcp/server/server.py --host=127.0.0.1 --port=9382 --base_url=http://127.0.0.1:9380 mode=self-host --api_key=ragflow-xxxxx
# To launch the MCP server to work in host mode, run the following instead:
# uv run mcp/server/server.py --host=127.0.0.1 --port=9382 --base_url=http://127.0.0.1:9380 mode=host
其中
host
: MCP 服务器的主机地址。port
: MCP 服务器的监听端口。base_url
: 运行中的 RAGFlow 服务器地址。mode
: 启动模式。self-host
: (默认)自托管模式。host
: 托管模式。
api_key
: 在自托管模式下必需,用于验证 MCP 服务器与 RAGFlow 服务器的身份。
通过 Docker 启动
1. 启用 MCP 服务器
MCP 服务器被设计为 RAGFlow 服务器的可选补充组件,默认禁用。要启用 MCP 服务器,请执行以下操作:
- 导航至 **docker/docker-compose.yml**。
- 取消注释
services.ragflow.command
部分,如下所示:
services:
ragflow:
...
image: ${RAGFLOW_IMAGE}
# Example configuration to set up an MCP server:
command:
- --enable-mcpserver
- --mcp-host=0.0.0.0
- --mcp-port=9382
- --mcp-base-url=http://127.0.0.1:9380
- --mcp-script-path=/ragflow/mcp/server/server.py
- --mcp-mode=self-host
- --mcp-host-api-key=ragflow-xxxxxxx
其中
mcp-host
: MCP 服务器的主机地址。mcp-port
: MCP 服务器的监听端口。mcp-base_url
: 运行中的 RAGFlow 服务器地址。mcp-script-path
: MCP 服务器主脚本的文件路径。mcp-mode
: 启动模式。self-host
: (默认)自托管模式。host
: 托管模式。
mcp-host-api_key
: 在自托管模式下必需,用于验证 MCP 服务器与 RAGFlow 服务器的身份。
2. 启动包含 MCP 服务器的 RAGFlow 服务器
运行 docker compose -f docker-compose.yml
命令,同时启动 RAGFlow 服务器和 MCP 服务器。
以下 ASCII 图形确认成功启动:
ragflow-server | Starting MCP Server on 0.0.0.0:9382 with base URL http://127.0.0.1:9380...
ragflow-server | Starting 1 task executor(s) on host 'dd0b5e07e76f'...
ragflow-server | 2025-04-18 15:41:18,816 INFO 27 ragflow_server log path: /ragflow/logs/ragflow_server.log, log levels: {'peewee': 'WARNING', 'pdfminer': 'WARNING', 'root': 'INFO'}
ragflow-server |
ragflow-server | __ __ ____ ____ ____ _____ ______ _______ ____
ragflow-server | | \/ |/ ___| _ \ / ___|| ____| _ \ \ / / ____| _ \
ragflow-server | | |\/| | | | |_) | \___ \| _| | |_) \ \ / /| _| | |_) |
ragflow-server | | | | | |___| __/ ___) | |___| _ < \ V / | |___| _ <
ragflow-server | |_| |_|\____|_| |____/|_____|_| \_\ \_/ |_____|_| \_\
ragflow-server |
ragflow-server | MCP launch mode: self-host
ragflow-server | MCP host: 0.0.0.0
ragflow-server | MCP port: 9382
ragflow-server | MCP base_url: http://127.0.0.1:9380
ragflow-server | INFO: Started server process [26]
ragflow-server | INFO: Waiting for application startup.
ragflow-server | INFO: Application startup complete.
ragflow-server | INFO: Uvicorn running on http://0.0.0.0:9382 (Press CTRL+C to quit)
ragflow-server | 2025-04-18 15:41:20,469 INFO 27 found 0 gpus
ragflow-server | 2025-04-18 15:41:23,263 INFO 27 init database on cluster mode successfully
ragflow-server | 2025-04-18 15:41:25,318 INFO 27 load_model /ragflow/rag/res/deepdoc/det.onnx uses CPU
ragflow-server | 2025-04-18 15:41:25,367 INFO 27 load_model /ragflow/rag/res/deepdoc/rec.onnx uses CPU
ragflow-server | ____ ___ ______ ______ __
ragflow-server | / __ \ / | / ____// ____// /____ _ __
ragflow-server | / /_/ // /| | / / __ / /_ / // __ \| | /| / /
ragflow-server | / _, _// ___ |/ /_/ // __/ / // /_/ /| |/ |/ /
ragflow-server | /_/ |_|/_/ |_|\____//_/ /_/ \____/ |__/|__/
ragflow-server |
ragflow-server |
ragflow-server | 2025-04-18 15:41:29,088 INFO 27 RAGFlow version: v0.18.0-285-gb2c299fa full
ragflow-server | 2025-04-18 15:41:29,088 INFO 27 project base: /ragflow
ragflow-server | 2025-04-18 15:41:29,088 INFO 27 Current configs, from /ragflow/conf/service_conf.yaml:
ragflow-server | ragflow: {'host': '0.0.0.0', 'http_port': 9380}
...
ragflow-server | * Running on all addresses (0.0.0.0)
ragflow-server | * Running on http://127.0.0.1:9380
ragflow-server | * Running on http://172.19.0.6:9380
ragflow-server | ______ __ ______ __
ragflow-server | /_ __/___ ______/ /__ / ____/ _____ _______ __/ /_____ _____
ragflow-server | / / / __ `/ ___/ //_/ / __/ | |/_/ _ \/ ___/ / / / __/ __ \/ ___/
ragflow-server | / / / /_/ (__ ) ,< / /____> </ __/ /__/ /_/ / /_/ /_/ / /
ragflow-server | /_/ \__,_/____/_/|_| /_____/_/|_|\___/\___/\__,_/\__/\____/_/
ragflow-server |
ragflow-server | 2025-04-18 15:41:34,501 INFO 32 TaskExecutor: RAGFlow version: v0.18.0-285-gb2c299fa full
ragflow-server | 2025-04-18 15:41:34,501 INFO 32 Use Elasticsearch http://es01:9200 as the doc engine.
...
在不升级 RAGFlow 的情况下启动 MCP 服务器
致谢
本节由社区贡献者 yiminghub2024 贡献。👏
- 准备所有 MCP 相关文件和目录。
i. 将 mcp/ 目录复制到您的本地工作目录。
ii. 将 docker/docker-compose.yml 复制到本地。
iii. 将 docker/entrypoint.sh 复制到本地。
iv. 使用uv
安装所需的依赖项- 运行
uv add mcp
命令,或 - 将 pyproject.toml 复制到本地并运行
uv sync --python 3.10 --all-extras
命令。
- 运行
- 编辑 **docker-compose.yml** 文件以启用 MCP(默认禁用)。
- 启动 MCP 服务器
docker compose -f docker-compose.yml up -d`
检查 MCP 服务器状态
运行以下命令检查 RAGFlow 服务器和 MCP 服务器的日志:
docker logs ragflow-server
安全注意事项
由于 MCP 技术仍处于早期阶段,尚未建立官方的身份验证或授权最佳实践,RAGFlow 目前使用 API 密钥来验证先前描述的操作身份。然而,在公共环境中,这种临时解决方案可能会使您的 MCP 服务器面临潜在的网络攻击。因此,在运行本地 SSE 服务器时,建议仅绑定到 localhost (127.0.0.1
),而不是绑定到所有接口 (0.0.0.0
)。
如需更多指导,请参阅官方 MCP 文档。
常见问题解答
何时使用 API 密钥进行身份验证?
API 密钥的使用取决于您的 MCP 服务器的运行模式。
- 自托管模式(默认)
在自托管模式下启动 MCP 服务器时,您应该在启动时提供 API 密钥,以便它能够向 RAGFlow 服务器进行身份验证- 如果从源码启动,请在命令中包含 API 密钥。
- 如果从 Docker 启动,请在 docker/docker-compose.yml 中更新 API 密钥。
- 托管模式:
如果您的 RAGFlow MCP 服务器在托管模式下工作,请在您的客户端请求的headers
中包含 API 密钥,以向 RAGFlow 服务器验证您的客户端身份。示例可在此处获取:此处。