跳到主要内容

使用开源的universal-db-mcp在coze中实现问数 AskDB智能体

·2260 字·5 分钟

前几天开源了 universal-db-mcp数据库万能连接器 ,支持MCP模式和HTTP API模式,MCP模式直接接入Claude Desktop或者Cherry Studio这类客户端就行了,HTTP API模式一直没实际进行应用,这几天在coze中浅浅的试用了一下,效果还不错,效果大概是这个样子的:

我:连接数据库
问数 AskDB:
    好的,请提供以下数据库连接信息:
    数据库类型(如:mysql、postgres、sqlite)
    主机地址(如:localhost 或 IP 地址)
    端口号(如:MySQL 默认 3306)
    用户名
    密码
    数据库名称
    请确保这些信息准确无误,我将帮助您完成数据库连接。
我:
	DB_TYPE=mysql
  	DB_HOST=xxx.xxx.xxx.xxx
  	DB_PORT=xxxx
  	DB_USER=xxx
  	DB_PASSWORD=xxxx
  	DB_DATABASE=xxxx
问数 AskDB:
	我将使用您提供的连接信息尝试连接到 MySQL 数据库。请稍等... 数据库连接成功!以下是连接信息摘要:
    数据库类型: MySQL
    主机地址: xxx.xxx.xxx.xxx
    端口: xxxx
    数据库名称: xxx
    会话 ID: xxxxxxxxxxxxx
    现在可以开始进行数据查询了。请告诉我您需要:
    查看有哪些表(例如:"列出所有表")
    查询具体数据(例如:"查看用户信息")
    数据分析(例如:"统计订单数量")
    请直接告诉我您的需求!

用途:

  1. 自己开发辅助使用;
  2. 暴露coze的api接口给项目用。

之前用coze比较少,最近整了一下,感觉还挺简单的,顺便截了图,就写一下步骤吧。

0. 前置工作 #

首先呢,你需要把 universal-db-mcp 部署一下。部署在自己的 vps 或者 Serverless(阿里云函数计算啥的)或者 PaaS平台(Railway啥的)都可以。当然我认为有vps的话还是部署在vps上好一些,毕竟自有服务器没有冷启动且可以保证长连接。这部分部署的工作在 universal-db-mcp的github仓库中都有,这里就不再赘述了,详细的可以去github上翻翻。

Coze支持通过创建API插件或者MCP插件的方式进行创建MCP工具,universal-db-mcp既支持REST方式传输,也支持SSE、Streamable HTTP方式传输。但是在实践过程中,通过SSE配置Coze中MCP插件的时候,一直报如下错误:

通过查看universal-db-mcp的日志看到Coze发送SSE模式/sse请求的时候使用的是POST请求,但是SSE的标准设计端点/sse请求都是GET,并且在Coze中没有找到可以设置请求方法的地方,所以暂时放弃配置SSE模式。

下面只记录REST与Streamable HTTP方式,也就是Coze的API插件与MCP插件

1. 通过Coze的API插件(REST)创建Agent #

1.1 创建Agent #

1.1.1 进入插件Agent页面 #

首先,进入 Coze 平台的扣子编程界面,选择 智能体开发。

1.1.2 填写Agent基本信息 #

在创建页面填写名称和描述。

1.2 创建 API 插件 #

1.3 创建插件工具 #

1.3.1 创建 health_check 工具 #

1.3.2 创建 connect_database 工具 #

1.3.3 创建 execute_query 工具 #

1.3.4 创建 list_tables 工具 #

1.3.5 创建 get_table_schema 工具 #

1.4 完成插件并添加插件 #

1.5 编写提示词设置模型 #

深度思考开关建议开启

提示词如下

这个提示词我只是简单的写了一些,大家可以自行发挥。

# 角色
你是一个专业的数据库查询助手,能够帮助用户连接数据库并使用自然语言查询数据。

# 技能

## 技能1:连接数据库
当用户要求连接数据库时:
1. 询问用户数据库类型(mysql、postgres、sqlite)
2. 询问数据库连接信息(主机、端口、用户名、密码、数据库名)
3. 调用 connect_database 接口连接数据库
4. 保存返回的 sessionId 用于后续查询
5. 告知用户连接结果

## 技能2:查询数据
当用户询问数据相关问题时:
1. 如果还未连接数据库,提示用户先连接
2. 先调用 list_tables 查看有哪些表
3. 调用 get_table_schema 了解相关表的结构
4. 根据用户的自然语言问题,生成合适的 SQL 查询语句
5. 调用 execute_query 执行查询
6. 将查询结果以易读的方式呈现给用户(使用表格或列表)

## 技能3:数据分析
当用户需要数据分析时:
1. 理解用户的分析需求
2. 生成适当的聚合查询(COUNT、SUM、AVG、GROUP BY等)
3. 执行查询并解读结果
4. 提供简洁的分析结论

# 限制
- 只执行 SELECT 查询,不执行 INSERT、UPDATE、DELETE 等写操作
- 查询结果默认限制 100 条,避免返回过多数据
- 如果用户的问题不清晰,主动询问澄清
- 保护用户隐私,不在对话中暴露敏感信息

# 示例对话

用户:连接我的MySQL数据库
助手:好的,请提供以下数据库连接信息:
1. 主机地址(如:localhost 或 IP地址)
2. 端口(MySQL默认3306)
3. 用户名
4. 密码
5. 数据库名称

用户:查看所有用户
助手:[调用 list_tables 和 get_table_schema]
      [生成 SQL: SELECT * FROM users LIMIT 100]
      [调用 execute_query]
      
      查询到 10 条用户记录:
      | ID | 姓名 | 邮箱 |
      |-----|------|------|
      | 1 | 张三 | zhangsan@example.com |
      | 2 | 李四 | lisi@example.com |
      ...

用户:上个月有多少订单?
助手:[分析问题,生成 SQL]
      [执行查询]
      
      上个月共有 1,234 个订单。

1.6 测试与发布 #

测试通过后直接点击发布即可。


#

2. 通过Coze的MCP插件(Streamable)创建Agent #

2.1 新建MCP #

插件URL示例

https://your-universal-db-mcp-domain/mcp

Header列表示例

请求头必填描述
X-API-Key是*API 密钥(或使用 Authorization Bearer)
X-DB-Type数据库类型
X-DB-Host是*数据库主机
X-DB-Port数据库端口,最好填上
X-DB-User是*用户名
X-DB-Password是*密码
X-DB-Database是*数据库名称
X-DB-FilePath是*SQLite 文件路径
X-DB-Allow-Write启用写操作(默认: false)
mcp-session-id后续请求的会话 ID,一般不用填

2.2 更新工具并发布 #

2.3 Agent上添加已发布的工具 #

2.4 调试并发布Agent #

这样就大功告成了!

如果大家喜欢,希望github多多帮点点star!!!

如果大家喜欢,希望github多多帮点点star!!!

如果大家喜欢,希望github多多帮点点star!!!

Github仓库地址为:https://github.com/Anarkh-Lee/universal-db-mcp