
转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。
前言
ClickHouse是一款高性能的列式存储 SQL 数据库管理系统(DBMS),用于联机分析处理(OLAP)。它既可以作为开源软件,也可以作为云服务提供。
它支持一种基于 SQL 的声明式查询语言,在很多方面与 ANSI SQL 标准保持一致。支持的查询子句包括 GROUP BY、ORDER BY、FROM 中的子查询、JOIN 子句、IN 运算符、窗口函数 以及标量子查询。
之前在试验过的开源可观测工具SigNoz中,就用了ClickHouse。
ClickHouse部署
#!/bin/bash
docker run -d \
-e CLICKHOUSE_DB=sredata \
-e CLICKHOUSE_USER=sre \
-e CLICKHOUSE_PASSWORD=123456 \
-v /root/clickhouse/ck_logs:/var/log/clickhouse-server \
-v /root/clickhouse/ck_data/clickhouse:/var/lib/clickhouse \
-p 8123:8123 \
-p 9000:9000 \
--name clickhouse-server \
--ulimit nofile=262144:262144 \
--privileged=true \
clickhouse/clickhouse-server:latest
启动之后进入容器查看用户名、密码、库是否创建成功:

验证成功后,一个clickhouse服务就部署完了,接下来部署MCP服务,为AI对接开通窗口。
MCP服务部署
MCP服务部署可以参考官方文档https://github.com/ClickHouse/mcp-clickhouse,它提供了clickhouse对接AI的功能,支持3个协议:"stdio", "http", "sse"。默认是"stdio"协议,如果需要替换为"http"或者"sse"协议,需要设置环境变量CLICKHOUSE_MCP_SERVER_TRANSPORT。
使用docker启动mcp服务,并指定对接AI的协议为sse:
#!/bin/bash
docker run -d \
-e CLICKHOUSE_HOST=10.0.0.101 \
-e CLICKHOUSE_PORT=8123 \
-e CLICKHOUSE_SECURE=false \
-e CLICKHOUSE_USER=sre \
-e CLICKHOUSE_PASSWORD=123456 \
-e CLICKHOUSE_DATABASE=sredata \
-e CLICKHOUSE_MCP_SERVER_TRANSPORT=sse \
-e CLICKHOUSE_MCP_BIND_HOST=0.0.0.0 \
-e CLICKHOUSE_MCP_BIND_PORT=8000 \
-e CLICKHOUSE_MCP_QUERY_TIMEOUT=30 \
-e MALLOC_CONF=background_thread:false \
-e JEMALLOC_MAX_BACKGROUND_THREADS=0 \
-p 8000:8000 \
--name mcp-clickhouse \
--ulimit nofile=262144:262144 \
--privileged=true \
mcp/clickhouse:latest
启动后,可以查看日志显示协议:

测试访问url:

出现这个结果,就是正常的了。
MCP服务就算是部署好了,可以在AI平台通过MCP远程对接clickhouse数据库了,可以做数据查询等工作。
遇到的问题
1. 启动clickhouse报错时区问题,容器无法启动
这个时区问题centos7上有遇到,但在龙蜥系统上没有出现过这个问题,容器启动后报错如下:

解决办法:需要在启动脚本里面加上--privileged=true,使用特权模式启动即可。
2. MCP的启动报错:

解决办法:同问题1一样,在龙蜥系统上没有遇到,但是在centos7系统遇到了,需要在启动容器的时候加上--privileged=true使用特权模式启动。
3. MCP服务访问路径问题
官方文档https://github.com/ClickHouse/mcp-clickhouse上写了http协议下,MCP的看路径是/mcp,这里稍微比较容易被误导:

如果使用的是sse协议,部署好mcp之后,如果没注意查看mcp的日志,就可能会在这里卡住,因为sse协议下,mcp这个路径是不通的:

访问的正确URL是/sse(如前截图)

2693

被折叠的 条评论
为什么被折叠?



