目录

一、背景介绍

二、思路介绍

2.1. 工具调用

2.2. AI自动调用

三、工作流展示

3.1. 工具调用

3.2 AI自动调用

四、详细操作步骤

4.1 工具调用

4.2. AI自动调用

五、表格展示

5.1.工具调用

5.2. AI自动调用

六、演示效果

6.1. 方案一:工具调用

6.2. 方案二:AI自动调用

七、总结

八、详细视频地址


一、背景介绍

在数据分析场景下,用户借助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

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐