mcpField
D
dify-mcp

dify-mcp

本地服务
github.com/salted-butter-joshua记忆与知识017 周前更新

关于 dify-mcp

dify-mcp 将 Dify 知识库检索能力通过 MCP 提供给 Cursor 等兼容客户端。它连接自托管或远程 Dify,并可用数据集白名单限制访问。

主要功能

  1. 01发现并查看数据集
  2. 02语义检索相关文本块
  3. 03浏览文档与文本段
  4. 04按数据集白名单限制访问
  5. 05通过 stdio 传输

适用场景

  1. 01在 Cursor 中检索 Dify 知识库
  2. 02检查允许访问的数据集
  3. 03查看数据集中的文档和文本段

MCP 相关

作为 MCP 服务,它向客户端提供数据集发现、语义检索、文档及文本段浏览工具;通过 HTTP 调用 Dify Knowledge API,并使用 stdio 与本地客户端通信。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"salted-butter-joshua-dify": {
"command": "uvx",
"args": [
"dify-mcp"
],
"env": {
"DIFY_API_BASE": "<DIFY_API_BASE>",
"DIFY_API_KEY": "<DIFY_API_KEY>",
"DIFY_ALLOWED_DATASETS": "<DIFY_ALLOWED_DATASETS>",
"DIFY_TIMEOUT": "<DIFY_TIMEOUT>",
"DIFY_VERIFY_SSL": "<DIFY_VERIFY_SSL>"
}
}
}
}
启动命令uvx dify-mcp
需要配置的环境变量
DIFY_API_BASEDify Knowledge API base URL, e.g. http://192.168.1.100/v1
DIFY_API_KEY密钥Dify Knowledge Base API key
DIFY_ALLOWED_DATASETSComma-separated dataset UUIDs to expose
DIFY_TIMEOUTHTTP timeout in seconds (default: 30)
DIFY_VERIFY_SSLVerify TLS certificates (default: false)

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypidify-mcp0.1.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

dify-mcp

通过 MCP(Model Context Protocol)开放 Dify 知识库检索功能,供 Cursor 和其他兼容 MCP 的客户端使用。

通过 HTTP 连接到自托管或远程 Dify 实例,并可选择启用数据集允许列表进行访问控制。

功能

  • 知识库发现 — 列出并检查允许访问的数据集
  • 语义检索 — 通过 Dify POST /datasets/{dataset_id}/retrieve 搜索文本块
  • 文档浏览 — 列出数据集中的文档和片段
  • 数据集允许列表 — 将访问限制为特定的 dataset_id 值
  • stdio 传输 — 无需手动启动服务;MCP 客户端会启动进程

要求

  • Python 3.11+
  • 正在运行且已启用知识库 API 的 Dify 实例
  • 运行 MCP 服务的计算机能够访问 Dify API 端点
  • Dify 知识库 API 密钥(Dify → 知识 → 服务 API → API 密钥)

快速开始

1. 克隆并安装
git clone https://github.com/salted-butter-joshua/dify-mcp.git
cd dify-mcp

python3.11 -m venv .venv

# Windows
.venv\Scripts\python.exe -m pip install -e .

# macOS / Linux
.venv/bin/python -m pip install -e .

验证导入:

# Windows
.venv\Scripts\python.exe -c "import dify_mcp; print('OK')"

# macOS / Linux
.venv/bin/python -c "import dify_mcp; print('OK')"
2. 配置环境

复制示例环境文件并进行编辑:

cp .env.example .env
DIFY_API_BASE=http://your-dify-host/v1
DIFY_API_KEY=dataset-your-api-key
DIFY_ALLOWED_DATASETS=dataset-uuid-1,dataset-uuid-2
DIFY_TIMEOUT=30
DIFY_VERIFY_SSL=false
变量描述
DIFY_API_BASEDify 知识库 API 基础 URL,例如 http://192.168.1.100/v1
DIFY_API_KEY知识库 API 密钥
DIFY_ALLOWED_DATASETS要开放的逗号分隔数据集 UUID(必填)
DIFY_TIMEOUTHTTP 超时秒数(默认值:30)
DIFY_VERIFY_SSL验证 TLS 证书(对于自签名证书,默认值:false)

运行健康检查:

# Windows
.venv\Scripts\python.exe scripts/health_check.py

# macOS / Linux
.venv/bin/python scripts/health_check.py
3. 添加到 Cursor

无需手动启动 MCP 服务。Cursor 会通过 stdio 自动启动它。

  1. 打开 Cursor 设置 → MCP → 编辑配置
  2. 在 MCP 配置文件的 mcpServers 中添加以下内容:
    • Windows:%USERPROFILE%\.cursor\mcp.json
    • macOS / Linux:~/.cursor/mcp.json
  3. 将路径和环境变量值替换为你自己的值
  4. 重启 Cursor

完整示例请参见 mcp.json.example。

Windows 示例:

{
  "mcpServers": {
    "dify-knowledge": {
      "command": "/absolute/path/to/dify-mcp/.venv/Scripts/python.exe",
      "args": ["-m", "dify_mcp.server"],
      "cwd": "/absolute/path/to/dify-mcp",
      "env": {
        "DIFY_API_BASE": "http://your-dify-host/v1",
        "DIFY_API_KEY": "dataset-your-api-key",
        "DIFY_ALLOWED_DATASETS": "dataset-uuid-1,dataset-uuid-2",
        "DIFY_TIMEOUT": "30",
        "DIFY_VERIFY_SSL": "false"
      }
    }
  }
}

macOS / Linux 示例:

{
  "mcpServers": {
    "dify-knowledge": {
      "command": "/absolute/path/to/dify-mcp/.venv/bin/python",
      "args": ["-m", "dify_mcp.server"],
      "cwd": "/absolute/path/to/dify-mcp",
      "env": {
        "DIFY_API_BASE": "http://your-dify-host/v1",
        "DIFY_API_KEY": "dataset-your-api-key",
        "DIFY_ALLOWED_DATASETS": "dataset-uuid-1,dataset-uuid-2"
      }
    }
  }
}
4. 在 Cursor 中验证
  1. Cursor 设置 → MCP → 确认 dify-knowledge 显示为已启用
  2. 在聊天中尝试:
    • 列出可用的 Dify 知识库
    • 在知识库中搜索“你的查询”

MCP 工具

工具描述
list_datasets列出允许列表中的知识库
get_dataset获取单个数据集的元数据
search_knowledge检索相关文本块(主要检索工具)
list_documents列出数据集中的文档
list_document_segments列出文档的文本片段

架构

Cursor (MCP client)
    │ stdio
    ▼
dify-mcp (local process)
    │ HTTPS / HTTP
    ▼
Dify Knowledge API (/v1/datasets/...)

MCP 服务在你的计算机本地运行,并通过网络调用 Dify API。Dify 无需连接到你的计算机。

故障排除

问题原因解决方法
No matching distribution found for mcpPython < 3.11在 .venv 中使用 Python 3.11+
MCP 显示错误(红色)Python 路径错误、密钥无效或网络问题检查 mcp.json 路径和环境变量
401 UnauthorizedAPI 密钥无效在 Dify 服务 API 面板中重新生成密钥
Dataset not in allowed listUUID 不在 DIFY_ALLOWED_DATASETS 中将数据集 UUID 添加到允许列表
健康检查提示缺少环境变量找不到 .env确保项目根目录中存在 .env
连接超时无法访问 Dify检查网络 / VPN / 防火墙

项目结构

dify-mcp/
├── src/dify_mcp/
│   ├── server.py        # MCP entry point
│   ├── config.py        # Settings and allowlist
│   ├── dify_client.py   # Dify Knowledge API client
│   └── formatters.py    # Response formatting
├── scripts/
│   └── health_check.py  # Connectivity test
├── mcp.json.example     # Cursor MCP config template
├── .env.example         # Environment variable template
└── Dify-API.md          # Local API path reference

API 参考

安全说明

  • 切勿将 .env 或 API 密钥提交到版本控制中
  • 单个 Knowledge Base API 密钥可以访问账户下所有可见的数据集 — 使用 DIFY_ALLOWED_DATASETS 限制暴露范围
  • 优先在本地运行 MCP;仅在本机的 mcp.json 环境变量或 .env 中保存 API 密钥

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。