一、AI 调库为何"卡壳"?

过去,开发人员排查 SQL 问题,往往要在开发工具和数据库客户端之间来回切换:表结构、索引信息、执行计划,需要逐项查询、复制,再交给大模型分析。这些分散的操作无法让模型真正基于真实数据库环境给出结论。

现在,借助 KES MCP Server,在 TRAE、Cursor 等支持 MCP 的开发工具中,直接输入下面这类问题,就能调用 KES 完成对应操作:

  • “帮我看看 orders 表有哪些字段和索引。”
  • “分析一下这条 SQL 为什么慢。”
  • “如果增加联合索引,执行计划会不会改变?”

近日,电科金仓在 Gitee 发布了 KES MCP Server,本次发布包含 9 个标准工具,覆盖数据库结构探索、SQL 查询、执行计划分析、健康检查、慢查询定位和索引优化等常见场景。


二、KES MCP Server 是什么?

KES MCP Server 位于开发工具和 KES 数据库之间,是连接二者的"中间层"。

在这里插入图片描述

2.1 交互流程

用户提出问题后,开发工具判断需要调用哪个工具;KES MCP Server 接收请求,完成参数检查和访问控制,再连接 KES 执行操作;数据库返回结果后,由开发工具继续整理和分析。

在这里插入图片描述

开发工具不会绕过 KES MCP Server 直接访问数据库。模型能调用哪些工具、执行哪些 SQL、查看哪些对象,既受 Server 访问模式限制,也受数据库账号权限约束——这是双重权限约束的设计。

2.2 分层架构

KES MCP Server 采用分层架构设计,从上到下共 5 层组成:

  1. AI 客户端层:TRAE、Cursor 等支持 MCP 的开发工具
  2. 传输层:负责请求的序列化与传输
  3. 核心服务与安全层:参数校验、访问控制(Restricted / Unrestricted 模式)
  4. 分析能力层:执行计划分析、慢查询分析、索引假设分析
  5. KES 数据库层:金仓数据库 V8R6 及以上版本

在这里插入图片描述

2.3 三种传输方式

为适应不同部署环境,KES MCP Server 支持三种传输方式:

传输方式 适用场景 特点
Stdio 本地开发 不需要开放端口,客户端自动拉起服务
SSE 远程访问 支持长连接、服务器推送
Streamable HTTP 集中部署 更好配合 HTTPS、反向代理和网络隔离

选型建议:本地开发通常使用 Stdio;团队共享或跨环境使用时,可以选择 Streamable HTTP。

在这里插入图片描述

2.4 安全设计:给 AI 这匹"野马"套上缰绳

数据库作为核心基础设施,AI 如同一匹野马,必须在它接触数据库前先套上牢固的缰绳。KES MCP Server 通过以下机制实现安全管控:

  • Restricted(受限模式):内置 SQL 类型白名单与严格的访问控制策略,拦截并限制高风险数据库操作(如 DROP、TRUNCATE、批量 UPDATE/DELETE 等),从源头阻断非法写入与修改行为。这是生产环境与演示环境的推荐模式,建议同时配置 AI 专用的数据库最小权限账户,多重防护以减少 AI 误操作的风险。
  • Unrestricted(非受限模式):开放完整数据库操作权限,支持复杂的管理与开发类指令执行,仅推荐在测试环境使用

两种模式可以根据使用场景自由切换。


三、KES MCP Server 能做什么?

KES MCP Server 将 KES 常用的操作封装为标准工具,主要包括四类能力。

3.1 查看数据库结构

可以查看数据库中的 Schema、表、视图和序列,也可以进一步查看表的字段、约束和索引。

典型指令示例:

  • “列出全部或指定 Schema 下的表、视图、序列或扩展。”
  • “查看 orders 表的字段、约束、索引等对象详情。”

返回的信息直接来自当前 KES 数据库,不需要提前把建表语句复制到对话窗口。

在这里插入图片描述

3.2 执行查询与分析 SQL

可以根据实际业务需求生成并执行查询,也可以查看 SQL 在 KES 中的实际执行计划。

典型指令示例:

  • “查询本月销售额排名前 5 的商品。”
  • “分析这条 SQL 的执行计划。”

KES 返回查询结果和执行计划后,模型可以继续分析扫描方式、过滤条件和索引使用情况,帮助定位 SQL 性能问题。

在这里插入图片描述

3.3 检查数据库运行状态

对于数据库运维,可以通过一句指令发起健康检查:

“检查一下数据库健康状况。”

KES MCP Server 会检查索引、连接、Vacuum、序列、复制、缓存和约束等状态。

还可以查看高耗时查询:

“找出最近总耗时最高的 5 条 SQL。”

发现问题 SQL 后,可以继续分析执行计划和索引使用情况。

3.4 分析索引方案

可以针对指定 SQL 或历史查询负载分析索引。配合 sys_hypo 扩展,还可以在不创建真实索引的情况下,模拟新增索引后的执行计划。例如:

“如果在 user_id 和 status 字段上增加联合索引,执行计划会有什么变化?”

这样可以先评估索引是否有效,再决定是否实施实际变更,避免无效索引带来的存储与维护成本。

在这里插入图片描述


四、如何安装配置?

体验 KES MCP Server,需要准备:

  • KES V8R6 及以上版本
  • Python 3.12 ~ 3.13
  • 支持 MCP 的开发工具,如 TRAE、Cursor 等
  • 索引分析需启用 sys_hypo 扩展;慢查询、负载分析需启用 sys_stat_statements 扩展

完整配置参数可参考项目 README。

4.1 获取项目代码

git clone https://gitee.com/king-db/kingbase-mcp

4.2 安装依赖

uv pip install .

4.3 启动服务(Restricted 模式,生产环境推荐

uv run kingbase-mcp --access-mode restricted

使用本地 Stdio 方式时,一般由客户端自动启动服务,无需提前单独运行。

在这里插入图片描述
在这里插入图片描述


五、实战演示:在开发工具中完成一次 SQL 优化

假设开发人员正在排查下面这条订单查询:

SELECT * FROM orders WHERE user_id = 123 AND status = 'pending';

完整排查过程只需在同一个开发环境中按以下三步推进:

第 1 步:查看表结构

输入指令:

“查看 orders 表的结构,包括字段、约束和索引。”

KES MCP Server 会返回 orders 表当前的字段、约束和索引情况,方便判断查询字段是否已有可用索引。

第 2 步:分析执行计划

输入指令:

“分析这条 SQL 的执行计划。”

返回结果会展示 SQL 当前采用的扫描方式和执行代价。如果查询使用了全表扫描,或者现有索引没有生效,就可以进入下一步验证。

在这里插入图片描述

第 3 步:模拟新增联合索引

输入指令:

“模拟增加 user_id 和 status 联合索引后的执行计划。”

KES MCP Server 通过假设索引重新生成执行计划,并对比增加索引前后的变化。整个过程不会真正创建物理索引,也不会带来额外的存储和维护成本。

如果模拟结果显示查询计划明显改善,再由开发人员或 DBA 结合查询频率、写入压力和存储成本,决定是否执行实际变更。

从查看表结构,到分析执行计划,再到验证索引效果,原本分散在多个工具中的操作,现在可以在同一个开发环境中完成。


六、总结

随着 MCP(Model Context Protocol)逐渐成为 AI 与外部系统交互的标准接口,大模型正在从“只会聊天”走向“能够真正操作工具”。对于数据库场景而言,问题从来不是 AI 能不能写 SQL,而是能否在安全、可控、基于真实环境的前提下完成分析与决策。

KES MCP Server 的意义正在于此。它将数据库结构查看、SQL 查询、执行计划分析、健康检查、慢查询定位以及索引优化等能力统一封装为标准 MCP 工具,让开发人员无需频繁切换开发工具和数据库客户端,即可在同一工作环境中完成问题定位与性能优化。

更重要的是,KES MCP Server 提供了 Restricted/Unrestricted 双模式、数据库权限隔离以及假设索引分析等机制,在提升 AI 调库效率的同时,也兼顾了生产环境对安全性和可控性的要求。尤其是 sys_hypo 提供的“先验证、后实施”能力,使索引优化从经验驱动逐渐转向数据驱动。

从查看表结构,到分析执行计划,再到模拟索引变更,KES MCP Server 展示了 MCP 与数据库结合的一个典型实践:让 AI 不再停留在“给建议”,而是真正参与到开发、运维和性能优化流程中。

未来,随着更多数据库能力被接入 MCP,AI 有望成为开发人员和 DBA 的“智能协作伙伴”。而 KES MCP Server 的发布,也为国产数据库在 AI 工程化落地方面提供了一个值得参考的实践样本。

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐