炸裂!给Dify智能体嵌入SQLBot MCP“数据引擎”
让Dify智能体火力全开?本文揭秘如何将SQLBot的MCP服务嵌入其中,为智能体注入智能问数动力,快速挖掘数据价值,赶紧跟着操作起来!
目录
一、背景介绍
在数据分析场景下,用户借助Dify平台进行数据查询与可视化图表生成时,普遍受困于工作流搭建流程繁琐的问题。SQLBot虽能有效简化数据查询及可视化的生成步骤,但其核心的数据交互逻辑与功能落地,必须依托于与MCP系统的顺畅对接才能实现。
二、思路介绍
为应对该问题,本文给出了工具调用和AI自动调用这两种与MCP对接的方案。其中,工具调用是由人工来配置组件和逻辑,以此确保稳定性;AI自动调用则是依靠提示词,让AI自主完成工具调用以及工作流搭建,这样能够简化操作流程、降低使用门槛,契合轻量且灵活的数据分析场景。这两种方案各自适配不同用户的技术水平与使用需求,进而实现高效的数据查询以及可视化输出。
2.1. 工具调用
通过传入参数来调用两个MCP工具,达成搭建MCP工作流的效果。
2.2. AI自动调用
与工具调用的区别在于工具调用的工作流是人工进行搭建的,而AI自动调用则是通过提示词的方式让AI帮我们进行MCP工具的调用,让AI帮我们搭建工作流,实现步骤比较简单。
三、工作流展示
3.1. 工具调用
3.2 AI自动调用
四、详细操作步骤
4.1 工具调用
①先在开始组件的输入字段中添加两个参数:username、password,接着添加两个会话变量:access_token(String)、chat_id(Number),用来给mcp工具传参。
②添加一个条件分支用于判断access_token是否为空(为空则调用mcp_start工具进行获取,不为空则直接调用mcp_question工具)
③获取access_token:
1.添加“发现和调用mcp工具”组件里的调用MCP工具,填写工具名称:mcp_start,传入username、password两个用户输入的参数,填写mcp服务配置(或在API Key授权配置中添加),将设置里的mcp资源以及mcp提示词作为工具选择true。(复制示例代码,将<YOUR IP>改为你的服务器ip)
参数填写示例:
{
"username":"引用变量:开始/username",
"password":"引用变量:开始/password"
}
Mcp服务配置示例:
{
"sqlbot_mcp": {
"url": "http://<YOUR IP>/mcp",
"transport": "sse"
}
}
2.调用一个代码执行组件,添加输入变量:arg1,将mcp_start工具获取的text结果传入,然后使用一段python代码将输入进行json格式的标准化处理,返回我们所需的access_token(String)、chat_id(Number)参数(在输出变量中添加)。
import json
def main(arg1: str) -> dict:
json_obj = json.loads(arg1)
return {
"chat_id": json_obj["data"]["chat_id"],
"access_token": json_obj["data"]["access_token"]
}
④调用变量赋值组件,把获取的两个参数分别传给两个会话变量,让后面的问数也能够使用第一次获取的access_token以及chat_id。
⑤添加“发现和调用mcp工具”组件里的调用MCP工具,填写工具名称:mcp_question,填写mcp服务配置(或在API Key授权配置中添加),将开始的用户问题传给question参数,然后将两个会话变量分别传给chat_id以及token。(引用的chat_id是Number类型,因此不需要加引号,后面两个都是String类型需要加)
参数填写示例:
{
"chat_id":引用会话变量:chat_id,
"question":"引用变量:开始/sys.query",
"token":"引用会话变量:access_token"
}
(说明:传入代码执行组件返回的两个参数也可以,但是会导致第二次问数无法获取到token,这也是为什么要引用会话变量的原因)
⑥调用直接回复组件,将调用mcp_question工具的text结果进行展示。
4.2. AI自动调用
①在开始的输入字段添加两个参数:username、password
②添加AGENT组件,选择“支持MCP工具的Agent”的AGENT策略,选择FunctionCalling(支持MCP工具);选择一个AI模型;添加MCP服务配置;将MCP资源作为工具设置为true,MCP提示词作为工具设置为false;填写指令;填写查询;最大迭代次数调成10;打开记忆窗口,调成20。
③添加直接回复组件,将Agent组件输出的text结果添加到回复。
指令填写参考:
# 回答要求:
按需调用 mcp_start 和 mcp_question 工具获取信息回答问题。
mcp_start 账号密码:
username:引用变量:开始/username
password:引用变量:开始/password
工具调用逻辑:
首先调用 mcp_start 工具,获取 access_token 和 chat_id ,帮我记住这两个参数,之后不要重复调用 mcp_start,直接使用即可;然后再调用 mcp_question 工具,其中 token 和 chat_id 参数是调用 mcp_start 工具返回,question 是用户提问。
# 用户提问:
引用变量:开始/sys.query
五、表格展示
5.1.工具调用
组件 |
设置 |
截图 |
开始 |
①添加输入字段:username、password ②添加会话变量:access_token、chat_id |
![]() |
条件分支 |
在if条件里添加access_token为空 |
![]() |
Mcp调用工具 |
①填写工具名称 ②填写工具参数 ③填写MCP服务配置或设置API Key ④将设置都选择true |
![]() |
代码执行 |
①添加输入变量:arg1,传入mcp调用的结果 ②添加python代码 ③添加输出变量 |
![]() |
变量赋值 |
将代码执行的两个输出变量分别传给两个会话变量 |
![]() |
Mcp调用工具 |
①填写工具名称 ②填写工具参数 ③填写MCP服务配置或设置API Key ④将设置第一个选择true,第二个选择false |
|
直接回复 |
将调用mcp_question工具的text结果添加为回复内容 |
![]() |
5.2. AI自动调用
组件 |
设置 |
截图 |
开始 |
添加输入字段:username、password |
![]() |
AGENT |
①添加AGENT策略 ②选择AI模型 ③添加MCP服务配置 ④设置MCP资源作为工具 ⑤设置MCP提示词不作为工具 ⑥填写指令 ⑦填写查询 ⑧最大迭代次数调成10 ⑨打开记忆窗口,并调成20 |
|
直接回复 |
添加Agent输出的text结果 |
![]() |
六、演示效果
6.1. 方案一:工具调用
6.2. 方案二:AI自动调用
七、总结
工具调用:输出呈现固定且稳定,会清晰展示查询所用的SQL语句、具体查询结果,以及需生成的图表内容,各环节信息明确可控。
AI自动调用:能呈现需生成的图表及查询到的数据,还可通过添加提示词补充总结等内容,让输出维度更丰富;但相比工具调用,其输出稳定性稍弱。
八、详细视频地址
【💥炸裂!给Dify智能体嵌入SQLBot MCP“数据引擎”】 https://www.bilibili.com/video/BV1Csbzz6ELm/?share_source=copy_web&vd_source=d66e1339b701dc8f348d56b0063218ec
更多推荐
所有评论(0)