项目介绍
Dify作为MCP服务器
将Dify工作流作为模型上下文协议(MCP)服务器暴露给AI客户端,如Claude。
项目概述
本项目实现了一个Dify插件,允许Dify工作流被支持模型上下文协议(MCP)的AI客户端(如Claude Desktop、Cursor等)访问。通过此插件,你可以:
- 将Dify工作流作为工具提供给AI,例如Claude
- 允许AI客户端发现并利用你的工作流
- 在不修改工作流的情况下集成到AI助手中
功能
- ✅ 支持MCP标准的JSON RPC接口
- ✅ 自动发现和注册工具
- ✅ 兼容Claude Desktop/Coursor等客户端
- ✅ 安全的SSE连接实现
- ✅ 服务器端会话管理
- 🔄 符合最新的MCP可流式HTTP规范(基于PR #206)
背景
模型上下文协议(MCP)是一个开放标准,允许AI模型与外部工具和数据源进行交互。随着MCP的发展,该协议正从HTTP+SSE模式过渡到新的“可流式HTTP”传输模式,为无状态服务器提供了更好的支持。
本项目跟踪并实现了最新的MCP协议变更,特别是:
- 服务器负责生成和管理会话ID
- 支持无状态服务器模式(适用于Dify插件环境)
- 标准化消息格式和流处理
- 安全的会话管理和认证
- 配置插件设置:
- 应用ID:你希望暴露的Dify应用ID
- 其他设置:根据需要进行配置
使用说明
1. 在Dify中配置
确保你的Dify应用至少包含一个工作流,并且已经正确配置。
2. 客户端使用
- 打开客户端
- 前往设置>MCP服务器
- 添加一个新的MCP服务器,填写URL:
https://您的Dify实例地址/difyapp_as_mcp_server
- 保存并启用服务器
3. 在cursor中使用
- 打开cursor
- 前往设置>AI>MCP
- 添加服务器地址:
https://您的Dify实例地址/difyapp_as_mcp_server
- 保存并启用
- 在cursor代理中使用你的工具
技术细节
架构
此插件使用两个端点来实现MCP服务器:
- GET端点:处理SSE连接和HTML页面
- POST端点:处理JSON-RPC请求
由于Dify插件环境的限制,我们采用了“最少可行”的SSE实现,包括:
- 服务器端会话ID生成
- 有限的心跳模式(大约5分钟)
- 客户端断开后自动重连
- 符合最新的可流式HTTP规范
工具注册
工具将从Dify工作流自动生成并通过MCP协议暴露给客户端。工具定义包括:
无状态模式支持
此插件支持符合最新MCP规范的无状态服务器模式,这意味着:
- 服务器不需要维护长期连接
- 每个请求都是独立的
- 通过会话ID关联请求
- 适合Dify的无状态API环境
故障排除
-
连接问题:
- 确保URL正确且可访问
- 检查是否位于防火墙或代理之后
-
工具不可见:
- 确保应用ID已正确配置
- 检查工作流是否已发布
- 确认Dify API密钥具有足够的权限
-
工具执行失败:
- 检查Dify应用日志
- 确认工作流在DDify中可以正常运行
贡献
欢迎提交问题和合并请求。在提交代码之前,请确保遵循代码风格并添加适当的测试。
许可证
MIT
致谢
本项目参考了模型上下文协议标准,尤其是最新的可流式HTTP传输PR #206。
VIBE CODING 探索产品不可用状态
作者:yevanchen
版本:0.0.1
类型:扩展
描述