国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力 原創(chuàng)

發(fā)布于 2025-9-10 08:44
瀏覽
0收藏

在本教程中,我將詳細(xì)介紹如何在 Dify 平臺(tái)中通過(guò) MCP 協(xié)議連接 ClickHouse 數(shù)據(jù)庫(kù),實(shí)現(xiàn)數(shù)據(jù)分析和可視化功能。這個(gè)集成方案可以幫助開(kāi)發(fā)者在 AI 應(yīng)用中輕松訪(fǎng)問(wèn)和分析大規(guī)模數(shù)據(jù),提升 LLM 應(yīng)用的數(shù)據(jù)處理能力。

Dify 環(huán)境配置

Dify 安裝

本文采用 Dify 社區(qū)版的 Docker Compose 部署方式。版本演進(jìn)較快,可能與當(dāng)前記錄方式有差異。以官方手冊(cè)為準(zhǔn)。

Docker Compose 部署: https://docs.dify.ai/zh-hans/getting-started/install-self-hosted/docker-compose

安裝 Dify 之前, 請(qǐng)確保你的機(jī)器已滿(mǎn)足最低安裝要求:CPU >= 2 Core & RAM >= 4 GiB

(1)克隆 Dify 源代碼至本地環(huán)境。

git clone [https://github.com/langgenius/dify.git](https://github.com/langgenius/dify.git) --branch 0.15.3

(2)啟動(dòng) Dify。

cd dify/docker
cp .env.example .env

# 啟動(dòng) Docker 容器,根據(jù)你系統(tǒng)上的 Docker Compose 版本,選擇合適的命令來(lái)啟動(dòng)容器。
docker-compose up -d

注意:由于 Dify 的 Docker 容器內(nèi)容較多,如果像本文一樣,搭建 RagFlow 后又搭建 Dify,很容易出現(xiàn)沖突情況,需要再 Docker 容器上加上命名空間。

docker-compose -p dify up -d

??docker-compose -p?? 命令用于在 Docker Compose 中指定項(xiàng)目的名稱(chēng),覆蓋默認(rèn)的目錄名作為項(xiàng)目名,基本用法。

docker-compose -p <項(xiàng)目名稱(chēng)> [其他命令]
例如:# 啟動(dòng)項(xiàng)目并指定名稱(chēng)
docker-compose -p myproject up -d

(3)配置 Dify

如果需要 Dify 啟動(dòng)內(nèi)容,.env 還需要看一下的,里面可以配置的內(nèi)容還是比較豐富的。

(4)檢查安裝

檢查是否所有容器都正常運(yùn)行:

docker compose ps

如果有問(wèn)題,需要單獨(dú)查看報(bào)錯(cuò)情況,目前兩次安裝的不同版本都可以直接啟動(dòng)成功。

(5)訪(fǎng)問(wèn)系統(tǒng)

# 本地環(huán)境
http://localhost/install

# 本地環(huán)境
http://localhost

默認(rèn)是 80 端口,如果端口沖突,需要配置端口號(hào),在 .env 配置;

模型配置

大模型使用的是遠(yuǎn)端模型,測(cè)試的 LLM 為:

  • 阿里云百煉:https://bailian.console.aliyun.com/
  • DeepSeek 開(kāi)放平臺(tái):https://platform.deepseek.com/

申請(qǐng)過(guò)程和本文主要內(nèi)容關(guān)聯(lián)不大,不進(jìn)行展開(kāi)。

MCP 配置

本文在 Dify 中連接 MCP Server,使用的 MCP 工具是 Dify 市場(chǎng)的:MCP SSE 插件。

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

Dify市場(chǎng)中的MCP SSE插件界面

MCP SSE:通過(guò) HTTP with SSE 傳輸使用 MCP 協(xié)議來(lái)發(fā)現(xiàn)和調(diào)用工具。

插件主頁(yè):https://marketplace.dify.ai/plugins/junjiem/mcp_sse

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

MCP SSE插件詳細(xì)配置頁(yè)面

插件支持 sse 方式訪(fǎng)問(wèn) MCP Server,不支持本地方式。

http://localhost:8000/sse

MCP服務(wù)配置,支持多個(gè)MCP服務(wù)。例如:

{
  "server_name1": {
    "url": "http://127.0.0.1:8000/sse",
    "headers": {},
    "timeout": 60,
    "sse_read_timeout": 300
  },
  "server_name2": {
    "url": "http://127.0.0.1:8001/sse"
  }
}

版本演進(jìn)較快,如果有版本差異,可以查看新版本的使用說(shuō)明。

ClickHouse MCP

ClickHouse 官方 Github 提供了一個(gè) MCP Server 版本:ClickHouse MCP Server

地址:https://github.com/ClickHouse/mcp-clickhouse

(1)工具支持

1.run_select_query:在您的Clickhouse群集上執(zhí)行SQL查詢(xún)。使用說(shuō)明:

a.輸入:sql(字符串):執(zhí)行的SQL查詢(xún)。

b.所有ClickHouse查詢(xún)均使用readonly = 1運(yùn)行,以確保它們安全。

2.list_databases:在您的Clickhouse群集上列出所有數(shù)據(jù)庫(kù)。

3.list_tables:在數(shù)據(jù)庫(kù)中列出所有表。使用說(shuō)明

4.輸入:database(字符串):數(shù)據(jù)庫(kù)的名稱(chēng)。

(2)配置說(shuō)明

將以下變量添加到存儲(chǔ)庫(kù)根的??.env??文件中。

CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse

(3)安裝依賴(lài)

運(yùn)行??uv sync??以安裝依賴(lài)項(xiàng)(Python 相關(guān)環(huán)境),值得注意的是,Python 版本是:3.13

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

MCP服務(wù)配置示例和多服務(wù)器設(shè)置界面

版本低的話(huà),需要升級(jí) Python 版本,最新版本是 3.13.2,

注意:3.13 的先行版本會(huì)報(bào)錯(cuò),如果使用是 pyenv 或者 brew 安裝,同樣需要升級(jí)到較新版本。

(4)運(yùn)行服務(wù)

項(xiàng)目根目錄使用如下命令運(yùn)行服務(wù)

mcp dev mcp_clickhouse/mcp_server.py

其中:mcp 需要 node 環(huán)境。

啟動(dòng)后,安裝命令行中提示的地址進(jìn)行連通性驗(yàn)證,如果 list_databases 工具可用,證明連通性已經(jīng)可以。

MCP Proxy

由于 ClickHouse MCP Server 當(dāng)前所用版本(20250406)無(wú) SSE 協(xié)議支持,所以只能使用代理進(jìn)行協(xié)議轉(zhuǎn)換。

  • 代理工具:mcp-proxy
  • 項(xiàng)目介紹:Connect to MCP servers that run on SSE transport, or expose stdio servers as an SSE server using the MCP Proxy server.
  • 項(xiàng)目地址:https://github.com/sparfenyuk/mcp-proxy

工具支持兩種模式:

  • stdio to SSE
  • SSE to stdio

本文使用的是:SSE to stdio,原理示意圖如下:

ClickHouse數(shù)據(jù)庫(kù)連接配置界面。

安裝環(huán)境后,通過(guò)命令啟動(dòng)。

mcp-proxy --sse-host=0.0.0.0 --sse-port=8080 --pass-environment -- mcp run mcp_clickhouse/mcp_server.py

Dify 通過(guò) UI 進(jìn)行配置。

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

ClickHouse查詢(xún)示例和數(shù)據(jù)結(jié)構(gòu)展示

RAG 配置

為了讓大模型更好的理解 SQL,可以將 ClickHouse 的建表語(yǔ)句導(dǎo)入到了知識(shí)庫(kù)中。

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

ClickHouse與MCP集成的數(shù)據(jù)流程圖

官方手冊(cè)地址:https://docs.dify.ai/zh-hans/guides/knowledge-base

由于知識(shí)庫(kù)支持的格式為:

  • 長(zhǎng)文本內(nèi)容(TXT、Markdown、DOCX、HTML、JSON 甚至是 PDF)
  • 結(jié)構(gòu)化數(shù)據(jù)(CSV、Excel 等)
  • 在線(xiàn)數(shù)據(jù)源(網(wǎng)頁(yè)爬蟲(chóng)、Notion 等)

導(dǎo)入 ClickHouse DDL 時(shí),可以使用 TXT 格式。

ECharts 圖表插件

ECharts圖表生成是一個(gè)用于生成可視化ECharts圖表的工具,你可以通過(guò)它來(lái)生成柱狀圖、折線(xiàn)圖、餅圖等各類(lèi)圖表。

項(xiàng)目地址:https://marketplace.dify.ai/plugins/langgenius/echarts

工作流配置

工作流基本配置

Dify 工作流分為兩種類(lèi)型:

  • Chatflow:面向?qū)υ?huà)類(lèi)情景,包括客戶(hù)服務(wù)、語(yǔ)義搜索、以及其他需要在構(gòu)建響應(yīng)時(shí)進(jìn)行多步邏輯的對(duì)話(huà)式應(yīng)用程序。
  • Workflow:面向自動(dòng)化和批處理情景,適合高質(zhì)量翻譯、數(shù)據(jù)分析、內(nèi)容生成、電子郵件自動(dòng)化等應(yīng)用程序。

本文使用的方式是 Workflow,界面截圖參考官網(wǎng)如下:

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

Dify應(yīng)用中集成ClickHouse的實(shí)際效果展示

工作流配置文檔較多,使用方式也較為靈活,如下是本文在配置過(guò)程中參考的一些文檔,可以對(duì)工作流有大體的了解。

如果需要對(duì)工作流中的每一個(gè)組件有進(jìn)一步理解,可以參考官方手冊(cè)。

  • 工作流官方手冊(cè): https://docs.dify.ai/zh-hans/guides/workflow

本文使用的 SQL Prompt 是

你是一名專(zhuān)業(yè)的數(shù)據(jù)分析師和DBA。
理解用戶(hù)的原始需求,用戶(hù)需求是:{{#sys.query#}}
結(jié)合知識(shí)庫(kù)中提供的數(shù)據(jù)表結(jié)構(gòu)信息
輸出標(biāo)準(zhǔn)的查詢(xún) ClickHouse SQL 語(yǔ)句,供 ClickHouse 直接執(zhí)行。

要求:
1. 返回內(nèi)容:僅返回標(biāo)準(zhǔn)查詢(xún) SQL 語(yǔ)句;
2. 返回內(nèi)容:不要添加其他任何內(nèi)容,不要添加格式內(nèi)容,如:query、SQL 等;
3. 查詢(xún)語(yǔ)句的表名前,需要添加數(shù)據(jù)庫(kù)名稱(chēng)。

協(xié)議兼容

在 Dify 和 ClickHouse 進(jìn)行互通時(shí),經(jīng)常出現(xiàn)格式不兼容的情況。可以使用以下工具代碼進(jìn)行格式轉(zhuǎn)換:

(1)工具代碼:去掉 Markdown SQL 格式

去掉大模型返回的 markdown。

def main(arg1: str) -> dict:
    # 去掉開(kāi)頭的 ```sql
    if arg1.startswith("```sql"):
        arg1 = arg1[len("```sql"):]
    # 去掉結(jié)尾的 ```
    if arg1.endswith("```"):
        arg1 = arg1[:-len("```")]
    # 將所有的 \n 替換為空格
    arg1 = arg1.replace("\n", " ")
    # 去掉可能的前后空格
    arg1 = arg1.strip()
    return {
        "result": arg1
    }

(2)工具代碼:JSON 轉(zhuǎn) ECharts

ClickHouse MCP 返回格式為 JSON 格式,如果想給 ECharts 插件使用,同樣需要進(jìn)行轉(zhuǎn)換。本文試用了使用大模型進(jìn)行格式轉(zhuǎn)換,效果不佳,速度還慢,固定格式還是代碼來(lái)的快。

import json

def main(arg1: str) -> dict:

    # 結(jié)果存儲(chǔ)
    result = {
    "result-1": "",  # 存儲(chǔ) trip_mile_group 的值
    "result-2": ""   # 存儲(chǔ) vin_count 的值
    }

    # 解析文本內(nèi)容
    text_content = arg1
    # 提取content部分
    content_start = text_content.find("cnotallow=[") + len("cnotallow=[")
    content_end = text_content.find("] isError=")
    content_str = text_content[content_start:content_end]

    # 分割content中的每個(gè)TextContent
    text_contents = content_str.split("), ")

    # 提取每個(gè)TextContent中的text字段并解析JSON
    field_values = {}
    field_names = []

    # 處理第一個(gè)JSON對(duì)象時(shí)提取字段名稱(chēng)
    first_json_processed = False

    for tc in text_contents:
        if tc.startswith("TextContent(type='text', text='"):
            # 提取JSON字符串
            json_str = tc[len("TextContent(type='text', text='"):]
            
            # 如果字符串以 ')結(jié)尾,去掉這部分
            if json_str.endswith("')"):
                json_str = json_str[:-2]
            elifnot tc.endswith(")"): # 處理最后一個(gè)元素,它可能沒(méi)有結(jié)尾的 )
                json_str = json_str
            
            # 處理轉(zhuǎn)義字符
            json_str = json_str.encode().decode('unicode_escape')
            
            # 移除末尾的單引號(hào)(如果有)
            if json_str.endswith("'"):
                json_str = json_str[:-1]
            
            try:
                item = json.loads(json_str)
                
                # 如果是第一個(gè)JSON對(duì)象,提取字段名稱(chēng)
                ifnot first_json_processed:
                    field_names = list(item.keys())
                    # 初始化每個(gè)字段的值列表
                    for field in field_names:
                        field_values[field] = []
                    first_json_processed = True
                
                # 將每個(gè)字段的值添加到相應(yīng)的列表中
                for field in field_names:
                    if field in item:
                        field_values[field].append(str(item[field]))
                    else:
                        field_values[field].append("")
                        
            except json.JSONDecodeError as e:
                print(f"Error parsing JSON: {e}")
                print(f"Problematic JSON string: {json_str}")

    # 將提取的值用分號(hào)連接并存入result
    if len(field_names) >= 2:
        result["result-1"] = ";".join(field_values[field_names[0]])
        result["result-2"] = ";".join(field_values[field_names[1]])
    else:
        print("Warning: Expected at least 2 fields in JSON objects, but found", len(field_names))

    return {
        "result_1": result["result-1"],
        "result_2": result["result-2"]
    }

其他工作流編排內(nèi)容,和業(yè)務(wù)緊密關(guān)聯(lián),可以使用工作流的提供的預(yù)覽與測(cè)試工具進(jìn)行能力驗(yàn)證。

應(yīng)用發(fā)布

調(diào)試完成之后點(diǎn)擊右上角的發(fā)布,可以將該工作流保存并快速發(fā)布成為不同類(lèi)型的應(yīng)用。

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

數(shù)據(jù)可視化結(jié)果展示-ECharts圖表

效果驗(yàn)證

本文使用 Dify 的對(duì)話(huà)框,通過(guò)自然語(yǔ)言的方式,輸入用戶(hù)需求,大模型理解后,輸出 ClickHouse 的 SQL 語(yǔ)句,Dify 通過(guò) MCP 協(xié)議訪(fǎng)問(wèn) ClickHouse 并得到查詢(xún)結(jié)果,根據(jù)結(jié)果生成圖表和數(shù)據(jù)情況分析。

手把手教程:在Dify中通過(guò)MCP連接ClickHouse,解鎖AI數(shù)據(jù)分析新能力-AI.x社區(qū)

數(shù)據(jù)分析結(jié)果和統(tǒng)計(jì)信息展示


本文轉(zhuǎn)載自??AI 博物院?? 作者:longyunfeigu

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
已于2025-9-10 09:54:10修改
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦
免费在线观看黄色网| 色yeye免费人成网站在线观看| 欧美日韩日本国产亚洲在线 | 天天综合一区| 综合网在线视频| 99中文字幕| 天天色 色综合| 午夜久久美女| 久久精品国产综合精品| 午夜精品123| 五月综合网站| 男女在线观看视频| 欧美亚洲免费| 亚洲最新中文字幕| 高清av一区二区三区| 亚洲欧美日韩精品久久奇米色影视| 欧美日本国产一区| 99精品国产高清一区二区| 岛国av免费在线观看| 精品国产免费人成在线观看| 国产精品欧美三级在线观看| 欧美三级理论片| 免费av一区二区| 国内精品视频| 国产精品久久久久久久久粉嫩av| 国产精品97在线| 欧美综合国产| 中文视频一区视频二区视频三区| 不卡av在线免费观看| 欧美一级高清免费播放| av在线成人| 亚洲精品一区二区三区蜜桃下载| 成人在线观看黄| 中文精品久久| 欧美日韩亚洲另类| 亚洲欧洲日本精品| 性伦欧美刺激片在线观看| 日韩欧美一二区| 国产人妻777人伦精品hd| 97成人资源| 五月天亚洲婷婷| 在线手机福利影院| 99国产精品久久久久久久久久| 国产精品v欧美精品v日韩| 粉嫩av一区二区三区在线播放| 日本桃色视频| 久久综合网hezyo| 麻豆精品在线看| 僵尸世界大战2 在线播放| 99re热视频精品| 国产对白在线正在播放| 亚洲综合在线视频| av大全在线| 日韩在线视频观看正片免费网站| www.久久久久.com| 亚洲深夜福利视频| 羞羞答答一区二区| 国产精品久久久久久久久免费看| 亚洲在线视频| 国产精品成人av在线| 欧美日本成人| 日韩有码在线电影| 成人免费看视频网站| 精品欧美一区二区三区精品久久| 91涩漫在线观看| 亚洲成av人在线观看| 午夜av不卡| 久久精品午夜一区二区福利| 99久久久无码国产精品| 国产福利免费在线观看| 99久久久免费精品国产一区二区| 中文字幕中文字幕在线十八区 | 欧美xxxx做受欧美88bbw| 亚洲超碰97人人做人人爱| 国产在线美女| 欧美放荡办公室videos4k| 日本福利片免费看| 久久精品官网| 在线观看免费播放网址成人| 亚洲第一精品自拍| 国产伦精品一区二区三区在线播放| 久久资源中文字幕| 国产精品美女xx| 另类欧美日韩国产在线| 污污网站免费观看| 欧美中文字幕一区二区三区 | 日本中文字幕伦在线观看| 日韩手机在线导航| 亚洲男人在线| 亚洲精品女av网站| 国产精品一区二区黑丝| 成人午夜影院| 精品福利二区三区| 欧美色图五月天| 天堂资源在线亚洲视频| 国产精品久久久久一区二区三区| 爱爱爱免费视频在线观看| 这里只有精品在线观看| 欧美久久综合网| 免费极品av一视觉盛宴| 欧美日韩国产中文精品字幕自在自线| 69av成人| 国产日韩欧美影视| 91色porny在线视频| 99免在线观看免费视频高清| 欧美成人国产va精品日本一级| 亚洲欧洲一区二区天堂久久| 免费裸体美女网站| 日韩欧美一区在线观看| 一本色道久久综合狠狠躁的番外| 亚洲精品中文综合第一页| 亚洲一区二区在线观看视频 | 国产精品自产拍在线观| 精品一区二区日韩| 视频一区二区三区国产| 欧美成人免费观看| 日本欧美一区二区| 在线看的av| 国内精品伊人久久| 国产乱国产乱300精品| av资源在线观看免费高清| 欧美伊久线香蕉线新在线| 国产精品资源网站| 欧美成人hd| 国产精品视频自拍| 国产女主播视频一区二区| 婷婷电影在线观看| 欧美极品jizzhd欧美| 欧美性色xo影院| 妖精一区二区三区精品视频| 2018国产在线| 精品亚洲永久免费精品| 欧美全黄视频| 中文字幕视频在线| 欧美专区国产专区| 国产亚洲污的网站| 欧美一区二区三区婷婷| 99热这里只有精品7| 91精品国产综合久久久久久久| 成人激情开心网| 午夜大尺度福利视频| 欧美人与性动交| 久久午夜老司机| 亚洲日本中文| 美女av免费在线观看| 日韩中文字幕免费视频| 高清不卡一区二区在线| 僵尸再翻生在线观看免费国语| 日本10禁啪啪无遮挡免费一区二区 | 免费看成人人体视频| 国产h视频在线播放| 亚洲女人天堂av| 韩日av一区二区| 欧美xxxx少妇| 亚洲第一综合| 精品福利一二区| 国产一区二区三区日韩| а√天堂资源官网在线资源| 午夜精品一区二区三区四区| 日韩欧美一二区| 爽好久久久欧美精品| 91超碰免费在线| 男人天堂a在线| 欧美老妇交乱视频| 国产精品对白交换视频| 国产传媒欧美日韩成人精品大片| 免费观影入口看日本视频| 国产日韩av在线| 一本大道av伊人久久综合| 在线精品观看| 久久电影网站| 国产毛片久久久久久国产毛片| 亚洲欧美中文字幕| 91小视频在线免费看| 欧美黑人巨大videos精品| 国产网友自拍电影在线 | 欧美一区二区三区图| 一区二区三区免费在线观看| 久久亚洲国产| 免费黄色在线看| 天天操天天干天天玩| 精品国产依人香蕉在线精品| 国产蜜臀97一区二区三区 | 日韩精品极品在线观看| 国产成人综合视频| 欧美三级一区| 免费在线黄色av| 2019国产精品视频| 日韩免费一区二区三区在线播放| 国产69精品久久久久777| 久久亚洲黄色| 邻居大乳一区二区三区| 亚洲国产高清国产精品| 久久天天躁狠狠躁夜夜躁2014| 日韩一区在线看| 91久久午夜| 福利一区三区| 色哟哟在线观看| 97碰在线视频| 国产精品吴梦梦|