7 Star 3 Fork 1

KWDB/kwdb-mcp-server

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
Loading...
README
MIT

KWDB MCP Server

概述

KWDB MCP Server 是一个基于 MCP(Model Context Protocol,模型上下文协议)协议的服务器实现,它通过 MCP 协议提供一套工具和资源,用于与 KWDB 数据库交互和提供商业智能功能。KWDB MCP Server 支持读取、写入、查询、修改数据以及执行 DDL 操作。

架构设计

KWDB MCP Server 的核心流程包括以下几个部分:

  • 协议解析:处理 MCP 标准输入或 HTTP SSE 请求。
  • 工具路由:根据工具类型(read/write)分发处理请求。
  • 查询预处理:自动添加 LIMIT 语法检查。
  • 结果封装:采用统一 JSON 响应格式。

功能特性

  • 读取操作:支持 SELECTSHOWEXPLAIN 和其他只读查询。
  • 写入操作:支持 INSERTUPDATEDELETE DML 操作和 CREATEDROPALTER DDL 操作。
  • 数据库信息:获取数据库信息,包括数据库中所有的表及其架构。
  • 语法指南:根据提示,访问 KWDB 支持的综合 SQL 语法指南。
  • 标准化 API 响应:所有 API 响应遵循一致的 JSON 结构。
    {
      "status": "success",  // 或 "error"
      "type": "query_result",  // 响应类型
      "data": { ... },  // 响应数据
      "error": null  // 错误信息,成功时为 null
    }
    
  • 自动 LIMIT:自动为没有 LIMIT 子句的 SELECT 查询语句添加 LIMIT 20 子句, 防止生成大型结果集。

安全性

KWDB MCP Server 实现以下安全性能。

  • 提供单独的读取和写入操作工具。
  • 验证查询结果,确保与预期的操作类型匹配。
  • 输出未授权操作的错误消息。

MCP Resources

MCP Resources 指 KWDB MCP Server 暴露的数据和内容,供 MCP 客户端读取并作为 LLM 上下文。下表列出 KWDB MCP Server 支持的 Resources。

Resources URI 格式 说明 示例
数据库产品信息 kwdb://product_info 数据库产品信息,包括版本和功能。 kwdb://product_info/
数据库元信息 kwdb://db_info/{database_name} 目标数据库的信息,包括引擎类型、注释和表。 kwdb://db_info/db_shig
表结构信息 kwdb://table/{table_name} 目标表的架构,包括列和示例查询。 kwdb://table/user_profile

MCP Tools

MCP Tools 指 KWDB MCP Server 暴露的可执行功能,供 LLM 调用以与外部系统交互。KWDB MCP Server 提供以下 Tools。

读查询(read-query)

KWDB MCP Server 支持执行 SELECTSHOWEXPLAIN 和其他只读查询,从数据库中读取数据。用户只需要提供一个 SQL 查询语句作为输入,read_query 函数就会返回查询结果,结果以对象数组的形式呈现。此外,KWDB MCP Server 也支持为没有 LIMIT 子句的 SELECT 查询自动添加 LIMIT 20,避免生成大型结果集。

示例:

-- 查看表数据。
SELECT * FROM users LIMIT 10;
-- 查看数据库中已创建的表。
SHOW TABLES;
-- 执行 SQL 查询,生成包含查询详细信息的文件。
EXPLAIN ANALYZE SELECT * FROM orders WHERE user_id = 1;

写查询(write-query)

KWDB MCP Server 支持执行数据修改查询,包括 DML 和 DDL 操作。

示例:

-- 插入数据。
INSERT INTO users (name, email) VALUES ('John Doe', 'john@example.com');
-- 更新数据。
UPDATE users SET email = 'new-email@example.com' WHERE id = 1;
-- 删除数据。
DELETE FROM users WHERE id = 1;
-- 创建表。
CREATE TABLE products (id SERIAL PRIMARY KEY, name TEXT, price DECIMAL);
-- 修改表。
ALTER TABLE products ADD COLUMN description TEXT;
-- 删除表
DROP TABLE products;

MCP Prompts

MCP Prompts 指 KWDB MCP Server 定义的可复用提示模板,引导 LLM 交互。下表列出 KWDB MCP Server 支持的 Prompts。

类别 Prompts 描述
数据库描述 db_description KWDB 数据库的综合描述,包括其功能、特性和用例。
语法指南 syntax_guide KWDB 的综合语法指南,包括常见查询示例和最佳实践。
集群管理 cluster_management KWDB 集群管理的综合指南,包括节点管理、负载均衡和监控。
数据迁移 data_migration 数据迁移到 KWDB 和从 KWDB 迁移的指南,包括导入/导出方法和最佳实践。
安装部署 installation 在各种环境中安装和部署 KWDB 的分步指南。
性能调优 performance_tuning 优化 KWDB 性能的指南,包括查询优化、索引策略和系统级调优。
故障排查 troubleshooting 诊断和解决常见 KWDB 问题和错误的指南。
备份与恢复 backup_restore 备份和恢复 KWDB 数据库的综合指南,包括策略、工具和最佳实践。
DBA 模板 dba_template 提示词编写模板。

新增 MCP Prompts

MCP Prompts 以 Markdown 文件的形式存储在 pkg/prompts/docs/ 目录。编译 KWDB MCP Server 时,可以使用 Go 的 embed 包将这些 Markdown 文件嵌入到二进制文件中。目前,KWDB MCP Server 提供以下 MCP Prompts 文件:

  • pkg/prompts/docs/ReadExamples.md:包含读取查询示例(SELECT 语句)。
  • pkg/prompts/docs/WriteExamples.md:包含写入查询示例(INSERTUPDATEDELETECREATEALTER)。
  • pkg/prompts/docs/DBDescription.md:包含数据库描述。
  • pkg/prompts/docs/SyntaxGuide.md:包含 SQL 语法指南。
  • pkg/prompts/docs/ClusterManagementGuide.md:包含集群管理指南。
  • pkg/prompts/docs/DataMigrationGuide.md:包含数据迁移指南。
  • pkg/prompts/docs/InstallationGuide.md:包含安装指南。
  • pkg/prompts/docs/PerformanceTuningGuide.md:包含性能调优指南。
  • pkg/prompts/docs/TroubleShootingGuide.md:包含故障排除指南。
  • pkg/prompts/docs/BackupRestoreGuide.md:包含备份和恢复指南。
  • pkg/prompts/docs/DBATemplate.md:包含数据库管理模板。

如需新增 MCP Prompts,遵循以下步骤:

  1. pkg/prompts/docs/ 目录中创建一个新的 Markdown 文件,例如 NewUseCase.md
  2. pkg/prompts/prompts.go 文件中,添加变量和加载代码。
  3. 为新 Prompts 创建注册函数。
  4. pkg/prompts/prompts.go 文件中,将注册函数调用添加到 registerUseCasePrompts()
  5. 更新 README 文档。

有关详细信息,参见 pkg/prompts/prompts.go 中的注释信息。

修改 MCP Prompts

如需修改 MCP Prompts,遵循以下步骤:

  1. 编辑 pkg/prompts/docs/ 目录中相应的 Markdown 文件。
  2. 运行 make build 命令,重新构建应用程序。将更新的 MCP Prompts 嵌入到二进制文件中。

源码编译

前提条件

  • 已安装 Go 1.23 或更高版本。
  • 已下载并安装 PostgreSQL 数据库驱动 lib/pq
  • 已安装和运行 KWDB 数据库、配置数据库认证方式、创建数据库。有关详细信息,参见 KWDB 文档官网
  • 已创建具有表级别及以上操作权限的用户。有关详细信息,参见创建用户

安装部署

  1. 克隆仓库。

    git clone https://gitee.com/kwdb/kwdb-mcp-server
    cd kwdb-mcp-server
    
  2. 安装依赖。

    make deps
    
  3. 构建应用。

    make build
    

编译和安装成功后的文件清单如下:

mcp-kwdb-server-go/
├── bin/
│   └── kwdb-mcp-server      # 二进制可执行文件
├── cmd/
│   └── kwdb-mcp-server/
│       └── main.go           # 主应用入口点
├── pkg/
│   ├── db/
│   │   └── db.go             # 数据库操作
│   ├── prompts/
│   │   ├── prompts.go        # MCP 提示词
│   │   └── docs/             # 提示的 Markdown 文件
│   │       ├── ReadExamples.md     # 读取查询示例
│   │       ├── WriteExamples.md    # 写入查询示例
│   │       ├── DBDescription.md    # 数据库描述
│   │       ├── SyntaxGuide.md      # SQL 语法指南
│   │       ├── ClusterManagementGuide.md # 集群管理指南
│   │       ├── DataMigrationGuide.md    # 数据迁移指南
│   │       ├── InstallationGuide.md      # 安装指南
│   │       ├── PerformanceTuningGuide.md # 性能调优指南
│   │       ├── TroubleShootingGuide.md   # 故障排除指南
│   │       ├── BackupRestoreGuide.md     # 备份和恢复指南
│   │       └── DBATemplate.md            # 数据库管理模板
│   ├── resources/
│   │   └── resources.go      # MCP 资源
│   ├── server/
│   │   └── server.go         # 服务器设置
│   ├── tools/
│   │   └── tools.go          # MCP 工具
│   └── version/
│       └── version.go        # 版本信息
├── Makefile                  # 构建和运行命令
└── README.md                 # 本文件

启动 KWDB MCP Server

KWDB MCP Server 支持以下两种传输机制:

  • 标准输入/输出模式:使用标准输入/输出进行通信,适用于本地进程。默认情况下,KWDB MCP Server 采用标准输入/输出模式。

  • SSE(Server-Sent Events,服务器发送事件)模式:使用 HTTP POST 进行服务器到客户端的消息传递。

标准输入/输出模式

  • 使用 PostgreSQL 连接字符串运行 KWDB MCP Server:

    ./bin/kwdb-mcp-server "postgresql://<username>:<password>@<hostname>:<port>/<database_name>?sslmode=disable"
    
  • 使用 Makefile 运行 KWDB MCP Server:

    CONNECTION_STRING="postgresql://<username>:<password>@<hostname>:<port>/<database_name>?sslmode=disable" make run
    

参数说明:

  • username:连接 KWDB 数据库的用户名。
  • password:身份验证时使用的密码。
  • hostname:KWDB 数据库的 IP 地址。
  • port:KWDB 数据库的连接端口。
  • database_name:需要访问的 KWDB 数据库名称。
  • sslmode:SSL 模式。支持的取值包括 disableallowpreferrequireverify-caverify-full。有关 SSL 模式相关的详细信息,参见 SSL 模式参数

SSE 模式

如需访问部署在其他服务器上的 KWDB 数据库,用户可以在 SSE 模式下运行 KWDB MCP Server。

说明

用户需要提供数据库连接字符串作为最后一个参数。

  • 使用 PostgreSQL 连接字符串运行 KWDB MCP Server:

    ./bin/kwdb-mcp-server -t sse -addr ":8080" -base-url "http://localhost:8080" "postgresql://<username>:<password>@<hostname>:<port>/<database_name>?sslmode=disable"
    
  • 使用 Makefile 运行 KWDB MCP Server:

    CONNECTION_STRING="postgresql://<username>:<password>@<hostname>:<port>/<database_name>?sslmode=disable" ADDR=":8080" BASE_URL="http://localhost:8080" make run -sse
    

参数说明:

  • -t-transport:传输类型,支持设置为 stdiosse
    • stdio:标准输入/输出模式
    • sse:SSE 模式
  • -addrADDR:KWDB MCP Server 的监听端口,默认为 :8080
  • -base-urlBASE_URL:KWDB MCP Server 的 IP 地址,默认为 http://localhost:8080
  • username:连接 KWDB 数据库的用户名。
  • password:身份验证时使用的密码。
  • hostname:KWDB 数据库的 IP 地址。
  • port:KWDB 数据库的连接端口。
  • database_name:需要访问的 KWDB 数据库名称。
  • sslmode:SSL 模式。支持的取值包括 disableallowpreferrequireverify-caverify-full。有关 SSL 模式相关的详细信息,参见 SSL 模式参数

集成 LLM Agent

有关 KWDB MCP Server 如何集成 LLM Agent 的详细信息,参见集成 LLM Agent

故障排查

有关如何排查 KWDB MCP Server 故障的详细信息,参见故障排查

文档

有关 KWDB MCP Server 的相关文档,参见 KWDB 文档官网

未来增强

  • 查询历史:实现查询历史功能
  • 远程模式:支持连接到远程 KWDB MCP Server
  • 改进的优化建议:增强查询优化建议
  • 指标资源:添加数据库指标信息

贡献

欢迎贡献!请随时提交 Issue 和 PR。

许可证

本项目根据 MIT 许可证授权。

致谢

MIT License Copyright (c) 2025-present, Shanghai Yunxi Technology Co, Ltd. Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

开务数据库大模型协议 展开 收起
Go 等 3 种语言
MIT
取消

发行版 (1)

全部
17天前

贡献者 (3)

全部

近期动态

Pushed new commit to master branch 14 days ago, 78c43c9...7a3fe2b
Merged pr #5 【Doc Bugfix】-- Update typos 14 days ago
Created a new pr #5 【Doc Bugfix】-- Update typos 14 days ago
Pushed new commit to master branch 14 days ago, c5176fe...78c43c9
加载更多
不能加载更多了
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/kwdb/kwdb-mcp-server.git
git@gitee.com:kwdb/kwdb-mcp-server.git
kwdb
kwdb-mcp-server
kwdb-mcp-server
master

搜索帮助