【案例共创】在开发者空间开发MCP Server完成对GaussDB数据库的操作

1.1 概述

1.1.1 案例介绍

本案例旨在演示如何基于 GaussDB 开发并部署 MCP Server。实现过程中,需结合 GaussDB 提供的纯 Python 驱动及 PQ 接口,以完成与 GaussDB 数据库的高效连接与交互。

MCP Server 的开发遵循标准 MCP 协议规范,因此可兼容任意支持该协议的客户端进行连接与操作。

在本案例中,将使用 CLINE 工具进行功能演示,并通过 ModelArts 平台提供的 DeepSeek V3 模型完成 LLM 推理能力集成。

1.1.2 适用对象

  • 企业开发者
  • 个人开发者
  • 高校学生

1.1.3 案例时间

本案例总时长预计90分钟。

1.1.4 案例流程

de9a18d6cbf247fe9030d69d8f08fdda

①   在云主机环境中部署 GaussDB 纯 Python 驱动。

②   用户可直接在浏览器端与大模型进行自然语言交互,并以自然语言指令驱动 MCP 控制 GaussDB 的各类操作。

③   该MCP Server 负责与 GaussDB 集群建立高效通信,实现指令解析、数据交互与结果返回。

1.1.5 资源总览

本案例预计花费总计1元。

资源名称规格单价(元)时长(分钟)
云主机ARM | 4C8G | Euler免费90
GaussDBgaussdb.opengauss.xe.dn.s6.xlarge.x864.ha | 4 vCPUs | 16 GB免费90
ModelArtsDeepSeek-R1-32K或DeepSeek-V3-32K免费
EIP公网IP,按流量<1元

1.2 操作步骤

1.2.1 前置配置

1.2.1.1 申请开发者空间云主机

参考下面的步骤,免费领取云主机

https://support.developer.huaweicloud.com/doc/development/resource-tools/zh-cn_topic_0000002367559525-0000002367559525

配置为Euler系统

50c680b8667e4485b858ef6cee89b878

1.2.1.2 申请开通GaussDB

参考下面的步骤,免费领取GaussDB在线试用版

https://developer.huaweicloud.com/signup/75dae31d0eb04cdcab822c76d35eb9a1

等待GaussDB实例创建成功后,绑定EIP,后面在开发者空间中需要使用到EIP才能访问。

参考:https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_160.html

绑定EIP:

a84cce992f9b499aacc29e069c88dfb3


记住EIP,用户名(默认root),密码(创建数据库时自定义),端口(默认8000)。

1.2.1.3 申请ModelArts免费服务

参考下面的步骤,免费体验ModelArts Studio(MaaS)预置服务

https://support.huaweicloud.com/usermanual-maas-modelarts/maas-modelarts-0020.html

按下面的步骤获取相关信息:

1、 获取API地址和模型

区域切换到“西南-贵阳一”,依次点击:ModelArts Studio->模型推理->在线推理->预置服务->免费服务->领取->调用说明->OpenAI SDK

9f5c46b77f954ecaad36450cd26aaf66

2、 创建API Key

API Key管理-> 创建API Key

409c1493e88745328221294ed6292f54

复制保存密钥。

9d499da8bf904236a9b35c9d579d5773


1.2.2 开发MCP

1.2.2.1 克隆项目

克隆github项目代码,以Desktop作为主目录(如果不是,可能会导致后面部分参数需要修改,所以参考这个即可

在桌面点击右键,点击“在此打开终端”,大约需要1分钟,执行下面代码:

git clone https://github.com/pangpang20/mcp-gaussdb-server.git
cd mcp-gaussdb-server/gaussdb-server

438fbf21acdf41fba4b0dbe03c06e8a8

安装python3.10,大约5-10分钟

开发者空间中的python版本为3.9.9,而mcp服务需要安装python3.10,执行下面代码:

sh install_python310.sh 

2d254a25906c4a0790a03ba8ce80827a

1.2.2.2 创建虚拟环境

创建虚拟环境,并激活,执行下面代码:

pip3 install uv -i https://pypi.tuna.tsinghua.edu.cn/simple
export PATH=$HOME/.local/bin:$PATH 
uv venv --python /usr/local/bin/python3.10
source .venv/bin/activate


python3 -V

查看python版本, 确保是3.10.14

4fee42c962ad4e5ea75ee66645d7a3ae

安装mcp,执行下面代码:

uv pip install "mcp[cli]" -i https://pypi.tuna.tsinghua.edu.cn/simple
uv pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple 

1.2.2.3 安装依赖并配置环境变量

安装依赖

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

初始化pq连接,大约1分钟

sh init_pq.sh

检查, 正常返回3条记录

pip list | grep gaussdb

de480afc3c2041d2b50e2b5380d69151

配置GaussDB数据库信息

cp .env.sample .env 

配置数据库连接信息

填写步骤1.2.1.2中GaussDB的EIP和端口,用户名密码等信息

vim .env
GAUSSDB_HOST=xxx
GAUSSDB_PORT=8000
GAUSSDB_USER=root
GAUSSDB_PASSWORD=xxx
GAUSSDB_DATABASE=postgres
GAUSSDB_MCP_LOG=/tmp/mcp.log

输入:wq 保存退出。


1.2.2.4 MCP Server开发

编写GaussDBMCP类,用于连接数据库并执行SQL查询。
现在实现了建库,建表,插入数据,查询数据等功能,如需实现其他的功能,可以参考已有的代码进行扩展。

cat gaussdb_mcp_server.py
1.2.2.5 启动MCP Server

启动封装的mcp server,执行下面代码:

sh start_mcp_server.sh

没有报错即可退出,因为后面Cline会启动mcp server。

d20ae5876e0a4672827df9a3dc5e4372

1.2.3 使用MCP

1.2.3.1 安装vscode

使用vscode连接mcp server,下载vscode需要大约10分钟,执行下面代码:

cd ~
wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/7adae6a56e34cb64d08899664b814cf620465925/code-1.102.1-1752598762.el8.aarch64.rpm
sudo rpm -ivh code-1.102.1-1752598762.el8.aarch64.rpm 

安装后,打开vscode:

38a483a294124e54ad82ee745dad5d6a


1.2.3.2 安装配置CLINE

在扩展中搜索“cline”,点击安装:

34beb01b38284053adf1e0f588c6b1ba

安装后配置LLM。

d367154de1a94b529dba1eb38da2ec43


1.2.3.3 使用CLINE连接LLM

配置MaaS提供的Deepseek。

API Provider:选择
OpenAI Compatible

Base URL:填写步骤1.2.1.3 中的API地址

OpenAI Compatible API Key:填写步骤1.2.1.3 中的API Key

Model ID:填写步骤1.2.1.3 中的模型参数

98081dd2f9ce408586962658d69bb57c

提一个问题确保LLM可以正常使用,如果提示连接超时等问题,请检查上面的配置是否正确。

41c686124c884c81bf8dc05c15f23472

1.2.3.4 使用CLINE连接MCP

基于前面的MCP Server配置,点击如图步骤,打开 Configure MCP Servers。

2235fd9ca8924461a84cbbabbdfdf334

在右侧打开的cline_mcp_settings.json中改为:

其中command中的路径如果不是按上面的默认路径,请改为实际路径即可。

{
  "mcpServers": {
    "gaussdb": {
      "disabled": false,
      "timeout": 60,
      "type": "stdio",
      "command": "/home/developer/Desktop/mcp-gaussdb-server/gaussdb-server/start_mcp_server.sh",
      "args": []
    }
  }
}

配置后保存,左侧会自动刷新,成功后可以看到8个工具里面通过注解将工具的功能参数等信息都获取到了,详细细节可以查看1.2.2.4章节 MCP Server 开发代码。

06a5c0afbfda4e14bcd31303e9ffec60

1.2.3.5 使用MCP操作GaussDB

点击“+”,创建新的任务

指令1:

给我创建一个表student_info,学生信息,需要的字段有姓名,学号,性别,出生日期,班级,年级,其中学号是自增长的主键

6e332bca11164beebcd39fea191314cd

因为没有配置自动提交,所以有个提交确认的步骤,点击“Approve”。

可能会遇到错误,但是LLM会自己处理,再次确认即可。如下创建成功。

ce89d950a88a4518b5682b7e7b674ced

可以到GaussDB中查看,登录数据管理服务-GaussDB

2ee90adb21ae4e97a6c51a9c2fcc6f74

输入创建数据库时的密码,点击测试连接,通过后点击登录
f7726f2d9c7049e6a2e68eeb73052361

登录后,依次点击:库管理->对象列表->Schema,选择“root”(如果在1.3.3中配置为其他数据库用户,这里就改为对应的用户名),由MCP创建的表可以查到。

1b1e088e06064f45a952a874948d796e

指令2:


在student_info表中插入一条测试数据学号为1001,并查询出来

467d8bb6d86749fdbe1aa51bfb8cdeeb

GaussDB中查询:

ed9ded0b214240dd8db62772f6f31be5

指令3:

修改student_info表中学号student_id为1001的学生信息,将姓名改为李四,并查询出来

b4f2b8ac32d842c88582fc28a1361e5a

遇到问题的时候,LLM会查询表结构

a8889e63175148bfa97dc41e87146b93

GaussDB中查询:

姓名已经更新

208b9d9d757d4cf6b0394cb0ed02f343

至此,在开发者空间云主机中开发MCP操作GaussDB顺利结束!


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值