導讀
BaikalDB作為服務百度商業產品的分佈式存儲系統,支撐了整個廣告庫海量物料的存儲。在大語言模型LLM蓬勃發展的現在,想在大模型裏使用BaikalDB裏的數據進行分析,都需要複雜的定製開發。看BaikalDB如何藉助模型上下文協議(MCP),讓數據庫對話像聊天一樣簡單——無需編寫代碼,大語言模型即可完成複雜數據分析。
01 引言
在2025年以前,大語言模型(Large Language Model,LLM)想要使用數據庫的數據,都需要開發人員設計接口、開發Agent插件、構建Prompt等費時費力的一系列定製開發;同時面對不同大模型的差異,還需要額外的重複性工作進行適配。
隨着模型上下文協議(Model Context Protocol,MCP)的標準化普及,這一局面被徹底重構。MCP通過定義統一的上下文交互規範,為應用程序與AI模型建立了 “通用通信協議”。
基於此,BaikalDB團隊創新推出BaikalDB MCP Server,將其打造為連接LLM與分佈式存儲系統的 “智能USB接口” ——該方案具備三大核心價值:
1. 零開發集成:支持主流LLM通過標準化協議直接訪問BaikalDB,無需編寫任何適配代碼。
2. 全鏈路自動化:從自然語言意圖理解、SQL智能生成到查詢執行與數據分析,實現端到端閉環。
3. 多模型兼容性:屏蔽底層技術差異,一套接口適配GPT、Claude、文心一言等各類大模型。
02 MCP: AI USB接口
2024年11月由Anthropic公司提出的模型上下文協議MCP,是一種標準化的大模型與外部數據源、工具交互的開放協議。來源於USB接口範式的設計靈感,MCP的核心思想在於:通過創建一個通用的標準(如USB接口設計),解決大語言模型與外部系統間的“信息孤島” 問題,該協議通過三大核心原則重構AI開發生態:
1. 即插即用標準化:定義統一的上下文交換格式,使大模型與數據源/工具的對接效率提升80%以上。
2. 組件解耦化:支持不同AI模塊的熱插拔組合,開發者可像搭積木般構建複雜AI系統。
3. 語義透明化:通過標準化上下文標記,實現跨組件意圖傳遞的零損耗。
△MCP設計理念
2.1 MCP 組成
如上圖所示,MCP 由三個核心組件構成:MCP Host、MCP Client 和 MCP Server:
官方文檔鏈接:
https://modelcontextprotocol.io/clients
https://modelcontextprotocol.io/quickstart/client
https://modelcontextprotocol.io/quickstart/server
https://github.com/modelcontextprotocol/servers?tab=readme-ov-file
MCP Server的三類能力:
- 工具類(Tools)—— 模型的「智能外設」
供模型調用的函數或服務,用於執行特定任務。如一個天氣查詢工具,獲取指定城市的天氣信息。
- 資源類(Resources)——模型的「知識庫」
供模型讀取的數據源,如文件數據或 API 響應內容,為模型提供了豐富的上下文信息,增強了模型的理解能力。
- 提示詞(Prompts)——模型的「操作指南」
預先編寫的模板,旨在幫助用户完成特定的任務,通常是為了優化工具或資源的使用,提供一種更高效、更準確的交互方式。
MCP Client和Server之間的三種通訊方式:
- STDIO 傳輸
MCP Server運行在本地。
通過標準輸入(stdin)和標準輸出(stdout)建立雙向通信,1對1服務。
- SSE 傳輸
MCP Server運行在本地或遠程運行。
通過服務器發送事件協議(SSE)進行通信,支持N對1服務。
在 2024-11-05 版本廢棄,被 Streamable HTTP 替代,後者將 SSE 作為可選的流式傳輸機制納入其中。
- Streamable HTTP 傳輸
MCP Server運行在本地或遠程運行。
通過可流式HTTP傳輸協議通信,支持N對1服務。
支持流式傳輸,適合大數據量場景,提供更靈活的傳輸能力
2.2 MCP 流程
文心快碼Comate是百度基於文心大模型開發的智能代碼助手,旨在通過AI技術重構編程流程,提升開發效率與代碼質量。目前Comate不僅支持智能代碼生成、單元測試生成等功能,還支持接入外部MCP Server與大模型進行交互。
以在文心快碼Comate裏通過BaikalDB MCP Server對BaikalDB數據進行查詢分析舉例:
1. MCP Host:Comate Desktop 作為 Host,負責接收提問【分析42601969用户在 2023-3月每天的轉化總數,按照時間升序排序,用折線圖展示,並分析趨勢走向 】並與大模型交互。大模型解析提問,並生成對應的SQL。
2. MCP Client:當大模型決定需要baikaldb\_mcp/read\_query Tool,Comate 中內置的 MCP Client 會被激活。這個Client負責與BaikalDB MCP Server建立鏈接並調用read_query工具。
3. MCP Server:BaikalDB MCP Server被調用,接收、執行查詢語句,最終返回SQL執行結果。
完整執行流程:你的問題 → Comate Desktop → 大模型 → 需要查詢BaikalDB表,並生成對應SQL → MCP Client 連接 → BaikalDB MCP Server → 執行SQL並返回結果 → Comate生成回答 → 生成折線圖。
MCP架構設計使得如Comate等LLM應用,可以在不同場景下靈活調用各種工具和數據源,而開發者只需專注於開發對應的 MCP Server,無需關心 Host 和 Client 的實現細節。
03 BaikalDB MCP Server
3.1 BaikalDB MCP Server主要功能
BaikalDB MCP Server提供了以下功能,支持大模型直接和BaikalDB數據庫進行交互:
- 工具類(Tools):大模型可以根據上下文按需調取的直接和BaikalDB交互的工具。
- 鏈接操作:鏈接到指定的BaikalDB庫
connect_baikaldb:給定鏈接信息(包括host,port,username,password,database),連接到對應的BaikalDB數據庫,使用過程中支持動態切換不同的BaikalDB集羣。
- 查詢操作:包括獲取庫表信息,執行SELECT/DML SQL,分析SQL索引使用掃描量等。
show_all_databases:獲取所有的數據庫列表信息。
db_overview:獲取指定數據庫中所有表的概覽信息。
table_overview:獲取指定表的概覽信息,包括:表結構(show create table)、表示例數據(select * from table limit 3)。
read_query:執行select sql並返回csv結果數據,大模型拿到結果可以進行智能分析、智能繪圖等等。
write_query:執行建刪表、插入刪除變更等dml sql並返回操作結果。
analyze_select_query:分析查詢SQL執行情況:使用的索引,索引掃描/過濾/反查行數等,支持大模型進行索引分析推薦。
- 模板操作(優化複雜場景使用):支持預先導入模板SQL(如百度智能雲推出的Sugar BI SQL模板),幫助大模型理解業務邏輯,後續大模型可在模板SQL基礎上改寫查詢分析,並支持基於模板進行二次查詢(如再次聚合),不同BaikalDB用户之間模板不共享。
get_all_bi_sql_template_list:查詢當前BaikalDB用户已導入的SQL模板列表。
get_bi_sql_template_detail:獲取SQL模板詳細信息,包括SQL模板,相關表Schema等。
add_bi_sql_template:指定模板説明,模板SQL等,添加新的SQL模板。
delete_bi_sql_template:刪除指定的SQL模板。
2. 資源類 (Resources) 和 提示詞 (Prompts):
- 目前BaikalDB MCP Server暫未定義資源和提示詞,未來會根據使用場景靈活添加,以更好的引導大模型和BaikalDB進行交互。
通過以上工具,BaikalDB MCP Server使得大模型能自主的查詢/操作數據庫,進行多輪數據智能分析,並且可以結合大模型和其他MCP能力,並高效的通過多種形式呈現分析結果(如Excel文本,繪製圖表等)。
3.2 BaikalDB MCP Server應用場景
BaikalDB MCP Server擁有以上能力後,就可以在以下場景中進行使用:
- 實時數據分析和智能報表
- 大模型可以實時查詢BaikalDB的業務數據,生成可視化報表,並可結合歷史上下文生成分析報告或者建議。
- 多數據源聯邦查詢分析
- 通過MCP支持大模型同時訪問BaikalDB和其他數據源(如知識庫、Mysql等),實現聯邦分析。
- 開發測試提效
- 在開發測試過程中,通過自然語言交互,建刪改表、增刪改查、構造測試數據、分析SQL執行情況等,不用額外切多個窗口執行SQL操作。
04 BaikalDB MCP Server使用
BaikalDB MCP Server使得BaikalDB不單是個高性能的分佈式數據庫,還是大模型的分析執行插件,使得用户不再需要任何開發,即可對BaikalDB存儲的數據進行智能分析。
4.1 Comate 配置
以Comate舉例:按照以下圖示步驟,將BaikalDB MCP Server json配置添加到Comate MCP配置文件中,即可以在Comate中使用大模型操作BaikalDB數據庫。當然後續我們會嘗試將BaikalDB MCP Server發佈到MCP倉庫,使得配置更簡單!
BaikalDB MCP Server Json配置如下:
{
"mcpServers": {
"baikaldb_mcp": {
"transport": "sse/streamableHttp",
"url": "BaikalDB MCP Server URL",
"headers": {},
"timeout": 50
}
}
}
4.2 Demo 演示
示例1:智能分析
下方視頻展示了,在Comate中用自然語言對數據庫數據進行智能分析和圖表展示。
https://www.bilibili.com/video/BV1nKJyzdEc1/?page=1
示例2:開發測試提效
下方視頻展示了,開發測試過程中的智能建表、導數、SQL執行分析、索引推薦等。
https://www.bilibili.com/video/BV1cKJyzdEMt/?page=1
示例3:基於模板智能分析
下方視頻展示了,在複雜業務場景中,通過預先導入的BI SQL模板進行更高效準確的智能分析。
https://www.bilibili.com/video/BV1E3JyzpELF/?page=1
05 總結
BaikalDB MCP Server的核心價值在於打破了數據庫數據的信息壁壘,構建了一條完整的智能數據處理鏈路,實現了從自然語言解析到業務建議輸出的端到端能力:
- 自然語言理解:將非結構化查詢轉化為結構化意圖。
- 數據庫操作:自動生成並執行SQL語句。
- 數據分析:對查詢結果進行多維解讀並生成可執行建議。
但是也存在一些問題:
- SQL生成準確性高度依賴元數據質量(如表結構、字段註釋)。
- 複雜業務邏輯描述困難。
- 大模型在長上下文中的注意力分配問題。
當然,隨着大模型推理能力的持續提升和MCP協議生態的完善,這種數據智能範式將在金融風控、供應鏈優化、智能客服等複雜業務場景中展現出更大的價值潛力。