Desktop、集成開發(fā)環(huán)境(IDE)或希望通過 MCP 訪問數(shù)據(jù)的 AI 工具等程序
MCP Clients: 協(xié)議客戶端,負(fù)責(zé)和大模型進(jìn)行輸入輸出交互
MCP Server: 協(xié)議服務(wù)端,負(fù)責(zé)和外部服務(wù)進(jìn)行交互,暴露外部服務(wù)的接口,并且和客戶端進(jìn)行通信
Local Data Resource: 本地的文件,數(shù)據(jù)等
Remote Resource: 遠(yuǎn)程的服務(wù),可以通過Server連接
做過數(shù)據(jù)開發(fā)或者數(shù)據(jù)應(yīng)用的同學(xué)都肯定被一堆問題困擾過,特別的是數(shù)據(jù)和模型的部署問題,數(shù)據(jù)在本地,模型在哪里?應(yīng)用在哪里?很多時候我們的數(shù)據(jù)因為安全問題無法上云,只能在本地或者私有環(huán)境中,但模型很多時候在云上,而且我們還需要準(zhǔn)備環(huán)境部署應(yīng)用層代碼。
而現(xiàn)在,MCP可以幫助你解決這個困擾。通過幾個問題,我們來對比一下使用或者不使用MCP的情況下數(shù)據(jù)助手的開發(fā)和部署方案。
| 問題 | 不用MCP | 用MCP |
|---|---|---|
| 接入模型去做text-to-sql | 自己去接入大模型平臺 | 不用管,server封裝了 |
| 接入數(shù)據(jù)schema幫助模型理解 | 在應(yīng)用層手動開發(fā)一個適配器,從數(shù)據(jù)庫拉schema | 不用管,server封裝了 |
| 前端與展示 | 開發(fā)一個前端頁面,或者用gradio簡單做一個 | 不用管,有用開源的應(yīng)用 |
| 后端的開發(fā) | 需要開發(fā)一個web服務(wù),連接大模型,連接數(shù)據(jù)庫 | 不用管,不需要后端服務(wù) |
| 支持私有化? | 需要完全開發(fā)一套,并且在本地使用ollama或者vllm接入模型 | 不用管,server封裝了 |
| 支持agent和跟其他模型功能集成? | 非常難搞,無法支持 | 非常簡單,直接接入其他MCP server就好 |
我們在本地機(jī)器上構(gòu)建數(shù)據(jù)助手,調(diào)用云上的模型,處理本地機(jī)器的數(shù)據(jù)。
本地開發(fā)環(huán)境:
-Macbook M3 Pro
-MySQL 5.8 (需要在本地有個數(shù)據(jù)庫,如果沒有的話可以提前裝上mysql并構(gòu)建一個虛擬的數(shù)據(jù)庫)
我們需要一個MCP服務(wù)把數(shù)據(jù)庫接入進(jìn)來,現(xiàn)在有非常多的MCP server都可以幫我連接數(shù)據(jù)庫,比如社區(qū)在維護(hù)的MCP server[1]、MCP server的平臺(Smithery.AI[2]、MCP.run[3]),但基本上都只是提供了一個SQL執(zhí)行接口。
為了更好的工具調(diào)用效果,選擇支持自然語言接口的析言MCP服務(wù)(Xiyan-mcp-server[4]),可以用自然語言訪問數(shù)據(jù)庫,并從數(shù)據(jù)庫獲得答案,是當(dāng)前Test-to-SQL公開基準(zhǔn)上的SOTA。
在終端上運行以下命令
pip install xiyan-mcp-server
需要將兩類配置信息寫入配置文件config.yml,模型配置(LLM )和數(shù)據(jù)庫配置(Database)。
模型配置:魔搭上部署了XiYanSQL-QwenCoder-32B——xiyan_mcp_server官方提供的專屬模型——的推理服務(wù),在該模型頁面[5](右側(cè)的推理API– Inference部分),可找到配置信息(name、key、url)。
數(shù)據(jù)庫配置:默認(rèn)本地有mysql數(shù)據(jù)庫,數(shù)據(jù)庫的配置信息包括:本地數(shù)據(jù)庫host、port、username、password和database名字。
整體的配置如下:
model:
name: "XGenerationLab/XiYanSQL-QwenCoder-32B-2412"
key: "xxxx"
# key可從https://www.modelscope.cn/my/myaccesstoken 頁面獲取
url: "https://api-inference.modelscope.cn/v1/"
database:
host: "localhost"
port: 3306
user: "root"
password: "123456"
database: "mydb"
將這個配置文件放在本地(假設(shè)為/path/to/config.yml)
選擇mcp inspector[6]作為調(diào)試器
brew install node
npx @modelcontextprotocol/inspector -e YML= /path/to/config.yml python -m xiyan_mcp_server
這個inspector會直接在本地拉起一個web服務(wù)供調(diào)試用,地址在http://localhost:5173
– 切換到tools頁面,點擊list tools會跳出來文本到sql的工具
– 點擊get_data_via_natural_language工具,用自然語言取個數(shù)據(jù)看看
輸入問題“查詢年齡16歲以上的郵箱”,點擊“run tool”
輸出是個markdown格式的數(shù)據(jù)
email |
| --- |
| alice@example.com |
| bob@example.com |
| charlie@example.com
為了更方便交互,我們找一個客戶端來調(diào)用后臺的數(shù)據(jù)服務(wù)。目前有非常多支持MCP的客戶端,比如開源的MCP的client、閉源的claude desktop等等。這里我們選用的是goose,這是一個開源的支持MCP的client,原生支持MacOS。
下載地址:
https://block.github.io/goose/docs/quickstart/
下載后根據(jù)提示一步步安裝即可。
為了能用起來chat,需要找一個大語言模型API。我們選擇用通義千問2.5-72B-Instruct[9],魔搭社區(qū)上提供了兼容OpenAI接口的推理API,只需要在后臺配置endpoint就好。
– 新增OpenAI的模型:Models——Browse——AddModel
這里我們選用通義千問2.5-72B的模型,模型名字填Qwen/Qwen2.5-72B-Instruct即可。
– 配置模型endpoint和key: Models——Browse——Configure——OpenAI——“+”號
第一欄:Key從https://www.modelscope.cn/my/myaccesstoken 頁面獲取。
第二欄:通義千問2.5-72B的模型直接填“https://api-inference.modelscope.cn/” 。
第三欄:用默認(rèn)的即可。
step3: 添加xiyan_mcp_server拓展
– 在拓展參數(shù)上填入啟動命令,ID、Name和Description的內(nèi)容自定義即可。

回到goose主頁面,新開一個會話測試,比如在會話欄輸入“查詢年齡16歲以上的郵箱”

我從云端拷貝了一份真正的數(shù)據(jù)庫到本地,測試了更多問題,具體請看圖。





依靠MCP的強(qiáng)大框架和各種開源工具,我們實現(xiàn)了沒寫一行代碼就輕松搭建了一個完善的數(shù)據(jù)助手 ,可以用自然語言從數(shù)據(jù)庫取數(shù)。未來甚至可以接入更多MCP,做更多更全面更有深度的數(shù)據(jù)分析,簡直太棒啦!
文章轉(zhuǎn)載: 不寫一行代碼,用MCP+魔搭A(yù)PI-Inference 搭建一個本地數(shù)據(jù)助手! 附所有工具和清單