狠狠色丁香婷婷综合尤物/久久精品综合一区二区三区/中国有色金属学报/国产日韩欧美在线观看 - 国产一区二区三区四区五区tv

LOGO OA教程 ERP教程 模切知識(shí)交流 PMS教程 CRM教程 開發(fā)文檔 其他文檔  
 
網(wǎng)站管理員

數(shù)據(jù)庫行業(yè)第二春來了,AI 應(yīng)用正通過模型上下文協(xié)議(MCP)悄悄接管數(shù)據(jù)庫

admin
2025年4月1日 22:53 本文熱度 139

數(shù)據(jù)庫行業(yè)第二春來了:AI應(yīng)用通過MCP接管兩大國產(chǎn)數(shù)據(jù)庫PolarDB & OB

模型上下文協(xié)議(MCP) 是一種開放協(xié)議,可實(shí)現(xiàn) LLM 應(yīng)用程序與外部數(shù)據(jù)源和工具之間的無縫集成。無論您是構(gòu)建 AI 驅(qū)動(dòng)的 IDE、增強(qiáng)聊天界面還是創(chuàng)建自定義 AI 工作流,MCP 都提供了一種標(biāo)準(zhǔn)化方法,可將 LLM 與所需的上下文連接起來。

如果我們需要將數(shù)據(jù)庫接入AI應(yīng)用, 讓大模型來管理數(shù)據(jù)庫, 理論上我們只需要以下4種模塊即可:

  • 支持call tools的大模型
  • 一款支持大模型和mcp client的應(yīng)用
  • 數(shù)據(jù)庫相關(guān)的mcp server , (mcp server里需要定義清楚與你期望的數(shù)據(jù)庫管理行為相關(guān)的: 資源、工具、prompt)
  • 數(shù)據(jù)庫

mcp client和mcp server之間的消息需遵循JSON-RPC 2.0 ( https://www.jsonrpc.org/specification )

流程圖如下:

MCP 目前為客戶端 - 服務(wù)端通信定義了兩種標(biāo)準(zhǔn)傳輸機(jī)制:

  • stdio,通過標(biāo)準(zhǔn)輸入和標(biāo)準(zhǔn)輸出進(jìn)行通信
  • HTTP with Server-Sent Events(SSE)

客戶端應(yīng)該盡可能支持 stdio。如果不支持sse, 有個(gè)開源項(xiàng)目mcp proxy, 可以把sse轉(zhuǎn)換為stdio通信.

  • https://modelcontextprotocol.io/docs/concepts/transports
  • https://github.com/sparfenyuk/mcp-proxy

例如Claude Desktop這款應(yīng)用加入只支持stdio通信, 那么就可以用mcp-proxy來使Claude Desktop能夠和支持sse的遠(yuǎn)程mcp server進(jìn)行交互.

或者反之, 如果mcp server只支持stdio, 為了讓遠(yuǎn)程AI應(yīng)用能與之通信, 也可以使用mcp proxy.

如何開發(fā)mcp server/client:

  • https://modelcontextprotocol.io/quickstart/server
  • https://modelcontextprotocol.io/quickstart/client

為什么說是第二春呢?門檻降低了,你不用懂?dāng)?shù)據(jù)庫,你只需要?jiǎng)觿?dòng)手,LLM會(huì)通過mcp幫你完成需求;使用數(shù)據(jù)庫的頻率/流量變大了,一方面是降低門檻后擴(kuò)展的用戶群體邊界,另一方面是用戶從人擴(kuò)展到了AI Agent。流量變大,不就相當(dāng)于第二春么!

下面我選擇一款A(yù)I應(yīng)用, 通過mcp把兩大國產(chǎn)數(shù)據(jù)庫PolarDB & OB與AI完美整合.

兩大國產(chǎn)數(shù)據(jù)庫PolarDB & OB通過MCP與AI完美整合

  • 數(shù)據(jù)庫PolarDB和Oceanbase, 搭建方法很簡單, 參考如下:
  • mcp server
    • 例如天舟老哥開源的dbhub. https://github.com/bytebase/dbhub
    • postgresql mcp server: https://github.com/modelcontextprotocol/servers/tree/main/src/postgres
    • oceanbase 用mysql mcp server也能連. https://github.com/designcomputer/mysql_mcp_server
    • oceanbase 自帶了mcp server. https://github.com/oceanbase/mcp-oceanbase
    • PolarDB 因?yàn)榧嫒軵ostgreSQL, 所以可以選擇支持PostgreSQL的mcp server即可,
    • 更多mcp server項(xiàng)目參考: https://github.com/modelcontextprotocol/servers
  • 選擇一款A(yù)I應(yīng)用: ollama ,  別問我為什么不用Claude desktop, 我們不在服務(wù)區(qū)內(nèi). 
  • 因?yàn)閛llama目前不支持mcp client, 無法和mcp server進(jìn)行通信. 所以選擇oterm這個(gè)開源項(xiàng)目, 它能利用ollama, 并支持mcp.
    • https://ggozad.github.io/oterm/app_config/
    • https://github.com/ggozad/oterm/tree/main/docs

準(zhǔn)備工作就緒就可以開干了.

1、參照下面兩篇文章構(gòu)建PolarDB和Oceanbase實(shí)例.

在Oceanbase中創(chuàng)建測(cè)試用戶digoal, 允許從任何地址連接

CREATE USER 'digoal' IDENTIFIED BY 'test';  
GRANT ALL PRIVILEGES ON *.* TO 'digoal'@'%' IDENTIFIED BY 'test';  

在PolarDB中創(chuàng)建測(cè)試用戶digoal, 允許從任何地址連接

create role digoal login superuser encrypted password 'test';  
  
# pg_hba.conf  
~/primary/pg_hba.conf  
host all all 0.0.0.0/0 md5  

假設(shè)PolarDB和OB的監(jiān)聽分別為:

OB: 172.17.0.2:2881   
PolarDB: 172.17.0.3:5432   
  
在容器內(nèi)也可以訪問這個(gè)域名: "host.docker.internal" 指向宿主機(jī)地址, 前提是你的數(shù)據(jù)庫容器啟動(dòng)時(shí)已將port expose到宿主機(jī)  

2、配置數(shù)據(jù)庫的mcp server

PolarDB使用bytebase開源的dbhub, 或postgresql mcp server

cd ~  
docker pull mcp/postgres  
docker pull bytebase/dbhub   

Oceanbase使用自帶的mcp或mysql mcp

cd ~  
git clone --depth 1 https://github.com/oceanbase/mcp-oceanbase  
git clone --depth 1 https://github.com/designcomputer/mysql_mcp_server  

3、拉起ollama服務(wù).

OLLAMA_HOST=0.0.0.0:11434 OLLAMA_KEEP_ALIVE=-1 nohup ollama serve >> ~/.ollama.log 2>&1 &  

目前已拉去哪些模型? 注意只有支持tools的模型能和mcp整合. 例如 qwen2.5:1.5b

$ ollama list  
NAME                             ID              SIZE      MODIFIED       
ds-qwen2.5-1.5b-digoal:latest    2c6aaa8a497c    3.6 GB    4 weeks ago       
qwen2.5:1.5b                     65ec06548149    986 MB    4 weeks ago       
deepseek-r1:7b                   0a8c26691023    4.7 GB    5 weeks ago       
qwen_1.5b_test1:latest           682ad25636bd    1.1 GB    6 weeks ago       
deepseek-r1:1.5b                 a42b25d8c10a    1.1 GB    6 weeks ago       
deepseek-r1:14b                  ea35dfe18182    9.0 GB    2 months ago      
mxbai-embed-large:latest         468836162de7    669 MB    4 months ago   

如何查詢模型是否支持tools call? /show modelfile

ollama run qwen2.5:1.5b  
/show modelfile  
  
...  
  
FROM /Users/digoal/.ollama/models/blobs/sha256-183715c435899236895da3869489cc30ac241476b4971a20285b1a462818a5b4  
TEMPLATE """{{- if .Messages }}  
{{- if or .System .Tools }}<|im_start|>system  
{{- if .System }}  
{{ .System }}  
{{- end }}  
{{- if .Tools }}  

# Tools  

You may call one or more functions to assist with the user query.  

You are provided with function signatures within <tools></tools> XML tags:  
<tools>  
{{- range .Tools }}  
{"
type": "function", "function": {{ .Function }}}  
{{- end }}  
</tools>  
  
...  

4、安裝并配置oterm

# 假設(shè)你已升級(jí)到python 3.12.x  
pip install oterm  

配置oterm , 增加mcpServers設(shè)置.

# command + args 從命令行運(yùn)行的命令得到.    
# 例如: python /Users/digoal/mysql_mcp_server/src/mysql_mcp_server/server.py   
# 例如: docker run -i --rm bytebase/dbhub --transport stdio --dsn postgres://digoal:test@172.17.0.3:5432/postgres?sslmode=disable   

$ cat /Users/digoal/Library/Application\ Support/oterm/config.json   
{"theme""textual-dark""splash-screen"true,  
"mcpServers": {  
    "oceanbase": {  
      "command""python",  
      "args": [  
        "/Users/digoal/mcp-oceanbase/src/oceanbase_mcp_server/server.py"
      ],  
      "env": {  
        "OB_HOST""localhost",  
        "OB_PORT""2881",  
        "OB_USER""digoal",  
        "OB_PASSWORD""test",  
        "OB_DATABASE""test"
      }  
    },  
    "dbhub": {  
      "command""docker",  
      "args": [  
        "run""-i""--rm""bytebase/dbhub""--transport""stdio""--dsn""postgres://digoal:test@172.17.0.3:5432/postgres?sslmode=disable"
      ]  
    },  
    "PolarDB": {  
      "command""docker",  
      "args": [  
        "run",   
        "-i",   
        "--rm",   
        "mcp/postgres",   
        "postgresql://digoal:test@172.17.0.3:5432/postgres?sslmode=disable"]  
    },  
    "mysql": {  
      "command""python",  
      "args": [  
        "/Users/digoal/mysql_mcp_server/src/mysql_mcp_server/server.py"
      ],  
      "env": {  
        "MYSQL_HOST""localhost",  
        "MYSQL_PORT""2881",  
        "MYSQL_USER""digoal",  
        "MYSQL_PASSWORD""test",  
        "MYSQL_DATABASE""test"
      }  
    }  
  }  
}  

啟動(dòng)oterm

oterm  

新建chat對(duì)話框, 配置tools, 提示詞等.

在對(duì)話框中使用自然語言向大模型發(fā)起請(qǐng)求, 調(diào)用對(duì)應(yīng)的tools, 通過mcp server向數(shù)據(jù)庫發(fā)起SQL.

前面都還好, 到后面不知道為什么就犯渾不調(diào)用tools執(zhí)行了. 看樣子還是要換Claude desktop試一試.

?更多讓AI真正能干DBA活的function或工作流定義可以參考這個(gè)開源項(xiàng)目定義“劇本”的做法: https://github.com/xataio/agent

題外話

接下里的AI前端應(yīng)用應(yīng)該都會(huì)陸續(xù)加入mcp的能力, 讓AI和更多的應(yīng)用連接起來才能真正發(fā)揮AI的能力, 實(shí)現(xiàn)AI驅(qū)動(dòng)/賦能萬物.

但是這樣的AI應(yīng)用入口會(huì)在哪里?

C端應(yīng)用可能出現(xiàn)在蘋果手機(jī)端?

企業(yè)應(yīng)用入口呢? Oracle? salesforce? ITIL?

參考

https://github.com/xataio/agent

https://modelcontextprotocol.io/introduction

https://modelcontextprotocol.io/docs/concepts/transports

https://spec.modelcontextprotocol.io/

https://github.com/modelcontextprotocol/python-sdk

https://github.com/modelcontextprotocol/quickstart-resources/blob/main/mcp-client-python/client.py

https://github.com/oceanbase/mcp-oceanbase/blob/main/src/oceanbase_mcp_server/server.py

https://github.com/punkpeye/awesome-mcp-clients/?tab=readme-ov-file#what-is-mcp

https://github.com/evalstate/fast-agent

https://llmindset.co.uk/resources/fast-agent/

https://mcp.so/client/mcp_client_ollama/georgi-terziyski?tab=content

https://github.com/georgi-terziyski/mcp_client_ollama/tree/749dbe0e8f91e05831c159d64908141e7808b824

https://modelcontextprotocol.io/docs/concepts/transports

https://github.com/bytebase/dbhub

https://github.com/sparfenyuk/mcp-proxy

https://github.com/ollama/ollama/issues/7865

https://ggozad.github.io/oterm/app_config/

https://github.com/mark3labs/mcphost

https://github.com/bytebase/dbhub/issues/9

https://github.com/designcomputer/mysql_mcp_server

https://mcp.so/server/mcp_client_ollama?tab=content

https://github.com/oceanbase/mcp-oceanbase/blob/main/doc/oceanbase_mcp_server.md

閱讀原文:原文鏈接


該文章在 2025/4/2 14:53:23 編輯過
關(guān)鍵字查詢
相關(guān)文章
正在查詢...
點(diǎn)晴ERP是一款針對(duì)中小制造業(yè)的專業(yè)生產(chǎn)管理軟件系統(tǒng),系統(tǒng)成熟度和易用性得到了國內(nèi)大量中小企業(yè)的青睞。
點(diǎn)晴PMS碼頭管理系統(tǒng)主要針對(duì)港口碼頭集裝箱與散貨日常運(yùn)作、調(diào)度、堆場(chǎng)、車隊(duì)、財(cái)務(wù)費(fèi)用、相關(guān)報(bào)表等業(yè)務(wù)管理,結(jié)合碼頭的業(yè)務(wù)特點(diǎn),圍繞調(diào)度、堆場(chǎng)作業(yè)而開發(fā)的。集技術(shù)的先進(jìn)性、管理的有效性于一體,是物流碼頭及其他港口類企業(yè)的高效ERP管理信息系統(tǒng)。
點(diǎn)晴WMS倉儲(chǔ)管理系統(tǒng)提供了貨物產(chǎn)品管理,銷售管理,采購管理,倉儲(chǔ)管理,倉庫管理,保質(zhì)期管理,貨位管理,庫位管理,生產(chǎn)管理,WMS管理系統(tǒng),標(biāo)簽打印,條形碼,二維碼管理,批號(hào)管理軟件。
點(diǎn)晴免費(fèi)OA是一款軟件和通用服務(wù)都免費(fèi),不限功能、不限時(shí)間、不限用戶的免費(fèi)OA協(xié)同辦公管理系統(tǒng)。
Copyright 2010-2025 ClickSun All Rights Reserved