【案例共創(chuàng)】在開發(fā)者空間開發(fā)MCP Server完成對GaussDB數(shù)據(jù)庫的操作
本文分享自華為云HCDE《硬核推薦:用華為開發(fā)者空間+ GaussDB + MCP Server 整一個(gè) AI 數(shù)據(jù)庫神器!》
1.案例介紹
本案例展示了基于 GaussDB 純 Python 驅(qū)動(dòng)與 PQ 接口開發(fā)并部署 MCP Server,實(shí)現(xiàn)標(biāo)準(zhǔn) MCP 協(xié)議下的高效數(shù)據(jù)庫交互,并通過 CLINE 與 ModelArts DeepSeek V3 模型完成 LLM 推理集成。
2.案例內(nèi)容
2.1概述
2.1.1案例介紹
本案例旨在演示如何基于 GaussDB 開發(fā)并部署 MCP Server。實(shí)現(xiàn)過程中,需結(jié)合 GaussDB 提供的純 Python 驅(qū)動(dòng)及 PQ 接口,以完成與 GaussDB 數(shù)據(jù)庫的高效連接與交互。
MCP Server 的開發(fā)遵循標(biāo)準(zhǔn) MCP 協(xié)議規(guī)范,因此可兼容任意支持該協(xié)議的客戶端進(jìn)行連接與操作。
在本案例中,將使用 CLINE 工具進(jìn)行功能演示,并通過 ModelArts 平臺(tái)提供的 DeepSeek V3 模型完成 LLM 推理能力集成。
2.1.2適用對象
-
企業(yè)開發(fā)者
-
個(gè)人開發(fā)者
-
高校學(xué)生
2.1.3案例時(shí)間
本案例總時(shí)長預(yù)計(jì)90分鐘。
2.1.4案例流程
-
在云主機(jī)環(huán)境中部署 GaussDB 純 Python 驅(qū)動(dòng)
-
用戶可直接在瀏覽器端與大模型進(jìn)行自然語言交互,并以自然語言指令驅(qū)動(dòng) MCP 控制 GaussDB 的各類操作。
-
該 MCP Server 負(fù)責(zé)與 GaussDB 集群建立高效通信,實(shí)現(xiàn)指令解析、數(shù)據(jù)交互與結(jié)果返回。
2.1.5資源總覽
本案例預(yù)計(jì)花費(fèi)總計(jì)1元。
2.2操作步驟
2.2.1前置配置
2.2.1.1申請開發(fā)者空間云主機(jī)
參考下面的步驟,免費(fèi)領(lǐng)取云主機(jī)
https://support.developer.huaweicloud.com/doc/development/resource-tools/zh-cn_topic_0000002367559525-0000002367559525
配置為Euler系統(tǒng)
2.2.1.2申請開通GaussDB
參考下面的步驟,免費(fèi)領(lǐng)取GaussDB在線試用版
https://developer.huaweicloud.com/signup/75dae31d0eb04cdcab822c76d35eb9a1
等待GaussDB實(shí)例創(chuàng)建成功后,綁定EIP,后面在開發(fā)者空間中需要使用到EIP才能訪問。
參考:https://support.huaweicloud.com/usermanual-gaussdb/gaussdb_01_160.html
綁定EIP:
記住EIP,用戶名(默認(rèn)root),密碼(創(chuàng)建數(shù)據(jù)庫時(shí)自定義),端口(默認(rèn)8000)。
2.2.1.3申請ModelArts免費(fèi)服務(wù)
參考下面的步驟,免費(fèi)體驗(yàn)ModelArts Studio(MaaS)預(yù)置服務(wù)
https://support.huaweicloud.com/usermanual-maas-modelarts/maas-modelarts-0020.html
按下面的步驟獲取相關(guān)信息:
獲取API地址和模型區(qū)域切換到“西南-貴陽一”,依次點(diǎn)擊:ModelArts Studio->模型推理->在線推理->預(yù)置服務(wù)->免費(fèi)服務(wù)->領(lǐng)取->調(diào)用說明->OpenAI SDK
創(chuàng)建API Key
API Key管理-> 創(chuàng)建API Key
復(fù)制保存密鑰。
2.2.2 開發(fā)MCP
2.2.2.1 克隆項(xiàng)目
克隆github項(xiàng)目代碼,以Desktop作為主目錄(如果不是,可能會(huì)導(dǎo)致后面部分參數(shù)需要修改,所以參考這個(gè)即可)
在桌面點(diǎn)擊右鍵,點(diǎn)擊“在此打開終端”,大約需要1分鐘,執(zhí)行下面代碼:
git clone https://github.com/pangpang20/mcp-gaussdb-server.gitcd mcp-gaussdb-server/gaussdb-server
安裝python3.10,大約5-10分鐘
開發(fā)者空間中的python版本為3.9.9,而mcp服務(wù)需要安裝python3.10,執(zhí)行下面代碼:
sh install_python310.sh
2.2.2.2 創(chuàng)建虛擬環(huán)境
創(chuàng)建虛擬環(huán)境,并激活,執(zhí)行下面代碼:
pip3 install uv -i https://pypi.tuna.tsinghua.edu.cn/simpleexport PATH=$HOME/.local/bin:$PATHuv venv --python /usr/local/bin/python3.10source .venv/bin/activate# 查看python版本, 確保是3.10.14python3 -V
安裝mcp,執(zhí)行下面代碼:
uv pip install "mcp[cli]" -i https://pypi.tuna.tsinghua.edu.cn/simpleuv pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple
2.2.2.3 安裝依賴并配置環(huán)境變量
安裝依賴
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
初始化pq連接,大約1分鐘
sh init_pq.sh
檢查, 正常返回3條記錄
pip list | grep gaussdb
配置GaussDB數(shù)據(jù)庫信息
cp .env.sample .env
配置數(shù)據(jù)庫連接信息
填寫步驟2.2.2中GaussDB的EIP和端口,用戶名密碼等信息
vim .envGAUSSDB_HOST=xxxGAUSSDB_PORT=8000GAUSSDB_USER=rootGAUSSDB_PASSWORD=xxxGAUSSDB_DATABASE=postgresGAUSSDB_MCP_LOG=/tmp/mcp.log
輸入:wq 保存退出
2.2.2.4 MCP Server開發(fā)
編寫GaussDBMCP類,用于連接數(shù)據(jù)庫并執(zhí)行SQL查詢。現(xiàn)在實(shí)現(xiàn)了建庫,建表,插入數(shù)據(jù),查詢數(shù)據(jù)等功能,如需實(shí)現(xiàn)其他的功能,可以參考已有的代碼進(jìn)行擴(kuò)展。
cat gaussdb_mcp_server.py
2.2.2.5 啟動(dòng)MCP Server
啟動(dòng)封裝的mcp server,執(zhí)行下面代碼:
sh start_mcp_server.sh
沒有報(bào)錯(cuò)即可退出,因?yàn)楹竺鍯line會(huì)啟動(dòng)mcp server。
2.2.3 使用MCP
2.2.3.1 安裝vscode
使用vscode連接mcp server,下載vscode需要大約10分鐘,執(zhí)行下面代碼:
cd ~wget https://vscode.download.prss.microsoft.com/dbazure/download/stable/7adae6a56e34cb64d08899664b814cf620465925/code-1.102.1-1752598762.el8.aarch64.rpmsudo rpm -ivh code-1.102.1-1752598762.el8.aarch64.rpm
安裝后,打開vscode:
2.2.3.2 安裝配置CLINE
在擴(kuò)展中搜索“cline”,點(diǎn)擊安裝:
安裝后配置LLM:
2.2.3.3 使用CLINE連接LLM
配置MaaS提供的Deepseek。
API Provider:選擇 OpenAI Compatible
Base URL:填寫步驟2.2.1.3 中的API地址
OpenAI Compatible API Key:填寫步驟2.2.1.3中的API Key
Model ID:填寫步驟2.2.1.3中的模型參數(shù)
提一個(gè)問題確保LLM可以正常使用,如果提示連接超時(shí)等問題,請檢查上面的配置是否正確。
2.2.3.4 使用CLINE連接MCP
基于前面的MCP Server配置,點(diǎn)擊如圖步驟,打開 Configure MCP Servers。
在右側(cè)打開的cline_mcp_settings.json中改為:
其中command中的路徑如果不是按上面的默認(rèn)路徑,請改為實(shí)際路徑即可。
{ "mcpServers": { "gaussdb": { "disabled": false, "timeout": 60, "type": "stdio", "command": "/home/developer/Desktop/mcp-gaussdb-server/gaussdb-server/start_mcp_server.sh", "args": [] } } }
配置后保存,左側(cè)會(huì)自動(dòng)刷新,成功后可以看到8個(gè)工具
里面通過注解將工具的功能參數(shù)等信息都獲取到了,詳細(xì)細(xì)節(jié)可以查看2.2.2.4章節(jié)MCP Server開發(fā)代碼。
2.2.3.5 使用MCP操作GaussDB
點(diǎn)擊“+”,創(chuàng)建新的任務(wù)
指令1:
給我創(chuàng)建一個(gè)表student_info,學(xué)生信息,需要的字段有姓名,學(xué)號,性別,出生日期,班級,年級,其中學(xué)號是自增長的主鍵
因?yàn)闆]有配置自動(dòng)提交,所以有個(gè)提交確認(rèn)的步驟,點(diǎn)擊“Approve”。
可能會(huì)遇到錯(cuò)誤,但是LLM會(huì)自己處理,再次確認(rèn)即可。如下創(chuàng)建成功。
可以到GaussDB中查看,登錄數(shù)據(jù)管理服務(wù)-GaussDB
輸入創(chuàng)建數(shù)據(jù)庫時(shí)的密碼,點(diǎn)擊測試連接,通過后點(diǎn)擊登錄
登錄后,依次點(diǎn)擊:庫管理->對象列表->Schema,選擇“root”(如果在2.3.3中配置為其他數(shù)據(jù)庫用戶,這里就改為對應(yīng)的用戶名),由MCP創(chuàng)建的表可以查到。
指令2:
在student_info表中插入一條測試數(shù)據(jù)學(xué)號為1001,并查詢出來
GaussDB中查詢:
指令3:
修改student_info表中學(xué)號student_id為1001的學(xué)生信息,將姓名改為李四,并查詢出來
遇到問題的時(shí)候,LLM會(huì)查詢表結(jié)構(gòu)
GaussDB中查詢:
姓名已經(jīng)更新
至此,在開發(fā)者空間云主機(jī)中開發(fā)MCP操作GaussDB順利結(jié)束!
github地址鏈接:https://github.com/HuaweiCloudDeveloper/gaussdb-drivers
浙公網(wǎng)安備 33010602011771號