MaxKB 使用 MCP 连接 SQLServer


飞致云 发布于 2025-09-15 / 8 阅读 / 0 评论 /
一、背景 本次实践的目标是通过 1Panel 搭建 DBHub,并将 SQL Server 数据库 作为 MCP 服务 接入 MaxKB。 通过 MCP 调用,用户无需编写复杂的 SQL 语句,只需在 MaxKB 中提出问题,系统即可自动调用 MCP 工具,生成并执行 SQL 查询,并将结果返回,大

一、背景

本次实践的目标是通过 1Panel 搭建 DBHub,并将 SQL Server 数据库 作为 MCP 服务 接入 MaxKB。 通过 MCP 调用,用户无需编写复杂的 SQL 语句,只需在 MaxKB 中提出问题,系统即可自动调用 MCP 工具,生成并执行 SQL 查询,并将结果返回,大大提升了数据查询与分析的效率。

二、操作步骤

1. 搭建 1Panel

请参考以下官方文档部署 1Panel:

https://1panel.cn/docs/v2/installation/online_installation/

2. 安装 DBHub 并配置 MCP

登录 1Panel,进入 应用商店,搜索 DBHub,点击安装。

根据实际情况进行配置:

  • 端口设置:根据服务器已有端口占用情况设置。

  • 数据库密码:如密码中包含 @ 符号,可能导致连接失败。可通过修改密码或在连接字符串中进行转义解决。

配置完成后点击 【确认】,等待容器安装完成。

安装完成后,查看日志。当日志中出现以下地址时,说明服务已正常启动:

http://0.0.0.0:8080/message 

3.在 MaxKB 中调用 MCP 节点

添加【 MCP 调用】节点。

配置 MCP 参数,示例如下:

{
  "sqlserver": {
    "url": "http://192.168.50.98:8099/message",
    "transport": "streamable_http"
  }
}
  • url:IP 为 1Panel 的地址,端口为第二步中设置的端口;message 为默认路径。

  • 其它参数保持默认,注意格式需为 JSON。

将配置填入组件后,点击【获取工具】,出现“获取工具成功”并选择 execute_sql 工具,即表示 MCP 服务已连接成功。

以上图工作流为示例,节点提示词如下:

  • "SQL 语句"提示词如下

####系统角色
你是一位专业的数据分析专家,精通 SQLServer 数据库 SQL 语言,能够熟练使用 mcp-sqlserver 工具的 execute_sql 函数来执行查询。
你只需要生成 SQL 查询语句,不要输出解释,不要返回查询结果。
SQL 生成规则:
1、禁止使用分号 (;)
2、表名、列名必须大写
3、中文字段名必须用方括号 [] 包裹
4、字符串常量必须用 N'' 包裹
5、只输出单行 SQL 语句,不能包含任何其他文字


#####提示词
数据库中有一个名为 test 的表,表结构如下:
- 编号 (int, 主键)
- 产品名称 (nvarchar)
- 数量 (int)
- 单价 (decimal)
- 销售日期 (date)
用户问题如下:
{{开始.question}}
请直接生成对应的 SQL 查询语句。
  • "输出美化"提示词如下

####系统角色
你是一个美化助手

####提示词
美化一下输出,根据用户问题和查询结果来美化
查询结果
{{MCP 调用.result}}
用户问题:
{{开始.question}}

测试效果示例:

MCP 调用结果:

4.MaxKB 使用 AI 对话调用 MCP

添加【 AI 对话】节点,进入工具设置。

填写 MCP 配置(同上一步配置)。

  • 示例提示词如下:

#####系统角色
你是一位专业的数据分析专家,精通 SQLServer 数据库 SQL 语言。  
用户输入问题时,请生成 SQLServer 语句,并调用 mcp-sqlserver 的 execute_sql 工具执行查询,返回结果。

#####提示词
数据库中有一个名为 test 的表,表结构如下:
- 编号 (int, 主键)
- 产品名称 (nvarchar)
- 数量 (int)
- 单价 (decimal)
- 销售日期 (date)

注意:
1. 所有查询都必须基于 test 表。
2. 查询时字段名必须用中文列名,例如:产品名称、数量、单价、销售日期。
3. 如果用户的问题涉及金额,请用 数量*单价 计算总金额。
4. 返回的 SQL 必须是标准 SQLServer 语法。
5. 所有中文字段名必须用中括号 [] 包裹,例如 [数量]、[产品名称]。
6. 所有中文字符串常量必须用 N'' 包裹,例如 N'打印机'。
7. 根据MCP返回内容,美化一下,用简短用文字描述,输出给用户,必须要有文字的描述,必须要美化结果
8. 输出只要美化后的语言,其它的思考过程不要输出
用户问题如下:
{{开始.question}}

测试效果示例:

MCP 调用结果:

三、注意事项

  • 示例流程仅用于演示,实际应用效果会受到 数据库表结构设计、提示词编写质量 以及 模型能力 等多方面因素影响。

  • 在不同业务场景下,可根据实际需求对提示词及工作流进行调整和优化,以获得更符合预期的查询效果与输出表现。



是否对你有帮助?