到底 MCP 有什么魅力?十分鐘讓 AI 直接操作數(shù)據(jù)庫!
這幾天老是聽到 MCP 的概念,為了讓自己不那么 out ,昨天下班之后我也是抓緊去看了下這到底是何方神圣。
MCP,全稱 Model Context Protocol,是一個(gè)開源協(xié)議,目的是為大語言模型(LLM)提供一個(gè)標(biāo)準(zhǔn)化的上下文接口。也就是說,為各種應(yīng)用對接 AI 提供了一個(gè)規(guī)范,就像 USB 接口一樣。
聽起來有點(diǎn)摸不著頭腦,沒事,看看官方給的 demo 就知道是怎么回事了。這個(gè) demo 做的事情很簡單,就是寫了兩個(gè)獲取天氣情況的方法給 AI 用!因?yàn)?AI 的訓(xùn)練是使用已有的數(shù)據(jù),所以如果直接問 AI 現(xiàn)在幾點(diǎn)了,那它肯定懵逼,同樣 AI 也不知道明天的天氣會(huì)怎么樣,因?yàn)橛?xùn)練它的歷史數(shù)據(jù)里沒有。那我們讓代碼告訴它,它再告訴我不就完了?沒錯(cuò),這個(gè) demo 做的就是這件事。
根據(jù)這個(gè) demo ,我們自己也搓一個(gè)出來玩玩。平時(shí)開發(fā)的時(shí)候,免不了要造一些測試數(shù)據(jù)到數(shù)據(jù)庫,以前都是告訴 AI DDL,讓它生成對應(yīng)的 insert 語句,然后手動(dòng) copy 到控制臺(tái)執(zhí)行。現(xiàn)在我們把這個(gè)過程全部交給 AI 來做,甚至把實(shí)現(xiàn)這個(gè)過程的代碼也可以讓 AI 來寫!
手把手從零實(shí)現(xiàn)的步驟(因?yàn)楣俜?demo 是 python 多一點(diǎn),我這里也直接用 python 了):
1)先把官方的項(xiàng)目初始化命令全執(zhí)行一遍:
# 安裝 python 的包管理工具,安裝后重開命令行窗口
curl -LsSf https://astral.sh/uv/install.sh | sh
# 創(chuàng)建項(xiàng)目文件夾
uv init gen-data
cd gen-data
# 創(chuàng)建虛擬環(huán)境并激活
uv venv
source .venv/bin/activate
ok,前置步驟就這些,接下來就是打開 ide 寫代碼了。
2)給 AI 我們的需求,讓 AI 仿照官方的 demo 給出實(shí)現(xiàn):
(我這里僅給出部分截圖,源碼會(huì)放到文末)
圖片
當(dāng)然了,我寫 prompt 的水平非常有限,一般生成出來的內(nèi)容是要改吧改吧的。在改代碼以前,先把依賴安裝下:
uv add dotenv aiomysql mcp
3)稍微改了下上面的代碼之后,我又讓 GPT 給我加了一個(gè)獲取某表 DDL 的功能,這樣就更省事一點(diǎn),使用的時(shí)候就不用我告訴它了:
圖片
4)這樣功能就完成,接下來就是配置到客戶端里使用。官方推薦的是 Claude for Desktop ,不過我實(shí)測下來在國內(nèi)用起來很不方便,所以更推薦用 Cursor:
圖片
然后在打開的文件里寫入以下內(nèi)容:
{
"mcpServers": {
"gen-data": {
"command": "uv",
"args": [
"--directory",
"/項(xiàng)目文件夾路徑(gen-data)",
"run",
"功能代碼(main).py"
],
"env": {
"MYSQL_PASSWORD": "數(shù)據(jù)庫密碼"
}
}
}
}
配置之后記得重啟 Cursor ,否則很可能不生效。
5)來看下效果吧:
圖片
圖片
圖片
整個(gè)過程并不難,但還是讓我感受到了一些震撼,AI 的使用成本越來越低了,像我這樣的普通開發(fā)者也能很輕易的把 AI 接到常用的工具中,程序員還是要緊跟科技發(fā)展的步伐,避免自己被淘汰掉,一起加油吧兄弟們!