dify_workflow_edit_mcp
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"dify-workflow-edit": {
"args": [
"--base-url",
"http://localhost:5001",
"--app-id",
"\u003cappid\u003e",
"--email",
"admin@example.com",
"--password",
"your_password"
],
"command": "\u003cpath/to/\u003edify_workflow_edit_mcp"
}
}
}
服务介绍
Dify Workflow Edit MCP
一个基于 Rust 的 MCP(Model Context Protocol)服务器,用于通过 Dify 控制台 API 编辑和管理 Dify 工作流。
仅 5 个精简工具,通过 action/mode/view 子命令做功能分流。
敏感信息零泄露:base_url, app_id, email, password 全部从启动参数注入 MCP 服务器,启动时自动登录并拉取草稿,不经过 JSON-RPC 通道。
快速开始
编译
cargo build --release
产物在 target/release/dify_workflow_edit_mcp.exe(Windows)或对应平台可执行文件。
在 mcp.json 中配置
需要先将编译产物放到合适的路径,以下
<path/to/>请替换为实际路径。
{
"mcpServers": {
"dify-workflow-edit": {
"command": "<path/to/>dify_workflow_edit_mcp",
"args": [
"--base-url", "http://localhost:5001",
"--app-id", "4c1e7f32-abcd-1234-ef56-7890abcdef12",
"--email", "admin@example.com",
"--password", "your_password"
]
}
}
}
或者用 API Key(如果只需运行已发布工作流):
{
"mcpServers": {
"dify-workflow-edit": {
"command": "<path/to/>dify_workflow_edit_mcp",
"args": [
"--base-url", "http://localhost:5001",
"--app-id", "4c1e7f32-abcd-1234-ef56-7890abcdef12",
"--api-key", "app-xxxxxxxxxxxxx"
]
}
}
}
需要走 HTTP 代理(如局域网 Dify 需科学上网):
{
"mcpServers": {
"dify-workflow-edit": {
"command": "<path/to/>dify_workflow_edit_mcp",
"args": [
"--base-url", "http://localhost:5001",
"--app-id", "4c1e7f32-abcd-1234-ef56-7890abcdef12",
"--email", "admin@example.com",
"--password", "your_password",
"--proxy", "http://127.0.0.1:7890"
]
}
}
}
启动后自动:
- 登录控制台 API(获取 session cookie)
- 拉取指定应用的草稿工作流(graph + features)
- 进入 STDIO 循环等待 MCP 请求
在 Trae IDE 中安装
Trae IDE 内置 MCP 支持,配置步骤如下:
- 打开 Trae → 左侧底部 ⌘ M(Mac)/ Ctrl M(Windows)→ 启用 Agent 模式
- 点击 Input 框附近的 MCP 配置 按钮(或 Settings → MCP Server)
- 在
mcp.json编辑器中填入上述配置 - 点击「启动」/「重载」使配置生效
也可直接编辑 Trae 配置文件
~/.config/trae/mcp.json(macOS/Linux)或%APPDATA%\Trae\mcp.json(Windows)。
完成后在对话中直接调用 MCP 工具即可编辑 Dify 工作流。
CLI 参数
| 参数 | 必填 | 说明 |
|---|---|---|
--base-url |
✅ | Dify 服务地址,如 http://localhost:5001 |
--app-id |
✅ | 工作流应用 ID(UUID 格式) |
--email |
⚠️ | 管理员邮箱(与 --api-key 二选一) |
--password |
⚠️ | 管理员密码 |
--api-key |
⚠️ | 公有 API Key(备选认证) |
--proxy |
❌ | HTTP 代理地址,如 http://127.0.0.1:7890 |
--info |
❌ | 打印服务器信息后退出 |
--help / -h |
❌ | 显示帮助 |
--version / -v |
❌ | 显示版本 |
工具概览
| # | 工具 | 作用 | 子命令 |
|---|---|---|---|
| 1 | get_workflow | 查看工作流(首次自动拉取草稿并缓存) | graph, node, stats, features, env_vars, conv_vars, block_configs |
| 2 | edit_workflow | 编辑图(节点/边 CRUD),操作本地缓存 | add_node, update_node, remove_node, add_edge, remove_edge |
| 3 | sync_workflow | 将本地缓存同步推送到 Dify 服务器 | — |
| 4 | run_workflow | 运行草稿/单节点调试/运行已发布 | draft, node, published |
| 5 | publish_workflow | 版本管理:发布/从版本恢复/列表 | publish, restore, list |
详细使用
1. get_workflow
get_workflow view=graph # 完整图结构(首次自动拉取草稿)
get_workflow view=node node_id=xxx # 单个节点详情
get_workflow view=stats # 统计信息
get_workflow view=features # 特征配置
get_workflow view=env_vars # 环境变量
get_workflow view=conv_vars # 对话变量
get_workflow view=block_configs # 默认块模板
2. edit_workflow(图编辑)
# 节点操作
edit_workflow action=add_node type=llm title="问答助手"
edit_workflow action=add_node type=code title="代码节点" x=100 y=200 data={...}
edit_workflow action=update_node node_id=xxx title="新标题"
edit_workflow action=update_node node_id=xxx x=100 y=200
edit_workflow action=update_node node_id=xxx data={...} # 完整替换配置
edit_workflow action=update_node node_id=xxx field=variables.prompt_template data={...} # 局部字段更新
edit_workflow action=remove_node node_id=xxx
# 边操作
edit_workflow action=add_edge source_node_id=A target_node_id=B
edit_workflow action=remove_edge source_node_id=A target_node_id=B
3. sync_workflow
将本地缓存编辑推送到 Dify 服务器。会发送 hash 做冲突检测。
sync_workflow # 无参数
4. run_workflow
run_workflow mode=draft [inputs={...}] # 运行草稿
run_workflow mode=node node_id=xxx [inputs={...}] # 单节点调试
run_workflow mode=published [inputs={...}] [user=...] # 运行已发布(需启动时 --api-key)
5. publish_workflow
publish_workflow action=publish # 发布
publish_workflow action=publish marked_name="v1.0" marked_comment="初始版本"
publish_workflow action=restore workflow_id=xxx # 从版本恢复
publish_workflow action=list # 查看版本列表
典型工作流
graph LR
A[启动: 参数注入] --> B[自动登录 + 拉取草稿]
B --> C[get_workflow view=graph]
C --> D[edit_workflow]
D --> E[sync_workflow]
E --> F[publish_workflow]
F --> G[run_workflow mode=published]
- mcp.json 配置
--base-url --app-id --email --password - 查看 →
get_workflow view=graph(已自动拉取) - 编辑 →
edit_workflow action=add_node / update_node / remove_node / add_edge - 同步 →
sync_workflow(推回 Dify) - 发布 →
publish_workflow action=publish - 运行 →
run_workflow mode=published inputs={...}
架构
src/
├── main.rs # CLI 参数解析 + 自动登录 + 拉取草稿 + STDIO 主循环
├── lib.rs # 模块导出
├── core.rs # 核心类型(DifyServer, WorkflowGraph, Node, Edge 等)
├── client.rs # Dify HTTP API 客户端(含 login + 自动重登 + 代理支持)
├── handlers.rs # JSON-RPC 处理器 + 5 工具分发
└── tools/
├── mod.rs # 工具入口
├── graph.rs # edit_workflow 图操作核心
├── workflow.rs # get/sync/publish 工作流生命周期
├── run.rs # run_workflow 运行
└── config.rs # get_workflow 配置相关视图
凭据安全设计
| 方面 | 实现 |
|---|---|
| 敏感信息传递 | 仅通过 mcp.json 的 CLI 参数,不经过 JSON-RPC |
| 会话过期处理 | client.rs 自动检测 401 → 重新登录并重试一次 |
| API Key 备选 | --api-key 模式无需暴露控制台凭据 |
| 代理支持 | --proxy 参数透传给 reqwest |
LICENSE
Apache-2.0

