不再来回复制SQL:用KES MCP Server把数据库诊断接入AI开发工具
在数据库开发与运维过程中,我们经常遇到这样的对话:帮我看看
orders表有哪些字段和索引.分析一下这条 SQL 为什么慢.如果增加联合索引,执行计划会不会发生变化?这些问题并不复杂,真正麻烦的是处理过程往往被拆散在多个工具中:先从开发环境切换到数据库客户端,查表结构、复制索引信息,再执行 SQL、获取执行计划,最后把结果粘贴回 AI 对话窗口.上下文在反复搬运中被打断,排查效率也随之下降.KES MCP Server 提供了一种更连贯的方式:开发者可以直接在 TRAE、Cursor 等支持 MCP 的 AI 开发工具中提出问题,让模型调用标准化数据库工具,在权限允许的范围内访问真实的 KingbaseES 环境,完成结构探索、SQL 查询、执行计划分析、健康检查、慢查询定位与索引评估.本文将从工作原理、系统架构、传输方式、权限控制、9 个标准工具、安装配置以及 SQL 优化实战几个方面,完整介绍 KES MCP Server 的使用思路.
目录
- 一、KES MCP Server解决了什么问题
- 二、一次数据库问题是如何被处理的
- 三、五层架构:从自然语言到数据库执行
- 1. AI 客户端层
- 2. 传输层
- 3. 核心服务与安全层
- 4. 智能分析能力层
- 5. KingbaseES 数据库层
- 四、Stdio、SSE 与 Streamable HTTP 怎么选
- 五、访问模式决定AI能做什么
- Restricted 模式
- Unrestricted 模式
- 六、9个标准工具覆盖四类任务
- 示例一:探索数据库结构
- 示例二:执行自然语言查询
- 示例三:检查数据库运行状态
- 示例四:在不创建真实索引时评估方案
- 七、安装KES MCP Server
- 1. 准备环境
- 2. 获取项目代码
- 3. 安装依赖
- 4. 使用 Restricted 模式启动
- 八、在 AI 开发工具中完成配置
- 九、实战:在开发工具中完成一次SQL优化
- 第一步:查看表结构与现有索引
- 第二步:分析执行计划
- 第三步:评估联合索引
- 十、从工具调用走向连续的数据库分析
一、KES MCP Server解决了什么问题
电科金仓已在 Gitee 发布 KES MCP Server 项目.它面向 KingbaseES 数据库,将常用数据库操作封装成 MCP 工具,使 AI 助手能够在开发工作流中获得结构化、可控制、可追踪的数据库访问能力.
从项目说明可以看到,KES MCP Server 聚焦以下几类场景:
- 探索 Schema、表、视图、序列、扩展等数据库对象;
- 查看字段定义、约束与索引详情;
- 按访问模式执行 SQL;
- 获取并分析 EXPLAIN/ANALYZE 执行计划;
- 检查数据库健康状态;
- 定位高耗时或高资源查询;
- 根据单条 SQL 或历史负载评估索引方案.
图 1:KingbaseES MCP Server 项目说明与功能目录
项目页面标明了 MCP 1.25+、Python 3.12+ 和 KingbaseES V8R6+ 等基础信息.实际体验时,建议使用 KingbaseES V8R6 或更高版本,并准备 Python 3.12~3.13 环境.
过去,模型只能依赖用户粘贴到对话框里的数据库信息进行分析.现在,KES MCP Server 把数据库元数据、查询结果和执行计划通过标准工具返回给 AI 开发工具,模型得以基于当前数据库环境继续推理,而不是根据不完整的文本片段猜测.
二、一次数据库问题是如何被处理的
KES MCP Server 位于 AI 开发工具与 KingbaseES 数据库之间.用户并不会绕过 Server 让模型直接连接数据库,完整链路可以拆分为六步:
- 用户提问:开发者使用自然语言描述数据库问题.
- 理解意图:TRAE、Cursor 等 AI 应用判断任务目标.
- 调用工具:应用内部的 MCP Client 选择 Server 暴露的合适工具.
- 访问数据库:KES MCP Server 检查参数、访问模式和数据库权限后执行操作.
- 返回并分析:KingbaseES 返回元数据、SQL 结果、执行计划或运行状态,模型对结果进行整理和解释.
- 回答用户:开发工具把结论、风险点和建议呈现给开发者.
图 2:用户、AI 应用、KES MCP Server 与 KingbaseES 之间的交互流程
图中的红色箭头表示请求路径,绿色箭头表示结果返回.MCP Client 会自动发现 Server 注册的 9 个工具,但"发现工具"并不等于获得无限权限.Server 的访问模式和数据库账号权限仍然决定了每项操作是否可以执行.
这种设计带来的直接价值是:模型能够获得真实、及时的数据库上下文,而开发者不必在多个窗口之间反复复制信息.
三、五层架构:从自然语言到数据库执行
为了把客户端接入、数据传输、权限控制和分析能力分离,KES MCP Server 采用分层结构.自上而下可以理解为五层.
图 3:KES MCP Server 五层架构
1. AI 客户端层
这一层面向 TRAE、Cursor 等支持 MCP 的 AI 开发工具,提供统一的人机交互入口.开发者只负责描述意图,不需要预先知道应该执行哪条系统查询.
2. 传输层
传输层负责在 MCP Client 与 Server 之间传递请求和响应.KES MCP Server 支持 Stdio、SSE、Streamable HTTP 三种方式,可覆盖本地开发和远程部署场景.
3. 核心服务与安全层
这一层承担工具注册、参数合法性校验、访问模式管理与安全策略执行.它既要判断请求是否符合工具定义,也要阻止超出当前模式和数据库账号权限的操作.
4. 智能分析能力层
这里集中提供数据库健康诊断、慢查询定位、执行计划分析和索引优化等能力.工具返回的不只是原始信息,还为模型继续解释和提出建议提供结构化依据.
5. KingbaseES 数据库层
最底层依托 KingbaseES 系统视图、SQL 执行组件及相关扩展,负责提供真实的数据库对象、执行结果和运行状态.
分层的意义在于明确职责边界:客户端负责交互,传输层负责通信,Server 负责安全与工具编排,分析能力层负责诊断,数据库则继续作为最终的数据与权限边界.
四、Stdio、SSE 与 Streamable HTTP 怎么选
KES MCP Server 提供三种传输方式,用来适应不同的开发和部署环境.
图 4:Stdio、SSE 与 Streamable HTTP 的特点和适用场景
| 方式 | 工作特点 | 适用场景 | 建议 |
|---|---|---|---|
| Stdio | 通过本地子进程的stdin/stdout通信,无需开放端口 | 单机开发、本地调试 | 配置简单,本地开发优先选择 |
| SSE | 基于 Server-Sent Events 和 HTTP 长连接推送数据 | 需要远程访问的已有部署 | 可用于兼容早期远程方案 |
| Streamable HTTP | 基于标准化 HTTP 流式传输 | 团队共享、跨环境和集中部署 | 便于结合 HTTPS、反向代理与网络隔离 |
如果只是个人在本地 AI 开发工具中调用数据库,Stdio 通常已经足够。它不需要额外开放网络端口,MCP 客户端还可以自动启动 Server。
如果 Server 需要由多个客户端共享,或客户端和数据库不在同一环境中,Streamable HTTP 更符合集中部署需求.部署时还应配合 HTTPS、访问控制、反向代理和网络隔离策略,而不是把数据库能力直接暴露到不受信任的网络.
五、访问模式决定AI能做什么
数据库属于核心基础设施.给 AI 增加工具调用能力时,首先要考虑的不是"能不能执行",而是"应该允许执行到什么程度".KES MCP Server 提供 Restricted 与 Unrestricted 两种访问模式.
Restricted 模式
Restricted 模式通过内置 SQL 类型白名单和访问控制策略,限制高风险数据库操作.它适合生产环境、演示环境以及以查询、诊断和分析为主的场景.
需要注意的是,Restricted 并不替代数据库自身的权限系统.正确做法是同时采用:
- Server 侧启用 Restricted 模式;
- 数据库侧使用 AI 专用账号;
- 账号遵循最小权限原则;
- 网络侧限制可访问范围;
- 对生产变更保留人工确认和审核.
Unrestricted 模式
Unrestricted 模式开放更完整的数据库操作能力,可用于受控测试环境中的开发和管理任务.由于误操作影响更大,不建议把它与高权限生产账号直接组合使用.
访问模式可以根据不同环境切换,但无论选择哪一种模式,最终权限仍会受到连接数据库账号的约束.
六、9个标准工具覆盖四类任务
KES MCP Server 对外提供 9 个标准工具.它们可以分为结构探索、查询与计划、运维诊断和索引优化四组.
图 5:9 个标准工具及其能力分类
| 分类 | 工具 | 主要作用 |
|---|---|---|
| 结构探索 | list_schemas | 列出全部 Schema,并区分系统空间和用户空间 |
| 结构探索 | list_objects | 查看指定 Schema 下的表、视图、序列或扩展 |
| 结构探索 | get_object_details | 获取列定义、约束、索引等对象详情 |
| 查询与计划 | execute_sql | 根据当前访问模式执行获准的 SQL |
| 查询与计划 | explain_query | 返回 EXPLAIN/ANALYZE 信息,并支持假设索引分析 |
| 运维诊断 | analyze_db_health | 从 7 个维度检查数据库健康状态 |
| 运维诊断 | get_top_queries | 基于sys_stat_statements获取 Top N 慢查询或高资源查询 |
| 索引优化 | analyze_workload_indexes | 根据历史查询负载推荐索引 |
| 索引优化 | analyze_query_indexes | 分析指定 SQL 并给出索引建议,单次最多 10 条 |
这些工具不是彼此孤立的按钮.实际排障时,通常会把多个工具串成一条分析链路:先确认对象结构,再执行查询或获取执行计划,随后检查数据库状态,最后评估索引方案.
示例一:探索数据库结构
开发者可以直接输入:
列出
publicSchema 下所有的表。
KES MCP Server 会读取当前数据库中的对象信息并返回列表.在示例环境中,publicSchema 下包含inventory、mcp_test_users、orders、products、test_dci、test_oci、test_proc_1和users等 8 张表.
图 6:使用结构探索工具查看 Schema 下的数据库对象
如果需要继续深入,还可以追问:
查看
orders表的字段、约束和索引等对象详情.
返回结果直接来自当前连接的 KingbaseES 数据库,不需要提前把建表语句复制到对话窗口.
示例二:执行自然语言查询
除了结构信息,开发者还可以描述业务问题:
查询本月销售额排名前 5 的商品.
模型可以根据数据库结构生成查询,并通过execute_sql在访问模式允许的范围内执行.示例结果会直接整理成包含排名、商品名称、销售额和销量的表格.
图 7:自然语言查询结果示例
拿到结果后,还可以继续要求模型分析 SQL 的实际执行计划.KES MCP Server 返回扫描方式、过滤条件、索引使用情况等信息,帮助定位性能瓶颈,而不是只展示最终数据.
示例三:检查数据库运行状态
数据库运维人员可以输入:
检查一下数据库健康状况.
analyze_db_health会检查索引、连接、Vacuum、序列、复制、缓存和约束等状态.需要发现高耗时 SQL 时,还可以输入:
找出最近总耗时最高的 5 条 SQL.
get_top_queries会基于sys_stat_statements返回相应查询,随后可以继续分析执行计划和索引使用情况.
示例四:在不创建真实索引时评估方案
配合sys_hypo扩展,可以在不创建真实物理索引的情况下模拟新增索引后的执行计划.例如:
如果在
user_id和status字段上增加联合索引,执行计划会有什么变化?
这种方式适合先评估索引是否可能有效,再由开发人员或 DBA 结合查询频率、写入压力和存储成本决定是否实施实际变更.
七、安装KES MCP Server
1. 准备环境
体验 KES MCP Server,需要准备:
- KingbaseES V8R6 或更高版本;
- Python 3.12~3.13;
- TRAE、Cursor 等支持 MCP 的 AI 开发工具;
uv环境及可连接的 KingbaseES 数据库账号.
项目页面展示的 MCP 版本要求为 1.25+,部署前可结合项目 README 核对当前版本的完整前置条件.
2. 获取项目代码
gitclone https://gitee.com/king-db/kingbase-mcpcdkingbase-mcp3. 安装依赖
uv pipinstall.4. 使用 Restricted 模式启动
生产或演示环境建议启用 Restricted 模式:
uv run kingbase-mcp --access-mode restricted使用本地 Stdio 方式时,一般由 MCP 客户端自动拉起服务,无需在另一个终端中提前常驻运行.
如需假设索引分析,需要在数据库中准备sys_hypo扩展;慢查询和负载分析则依赖sys_stat_statements.完整参数与扩展要求应以项目 README 为准.
八、在 AI 开发工具中完成配置
下面是一份脱敏后的 Stdio 配置思路.不同客户端的配置入口和字段可能略有差异,但核心信息相同:指定项目目录、启动命令、访问模式和数据库连接.
{"mcpServers":{"kingbase-mcp":{"command":"uv","args":["--directory","/path/to/kingbase-mcp","run","kingbase-mcp","--access-mode","restricted"],"env":{"DATABASE_URI":"kingbase://<user>:<password>@<host>:<port>/<database>"}}}}请把目录和连接参数替换为自己的环境配置,并通过安全方式保存凭证.不要把真实密码、Token 或生产连接串提交到代码仓库.
图 8:MCP Server 手动配置界面示例,图中连接信息仅用于演示
保存配置后,客户端会启动或连接 KES MCP Server,并读取 Server 注册的工具.正常情况下,可以在 MCP 管理界面看到 9 个工具.
图 9:KES MCP Server 已启用并成功加载全部工具
如果工具没有出现,可以依次检查:
uv命令是否可以在当前环境中执行;- 项目目录是否填写正确;
- Python 与 KingbaseES 版本是否满足要求;
DATABASE_URI是否可连接;- 数据库账号是否拥有所需的最小权限;
- 客户端是否已经重新加载 MCP 配置.
九、实战:在开发工具中完成一次SQL优化
假设开发人员正在排查下面这条订单查询:
SELECT*FROMordersWHEREuser_id=123ANDstatus='pending';第一步:查看表结构与现有索引
先向 AI 开发工具输入:
查看
orders表的结构,包括字段、约束和索引。
KES MCP Server 会调用结构探索工具,返回orders表的当前定义和索引情况.这个步骤用于确认:
user_id与status字段是否存在;- 字段类型是否与查询条件匹配;
- 是否已经有单列或联合索引;
- 查询涉及的约束和数据结构是否符合预期.
第二步:分析执行计划
接着输入:
分析这条 SQL 的执行计划.
示例执行计划显示:
- 先在
idx_orders_user_id索引上执行Bitmap Index Scan,根据user_id = 123定位候选记录; - 再执行Bitmap Heap Scan访问对应数据页;
- 最后应用
status = 'pending'过滤条件,返回满足两个条件的记录.
图 10:Bitmap Index Scan、Bitmap Heap Scan 与联合索引建议
从图中可以看到,当前查询利用了user_id上的索引,但status没有进入索引条件,仍需要在回表后继续过滤.执行计划的意义不只是判断"有没有使用索引",而是理解数据经过了哪些扫描、回表和过滤步骤.
第三步:评估联合索引
基于现有计划,可以继续询问:
模拟增加
user_id和status联合索引后的执行计划.
候选索引形式可以表示为:
CREATEINDEXidx_orders_user_id_statusONpublic.ordersUSINGbtree(user_id,status);这里需要区分"建议"和"执行".配合sys_hypo时,KES MCP Server 可以使用假设索引重新生成执行计划,比较索引调整前后的扫描路径,但不会因此真正创建物理索引,也不会立即增加存储和维护开销.
如果模拟结果表明计划明显改善,开发人员或 DBA 仍应综合考虑:
- 这条 SQL 的执行频率;
user_id与status的数据分布和选择性;- 表的写入与更新压力;
- 新索引带来的存储和维护成本;
- 是否存在可以复用的相近索引;
- 生产变更的评审与回滚方案.
只有经过这些判断,才应决定是否在实际环境中创建索引.AI 可以帮助缩短分析路径,但不应代替生产变更审核.
十、从工具调用走向连续的数据库分析
KES MCP Server 的意义,并不只是把 SQL 查询换成自然语言.它真正改变的是数据库分析的上下文流动方式.
过去,开发者需要在 AI 工具、数据库客户端和执行计划窗口之间来回切换.现在,从"查看orders表有哪些字段和索引",到"解释这条SQL 为什么慢",再到"模拟联合索引是否有效",可以在同一个开发环境中形成连续的分析链路.
这套方式带来的价值主要体现在三个方面:
- 减少信息搬运:结构、查询结果和计划信息直接来自当前数据库环境.
- 提高分析连贯性:模型可以在同一上下文中继续追问和组合工具.
- 保留安全边界:访问模式、参数校验和数据库账号权限共同限制操作范围.
对于开发人员,KES MCP Server 减少了工具切换,让性能排查更贴近代码现场;对于 DBA,它提供了更标准的诊断入口,同时仍然可以通过最小权限、网络隔离和人工评审控制风险.
当数据库能力被标准化地接入 AI 开发工具后,AI 不再只是根据粘贴的 SQL 给出泛化建议,而是能够基于真实环境完成结构探索、查询分析和方案评估.只要始终坚持受控访问与人工决策,MCP 就能成为 AI 开发工具与企业数据库之间一座实用、清晰且可靠的桥梁.
项目地址:https://gitee.com/king-db/kingbase-mcp
敬请期待下一篇文章内容
每日心灵鸡汤: 成长的两条路径:向外迁移,向内迭代!
人生有两条成长路径:要么不断迁移自己,进入更大的环境,让更高密度的人、更复杂的问题和更大的竞争推动自己升级;要么留在有限的环境里,不断迭代自己,强化独处和自我驱动的能力,让自己不再依赖外部条件.前者是借助世界改变自己,后者是创造一个内在世界.真正强大的人,最终都是既能融入更大的世界,也能在无人关注时持续成长.