“帮我看看orders表有哪些字段和索引。”
“分析一下这条SQL为什么慢。”
“如果增加联合索引,执行计划会不会改变?”
现在,在TRAE、Cursor等支持MCP的开发工具中,直接输入这些问题,就能调用KES完成相应操作。
近日,电科金仓在Gitee发布了KES MCP Server。本次发布包含9个标准工具,覆盖数据库结构探索、SQL查询、执行计划分析、健康检查、慢查询定位和索引优化等常见场景。
过去,开发人员排查SQL问题,往往要在开发工具和数据库客户端之间来回切换。表结构、索引信息、执行计划,需要逐项查询、复制,再交给大模型分析。KES MCP Server把这些原本分散的操作接入开发工具,让模型能够基于真实数据库环境进行查询和分析。
KES MCP Server是什么?
KES MCP Server位于开发工具和KES数据库之间。
用户提出问题后,开发工具判断需要调用哪个工具;KES MCP Server接收请求,完成参数检查和访问控制,再连接KES执行操作;数据库返回结果后,由开发工具继续整理和分析。
KES MCP Server交互流程
开发工具不会绕过KES MCP Server直接访问数据库。模型能调用哪些工具、执行哪些SQL、查看哪些对象,既受Server访问模式限制,也受数据库账号权限约束。
KES MCP Server采用分层架构设计,从上到由AI客户端层、传输层、核心服务与安全层、分析能力层及KES数据库层共5层组成。
KES MCP Server分层架构
为适应不同部署环境,KES MCP Server支持三种传输方式。
KES MCP Server传输方式
Stdio适合本地开发,不需要开放端口;SSE可用于远程访问;Streamable HTTP更适合配合HTTPS、反向代理和网络隔离进行集中部署。本地开发通常使用Stdio,团队共享或跨环境使用时,可以选择Streamable HTTP。
数据库作为核心基础设施,而AI就像一匹野马,如果给这匹野马套上牢固的缰绳,是它在接触数据库前必须思考的第一步,所以在安全方面,我们通过最严格的Restricted 模式,通过内置SQL类型白名单与严格的访问控制策略,拦截并限制高风险数据库操作,从源头阻断非法写入与修改行为,实际使用时建议配置AI专用的数据库最小权限账户,多配置减少AI误操作的风险。同时为了配合测试环境的灵活性,我们通过Unrestricted 模式开放完整数据库操作权限,支持复杂的管理与开发类指令执行。这两种模式可以根据使用场景自由切换。
KES MCP Server能做什么?
KES MCP Server将KES常用的操作封装为标准工具,主要包括四类能力。
▶ 查看数据库结构
用户可以查看数据库中的Schema、表、视图和序列,也可以进一步查看表的字段、约束和索引。例如:
“列出全部或指定Schema下的表、视图、序列或扩展。”
“查看orders表的字段、约束、索引等对象详情。”
返回的信息直接来自当前KES数据库,不需要提前把建表语句复制到对话窗口。
▶ 执行查询与分析SQL
用户可以根据实际业务需求生成并执行查询,也可以查看SQL在KES中的实际执行计划。例如:
“查询本月销售额排名前5的商品。”
“分析这条SQL的执行计划。”
KES返回查询结果和执行计划后,模型可以继续分析扫描方式、过滤条件和索引使用情况,帮助定位SQL性能问题。
▶ 检查数据库运行状态
对于数据库运维,可以通过一句指令发起健康检查:
“检查一下数据库健康状况。”
KES MCP Server会检查索引、连接、Vacuum、序列、复制、缓存和约束等状态。
还可以查看高耗时查询:
“找出最近总耗时最高的5条SQL。”
发现问题SQL后,可以继续分析执行计划和索引使用情况。
▶ 分析索引方案
还可以可以针对指定SQL或历史查询负载分析索引。
配合sys_hypo扩展,还可以在不创建真实索引的情况下,模拟新增索引后的执行计划。例如:
“如果在user_id和status字段上增加联合索引,执行计划会有什么变化?”
这样可以先评估索引是否有效,再决定是否实施实际变更。
KES MCP Server核心能和适用场景
如何安装配置?
体验KES MCP Server,需要准备KES V8R6及以上版本、Python 3.12至3.13,以及TRAE、Cursor等支持MCP的开发工具。
▶ 获取项目代码
git clone https://gitee.com/king-db/kingbase-mcp
▶ 安装依赖
uv pip install .
随后在MCP客户端中配置数据库连接、启动命令和访问模式。生产或演示环境建议启用Restricted模式:
uv run kingbase-mcp–access-mode restricted
使用本地Stdio方式时,一般由客户端自动启动服务,无需提前单独运行。
假设索引分析需要sys_hypo扩展,慢查询和负载分析需要sys_stat_statements扩展。完整配置参数可参考项目README。
客户端配置及工具加载页面
实战演示:在开发工具中完成一次SQL优化
假设开发人员正在排查下面这条订单查询:
SELECT * FROM orders WHERE user_id = 123 AND status = ‘pending’;
先输入:
“查看orders表的结构,包括字段、约束和索引。”
KES MCP Server会返回orders表当前的结构和索引情况,方便判断查询字段是否已有可用索引。
接着输入:
“分析这条SQL的执行计划。”
如果查询使用了全表扫描,或者现有索引没有生效,就可以继续验证新的索引方案:
模拟增加user_id和status联合索引后的执行计划。
KES MCP Server通过假设索引重新生成执行计划,并对比增加索引前后的变化。整个过程不会真正创建物理索引,也不会带来额外的存储和维护成本。
如果模拟结果显示查询计划明显改善,再由开发人员或DBA结合查询频率、写入压力和存储成本,决定是否执行实际变更。
返回结果会展示SQL当前采用的扫描方式和执行代价。
从查看表结构,到分析执行计划,再到验证索引效果,原本分散在多个工具中的操作,现在可以在同一个开发环境中完成。