ClickHouse MCP Server 是一个用于 ClickHouse 的 MCP 服务器,可帮助用户在 ClickHouse 集群上执行各类操作,如执行 SQL 查询、列出数据库和表等。
run_select_query
sql(字符串):要执行的 SQL 查询语句。readonly = 1 运行,以确保安全性。list_databases
list_tables
database(字符串):数据库的名称。打开 Claude Desktop 配置文件,其位置如下:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%/Claude/claude_desktop_config.json添加以下内容:
{
"mcpServers": {
"mcp-clickhouse": {
"command": "uv",
"args": [
"run",
"--with",
"mcp-clickhouse",
"--python",
"3.13",
"mcp-clickhouse"
],
"env": {
"CLICKHOUSE_HOST": "" ,
"CLICKHOUSE_PORT": "" ,
"CLICKHOUSE_USER": "" ,
"CLICKHOUSE_PASSWORD": "" ,
"CLICKHOUSE_SECURE": "true",
"CLICKHOUSE_VERIFY": "true",
"CLICKHOUSE_CONNECT_TIMEOUT": "1800",
"CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "1800"
}
}
}
}
将环境变量更新为指向你自己的 ClickHouse 服务。
或者,如果你想使用 ClickHouse SQL Playground 进行测试,可以使用以下配置:
{
"mcpServers": {
"mcp-clickhouse": {
"command": "uv",
"args": [
"run",
"--with",
"mcp-clickhouse",
"--python",
"3.13",
"mcp-clickhouse"
],
"env": {
"CLICKHOUSE_HOST": "sql-clickhouse.clickhouse.com",
"CLICKHOUSE_PORT": "8443",
"CLICKHOUSE_USER": "demo",
"CLICKHOUSE_PASSWORD": "",
"CLICKHOUSE_SECURE": "true",
"CLICKHOUSE_VERIFY": "true",
"CLICKHOUSE_CONNECT_TIMEOUT": "1800",
"CLICKHOUSE_SEND_RECEIVE_TIMEOUT": "1800"
}
}
}
}
找到 uv 的命令入口,并将其替换为 uv 可执行文件的绝对路径。这样可以确保在启动服务器时使用正确版本的 uv。在 Mac 上,你可以使用 which uv 找到该路径。
重启 Claude Desktop 以应用更改。
在 test-services 目录中运行 docker compose up -d 以启动 ClickHouse 集群。
将以下变量添加到仓库根目录的 .env 文件中。
注意:在此上下文中使用 default 用户仅用于本地开发目的。
CLICKHOUSE_HOST=localhost
CLICKHOUSE_PORT=8123
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
运行 uv sync 以安装依赖项。要安装 uv,请遵循 此处 的说明。然后执行 source .venv/bin/activate。
为了方便测试,你可以运行 mcp dev mcp_clickhouse/mcp_server.py 来启动 MCP 服务器。
以下环境变量用于配置 ClickHouse 连接:
CLICKHOUSE_HOST:你的 ClickHouse 服务器的主机名CLICKHOUSE_USER:用于身份验证的用户名CLICKHOUSE_PASSWORD:用于身份验证的密码⚠️ 重要提示
重要的是要像对待任何连接到你数据库的外部客户端一样对待你的 MCP 数据库用户,仅授予其操作所需的最小必要权限。应始终严格避免使用默认或管理员用户。
CLICKHOUSE_PORT:你的 ClickHouse 服务器的端口号
8443;如果禁用,则为 8123CLICKHOUSE_SECURE:启用/禁用 HTTPS 连接
"true""false" 以进行非安全连接CLICKHOUSE_VERIFY:启用/禁用 SSL 证书验证
"true""false" 以禁用证书验证(不建议在生产环境中使用)CLICKHOUSE_CONNECT_TIMEOUT:连接超时时间(秒)
"1800"CLICKHOUSE_SEND_RECEIVE_TIMEOUT:发送/接收超时时间(秒)
"1800"CLICKHOUSE_DATABASE:要使用的默认数据库
对于使用 Docker 进行本地开发:
# 必需变量
CLICKHOUSE_HOST=localhost
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=clickhouse
# 可选:覆盖本地开发的默认值
CLICKHOUSE_SECURE=false # 自动使用端口 8123
CLICKHOUSE_VERIFY=false
对于 ClickHouse Cloud:
# 必需变量
CLICKHOUSE_HOST=your-instance.clickhouse.cloud
CLICKHOUSE_USER=default
CLICKHOUSE_PASSWORD=your-password
# 可选:使用安全默认值
# CLICKHOUSE_SECURE=true # 自动使用端口 8443
# CLICKHOUSE_DATABASE=your_database
对于 ClickHouse SQL Playground:
CLICKHOUSE_HOST=sql-clickhouse.clickhouse.com
CLICKHOUSE_USER=demo
CLICKHOUSE_PASSWORD=
# 使用安全默认值(端口 8443 上的 HTTPS)
你可以在环境中、.env 文件中或 Claude Desktop 配置中设置这些变量:
{
"mcpServers": {
"mcp-clickhouse": {
"command": "uv",
"args": [
"run",
"--with",
"mcp-clickhouse",
"--python",
"3.13",
"mcp-clickhouse"
],
"env": {
"CLICKHOUSE_HOST": "" ,
"CLICKHOUSE_USER": "" ,
"CLICKHOUSE_PASSWORD": "" ,
"CLICKHOUSE_DATABASE": ""
}
}
}
}
uv sync --all-extras --dev # 安装开发依赖项
uv run ruff check . # 运行代码检查
docker compose up -d test_services # 启动 ClickHouse
uv run pytest tests